2 * JavaScript for Special:RecentChanges
16 savedQueriesPreferenceName
= mw
.config
.get( 'wgStructuredChangeFiltersSavedQueriesPreferenceName' ),
17 daysPreferenceName
= mw
.config
.get( 'wgStructuredChangeFiltersDaysPreferenceName' ),
18 limitPreferenceName
= mw
.config
.get( 'wgStructuredChangeFiltersLimitPreferenceName' ),
19 filtersModel
= new mw
.rcfilters
.dm
.FiltersViewModel(),
20 changesListModel
= new mw
.rcfilters
.dm
.ChangesListViewModel(),
21 savedQueriesModel
= new mw
.rcfilters
.dm
.SavedQueriesModel( filtersModel
),
22 controller
= new mw
.rcfilters
.Controller(
23 filtersModel
, changesListModel
, savedQueriesModel
,
25 savedQueriesPreferenceName
: savedQueriesPreferenceName
,
26 daysPreferenceName
: daysPreferenceName
,
27 limitPreferenceName
: limitPreferenceName
30 $overlay
= $( '<div>' )
31 .addClass( 'mw-rcfilters-ui-overlay' ),
32 filtersWidget
= new mw
.rcfilters
.ui
.FilterWrapperWidget(
33 controller
, filtersModel
, savedQueriesModel
, changesListModel
, { $overlay
: $overlay
} ),
34 savedLinksListWidget
= new mw
.rcfilters
.ui
.SavedLinksListWidget(
35 controller
, savedQueriesModel
, { $overlay
: $overlay
}
37 specialPage
= mw
.config
.get( 'wgCanonicalSpecialPageName' ),
38 $changesListRoot
= $( '.mw-changeslist, .mw-changeslist-empty, .mw-changeslist-timeout' );
40 // TODO: The changesListWrapperWidget should be able to initialize
41 // after the model is ready.
43 // eslint-disable-next-line no-new
44 new mw
.rcfilters
.ui
.ChangesListWrapperWidget(
45 filtersModel
, changesListModel
, controller
, $changesListRoot
);
47 // Remove the -loading class that may have been added on the server side.
48 // If we are in fact going to load a default saved query, this .initialize()
49 // call will do that and add the -loading class right back.
50 $( 'body' ).removeClass( 'mw-rcfilters-ui-loading' );
52 // Remove Media namespace
53 namespaces
= mw
.config
.get( 'wgFormattedNamespaces' );
54 delete namespaces
[ mw
.config
.get( 'wgNamespaceIds' ).media
];
56 controller
.initialize(
57 mw
.config
.get( 'wgStructuredChangeFilters' ),
59 mw
.config
.get( 'wgRCFiltersChangeTags' )
62 // eslint-disable-next-line no-new
63 new mw
.rcfilters
.ui
.FormWrapperWidget(
64 filtersModel
, changesListModel
, controller
, $( 'fieldset.cloptions' ) );
66 $( '.rcfilters-container' ).append( filtersWidget
.$element
);
69 .addClass( 'mw-rcfilters-ui-initialized' );
71 $( 'a.mw-helplink' ).attr(
73 'https://www.mediawiki.org/wiki/Special:MyLanguage/Help:New_filters_for_edit_review'
76 controller
.replaceUrl();
78 if ( specialPage
=== 'Recentchanges' ||
79 specialPage
=== 'Recentchangeslinked' ) {
80 $topLinks
= $( '.mw-recentchanges-toplinks' ).detach();
82 rcTopSection
= new mw
.rcfilters
.ui
.RcTopSectionWidget(
83 savedLinksListWidget
, $topLinks
85 filtersWidget
.setTopSection( rcTopSection
.$element
);
88 if ( specialPage
=== 'Watchlist' ) {
89 $( '#contentSub, form#mw-watchlist-resetbutton' ).detach();
90 $watchlistDetails
= $( '.watchlistDetails' ).detach().contents();
92 wlTopSection
= new mw
.rcfilters
.ui
.WatchlistTopSectionWidget(
93 controller
, changesListModel
, savedLinksListWidget
, $watchlistDetails
95 filtersWidget
.setTopSection( wlTopSection
.$element
);
99 * Fired when initialization of the filtering interface for changes list is complete.
101 * @event structuredChangeFilters_ui_initialized
104 mw
.hook( 'structuredChangeFilters.ui.initialized' ).fire();
108 // Early execute of init
109 if ( document
.readyState
=== 'interactive' || document
.readyState
=== 'complete' ) {
115 module
.exports
= rcfilters
;
117 }( mediaWiki
, jQuery
) );