AndyRussG has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/345872 )
Change subject: Admin UI: Consolidate and refactor client-side bucket change handler ...................................................................... Admin UI: Consolidate and refactor client-side bucket change handler Change-Id: I9ceac2de7e0738ffa8e9ac689b9c59420caed051 --- M resources/infrastructure/campaignManager.js M resources/infrastructure/centralnotice.js M special/SpecialCentralNotice.php 3 files changed, 39 insertions(+), 32 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/CentralNotice refs/changes/72/345872/1 diff --git a/resources/infrastructure/campaignManager.js b/resources/infrastructure/campaignManager.js index af3acf8..74de6ba 100644 --- a/resources/infrastructure/campaignManager.js +++ b/resources/infrastructure/campaignManager.js @@ -65,17 +65,39 @@ $( '#balanced' ).click( updateWeightColumn ); function updateBuckets() { - var numCampaignBuckets = $( 'select#buckets :checked' ).val(), - i, - isBucketDisabled; + var numBuckets = getNumBuckets(), + maxNumBuckets = mw.config.get( 'wgNoticeNumberOfBuckets' ), + bucketSelectors = $( 'select.bucketSelector' ), + i, isBucketDisabled; - if ( numCampaignBuckets ) { - for ( i = 0; i < mw.config.get( 'wgNoticeNumberOfBuckets' ); i++ ) { - isBucketDisabled = ( i >= numCampaignBuckets ); + // Change selected value of bucket selectors to only available buckets + bucketSelectors.each( function () { + var $selector = $( this ), + selectedVal = $selector.val(); - $( 'select.bucketSelector option[value=' + i + ']' ).prop( 'disabled', isBucketDisabled ); + $selector.val( selectedVal % numBuckets ); + } ); + + // If only one bucket is available, disable the selectors entirely + if ( numBuckets === 1 ) { + bucketSelectors.prop( 'disabled', true ); + + } else { + // If more than one bucket is available, enable selectors and set options to + // disabled or enabled, as appropriate + bucketSelectors.prop( 'disabled', false ); + + for ( i = 0; i < maxNumBuckets; i++ ) { + isBucketDisabled = ( i >= numBuckets ); + + bucketSelectors.find( 'option[value=' + i + ']' ) + .prop( 'disabled', isBucketDisabled ); } } + } + + function getNumBuckets() { + return parseInt( $( 'select#buckets :selected' ).val(), 10 ); } $( 'select#buckets' ).change( updateBuckets ); @@ -279,5 +301,9 @@ updateThrottle(); updateWeightColumn(); - updateBuckets(); + + $( function () { + updateBuckets(); + } ); + }( jQuery, mediaWiki ) ); diff --git a/resources/infrastructure/centralnotice.js b/resources/infrastructure/centralnotice.js index 59935b9..9ff7d6a 100644 --- a/resources/infrastructure/centralnotice.js +++ b/resources/infrastructure/centralnotice.js @@ -104,28 +104,5 @@ $( '#geoMultiSelector' ).fadeOut( 'fast' ); } } ); - - // Bucketing! Disable bucket selectors if #buckets is not checked. - $( '#buckets' ).change( function () { - var numBuckets = parseInt( this[ this.selectedIndex ].value, 10 ), - buckets = $( 'select[id^="bucketSelector"]' ); - - if ( numBuckets === 1 ) { - buckets.prop( 'disabled', true ); - } else { - buckets.prop( 'disabled', false ); - // Go through and modify all the options -- disabling inappropriate ones - // and remapping the rings - buckets.each( function () { - var curBucket = parseInt( this[ this.selectedIndex ].value, 10 ), - i; - $( this ).val( curBucket % numBuckets ); - - for ( i = 0; i < this.options.length; i++ ) { - $( this.options[ i ] ).prop( 'disabled', ( i >= numBuckets ) ); - } - } ); - } - } ).trigger( 'change' ); } ); }( mediaWiki, jQuery ) ); diff --git a/special/SpecialCentralNotice.php b/special/SpecialCentralNotice.php index 3a282b5..b455ba6 100644 --- a/special/SpecialCentralNotice.php +++ b/special/SpecialCentralNotice.php @@ -1213,7 +1213,11 @@ } $selected = $selected % $numberCampaignBuckets; - $html = Html::openElement( 'select', array( 'name' => $name, 'id' => 'bucketSelector' ) ); + $html = Html::openElement( 'select', [ + 'name' => $name, + 'class' => 'bucketSelector' + ] ); + foreach ( range( 0, $wgNoticeNumberOfBuckets - 1 ) as $value ) { $attribs = array(); if ( $value >= $numberCampaignBuckets ) { -- To view, visit https://gerrit.wikimedia.org/r/345872 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9ceac2de7e0738ffa8e9ac689b9c59420caed051 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/CentralNotice Gerrit-Branch: master Gerrit-Owner: AndyRussG <andrew.green...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits