Remove Media namespace from the list of RCFilters
[lhc/web/wiklou.git] / resources / src / mediawiki.rcfilters / mw.rcfilters.init.js
1 /*!
2 * JavaScript for Special:RecentChanges
3 */
4 ( function ( mw, $ ) {
5 var rcfilters = {
6 /**
7 * @member mw.rcfilters
8 * @private
9 */
10 init: function () {
11 var $topLinks,
12 rcTopSection,
13 $watchlistDetails,
14 wlTopSection,
15 namespaces,
16 savedQueriesPreferenceName = mw.config.get( 'wgStructuredChangeFiltersSavedQueriesPreferenceName' ),
17 filtersModel = new mw.rcfilters.dm.FiltersViewModel(),
18 changesListModel = new mw.rcfilters.dm.ChangesListViewModel(),
19 savedQueriesModel = new mw.rcfilters.dm.SavedQueriesModel( filtersModel ),
20 controller = new mw.rcfilters.Controller(
21 filtersModel, changesListModel, savedQueriesModel,
22 {
23 savedQueriesPreferenceName: savedQueriesPreferenceName
24 }
25 ),
26 $overlay = $( '<div>' )
27 .addClass( 'mw-rcfilters-ui-overlay' ),
28 filtersWidget = new mw.rcfilters.ui.FilterWrapperWidget(
29 controller, filtersModel, savedQueriesModel, changesListModel, { $overlay: $overlay } ),
30 savedLinksListWidget = new mw.rcfilters.ui.SavedLinksListWidget(
31 controller, savedQueriesModel, { $overlay: $overlay }
32 ),
33 specialPage = mw.config.get( 'wgCanonicalSpecialPageName' ),
34 $changesListRoot = $( '.mw-changeslist, .mw-changeslist-empty, .mw-changeslist-timeout' );
35
36 // TODO: The changesListWrapperWidget should be able to initialize
37 // after the model is ready.
38
39 // eslint-disable-next-line no-new
40 new mw.rcfilters.ui.ChangesListWrapperWidget(
41 filtersModel, changesListModel, controller, $changesListRoot );
42
43 // Remove the -loading class that may have been added on the server side.
44 // If we are in fact going to load a default saved query, this .initialize()
45 // call will do that and add the -loading class right back.
46 $( 'body' ).removeClass( 'mw-rcfilters-ui-loading' );
47
48 // Remove Media namespace
49 namespaces = mw.config.get( 'wgFormattedNamespaces' );
50 delete namespaces[ mw.config.get( 'wgNamespaceIds' ).media ];
51
52 controller.initialize(
53 mw.config.get( 'wgStructuredChangeFilters' ),
54 namespaces,
55 mw.config.get( 'wgRCFiltersChangeTags' )
56 );
57
58 // eslint-disable-next-line no-new
59 new mw.rcfilters.ui.FormWrapperWidget(
60 filtersModel, changesListModel, controller, $( 'fieldset.cloptions' ) );
61
62 $( '.rcfilters-container' ).append( filtersWidget.$element );
63 $( 'body' )
64 .append( $overlay )
65 .addClass( 'mw-rcfilters-ui-initialized' );
66
67 $( 'a.mw-helplink' ).attr(
68 'href',
69 'https://www.mediawiki.org/wiki/Special:MyLanguage/Help:New_filters_for_edit_review'
70 );
71
72 controller.replaceUrl();
73
74 if ( specialPage === 'Recentchanges' ||
75 specialPage === 'Recentchangeslinked' ) {
76 $topLinks = $( '.mw-recentchanges-toplinks' ).detach();
77
78 rcTopSection = new mw.rcfilters.ui.RcTopSectionWidget(
79 savedLinksListWidget, $topLinks
80 );
81 filtersWidget.setTopSection( rcTopSection.$element );
82 } // end Special:RC
83
84 if ( specialPage === 'Watchlist' ) {
85 $( '#contentSub, form#mw-watchlist-resetbutton' ).detach();
86 $watchlistDetails = $( '.watchlistDetails' ).detach().contents();
87
88 wlTopSection = new mw.rcfilters.ui.WatchlistTopSectionWidget(
89 controller, changesListModel, savedLinksListWidget, $watchlistDetails
90 );
91 filtersWidget.setTopSection( wlTopSection.$element );
92 } // end Special:WL
93
94 /**
95 * Fired when initialization of the filtering interface for changes list is complete.
96 *
97 * @event structuredChangeFilters_ui_initialized
98 * @member mw.hook
99 */
100 mw.hook( 'structuredChangeFilters.ui.initialized' ).fire();
101 }
102 };
103
104 // Early execute of init
105 if ( document.readyState === 'interactive' || document.readyState === 'complete' ) {
106 rcfilters.init();
107 } else {
108 $( rcfilters.init );
109 }
110
111 module.exports = rcfilters;
112
113 }( mediaWiki, jQuery ) );