From: jenkins-bot Date: Fri, 23 Jun 2017 00:11:19 +0000 (+0000) Subject: Merge "RCFilters: Remove view triggers before checking emptiness of string" X-Git-Tag: 1.31.0-rc.0~2918 X-Git-Url: http://git.cyclocoop.org/%7B%24admin_url%7Dmembres/cotisations/gestion/rappel_supprimer.php?a=commitdiff_plain;h=10416149eaa4fa7e7a4a411b8338b0cbb0310b62;hp=-c;p=lhc%2Fweb%2Fwiklou.git Merge "RCFilters: Remove view triggers before checking emptiness of string" --- 10416149eaa4fa7e7a4a411b8338b0cbb0310b62 diff --combined resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js index 0396dcba5d,d84a00a1db..c51791d58d --- a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js +++ b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js @@@ -20,7 -20,7 +20,7 @@@ this.parameterMap = {}; this.views = {}; - this.currentView = null; + this.currentView = 'default'; // Events this.aggregate( { update: 'filterItemUpdate' } ); @@@ -373,8 -373,8 +373,8 @@@ this.views.tags = { name: 'tags', label: mw.msg( 'rcfilters-view-tags' ), trigger: '#' }; // Add the group - model.groups.tags = new mw.rcfilters.dm.FilterGroup( - 'tags', + model.groups.tagfilter = new mw.rcfilters.dm.FilterGroup( + 'tagfilter', { type: 'string_options', view: 'tags', @@@ -386,10 -386,10 +386,10 @@@ ); // Add tag items to group - model.groups.tags.initializeFilters( tags ); + model.groups.tagfilter.initializeFilters( tags ); // Add item references to the model, for lookup - items = items.concat( model.groups.tags.getItems() ); + items = items.concat( model.groups.tagfilter.getItems() ); } // Add item references to the model, for lookup @@@ -496,7 -496,7 +496,7 @@@ * @return {string} View trigger, if exists */ mw.rcfilters.dm.FiltersViewModel.prototype.getViewTrigger = function ( view ) { - return this.views[ view ] && this.views[ view ].trigger; + return ( this.views[ view ] && this.views[ view ].trigger ) || ''; }; /** * Get the value of a specific parameter @@@ -1044,4 -1044,19 +1044,19 @@@ filterItem.clearHighlightColor(); } ); }; + + /** + * Return a version of the given string that is without any + * view triggers. + * + * @param {string} str Given string + * @return {string} Result + */ + mw.rcfilters.dm.FiltersViewModel.prototype.removeViewTriggers = function ( str ) { + if ( this.getViewByTrigger( str.substr( 0, 1 ) ) !== 'default' ) { + str = str.substr( 1 ); + } + + return str; + }; }( mediaWiki, jQuery ) ); diff --combined resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js index 10f081c5b4,025adeab7f..752bbe618e --- a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js @@@ -44,29 -44,16 +44,29 @@@ hideWhenOutOfView: false, hideOnChoose: false, width: 650, - $footer: $( '
' ) - .append( - new OO.ui.ButtonWidget( { - framed: false, - icon: 'feedback', - flags: [ 'progressive' ], - label: mw.msg( 'rcfilters-filterlist-feedbacklink' ), - href: 'https://www.mediawiki.org/wiki/Help_talk:New_filters_for_edit_review' - } ).$element - ) + footers: [ + { + name: 'viewSelect', + // View select menu, appears on default view only + $element: $( '
' ) + .append( new mw.rcfilters.ui.ViewSwitchWidget( this.controller, this.model ).$element ), + views: [ 'default' ] + }, + { + name: 'feedback', + // Feedback footer, appears on all views + $element: $( '
' ) + .append( + new OO.ui.ButtonWidget( { + framed: false, + icon: 'feedback', + flags: [ 'progressive' ], + label: mw.msg( 'rcfilters-filterlist-feedbacklink' ), + href: 'https://www.mediawiki.org/wiki/Help_talk:New_filters_for_edit_review' + } ).$element + ) + } + ] }, input: { icon: 'search', @@@ -139,48 -126,6 +139,48 @@@ ); } + if ( mw.config.get( 'wgStructuredChangeFiltersEnableExperimentalViews' ) ) { + // Add a selector at the right of the input + this.viewsSelectWidget = new OO.ui.ButtonSelectWidget( { + classes: [ 'mw-rcfilters-ui-filterTagMultiselectWidget-views-select-widget' ], + items: [ + new OO.ui.ButtonOptionWidget( { + data: 'namespaces', + icon: 'article', + title: mw.msg( 'namespaces' ) + } ), + new OO.ui.ButtonOptionWidget( { + data: 'tags', + icon: 'tag', + title: mw.msg( 'rcfilters-view-tags' ) + } ) + ] + } ); + + // Rearrange the UI so the select widget is at the right of the input + this.$element.append( + $( '
' ) + .addClass( 'mw-rcfilters-ui-table' ) + .append( + $( '
' ) + .addClass( 'mw-rcfilters-ui-row' ) + .append( + $( '
' ) + .addClass( 'mw-rcfilters-ui-cell' ) + .addClass( 'mw-rcfilters-ui-filterTagMultiselectWidget-views-input' ) + .append( this.input.$element ), + $( '
' ) + .addClass( 'mw-rcfilters-ui-cell' ) + .addClass( 'mw-rcfilters-ui-filterTagMultiselectWidget-views-select' ) + .append( this.viewsSelectWidget.$element ) + ) + ) + ); + + // Event + this.viewsSelectWidget.connect( this, { choose: 'onViewsSelectWidgetChoose' } ); + } + rcFiltersRow.append( $( '
' ) .addClass( 'mw-rcfilters-ui-cell' ) @@@ -216,17 -161,6 +216,17 @@@ /* Methods */ + /** + * Respond to view select widget choose event + * + * @param {OO.ui.ButtonOptionWidget} buttonOptionWidget Chosen widget + */ + mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.onViewsSelectWidgetChoose = function ( buttonOptionWidget ) { + this.controller.switchView( buttonOptionWidget.getData() ); + this.viewsSelectWidget.selectItem( null ); + this.focus(); + }; + /** * Respond to input change event * @@@ -466,7 -400,7 +466,7 @@@ this.selectTag( tagItem ); // Scroll to the item - if ( oldInputValue ) { + if ( this.model.removeViewTriggers( oldInputValue ) ) { // We're binding a 'once' to the itemVisibilityChange event // so this happens when the menu is ready after the items // are visible again, in case this is done right after the