123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- /**
- * 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').on('change', dw_acl.userselhandler);
- jQuery('#acl__user button').on('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/exe/ajax.php',
- jQuery.extend(dw_acl.parseatt($clicky.parent().find('a')[0].search),
- {call: 'plugin_acl',
- 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')
- .attr('role', 'alert')
- .html('<img src="'+DOKU_BASE+'lib/images/throbber.gif" alt="..." />')
- .load(
- DOKU_BASE + 'lib/exe/ajax.php',
- jQuery('#acl__detail form').serialize() + '&call=plugin_acl&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);
|