* (bug 10732) Protection chaining checkbox broken - this appears to have regressed...
authorRob Church <robchurch@users.mediawiki.org>
Sat, 28 Jul 2007 23:09:16 +0000 (23:09 +0000)
committerRob Church <robchurch@users.mediawiki.org>
Sat, 28 Jul 2007 23:09:16 +0000 (23:09 +0000)
* Rewrite a couple bits in allowCascade() - isCascadeableLevel() was inefficient, and the function was throwing up errors and whatnot due to bad checking of selection indexes and so on

skins/common/protect.js

index d8d1aa1..7691eba 100644 (file)
@@ -15,7 +15,7 @@ function protectInitialize(tableId, labelText) {
                var check = document.createElement('input');
                check.id = "mwProtectUnchained";
                check.type = "checkbox";
-               check.onclick = protectChainUpdate;
+               check.addEventListener( 'click', protectChainUpdate, false );
                col2.appendChild(check);
 
                var space = document.createTextNode(" ");
@@ -42,30 +42,22 @@ function protectInitialize(tableId, labelText) {
 }
 
 function allowCascade() {
-       var pr_types = document.getElementsByTagName("select");
-       for (var i = 0; i < pr_types.length; i++) {
-               if (pr_types[i].id.match(/^mwProtect-level-/)) {
-                       var selected_level = pr_types[i].getElementsByTagName("option")[pr_types[i].selectedIndex].value;
-                       if ( !isCascadeableLevel(selected_level) ) {
-                               document.getElementById('mwProtect-cascade').checked=false;
-                               document.getElementById('mwProtect-cascade').disabled=true;
+       var lists = protectSelectors();
+       for( var i = 0; i < lists.length; i++ ) {
+               if( lists[i].selectedIndex > -1 ) {
+                       var items = lists[i].getElementsByTagName( 'option' );
+                       var selected = items[ lists[i].selectedIndex ].value;
+                       if( wgCascadeableLevels.indexOf( selected ) == -1 ) {
+                               document.getElementById( 'mwProtect-cascade' ).checked = false;
+                               document.getElementById( 'mwProtect-cascade' ).disabled = true;
                                return false;
                        }
                }
        }
-       document.getElementById('mwProtect-cascade').disabled=false;
+       document.getElementById( 'mwProtect-cascade' ).disabled = false;
        return true;
 }
 
-function isCascadeableLevel( level ) {
-       for (var k = 0; k < wgCascadeableLevels.length; k++) {
-               if ( wgCascadeableLevels[k] == level ) {
-                       return true;
-               }
-       }
-       return false;
-}
-
 function protectLevelsUpdate(source) {
        if (!protectUnchained()) {
                protectUpdateAll(source.selectedIndex);