From cef79eed2ac7253a1db3a26071d47c0d919c0000 Mon Sep 17 00:00:00 2001 From: Rob Church Date: Sat, 28 Jul 2007 23:09:16 +0000 Subject: [PATCH] * (bug 10732) Protection chaining checkbox broken - this appears to have regressed in r24272/r24274; we might do worse than to fix things up so checkboxes without a certain class can't be shift-clicked or whatever * 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 | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/skins/common/protect.js b/skins/common/protect.js index d8d1aa1cd8..7691eba07c 100644 --- a/skins/common/protect.js +++ b/skins/common/protect.js @@ -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); -- 2.20.1