From 38331508a78e955e63596e778f863996dfa7763b Mon Sep 17 00:00:00 2001
From: Andreas Gohr <andi@splitbrain.org>
Date: Fri, 19 Aug 2011 13:06:25 +0200
Subject: [PATCH] jqueryized diff checkbox script

---
 lib/scripts/behaviour.js | 30 ++++++++++++++++++++++++++++++
 lib/scripts/script.js    | 28 ----------------------------
 2 files changed, 30 insertions(+), 28 deletions(-)

diff --git a/lib/scripts/behaviour.js b/lib/scripts/behaviour.js
index 0f69d5721..1580ae86f 100644
--- a/lib/scripts/behaviour.js
+++ b/lib/scripts/behaviour.js
@@ -18,6 +18,11 @@ var dw_behaviour = {
         dw_behaviour.checkWindowsShares();
         dw_behaviour.initTocToggle();
         dw_behaviour.subscription();
+
+        dw_behaviour.revisionBoxHandler();
+        jQuery('#page__revisions input[type=checkbox]').click(
+            dw_behaviour.revisionBoxHandler
+        );
     },
 
     /**
@@ -143,7 +148,32 @@ var dw_behaviour = {
             )
             .filter(':checked')
             .click();
+    },
+
+    /**
+     * disable multiple revisions checkboxes if two are checked
+     *
+     * @author Andreas Gohr <andi@splitbrain.org>
+     */
+    revisionBoxHandler: function(){
+        var $checked = jQuery('#page__revisions input[type=checkbox]:checked');
+        var $all     = jQuery('#page__revisions input[type=checkbox]');
+
+        if($checked.length < 2){
+            $all.attr('disabled',false);
+            jQuery('#page__revisions input[type=submit]').attr('disabled',true);
+        }else{
+            $all.attr('disabled',true);
+            jQuery('#page__revisions input[type=submit]').attr('disabled',false);
+            for(var i=0; i<$checked.length; i++){
+                $checked[i].disabled = false;
+                if(i>1){
+                    $checked[i].checked = false;
+                }
+            }
+        }
     }
+
 };
 
 /**
diff --git a/lib/scripts/script.js b/lib/scripts/script.js
index 3e2ec4f89..caa2a107c 100644
--- a/lib/scripts/script.js
+++ b/lib/scripts/script.js
@@ -187,32 +187,4 @@ function closePopups(){
     jQuery('div.JSpopup').hide();
 }
 
-/**
- * disable multiple revisions checkboxes if two are checked
- *
- * @author Anika Henke <anika@selfthinker.org>
- */
-addInitEvent(function(){
-    var revForm = $('page__revisions');
-    if (!revForm) return;
-    var elems = revForm.elements;
-    var countTicks = 0;
-    for (var i=0; i<elems.length; i++) {
-        var input1 = elems[i];
-        if (input1.type=='checkbox') {
-            addEvent(input1,'click',function(e){
-                if (this.checked) countTicks++;
-                else countTicks--;
-                for (var j=0; j<elems.length; j++) {
-                    var input2 = elems[j];
-                    if (countTicks >= 2) input2.disabled = (input2.type=='checkbox' && !input2.checked);
-                    else input2.disabled = (input2.type!='checkbox');
-                }
-            });
-            input1.checked = false; // chrome reselects on back button which messes up the logic
-        } else if(input1.type=='submit'){
-            input1.disabled = true;
-        }
-    }
-});
 
-- 
GitLab