From ed5218f1f645be768bb36518b24885923f980b90 Mon Sep 17 00:00:00 2001
From: Andreas Gohr <andi@splitbrain.org>
Date: Thu, 9 Jun 2011 10:37:19 +0200
Subject: [PATCH] finished jQuery port of ACL manager

---
 lib/plugins/acl/script.js | 58 ++++++++++++---------------------------
 1 file changed, 18 insertions(+), 40 deletions(-)

diff --git a/lib/plugins/acl/script.js b/lib/plugins/acl/script.js
index eccec501e..5b6c9ce1b 100644
--- a/lib/plugins/acl/script.js
+++ b/lib/plugins/acl/script.js
@@ -6,24 +6,19 @@
 acl = {
     /**
      * Initialize the object and attach the event handlers
-     *
-     * @todo move to jQuery
      */
     init: function(){
-        this.ctl = $('acl_manager');
-        if(!this.ctl) return;
-
-        var sel = $('acl__user').getElementsByTagName('select')[0];
+        if(!jQuery('#acl_manager').length) return; //FIXME only one underscore!!
 
-        addEvent(sel,'change',acl.userselhandler);
-        addEvent($('acl__tree'),'click',acl.treehandler);
-        addEvent($('acl__user').getElementsByTagName('input')[1],'click',acl.loadinfo);
+        jQuery('#acl__user select').change(acl.userselhandler);
+        jQuery('#acl__tree').click(acl.treehandler);
+        jQuery('#acl__user input[type=submit]').click(acl.loadinfo);
     },
 
     /**
      * Handle user dropdown
      *
-     * Hides or shows the user/group entry box depending on wht was selected in the
+     * Hides or shows the user/group entry box depending on what was selected in the
      * dropdown element
      */
     userselhandler: function(e){
@@ -72,21 +67,6 @@ acl = {
         return attributes;
     },
 
-    /**
-     * htmlspecialchars equivalent
-     *
-     * @todo put in gloabl scripts lib?
-     */
-    hsc: function(str) {
-        str = str.replace(/&/g,"&amp;");
-        str = str.replace(/\"/g,"&quot;");
-        str = str.replace(/\'/g,"&#039;");
-        str = str.replace(/</g,"&lt;");
-        str = str.replace(/>/g,"&gt;");
-        return str;
-    },
-
-
     /**
      * Open or close a subtree using AJAX
      *
@@ -130,31 +110,29 @@ acl = {
      * Handles all clicks in the tree, dispatching the right action based on the
      * clicked element
      *
-     * @todo move to jQuery
+     * @param Event e The event object that caused the execution
      */
     treehandler: function(e){
         if(e.target.src){ // is it an image?
             acl.treetoggle(e.target);
         } else if(e.target.href){ // is it a link?
             // remove highlighting
-            var obj = getElementsByClass('cur',$('acl__tree'),'a');
-            for(var i=0; i<obj.length; i++){
-                obj[i].className = obj[i].className.replace(/ cur/,'');
-            }
+            jQuery('#acl__tree a.cur').removeClass('cur');
+
+            var link = jQuery(e.target);
 
             // add new highlighting
-            e.target.className += ' cur';
+            link.addClass('cur');
 
             // set new page to detail form
-            var frm = $('acl__detail').getElementsByTagName('form')[0];
-            if(e.target.className.search(/wikilink1/) > -1){
-                frm.elements['ns'].value = '';
-                frm.elements['id'].value = acl.hsc(acl.parseatt(e.target.search)['id']);
-            }else if(e.target.className.search(/idx_dir/) > -1){
-                frm.elements['ns'].value = acl.hsc(acl.parseatt(e.target.search)['ns']);
-                frm.elements['id'].value = '';
+            var frm = jQuery('#acl__detail form')[0];
+            if(link.hasClass('wikilink1')){
+                jQuery('#acl__detail form input[name=ns]').val('');
+                jQuery('#acl__detail form input[name=id]').val(acl.parseatt(link[0].search)['id']);
+            }else if(link.hasClass('idx_dir')){
+                jQuery('#acl__detail form input[name=ns]').val(acl.parseatt(link[0].search)['ns']);
+                jQuery('#acl__detail form input[name=id]').val('');
             }
-
             acl.loadinfo();
         }
 
@@ -165,4 +143,4 @@ acl = {
 
 };
 
-addInitEvent(acl.init);
+jQuery(acl.init);
-- 
GitLab