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