From: Rob Church Date: Sat, 28 Jul 2007 23:09:16 +0000 (+0000) Subject: * (bug 10732) Protection chaining checkbox broken - this appears to have regressed... X-Git-Tag: 1.31.0-rc.0~51960 X-Git-Url: https://git.cyclocoop.org/%7B%24admin_url%7Dmembres/fiche.php?a=commitdiff_plain;h=cef79eed2ac7253a1db3a26071d47c0d919c0000;p=lhc%2Fweb%2Fwiklou.git * (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 --- 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);