1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
/**
* ACL Manager AJAX enhancements
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
var dw_acl = {
/**
* Initialize the object and attach the event handlers
*/
init: function () {
var $tree;
//FIXME only one underscore!!
if (jQuery('#acl_manager').length === 0) {
return;
}
jQuery('#acl__user select').change(dw_acl.userselhandler);
jQuery('#acl__user input[type=submit]').click(dw_acl.loadinfo);
$tree = jQuery('#acl__tree');
$tree.dw_tree({toggle_selector: 'img',
load_data: function (show_sublist, $clicky) {
// get the enclosed link and the edit form
var $frm = jQuery('#acl__detail form');
jQuery.post(
DOKU_BASE + 'lib/plugins/acl/ajax.php',
jQuery.extend(dw_acl.parseatt($clicky.parent().find('a')[0].search),
{ajax: 'tree',
current_ns: $frm.find('input[name=ns]').val(),
current_id: $frm.find('input[name=id]').val()}),
show_sublist,
'html'
);
},
toggle_display: function ($clicky, opening) {
$clicky.attr('src',
DOKU_BASE + 'lib/images/' +
(opening ? 'minus' : 'plus') + '.gif');
}});
$tree.delegate('a', 'click', dw_acl.treehandler);
},
/**
* Handle user dropdown
*
* Hides or shows the user/group entry box depending on what was selected in the
* dropdown element
*/
userselhandler: function () {
// make entry field visible/invisible
jQuery('#acl__user input').toggle(this.value === '__g__' ||
this.value === '__u__');
dw_acl.loadinfo();
},
/**
* Load the current permission info and edit form
*/
loadinfo: function () {
jQuery('#acl__info')
.html('<img src="'+DOKU_BASE+'lib/images/throbber.gif" alt="..." />')
.load(
DOKU_BASE + 'lib/plugins/acl/ajax.php',
jQuery('#acl__detail form').serialize() + '&ajax=info'
);
return false;
},
/**
* parse URL attributes into a associative array
*
* @todo put into global script lib?
*/
parseatt: function (str) {
if (str[0] === '?') {
str = str.substr(1);
}
var attributes = {};
var all = str.split('&');
for (var i = 0; i < all.length; i++) {
var att = all[i].split('=');
attributes[att[0]] = decodeURIComponent(att[1]);
}
return attributes;
},
/**
* Handles clicks to the tree nodes
*/
treehandler: function () {
var $link, $frm;
$link = jQuery(this);
// remove highlighting
jQuery('#acl__tree a.cur').removeClass('cur');
// add new highlighting
$link.addClass('cur');
// set new page to detail form
$frm = jQuery('#acl__detail form');
if ($link.hasClass('wikilink1')) {
$frm.find('input[name=ns]').val('');
$frm.find('input[name=id]').val(dw_acl.parseatt($link[0].search).id);
} else if ($link.hasClass('idx_dir')) {
$frm.find('input[name=ns]').val(dw_acl.parseatt($link[0].search).ns);
$frm.find('input[name=id]').val('');
}
dw_acl.loadinfo();
return false;
}
};
jQuery(dw_acl.init);
var acl = {
init: DEPRECATED_WRAP(dw_acl.init, dw_acl),
userselhandler: DEPRECATED_WRAP(dw_acl.userselhandler, dw_acl),
loadinfo: DEPRECATED_WRAP(dw_acl.loadinfo, dw_acl),
parseatt: DEPRECATED_WRAP(dw_acl.parseatt, dw_acl),
treehandler: DEPRECATED_WRAP(dw_acl.treehandler, dw_acl)
};
|