RCFilters: Add edit tags drop down
[lhc/web/wiklou.git] / resources / src / mediawiki.rcfilters / mw.rcfilters.init.js
1 /*!
2 * JavaScript for Special:RecentChanges
3 */
4 ( function ( mw, $ ) {
5 /**
6 * @class mw.rcfilters
7 * @singleton
8 */
9 var rcfilters = {
10 /** */
11 init: function () {
12 var filtersModel = new mw.rcfilters.dm.FiltersViewModel(),
13 changesListModel = new mw.rcfilters.dm.ChangesListViewModel(),
14 savedQueriesModel = new mw.rcfilters.dm.SavedQueriesModel(),
15 controller = new mw.rcfilters.Controller( filtersModel, changesListModel, savedQueriesModel ),
16 $overlay = $( '<div>' )
17 .addClass( 'mw-rcfilters-ui-overlay' ),
18 filtersWidget = new mw.rcfilters.ui.FilterWrapperWidget(
19 controller, filtersModel, savedQueriesModel, { $overlay: $overlay } );
20
21 // TODO: The changesListWrapperWidget should be able to initialize
22 // after the model is ready.
23 // eslint-disable-next-line no-new
24 new mw.rcfilters.ui.ChangesListWrapperWidget(
25 filtersModel, changesListModel, $( '.mw-changeslist, .mw-changeslist-empty' ) );
26
27 controller.initialize(
28 mw.config.get( 'wgStructuredChangeFilters' ),
29 mw.config.get( 'wgFormattedNamespaces' ),
30 mw.config.get( 'wgRCFiltersChangeTags' )
31 );
32
33 // eslint-disable-next-line no-new
34 new mw.rcfilters.ui.FormWrapperWidget(
35 filtersModel, changesListModel, controller, $( 'fieldset.rcoptions' ) );
36
37 $( '.rcfilters-container' ).append( filtersWidget.$element );
38 $( 'body' ).append( $overlay );
39
40 // Set as ready
41 $( '.rcfilters-head' ).addClass( 'mw-rcfilters-ui-ready' );
42
43 window.addEventListener( 'popstate', function () {
44 // Update the state of the model from the URL
45 // and re-fetch results into the changes list
46 controller.updateStateFromUrl();
47 } );
48
49 $( 'a.mw-helplink' ).attr(
50 'href',
51 'https://www.mediawiki.org/wiki/Special:MyLanguage/Help:New_filters_for_edit_review'
52 );
53
54 controller.replaceUrl();
55 }
56 };
57
58 $( rcfilters.init );
59
60 module.exports = rcfilters;
61
62 }( mediaWiki, jQuery ) );