From 0ae591b0bb2add60801be1e21228fff050abb520 Mon Sep 17 00:00:00 2001 From: Moriel Schottlender Date: Wed, 6 Dec 2017 16:40:36 -0800 Subject: [PATCH] RCFilters: Set up conditional views for RCLinked The views that are only meant for specific pages should be set up conditionally only when we are in that specific page, to prevent issues with saved queries or param overload. Change-Id: Id0bf89ce397ff8a54ce0a30d1ba7d8f9bbdd14a3 --- .../mw.rcfilters.Controller.js | 36 ++---------------- .../mediawiki.rcfilters/mw.rcfilters.init.js | 38 ++++++++++++++++++- 2 files changed, 40 insertions(+), 34 deletions(-) diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js index eec4f4b28e..7b5e11528c 100644 --- a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js @@ -43,13 +43,14 @@ * @param {Array} filterStructure Filter definition and structure for the model * @param {Object} [namespaceStructure] Namespace definition * @param {Object} [tagList] Tag definition + * @param {Object} [conditionalViews] Conditional view definition */ - mw.rcfilters.Controller.prototype.initialize = function ( filterStructure, namespaceStructure, tagList ) { + mw.rcfilters.Controller.prototype.initialize = function ( filterStructure, namespaceStructure, tagList, conditionalViews ) { var parsedSavedQueries, pieces, displayConfig = mw.config.get( 'StructuredChangeFiltersDisplayConfig' ), defaultSavedQueryExists = mw.config.get( 'wgStructuredChangeFiltersDefaultSavedQueryExists' ), controller = this, - views = {}, + views = $.extend( true, {}, conditionalViews ), items = [], uri = new mw.Uri(); @@ -188,37 +189,6 @@ ] }; - views.recentChangesLinked = { - groups: [ - { - name: 'page', - type: 'any_value', - title: '', - hidden: true, - sticky: true, - filters: [ - { - name: 'target', - 'default': '' - } - ] - }, - { - name: 'toOrFrom', - type: 'boolean', - title: '', - hidden: true, - sticky: true, - filters: [ - { - name: 'showlinkedto', - 'default': false - } - ] - } - ] - }; - // Before we do anything, we need to see if we require additional items in the // groups that have 'AllowArbitrary'. For the moment, those are only single_option // groups; if we ever expand it, this might need further generalization: diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js index 2744b8bbcc..40b8bd2bb3 100644 --- a/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js @@ -12,6 +12,7 @@ topSection, $watchlistDetails, namespaces, + conditionalViews = {}, savedQueriesPreferenceName = mw.config.get( 'wgStructuredChangeFiltersSavedQueriesPreferenceName' ), daysPreferenceName = mw.config.get( 'wgStructuredChangeFiltersDaysPreferenceName' ), limitPreferenceName = mw.config.get( 'wgStructuredChangeFiltersLimitPreferenceName' ), @@ -41,6 +42,40 @@ '.mw-changeslist-notargetpage' ].join( ', ' ) ); + if ( specialPage === 'Recentchangeslinked' ) { + conditionalViews.recentChangesLinked = { + groups: [ + { + name: 'page', + type: 'any_value', + title: '', + hidden: true, + isSticky: false, + filters: [ + { + name: 'target', + 'default': '' + } + ] + }, + { + name: 'toOrFrom', + type: 'boolean', + title: '', + hidden: true, + isSticky: false, + filters: [ + { + name: 'showlinkedto', + 'default': false + } + ] + } + ] + }; + + } + // TODO: The changesListWrapperWidget should be able to initialize // after the model is ready. @@ -60,7 +95,8 @@ controller.initialize( mw.config.get( 'wgStructuredChangeFilters' ), namespaces, - mw.config.get( 'wgRCFiltersChangeTags' ) + mw.config.get( 'wgRCFiltersChangeTags' ), + conditionalViews ); // eslint-disable-next-line no-new -- 2.20.1