*/
init: function () {
var $topLinks,
- rcTopSection,
+ topSection,
$watchlistDetails,
- wlTopSection,
+ namespaces,
+ conditionalViews = {},
savedQueriesPreferenceName = mw.config.get( 'wgStructuredChangeFiltersSavedQueriesPreferenceName' ),
+ daysPreferenceName = mw.config.get( 'wgStructuredChangeFiltersDaysPreferenceName' ),
+ limitPreferenceName = mw.config.get( 'wgStructuredChangeFiltersLimitPreferenceName' ),
filtersModel = new mw.rcfilters.dm.FiltersViewModel(),
changesListModel = new mw.rcfilters.dm.ChangesListViewModel(),
savedQueriesModel = new mw.rcfilters.dm.SavedQueriesModel( filtersModel ),
controller = new mw.rcfilters.Controller(
filtersModel, changesListModel, savedQueriesModel,
{
- savedQueriesPreferenceName: savedQueriesPreferenceName
+ savedQueriesPreferenceName: savedQueriesPreferenceName,
+ daysPreferenceName: daysPreferenceName,
+ limitPreferenceName: limitPreferenceName
}
),
$overlay = $( '<div>' )
savedLinksListWidget = new mw.rcfilters.ui.SavedLinksListWidget(
controller, savedQueriesModel, { $overlay: $overlay }
),
- specialPage = mw.config.get( 'wgCanonicalSpecialPageName' );
+ specialPage = mw.config.get( 'wgCanonicalSpecialPageName' ),
+ $changesListRoot = $( [
+ '.mw-changeslist',
+ '.mw-changeslist-empty',
+ '.mw-changeslist-timeout',
+ '.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.
+
// eslint-disable-next-line no-new
new mw.rcfilters.ui.ChangesListWrapperWidget(
- filtersModel, changesListModel, controller, $( '.mw-changeslist, .mw-changeslist-empty' ) );
+ filtersModel, changesListModel, controller, $changesListRoot );
// Remove the -loading class that may have been added on the server side.
// If we are in fact going to load a default saved query, this .initialize()
// call will do that and add the -loading class right back.
$( 'body' ).removeClass( 'mw-rcfilters-ui-loading' );
+ // Remove Media namespace
+ namespaces = mw.config.get( 'wgFormattedNamespaces' );
+ delete namespaces[ mw.config.get( 'wgNamespaceIds' ).media ];
+
controller.initialize(
mw.config.get( 'wgStructuredChangeFilters' ),
- mw.config.get( 'wgFormattedNamespaces' ),
- mw.config.get( 'wgRCFiltersChangeTags' )
+ namespaces,
+ mw.config.get( 'wgRCFiltersChangeTags' ),
+ conditionalViews
);
// eslint-disable-next-line no-new
controller.replaceUrl();
- if ( specialPage === 'Recentchanges' ||
- specialPage === 'Recentchangeslinked' ) {
+ if ( specialPage === 'Recentchanges' ) {
$topLinks = $( '.mw-recentchanges-toplinks' ).detach();
- rcTopSection = new mw.rcfilters.ui.RcTopSectionWidget(
+ topSection = new mw.rcfilters.ui.RcTopSectionWidget(
savedLinksListWidget, $topLinks
);
- filtersWidget.setTopSection( rcTopSection.$element );
- } // end Special:RC
+ filtersWidget.setTopSection( topSection.$element );
+ } // end Recentchanges
+
+ if ( specialPage === 'Recentchangeslinked' ) {
+ topSection = new mw.rcfilters.ui.RclTopSectionWidget(
+ savedLinksListWidget, controller,
+ filtersModel.getGroup( 'toOrFrom' ).getItemByParamName( 'showlinkedto' ),
+ filtersModel.getGroup( 'page' ).getItemByParamName( 'target' )
+ );
+ filtersWidget.setTopSection( topSection.$element );
+ } // end Recentchangeslinked
if ( specialPage === 'Watchlist' ) {
$( '#contentSub, form#mw-watchlist-resetbutton' ).detach();
$watchlistDetails = $( '.watchlistDetails' ).detach().contents();
- wlTopSection = new mw.rcfilters.ui.WatchlistTopSectionWidget(
+ topSection = new mw.rcfilters.ui.WatchlistTopSectionWidget(
controller, changesListModel, savedLinksListWidget, $watchlistDetails
);
- filtersWidget.setTopSection( wlTopSection.$element );
- } // end Special:WL
+ filtersWidget.setTopSection( topSection.$element );
+ } // end Watchlist
/**
* Fired when initialization of the filtering interface for changes list is complete.