Change delimiter for multiple namespaces and tags
[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 controller = new mw.rcfilters.Controller( filtersModel, changesListModel ),
15 $overlay = $( '<div>' )
16 .addClass( 'mw-rcfilters-ui-overlay' ),
17 filtersWidget = new mw.rcfilters.ui.FilterWrapperWidget(
18 controller, filtersModel, { $overlay: $overlay } );
19
20 // TODO: The changesListWrapperWidget should be able to initialize
21 // after the model is ready.
22 // eslint-disable-next-line no-new
23 new mw.rcfilters.ui.ChangesListWrapperWidget(
24 filtersModel, changesListModel, $( '.mw-changeslist, .mw-changeslist-empty' ) );
25
26 controller.initialize( mw.config.get( 'wgStructuredChangeFilters' ) );
27
28 // eslint-disable-next-line no-new
29 new mw.rcfilters.ui.FormWrapperWidget(
30 filtersModel, changesListModel, controller, $( 'fieldset.rcoptions' ) );
31
32 $( '.rcfilters-container' ).append( filtersWidget.$element );
33 $( 'body' ).append( $overlay );
34
35 // Set as ready
36 $( '.rcfilters-head' ).addClass( 'mw-rcfilters-ui-ready' );
37
38 window.addEventListener( 'popstate', function () {
39 controller.updateStateBasedOnUrl();
40 controller.updateChangesList();
41 } );
42
43 $( 'a.mw-helplink' ).attr(
44 'href',
45 'https://www.mediawiki.org/wiki/Special:MyLanguage/Help:New_filters_for_edit_review'
46 );
47
48 controller.replaceUrl();
49 }
50 };
51
52 $( rcfilters.init );
53
54 module.exports = rcfilters;
55
56 }( mediaWiki, jQuery ) );