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

Reply via email to