Gabriel Birke has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/364201 )

Change subject: Make presets react to namespace selection
......................................................................

Make presets react to namespace selection

Bug: https://phabricator.wikimedia.org/T169648
Change-Id: I73c089a3b579f29c44556f6e16622d84607a91e8
---
M modules/ext.advancedSearch.init.js
M modules/ui/ext.advancedSearch.NamespacePresets.js
M tests/qunit/ui/NamespacePresets.test.js
3 files changed, 40 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/AdvancedSearch 
refs/changes/01/364201/1

diff --git a/modules/ext.advancedSearch.init.js 
b/modules/ext.advancedSearch.init.js
index 6de74a4..a70d9be 100644
--- a/modules/ext.advancedSearch.init.js
+++ b/modules/ext.advancedSearch.init.js
@@ -123,6 +123,11 @@
                var namespaces = mw.config.get( 'wgFormattedNamespaces' );
                // Article namespace has no name by default
                namespaces[ '0' ] = mw.msg( 
'advancedSearch-namespaces-articles' );
+               $.each( Object.keys( namespaces ), function ( _, key ) {
+                       if ( parseInt( key, 10 ) < 0 ) {
+                               delete namespaces[ key ];
+                       }
+               } );
                return namespaces;
        }
 
diff --git a/modules/ui/ext.advancedSearch.NamespacePresets.js 
b/modules/ui/ext.advancedSearch.NamespacePresets.js
index a9a2cc0..193b54d 100644
--- a/modules/ui/ext.advancedSearch.NamespacePresets.js
+++ b/modules/ui/ext.advancedSearch.NamespacePresets.js
@@ -33,6 +33,7 @@
                // Using undocumented internals because this.on does not work, 
see https://phabricator.wikimedia.org/T168735
                this.checkboxMultiselectWidget.on( 'change', 
this.updateStoreFromPresets, [], this );
                this.$element.addClass( 'mw-advancedSearch-namespacePresets' );
+               store.connect( this, { update: 'updatePresetsFromStore' } );
        };
 
        OO.inheritClass( mw.libs.advancedSearch.ui.NamespacePresets, 
OO.ui.CheckboxMultiselectInputWidget );
@@ -48,4 +49,21 @@
                }
        };
 
+       
mw.libs.advancedSearch.ui.NamespacePresets.prototype.updatePresetsFromStore = 
function () {
+               var selectedPresets = {},
+                       self = this;
+               $.each( this.presets, function ( key, nsconfig ) {
+                       selectedPresets[ key ] = 
mw.libs.advancedSearch.util.arrayEquals( nsconfig.namespaces, 
self.store.getNamespaces() );
+               } );
+               this.checkboxMultiselectWidget.off( 'change', 
this.updateStoreFromPresets, this );
+               $.each( selectedPresets, function ( key, isSelected ) {
+                       var presetWidget = 
self.checkboxMultiselectWidget.getItemFromData( key );
+                       if ( presetWidget.isSelected() !== isSelected ) {
+                               presetWidget.setSelected( isSelected );
+                       }
+               } );
+               this.checkboxMultiselectWidget.on( 'change', 
this.updateStoreFromPresets, [], this );
+
+       };
+
 }( mediaWiki, jQuery ) );
diff --git a/tests/qunit/ui/NamespacePresets.test.js 
b/tests/qunit/ui/NamespacePresets.test.js
index 12f6258..2326131 100644
--- a/tests/qunit/ui/NamespacePresets.test.js
+++ b/tests/qunit/ui/NamespacePresets.test.js
@@ -40,4 +40,21 @@
                assert.deepEqual( [ '3' ], model.getNamespaces() );
        } );
 
+       QUnit.test( 'Changing the store to exactly the namespaces in namespaces 
in preset, selects preset', function ( assert ) {
+               var model = new Model(),
+                       presets = new NamespacePresets( model, {
+                               presets: {
+                                       all: {
+                                               label: 'All',
+                                               namespaces: [ '0', '1', '2' ]
+                                       }
+                               }
+                       } );
+               assert.deepEqual( presets.getValue(), [] );
+               model.setNamespaces( [ '0', '1', '2' ] );
+               assert.deepEqual( presets.getValue(), [ 'all' ] );
+               model.setNamespaces( [ '0', '1' ] );
+               assert.deepEqual( presets.getValue(), [] );
+       } );
+
 }( mediaWiki ) );

-- 
To view, visit https://gerrit.wikimedia.org/r/364201
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I73c089a3b579f29c44556f6e16622d84607a91e8
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/AdvancedSearch
Gerrit-Branch: master
Gerrit-Owner: Gabriel Birke <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to