X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=resources%2Fsrc%2Fmediawiki.special.block.js;h=58657dbd3e47f1736dad01a230b012817f5289d4;hb=d6ca62639346d3c78b0d370ba1027e5fb6ac8a9d;hp=02e380ae596f07ac210b2ba4712e3417bb2d3d1a;hpb=df519cca358ff1a0b7abfb217ba4b7dde2e98e81;p=lhc%2Fweb%2Fwiklou.git diff --git a/resources/src/mediawiki.special.block.js b/resources/src/mediawiki.special.block.js index 02e380ae59..58657dbd3e 100644 --- a/resources/src/mediawiki.special.block.js +++ b/resources/src/mediawiki.special.block.js @@ -11,23 +11,10 @@ } $( function () { - // This code is also loaded on the "block succeeded" page where there is no form, - // so username and expiry fields might also be missing. - var blockTargetWidget = infuseIfExists( $( '#mw-bi-target' ) ), - anonOnlyField = infuseIfExists( $( '#mw-input-wpHardBlock' ).closest( '.oo-ui-fieldLayout' ) ), - enableAutoblockField = infuseIfExists( $( '#mw-input-wpAutoBlock' ).closest( '.oo-ui-fieldLayout' ) ), - hideUserWidget = infuseIfExists( $( '#mw-input-wpHideUser' ) ), - hideUserField = infuseIfExists( $( '#mw-input-wpHideUser' ).closest( '.oo-ui-fieldLayout' ) ), - watchUserField = infuseIfExists( $( '#mw-input-wpWatch' ).closest( '.oo-ui-fieldLayout' ) ), - expiryWidget = infuseIfExists( $( '#mw-input-wpExpiry' ) ), - editingWidget = infuseIfExists( $( '#mw-input-wpEditing' ) ), - editingRestrictionWidget = infuseIfExists( $( '#mw-input-wpEditingRestriction' ) ), - preventTalkPageEdit = infuseIfExists( $( '#mw-input-wpDisableUTEdit' ) ), - pageRestrictionsWidget = infuseIfExists( $( '#mw-input-wpPageRestrictions' ) ), - namespaceRestrictionsWidget = infuseIfExists( $( '#mw-input-wpNamespaceRestrictions' ) ), - createAccountWidget = infuseIfExists( $( '#mw-input-wpCreateAccount' ) ), - userChangedCreateAccount = false, - updatingBlockOptions = false; + var blockTargetWidget, anonOnlyWidget, enableAutoblockWidget, hideUserWidget, watchUserWidget, + expiryWidget, editingWidget, editingRestrictionWidget, preventTalkPageEditWidget, + pageRestrictionsWidget, namespaceRestrictionsWidget, createAccountWidget, data, + enablePartialBlocks, blockAllowsUTEdit, userChangedCreateAccount, updatingBlockOptions; function updateBlockOptions() { var blocktarget = blockTargetWidget.getValue().trim(), @@ -39,46 +26,51 @@ // infinityValues are the values the SpecialBlock class accepts as infinity (sf. wfIsInfinity) infinityValues = [ 'infinite', 'indefinite', 'infinity', 'never' ], isIndefinite = infinityValues.indexOf( expiryValue ) !== -1, - // editingRestrictionWidget only exists if partial blocks is enabled; if not, block must be sitewide - editingRestrictionValue = editingRestrictionWidget ? editingRestrictionWidget.getValue() : 'sitewide', - editingIsSelected = editingWidget ? editingWidget.isSelected() : false, + editingRestrictionValue = enablePartialBlocks ? editingRestrictionWidget.getValue() : 'sitewide', + editingIsSelected = editingWidget.isSelected(), isSitewide = editingIsSelected && editingRestrictionValue === 'sitewide'; - if ( enableAutoblockField ) { - enableAutoblockField.toggle( !isNonEmptyIp ); + 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 ( anonOnlyField ) { - anonOnlyField.toggle( isIp || isEmpty ); - } - if ( watchUserField ) { - watchUserField.toggle( !isIpRange || isEmpty ); + + if ( watchUserWidget ) { + watchUserWidget.setDisabled( isIpRange && !isEmpty ); + if ( watchUserWidget.isDisabled() ) { + watchUserWidget.setSelected( false ); + } } - if ( editingRestrictionWidget ) { + + if ( enablePartialBlocks ) { editingRestrictionWidget.setDisabled( !editingIsSelected ); - } - if ( pageRestrictionsWidget ) { pageRestrictionsWidget.setDisabled( !editingIsSelected || isSitewide ); - } - if ( namespaceRestrictionsWidget ) { namespaceRestrictionsWidget.setDisabled( !editingIsSelected || isSitewide ); + if ( blockAllowsUTEdit ) { + // This option is disabled for partial blocks unless a namespace restriction + // for the User_talk namespace is in place. + preventTalkPageEditWidget.setDisabled( + editingIsSelected && + editingRestrictionValue === 'partial' && + namespaceRestrictionsWidget.getValue().indexOf( + String( mw.config.get( 'wgNamespaceIds' ).user_talk ) + ) === -1 + ); + } } - if ( preventTalkPageEdit && namespaceRestrictionsWidget ) { - // This option is disabled for partial blocks unless a namespace restriction - // for the User_talk namespace is in place. - preventTalkPageEdit.setDisabled( - editingIsSelected && - editingRestrictionValue === 'partial' && - namespaceRestrictionsWidget.getValue().indexOf( - String( mw.config.get( 'wgNamespaceIds' ).user_talk ) - ) === -1 - ); - } + if ( !userChangedCreateAccount ) { updatingBlockOptions = true; createAccountWidget.setSelected( isSitewide ); @@ -87,27 +79,48 @@ } + // This code is also loaded on the "block succeeded" page where there is no form, + // so check for block target widget; if it exists, the form is present + blockTargetWidget = infuseIfExists( $( '#mw-bi-target' ) ); + if ( blockTargetWidget ) { - // Bind functions so they're checked whenever stuff changes + data = require( './config.json' ); + enablePartialBlocks = data.EnablePartialBlocks; + blockAllowsUTEdit = data.BlockAllowsUTEdit; + userChangedCreateAccount = mw.config.get( 'wgCreateAccountDirty' ); + updatingBlockOptions = false; + + // Always present if blockTargetWidget is present + editingWidget = OO.ui.infuse( $( '#mw-input-wpEditing' ) ); + expiryWidget = OO.ui.infuse( $( '#mw-input-wpExpiry' ) ); + createAccountWidget = OO.ui.infuse( $( '#mw-input-wpCreateAccount' ) ); + 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 ); - if ( editingWidget ) { - editingWidget.on( 'change', updateBlockOptions ); - } - if ( editingRestrictionWidget ) { - editingRestrictionWidget.on( 'change', updateBlockOptions ); - } - if ( namespaceRestrictionsWidget ) { - namespaceRestrictionsWidget.on( 'change', updateBlockOptions ); - } - createAccountWidget.on( 'change', function () { if ( !updatingBlockOptions ) { userChangedCreateAccount = true; } } ); - // Call them now to set initial state (ie. Special:Block/Foobar?wpBlockExpiry=2+hours) + // Present for certain rights + watchUserWidget = infuseIfExists( $( '#mw-input-wpWatch' ) ); + hideUserWidget = infuseIfExists( $( '#mw-input-wpHideUser' ) ); + + // Present for certain global configs + if ( enablePartialBlocks ) { + editingRestrictionWidget = OO.ui.infuse( $( '#mw-input-wpEditingRestriction' ) ); + pageRestrictionsWidget = OO.ui.infuse( $( '#mw-input-wpPageRestrictions' ) ); + namespaceRestrictionsWidget = OO.ui.infuse( $( '#mw-input-wpNamespaceRestrictions' ) ); + editingRestrictionWidget.on( 'change', updateBlockOptions ); + namespaceRestrictionsWidget.on( 'change', updateBlockOptions ); + } + if ( blockAllowsUTEdit ) { + preventTalkPageEditWidget = infuseIfExists( $( '#mw-input-wpDisableUTEdit' ) ); + } + updateBlockOptions(); } } );