From 11ef493f49931a22ca6149ffdd7121fa57cda9ac Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Thu, 15 Mar 2007 02:52:28 +0000 Subject: [PATCH] *Add nifty JS function to grey out cascade option when it will not apply --- includes/ProtectionForm.php | 13 +++++++++++-- skins/common/protect.js | 20 ++++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/includes/ProtectionForm.php b/includes/ProtectionForm.php index 9ebacd8340..662b1df779 100644 --- a/includes/ProtectionForm.php +++ b/includes/ProtectionForm.php @@ -323,8 +323,17 @@ class ProtectionForm { } function buildCleanupScript() { - return ''; + global $wgRestrictionLevels, $wgGroupPermissions; + $script = 'var wgCascadeableLevels='; + $CascadeableLevels = array(); + foreach( $wgRestrictionLevels as $key ) { + if ( isset($wgGroupPermissions[$key]['protect']) && $wgGroupPermissions[$key]['protect'] ) { + $CascadeableLevels[]="'" . wfEscapeJsString($key) . "'"; + } + } + $script .= "[" . implode(',',$CascadeableLevels) . "];\n"; + $script .= 'protectInitialize("mwProtectSet","' . wfEscapeJsString( wfMsg( 'protect-unchain' ) ) . '")'; + return ''; } /** diff --git a/skins/common/protect.js b/skins/common/protect.js index 8968607371..f10c810a16 100644 --- a/skins/common/protect.js +++ b/skins/common/protect.js @@ -33,16 +33,36 @@ function protectInitialize(tableId, labelText) { check.checked = true; protectEnable(true); } + + allowCascade(); return true; } return false; } +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; + for (var k=0; k < wgCascadeableLevels.length; k++) { + if ( wgCascadeableLevels[k] != selected_level ) { + document.getElementById('mwProtect-cascade').disabled=true; + return false; + } + } + } + } + document.getElementById('mwProtect-cascade').disabled=false; + return true; +} + function protectLevelsUpdate(source) { if (!protectUnchained()) { protectUpdateAll(source.selectedIndex); } + allowCascade(); } function protectChainUpdate() { -- 2.20.1