diff --git a/lib/plugins/acl/admin.php b/lib/plugins/acl/admin.php index dcd72b6110833c0c188a7a74be4b1d7c631f8d0e..1f666660c03061897725387240c7de92e0f6228d 100644 --- a/lib/plugins/acl/admin.php +++ b/lib/plugins/acl/admin.php @@ -17,6 +17,15 @@ if(!defined('DOKU_INC')) die(); class admin_plugin_acl extends DokuWiki_Admin_Plugin { var $acl = null; var $ns = null; + /** + * The currently selected item, associative array with id and type. + * Populated from (in this order): + * $_REQUEST['current_ns'] + * $_REQUEST['current_id'] + * $ns + * $ID + */ + var $current_item = null; var $who = ''; var $usersgroups = array(); var $specials = array(); @@ -72,6 +81,16 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin { $this->ns = cleanID($_REQUEST['ns']); } + if ($_REQUEST['current_ns']) { + $this->current_item = array('id' => cleanID($_REQUEST['current_ns']), 'type' => 'd'); + } elseif ($_REQUEST['current_id']) { + $this->current_item = array('id' => cleanID($_REQUEST['current_id']), 'type' => 'f'); + } elseif ($this->ns) { + $this->current_item = array('id' => $this->ns, 'type' => 'd'); + } else { + $this->current_item = array('id' => $ID, 'type' => 'f'); + } + // user or group choosen? $who = trim($_REQUEST['acl_w']); if($_REQUEST['acl_t'] == '__g__' && $who){ @@ -167,7 +186,7 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin { echo '<div class="level1">'.NL; echo '<div id="acl__tree">'.NL; - $this->_html_explorer($_REQUEST['ns']); + $this->_html_explorer(); echo '</div>'.NL; echo '<div id="acl__detail">'.NL; @@ -498,8 +517,8 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin { } // highlight? - if( ($item['type']=='d' && $item['id'] == $this->ns) || - ($item['type']!='d' && $item['id'] == $ID)) $cl = ' cur'; + if( ($item['type']== $this->current_item['type'] && $item['id'] == $this->current_item['id'])) + $cl = ' cur'; // namespace or page? if($item['type']=='d'){ diff --git a/lib/plugins/acl/script.js b/lib/plugins/acl/script.js index 449a3c16a5ded6c5e2097df8cbda2d49a7b59ff7..d5d0371a9bbcb381ae7201bd8b0f2f1e41d55c28 100644 --- a/lib/plugins/acl/script.js +++ b/lib/plugins/acl/script.js @@ -118,7 +118,11 @@ acl = { var ul = document.createElement('ul'); listitem.appendChild(ul); ajax.elementObj = ul; - ajax.runAJAX(link.search.substr(1)+'&ajax=tree'); + ajax.setVar('ajax', 'tree'); + var frm = $('acl__detail').getElementsByTagName('form')[0]; + ajax.setVar('current_ns', encodeURIComponent(frm.elements['ns'].value)); + ajax.setVar('current_id', encodeURIComponent(frm.elements['id'].value)); + ajax.runAJAX(link.search.substr(1)); clicky.src = DOKU_BASE+'lib/images/minus.gif'; return false; },