Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
Constants
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2namespace MediaWiki\Skins\Vector;
3
4use FatalError;
5
6/**
7 * A namespace for Vector constants for internal Vector usage only. **Do not rely on this file as an
8 * API as it may change without warning at any time.**
9 * @package Vector
10 * @internal
11 */
12final class Constants {
13    /**
14     * This is tightly coupled to the ValidSkinNames field in skin.json.
15     * @var string
16     */
17    public const SKIN_NAME_MODERN = 'vector-2022';
18
19    /**
20     * This is tightly coupled to the ValidSkinNames field in skin.json.
21     * @var string
22     */
23    public const SKIN_NAME_LEGACY = 'vector';
24
25    // These are used to provide different default skin for new users.
26    /**
27     * @var string
28     */
29    public const SKIN_VERSION_LEGACY = '1';
30    /**
31     * @var string
32     */
33    public const SKIN_VERSION_LATEST = '2';
34
35    // These are tightly coupled to skin.json's configs. See skin.json for documentation.
36    /**
37     * @var string
38     */
39    public const CONFIG_KEY_DEFAULT_SKIN_VERSION_FOR_NEW_ACCOUNTS =
40        'VectorDefaultSkinVersionForNewAccounts';
41
42    /**
43     * @var string
44     */
45    public const PREF_KEY_SKIN = 'skin';
46
47    // These are used in the Feature Management System.
48    /**
49     * Also known as `$wgFullyInitialised`. Set to true in core/includes/Setup.php.
50     * @var string
51     */
52    public const CONFIG_KEY_FULLY_INITIALISED = 'FullyInitialised';
53
54    /**
55     * @var string
56     */
57    public const REQUIREMENT_FULLY_INITIALISED = 'FullyInitialised';
58
59    /**
60     * @var string
61     */
62    public const REQUIREMENT_LOGGED_IN = 'LoggedIn';
63
64    /**
65     * @var string
66     */
67    public const FEATURE_LANGUAGE_IN_HEADER = 'LanguageInHeader';
68
69    /**
70     * @var string
71     */
72    public const CONFIG_KEY_LANGUAGE_IN_HEADER = 'VectorLanguageInHeader';
73
74    /**
75     * @var string
76     */
77    public const REQUIREMENT_LANGUAGE_IN_HEADER = 'LanguageInHeader';
78
79    /**
80     * @var string
81     */
82    public const CONFIG_STICKY_HEADER = 'VectorStickyHeader';
83
84    /**
85     * @var string
86     */
87    public const REQUIREMENT_STICKY_HEADER = 'StickyHeader';
88
89    /**
90     * @var string
91     */
92    public const FEATURE_STICKY_HEADER = 'StickyHeader';
93
94    /**
95     * Defines whether an A/B test is running.
96     *
97     * @var string
98     */
99    public const CONFIG_WEB_AB_TEST_ENROLLMENT = 'VectorWebABTestEnrollment';
100
101    /**
102     * The `mediawiki.searchSuggest` protocol piece of the SearchSatisfaction instrumention reads
103     * the value of an element with the "data-search-loc" attribute and set the event's
104     * `inputLocation` property accordingly.
105     *
106     * When the search widget is moved as part of the "Search 1: Search widget move" feature, the
107     * "data-search-loc" attribute is set to this value.
108     *
109     * See also:
110     * - https://www.mediawiki.org/wiki/Reading/Web/Desktop_Improvements/Features#Search_1:_Search_widget_move
111     * - https://phabricator.wikimedia.org/T261636 and https://phabricator.wikimedia.org/T256100
112     * - https://gerrit.wikimedia.org/g/mediawiki/core/+/61d36def2d7adc15c88929c824b444f434a0511a/resources/src/mediawiki.searchSuggest/searchSuggest.js#106
113     *
114     * @var string
115     */
116    public const SEARCH_BOX_INPUT_LOCATION_MOVED = 'header-moved';
117
118    /**
119     * Similar to `Constants::SEARCH_BOX_INPUT_LOCATION_MOVED`, when the search widget hasn't been
120     * moved, the "data-search-loc" attribute is set to this value.
121     *
122     * @var string
123     */
124    public const SEARCH_BOX_INPUT_LOCATION_DEFAULT = 'header-navigation';
125
126    /**
127     * @var string
128     */
129    public const REQUIREMENT_IS_MAIN_PAGE = 'IsMainPage';
130
131    /**
132     * @var string
133     */
134    public const REQUIREMENT_LANGUAGE_IN_MAIN_PAGE_HEADER = 'LanguageInMainPageHeader';
135
136    /**
137     * @var string
138     */
139    public const CONFIG_LANGUAGE_IN_MAIN_PAGE_HEADER = 'VectorLanguageInMainPageHeader';
140
141    /**
142     * @var string
143     */
144    public const FEATURE_LANGUAGE_IN_MAIN_PAGE_HEADER = 'LanguageInMainPageHeader';
145
146    /**
147     * @var string
148     */
149    public const WEB_AB_TEST_ARTICLE_ID_FACTORY_SERVICE = 'WikimediaEvents.WebABTestArticleIdFactory';
150
151    /**
152     * @var string
153     */
154    public const FEATURE_PAGE_TOOLS_PINNED = 'PageToolsPinned';
155
156    /**
157     * @var string
158     */
159    public const REQUIREMENT_PAGE_TOOLS_PINNED = 'PageToolsPinned';
160
161    /**
162     * @var string
163     */
164    public const PREF_KEY_PAGE_TOOLS_PINNED = 'vector-page-tools-pinned';
165
166    /**
167     * @var string
168     */
169    public const REQUIREMENT_TOC_PINNED = 'TOCPinned';
170
171    /**
172     * @var string
173     */
174    public const PREF_KEY_TOC_PINNED = 'vector-toc-pinned';
175
176    /**
177     * @var string
178     */
179    public const FEATURE_TOC_PINNED = 'TOCPinned';
180
181    /**
182     * @var string
183     */
184    public const FEATURE_MAIN_MENU_PINNED = 'MainMenuPinned';
185
186    /**
187     * @var string
188     */
189    public const REQUIREMENT_MAIN_MENU_PINNED = 'MainMenuPinned';
190
191    /**
192     * @var string
193     */
194    public const PREF_KEY_MAIN_MENU_PINNED = 'vector-main-menu-pinned';
195
196    /**
197     * @var string
198     */
199    public const FEATURE_LIMITED_WIDTH = 'LimitedWidth';
200
201    /**
202     * @var string
203     */
204    public const REQUIREMENT_LIMITED_WIDTH = 'LimitedWidth';
205
206    /**
207     * @var string
208     */
209    public const PREF_KEY_LIMITED_WIDTH = 'vector-limited-width';
210
211    /**
212     * @var string
213     */
214    public const FEATURE_LIMITED_WIDTH_CONTENT = 'LimitedWidthContent';
215
216    /**
217     * @var string
218     */
219    public const REQUIREMENT_LIMITED_WIDTH_CONTENT = 'LimitedWidthContent';
220
221    /**
222     * @var bool
223     */
224    public const CONFIG_DEFAULT_LIMITED_WIDTH = 1;
225
226    /**
227     * @var string
228     */
229    public const PREF_KEY_FONT_SIZE = 'vector-font-size';
230
231    /**
232     * @var string
233     */
234    public const FEATURE_FONT_SIZE = 'CustomFontSize';
235
236    /**
237     * @var string
238     */
239    public const REQUIREMENT_FONT_SIZE = 'CustomFontSize';
240
241    /**
242     * @var string
243     */
244    public const FEATURE_APPEARANCE_PINNED = 'AppearancePinned';
245
246    /**
247     * @var string
248     */
249    public const REQUIREMENT_APPEARANCE_PINNED = 'AppearancePinned';
250
251    /**
252     * @var string
253     */
254    public const PREF_KEY_APPEARANCE_PINNED = 'vector-appearance-pinned';
255
256    /**
257     * @var string
258     */
259    public const CONFIG_KEY_APPEARANCE = 'VectorAppearance';
260
261    /**
262     * @var string
263     */
264    public const FEATURE_APPEARANCE = 'Appearance';
265
266    /**
267     * @var string
268     */
269    public const REQUIREMENT_APPEARANCE = 'Appearance';
270
271    /**
272     * @var string
273     */
274    public const CONFIG_KEY_NIGHT_MODE = 'VectorNightMode';
275
276    /**
277     * @var string
278     */
279    public const FEATURE_NIGHT_MODE = 'NightMode';
280
281    /**
282     * @var string
283     */
284    public const REQUIREMENT_NIGHT_MODE = 'NightMode';
285
286    /**
287     * @var string
288     */
289    public const PREF_KEY_NIGHT_MODE = 'vector-theme';
290
291    /**
292     * @var string
293     */
294    public const REQUIREMENT_PREF_NIGHT_MODE = 'PrefNightMode';
295
296    /**
297     * @var string
298     */
299    public const PREF_NIGHT_MODE = 'PrefNightMode';
300
301    /**
302     * @var string
303     */
304    public const VECTOR_2022_BETA_KEY = 'vector-2022-beta-feature';
305
306    /**
307     * @var array
308     */
309    public const VECTOR_BETA_FEATURES = [
310        self::CONFIG_KEY_APPEARANCE,
311    ];
312
313    /**
314     * This class is for namespacing constants only. Forbid construction.
315     * @throws FatalError
316     * @return never
317     */
318    private function __construct() {
319        throw new FatalError( "Cannot construct a utility class." );
320    }
321}