Add some translations for Western Punjabi (pnb)
[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( {
27 registration: {
28 title: mw.msg( 'rcfilters-filtergroup-registration' ),
29 type: 'send_unselected_if_any',
30 fullCoverage: true,
31 filters: [
32 {
33 name: 'hideliu',
34 label: mw.msg( 'rcfilters-filter-registered-label' ),
35 description: mw.msg( 'rcfilters-filter-registered-description' ),
36 'class': 'mw-changeslist-liu'
37 },
38 {
39 name: 'hideanons',
40 label: mw.msg( 'rcfilters-filter-unregistered-label' ),
41 description: mw.msg( 'rcfilters-filter-unregistered-description' ),
42 'class': 'mw-changeslist-anon'
43 }
44 ]
45 },
46 userExpLevel: {
47 title: mw.msg( 'rcfilters-filtergroup-userExpLevel' ),
48 // Type 'string_options' means that the group is evaluated by
49 // string values separated by comma; for example, param=opt1,opt2
50 // If all options are selected they are replaced by the term "all".
51 // The filters are the values for the parameter defined by the group.
52 // ** In this case, the parameter name is the group name. **
53 type: 'string_options',
54 separator: ',',
55 fullCoverage: false,
56 filters: [
57 {
58 name: 'newcomer',
59 label: mw.msg( 'rcfilters-filter-userExpLevel-newcomer-label' ),
60 description: mw.msg( 'rcfilters-filter-userExpLevel-newcomer-description' ),
61 conflicts: [ 'hideanons' ],
62 'class': 'mw-changeslist-user-newcomer'
63 },
64 {
65 name: 'learner',
66 label: mw.msg( 'rcfilters-filter-userExpLevel-learner-label' ),
67 description: mw.msg( 'rcfilters-filter-userExpLevel-learner-description' ),
68 conflicts: [ 'hideanons' ],
69 'class': 'mw-changeslist-user-learner'
70 },
71 {
72 name: 'experienced',
73 label: mw.msg( 'rcfilters-filter-userExpLevel-experienced-label' ),
74 description: mw.msg( 'rcfilters-filter-userExpLevel-experienced-description' ),
75 conflicts: [ 'hideanons' ],
76 'class': 'mw-changeslist-user-experienced'
77 }
78 ]
79 },
80 authorship: {
81 title: mw.msg( 'rcfilters-filtergroup-authorship' ),
82 // Type 'send_unselected_if_any' means that the controller will go over
83 // all unselected filters in the group and use their parameters
84 // as truthy in the query string.
85 // This is to handle the "negative" filters. We are showing users
86 // a positive message ("Show xxx") but the filters themselves are
87 // based on "hide YYY". The purpose of this is to correctly map
88 // the functionality to the UI, whether we are dealing with 2
89 // parameters in the group or more.
90 type: 'send_unselected_if_any',
91 fullCoverage: true,
92 filters: [
93 {
94 name: 'hidemyself',
95 label: mw.msg( 'rcfilters-filter-editsbyself-label' ),
96 description: mw.msg( 'rcfilters-filter-editsbyself-description' ),
97 'class': 'mw-changeslist-self'
98 },
99 {
100 name: 'hidebyothers',
101 label: mw.msg( 'rcfilters-filter-editsbyother-label' ),
102 description: mw.msg( 'rcfilters-filter-editsbyother-description' ),
103 'class': 'mw-changeslist-others'
104 }
105 ]
106 },
107 automated: {
108 title: mw.msg( 'rcfilters-filtergroup-automated' ),
109 type: 'send_unselected_if_any',
110 fullCoverage: true,
111 filters: [
112 {
113 name: 'hidebots',
114 label: mw.msg( 'rcfilters-filter-bots-label' ),
115 description: mw.msg( 'rcfilters-filter-bots-description' ),
116 'default': true,
117 'class': 'mw-changeslist-bot'
118 },
119 {
120 name: 'hidehumans',
121 label: mw.msg( 'rcfilters-filter-humans-label' ),
122 description: mw.msg( 'rcfilters-filter-humans-description' ),
123 'default': false,
124 'class': 'mw-changeslist-human'
125 }
126 ]
127 },
128 significance: {
129 title: mw.msg( 'rcfilters-filtergroup-significance' ),
130 type: 'send_unselected_if_any',
131 fullCoverage: true,
132 filters: [
133 {
134 name: 'hideminor',
135 label: mw.msg( 'rcfilters-filter-minor-label' ),
136 description: mw.msg( 'rcfilters-filter-minor-description' ),
137 'class': 'mw-changeslist-minor'
138 },
139 {
140 name: 'hidemajor',
141 label: mw.msg( 'rcfilters-filter-major-label' ),
142 description: mw.msg( 'rcfilters-filter-major-description' ),
143 'class': 'mw-changeslist-major'
144 }
145 ]
146 },
147 changetype: {
148 title: mw.msg( 'rcfilters-filtergroup-changetype' ),
149 type: 'send_unselected_if_any',
150 fullCoverage: true,
151 filters: [
152 {
153 name: 'hidepageedits',
154 label: mw.msg( 'rcfilters-filter-pageedits-label' ),
155 description: mw.msg( 'rcfilters-filter-pageedits-description' ),
156 'default': false,
157 'class': 'mw-changeslist-src-mw-edit'
158
159 },
160 {
161 name: 'hidenewpages',
162 label: mw.msg( 'rcfilters-filter-newpages-label' ),
163 description: mw.msg( 'rcfilters-filter-newpages-description' ),
164 'default': false,
165 'class': 'mw-changeslist-src-mw-new'
166 },
167 {
168 name: 'hidecategorization',
169 label: mw.msg( 'rcfilters-filter-categorization-label' ),
170 description: mw.msg( 'rcfilters-filter-categorization-description' ),
171 'default': true,
172 'class': 'mw-changeslist-src-mw-categorize'
173 },
174 {
175 name: 'hidelog',
176 label: mw.msg( 'rcfilters-filter-logactions-label' ),
177 description: mw.msg( 'rcfilters-filter-logactions-description' ),
178 'default': false,
179 'class': 'mw-changeslist-src-mw-log'
180 }
181 ]
182 }
183 } );
184
185 // eslint-disable-next-line no-new
186 new mw.rcfilters.ui.FormWrapperWidget(
187 filtersModel, changesListModel, controller, $( 'fieldset.rcoptions' ) );
188
189 $( '.rcfilters-container' ).append( filtersWidget.$element );
190 $( 'body' ).append( $overlay );
191
192 // Set as ready
193 $( '.rcfilters-head' ).addClass( 'mw-rcfilters-ui-ready' );
194
195 window.addEventListener( 'popstate', function () {
196 controller.updateChangesList();
197 } );
198
199 $( 'a.mw-helplink' ).attr(
200 'href',
201 'https://www.mediawiki.org/wiki/Special:MyLanguage/Help:New_filters_for_edit_review'
202 );
203 }
204 };
205
206 $( rcfilters.init );
207
208 module.exports = rcfilters;
209
210 }( mediaWiki, jQuery ) );