From bdd9b07d4340db395d4bffd66bfc03610b165ba1 Mon Sep 17 00:00:00 2001 From: Thalia Date: Tue, 2 Apr 2019 15:52:23 +0100 Subject: [PATCH] Enable/disable Special:Block widgets according to block parameters Different block options are available depending on the block parameters currently enetered in the form at a given time. Use enable/disable for these options instead of hide/show, and uncheck any disabled options. Bug: T212391 Change-Id: Ie715ae570641ad0af4008b9aa7f9ed8f2cda8fb8 --- resources/src/mediawiki.special.block.js | 35 +++++++++++++++--------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/resources/src/mediawiki.special.block.js b/resources/src/mediawiki.special.block.js index 1767411ef1..58657dbd3e 100644 --- a/resources/src/mediawiki.special.block.js +++ b/resources/src/mediawiki.special.block.js @@ -11,8 +11,8 @@ } $( function () { - var blockTargetWidget, anonOnlyField, enableAutoblockField, hideUserWidget, hideUserField, - watchUserField, expiryWidget, editingWidget, editingRestrictionWidget, preventTalkPageEditWidget, + var blockTargetWidget, anonOnlyWidget, enableAutoblockWidget, hideUserWidget, watchUserWidget, + expiryWidget, editingWidget, editingRestrictionWidget, preventTalkPageEditWidget, pageRestrictionsWidget, namespaceRestrictionsWidget, createAccountWidget, data, enablePartialBlocks, blockAllowsUTEdit, userChangedCreateAccount, updatingBlockOptions; @@ -30,18 +30,28 @@ editingIsSelected = editingWidget.isSelected(), isSitewide = editingIsSelected && editingRestrictionValue === 'sitewide'; - enableAutoblockField.toggle( !isNonEmptyIp ); - anonOnlyField.toggle( isIp || isEmpty ); + enableAutoblockWidget.setDisabled( isNonEmptyIp ); + if ( enableAutoblockWidget.isDisabled() ) { + enableAutoblockWidget.setSelected( false ); + } + + anonOnlyWidget.setDisabled( !isIp && !isEmpty ); + if ( anonOnlyWidget.isDisabled() ) { + anonOnlyWidget.setSelected( false ); + } - if ( hideUserField ) { - hideUserField.toggle( !isNonEmptyIp && isIndefinite && isSitewide ); - if ( !hideUserField.isVisible() ) { + if ( hideUserWidget ) { + hideUserWidget.setDisabled( isNonEmptyIp || !isIndefinite || !isSitewide ); + if ( hideUserWidget.isDisabled() ) { hideUserWidget.setSelected( false ); } } - if ( watchUserField ) { - watchUserField.toggle( !isIpRange || isEmpty ); + if ( watchUserWidget ) { + watchUserWidget.setDisabled( isIpRange && !isEmpty ); + if ( watchUserWidget.isDisabled() ) { + watchUserWidget.setSelected( false ); + } } if ( enablePartialBlocks ) { @@ -84,8 +94,8 @@ editingWidget = OO.ui.infuse( $( '#mw-input-wpEditing' ) ); expiryWidget = OO.ui.infuse( $( '#mw-input-wpExpiry' ) ); createAccountWidget = OO.ui.infuse( $( '#mw-input-wpCreateAccount' ) ); - enableAutoblockField = OO.ui.infuse( $( '#mw-input-wpAutoBlock' ).closest( '.oo-ui-fieldLayout' ) ); - anonOnlyField = OO.ui.infuse( $( '#mw-input-wpHardBlock' ).closest( '.oo-ui-fieldLayout' ) ); + enableAutoblockWidget = OO.ui.infuse( $( '#mw-input-wpAutoBlock' ) ); + anonOnlyWidget = OO.ui.infuse( $( '#mw-input-wpHardBlock' ) ); blockTargetWidget.on( 'change', updateBlockOptions ); editingWidget.on( 'change', updateBlockOptions ); expiryWidget.on( 'change', updateBlockOptions ); @@ -96,8 +106,7 @@ } ); // Present for certain rights - watchUserField = infuseIfExists( $( '#mw-input-wpWatch' ).closest( '.oo-ui-fieldLayout' ) ); - hideUserField = infuseIfExists( $( '#mw-input-wpHideUser' ).closest( '.oo-ui-fieldLayout' ) ); + watchUserWidget = infuseIfExists( $( '#mw-input-wpWatch' ) ); hideUserWidget = infuseIfExists( $( '#mw-input-wpHideUser' ) ); // Present for certain global configs -- 2.20.1