mediawiki-skins-Vector/skin.json

621 lines
19 KiB
JSON
Raw Normal View History

{
"name": "Vector",
Merge SkinVector and VectorTemplate (step 1/2) Please note I7e06a4cc226f3434c0f655212a464b8b98bcc7f4 should be merged at the same time as this patch. == The background == All extensions have been weaned of BaseTemplate hooks in Wikimedia projects. This change now means that Vector will no longer run any BaseTemplate hooks. See the epic T253809 for the implementation details. == The change == BaseTemplate will now have nothing to do with the rendering of Vector. The skin version is added to express the significance of breaking compatibility with 3rd party extensions. We TEMPORARILY remove SkinVector to retain git blame. SkinTemplateVector will be renamed SkinVector in the follow up (see 2/2) Update skin.json to use SkinTemplateVector for the skin (this will be fixed in a follow up). The isLegacy method is moved to SkinTemplateVector. Changes of note: * html-debuglog is no longer needed. SkinMustache includes this information on the skins behalf * html-printtail and html-headelement are now not needed in the master template and added by SkinMustache * Skin::getAfterPortlet does not provide the `after-portlet` wrapping element provided by BaseTemplate::getAfterPortlet so this is added * SkinTemplate::getFooterIcons does not support the options that BaseTemplate::getFooterIcons does so any icons which do not have an image must be manually checked for and unset Known changes to HTML output as a result of intentionally delegating their output to the core SkinMustache class: * A new line is removed between the body element and #mw-page-base * #mw-html-debug-log now appears at the end of the body element * #printfooter is now a child of #mw-content-text rather than sibling. Bug: T251212 Change-Id: I4e89beb96f6401ed7e51bafdf0aac408f5a2c42f
2020-04-28 21:16:21 +00:00
"version": "1.0.0",
"author": [
"[https://www.mediawiki.org/wiki/Readers/Web/Team Readers Web Team]",
"Trevor Parscal",
"Roan Kattouw",
"Alex Hollender",
"Bernard Wang",
"Clare Ming",
"Jan Drewniak",
"Jon Robson",
"Nick Ray",
"Sam Smith",
"Stephen Niedzielski",
"Volker E."
],
"url": "https://www.mediawiki.org/wiki/Skin:Vector",
"descriptionmsg": "vector-skin-desc",
"namemsg": "vector-specialversion-name",
"license-name": "GPL-2.0-or-later",
"type": "skin",
"requires": {
"MediaWiki": ">= 1.41.0"
},
"ValidSkinNames": {
"vector-2022": {
"class": "MediaWiki\\Skins\\Vector\\SkinVector22",
"args": [
{
"name": "vector-2022",
"templateDirectory": "includes/templates",
"template": "skin",
"responsive": true,
"toc": false,
"link": {
"text-wrapper": {
"tag": "span"
}
},
"bodyClasses": [
"skin-vector",
"skin-vector-search-vue"
],
"menus": [
"user-interface-preferences",
"user-page",
"user-menu",
"notifications",
"views",
"actions",
"variants",
"associated-pages"
],
"scripts": [
"skins.vector.user",
"skins.vector.js"
],
"styles": [
"mediawiki.ui.button",
"skins.vector.styles",
"skins.vector.user.styles",
"skins.vector.icons",
"mediawiki.ui.icon"
],
"messages": [
"tooltip-p-logo",
"vector-opt-out-tooltip",
"vector-opt-out",
"vector-action-toggle-sidebar",
"vector-main-menu-tooltip",
"vector-jumptosearch",
"vector-jumptocontent",
"vector-toc-beginning",
"vector-toc-label",
"vector-toc-menu-tooltip",
"vector-toc-collapsible-button-label",
"vector-pin-element-label",
"vector-unpin-element-label",
"vector-site-nav-label",
"search",
"searchbutton",
"searcharticle",
"searchsuggest-search",
"sitesubtitle",
"sitetitle",
"tagline",
"personaltools",
"namespaces",
"views",
"tooltip-p-cactions",
"empty-language-selector-body",
"vector-toc-unpinned-popup",
"vector-page-tools-unpinned-popup",
"vector-main-menu-unpinned-popup"
]
}
]
},
Merge SkinVector and VectorTemplate (step 1/2) Please note I7e06a4cc226f3434c0f655212a464b8b98bcc7f4 should be merged at the same time as this patch. == The background == All extensions have been weaned of BaseTemplate hooks in Wikimedia projects. This change now means that Vector will no longer run any BaseTemplate hooks. See the epic T253809 for the implementation details. == The change == BaseTemplate will now have nothing to do with the rendering of Vector. The skin version is added to express the significance of breaking compatibility with 3rd party extensions. We TEMPORARILY remove SkinVector to retain git blame. SkinTemplateVector will be renamed SkinVector in the follow up (see 2/2) Update skin.json to use SkinTemplateVector for the skin (this will be fixed in a follow up). The isLegacy method is moved to SkinTemplateVector. Changes of note: * html-debuglog is no longer needed. SkinMustache includes this information on the skins behalf * html-printtail and html-headelement are now not needed in the master template and added by SkinMustache * Skin::getAfterPortlet does not provide the `after-portlet` wrapping element provided by BaseTemplate::getAfterPortlet so this is added * SkinTemplate::getFooterIcons does not support the options that BaseTemplate::getFooterIcons does so any icons which do not have an image must be manually checked for and unset Known changes to HTML output as a result of intentionally delegating their output to the core SkinMustache class: * A new line is removed between the body element and #mw-page-base * #mw-html-debug-log now appears at the end of the body element * #printfooter is now a child of #mw-content-text rather than sibling. Bug: T251212 Change-Id: I4e89beb96f6401ed7e51bafdf0aac408f5a2c42f
2020-04-28 21:16:21 +00:00
"vector": {
"class": "MediaWiki\\Skins\\Vector\\SkinVectorLegacy",
"@args": "See SkinVector::__construct for more detail.",
Merge SkinVector and VectorTemplate (step 1/2) Please note I7e06a4cc226f3434c0f655212a464b8b98bcc7f4 should be merged at the same time as this patch. == The background == All extensions have been weaned of BaseTemplate hooks in Wikimedia projects. This change now means that Vector will no longer run any BaseTemplate hooks. See the epic T253809 for the implementation details. == The change == BaseTemplate will now have nothing to do with the rendering of Vector. The skin version is added to express the significance of breaking compatibility with 3rd party extensions. We TEMPORARILY remove SkinVector to retain git blame. SkinTemplateVector will be renamed SkinVector in the follow up (see 2/2) Update skin.json to use SkinTemplateVector for the skin (this will be fixed in a follow up). The isLegacy method is moved to SkinTemplateVector. Changes of note: * html-debuglog is no longer needed. SkinMustache includes this information on the skins behalf * html-printtail and html-headelement are now not needed in the master template and added by SkinMustache * Skin::getAfterPortlet does not provide the `after-portlet` wrapping element provided by BaseTemplate::getAfterPortlet so this is added * SkinTemplate::getFooterIcons does not support the options that BaseTemplate::getFooterIcons does so any icons which do not have an image must be manually checked for and unset Known changes to HTML output as a result of intentionally delegating their output to the core SkinMustache class: * A new line is removed between the body element and #mw-page-base * #mw-html-debug-log now appears at the end of the body element * #printfooter is now a child of #mw-content-text rather than sibling. Bug: T251212 Change-Id: I4e89beb96f6401ed7e51bafdf0aac408f5a2c42f
2020-04-28 21:16:21 +00:00
"args": [
{
"name": "vector",
"template": "skin-legacy",
"templateDirectory": "includes/templates",
"responsive": false,
"link": {
"text-wrapper": {
"tag": "span"
}
},
"bodyClasses": [
"skin-vector-legacy"
],
"scripts": [
"skins.vector.legacy.js"
],
"styles": [
"skins.vector.styles.legacy"
],
"messages": [
"tooltip-p-logo",
"vector-opt-out-tooltip",
"vector-opt-out",
"navigation-heading",
"vector-action-toggle-sidebar",
"vector-main-menu-tooltip",
"vector-jumptonavigation",
"vector-jumptosearch",
Switch to navigation-first DOM order under `$wgVectorIsSearchInHeader` feature flag This moves the header, navigation, sidebar, and article toolbar to be before the content in the DOM. As a result, a lot of absolute positioning logic can be removed and styles can be simplified. Note that although the sidebar was moved from the header into the workspace container allowing it to de-absolutely positioned, its absolute positioning was kept intact as it has a fair amount of complexity that should be handled in a separate task. To activate, set `$wgVectorIsSearchInHeader = true;` Changes that could cause concern: * The "jump to search" link was removed as the search is now much earlier in the DOM and I questioned the value of keeping this. However, it can be added back in if this change is contentious. * A "jump to content" link was added to account for the new DOM order. * Because the sidebar was taken out of the header, users will not be able to tab from the sidebar button into the sidebar without additional tweaking (e.g. should we add JS to enable this?). It was deemed that this work can be saved as a follow-up task. * I applied `overflow-y: auto` to the `mw-page-container` because the header's top margin was collapsing and caused whitespace to appear between the viewport and the header. Alternatively, we could apply a top padding to the page container and remove the header's top margin. I went for the simplest solution but am open to alternatives. * I left the footer as-is in this patch to minimize risk. It might be cleaner later on to move the footer inside the workspace container which would leave only one workspace container. Bug: T261802 Change-Id: Ic553fab3bde25769b103d899b92b3b694c00c384
2020-09-08 23:20:58 +00:00
"vector-jumptocontent",
"search",
"searchbutton",
"searcharticle",
"searchsuggest-search",
"sitesubtitle",
"sitetitle",
"tagline"
]
Merge SkinVector and VectorTemplate (step 1/2) Please note I7e06a4cc226f3434c0f655212a464b8b98bcc7f4 should be merged at the same time as this patch. == The background == All extensions have been weaned of BaseTemplate hooks in Wikimedia projects. This change now means that Vector will no longer run any BaseTemplate hooks. See the epic T253809 for the implementation details. == The change == BaseTemplate will now have nothing to do with the rendering of Vector. The skin version is added to express the significance of breaking compatibility with 3rd party extensions. We TEMPORARILY remove SkinVector to retain git blame. SkinTemplateVector will be renamed SkinVector in the follow up (see 2/2) Update skin.json to use SkinTemplateVector for the skin (this will be fixed in a follow up). The isLegacy method is moved to SkinTemplateVector. Changes of note: * html-debuglog is no longer needed. SkinMustache includes this information on the skins behalf * html-printtail and html-headelement are now not needed in the master template and added by SkinMustache * Skin::getAfterPortlet does not provide the `after-portlet` wrapping element provided by BaseTemplate::getAfterPortlet so this is added * SkinTemplate::getFooterIcons does not support the options that BaseTemplate::getFooterIcons does so any icons which do not have an image must be manually checked for and unset Known changes to HTML output as a result of intentionally delegating their output to the core SkinMustache class: * A new line is removed between the body element and #mw-page-base * #mw-html-debug-log now appears at the end of the body element * #printfooter is now a child of #mw-content-text rather than sibling. Bug: T251212 Change-Id: I4e89beb96f6401ed7e51bafdf0aac408f5a2c42f
2020-04-28 21:16:21 +00:00
}
]
}
},
"SkinLessImportPaths": {
"vector-2022": "resources/mediawiki.less/vector-2022",
"vector": "resources/mediawiki.less/vector"
},
"SkinCodexThemes": {
"vector-2022": "wikimedia-ui-legacy",
"vector": "wikimedia-ui-legacy"
},
"MessagesDirs": {
"Vector": [
"i18n"
]
},
"AutoloadNamespaces": {
"MediaWiki\\Skins\\Vector\\": "includes/"
},
"TestAutoloadNamespaces": {
"MediaWiki\\Skins\\Vector\\": "includes/",
"MediaWiki\\Skins\\Vector\\Tests\\": "tests/phpunit/"
},
"ConfigRegistry": {
"vector": "GlobalVarConfig::newInstance"
},
"DefaultUserOptions": {
"vector-limited-width": 1,
"vector-page-tools-pinned": 1,
"vector-main-menu-pinned": 1,
"vector-toc-pinned": 1
},
"HookHandlers": {
"VectorHooks": {
"class": "MediaWiki\\Skins\\Vector\\Hooks"
}
},
"Hooks": {
"GetPreferences": "VectorHooks",
"LocalUserCreated": "VectorHooks",
"MakeGlobalVariablesScript": "VectorHooks",
"ResourceLoaderSiteModulePages": "VectorHooks",
"ResourceLoaderSiteStylesModulePages": "VectorHooks",
"SkinPageReadyConfig": "VectorHooks"
},
"@note": "When modifying skins.vector.styles definition, make sure the installer still works",
"ResourceModules": {
"skins.vector.user": {
"class": "MediaWiki\\Skins\\Vector\\ResourceLoader\\VectorResourceLoaderUserModule"
},
"skins.vector.user.styles": {
"class": "MediaWiki\\Skins\\Vector\\ResourceLoader\\VectorResourceLoaderUserStylesModule"
},
"skins.vector.search": {
"es6": true,
"dependencies": [
"mediawiki.Uri",
"mediawiki.util",
"@wikimedia/codex-search"
],
"packageFiles": [
"resources/skins.vector.search/skins.vector.search.js",
"resources/skins.vector.search/instrumentation.js",
"resources/skins.vector.search/fetch.js",
"resources/skins.vector.search/restSearchClient.js",
"resources/skins.vector.search/urlGenerator.js",
"resources/skins.vector.search/App.vue",
{
"name": "resources/skins.vector.search/config.json",
"callback": "MediaWiki\\Skins\\Vector\\Hooks::getVectorSearchResourceLoaderConfig"
}
],
"messages": [
"searchbutton",
"searchresults",
"vector-searchsuggest-containing"
]
},
"skins.vector.styles.legacy": {
"class": "ResourceLoaderSkinModule",
"features": {
"normalize": true,
"elements": true,
"logo": true,
"content-media": true,
"content-links": true,
"content-links-external": false,
"interface": true,
"interface-message-box": true,
"interface-category": true,
"content-tables": true,
"i18n-ordered-lists": true,
"i18n-all-lists-margins": true,
"i18n-headings": true
},
"styles": [
"resources/common/common.less",
"resources/skins.vector.styles.legacy/skin-legacy.less"
]
},
"skins.vector.styles": {
"class": "ResourceLoaderSkinModule",
"features": {
"normalize": true,
"elements": true,
"content-links": true,
"content-links-external": false,
"content-media": true,
"content-tables": true,
"interface": false,
"interface-category": true,
"interface-edit-section-links": true,
"interface-indicators": false,
"interface-message-box": true,
"interface-site-notice": false,
"interface-subtitle": false,
"interface-user-message": true,
"i18n-ordered-lists": true,
"i18n-all-lists-margins": true,
"i18n-headings": true,
"toc": false
},
"styles": [
"resources/common/common.less",
"resources/skins.vector.styles/skin.less"
],
"lessMessages": [
"parentheses-start",
"parentheses-end",
"brackets-start",
"brackets-end"
]
},
"skins.vector.zebra.styles": {
"class": "ResourceLoaderSkinModule",
"styles": [
"resources/skins.vector.zebra.styles/skin.less"
],
"lessMessages": [
"parentheses-start",
"parentheses-end",
"brackets-start",
"brackets-end"
]
},
"skins.vector.icons.js": {
"selectorWithVariant": ".mw-ui-icon-wikimedia-{name}-{variant}:before",
"selectorWithoutVariant": ".mw-ui-icon-wikimedia-{name}:before",
"useDataURI": false,
"defaultColor": "#000",
"class": "ResourceLoaderOOUIIconPackModule",
"variants": {
"progressive": {
"color": "#36c",
"global": true
}
},
"icons": [
"article",
"edit",
"editLock",
"exitFullscreen",
"fullScreen",
"halfStar",
"history",
"speechBubbles",
"speechBubbleAdd",
"star",
"unStar",
"wikiText"
]
},
"skins.vector.icons": {
"selectorWithVariant": ".mw-ui-icon-wikimedia-{name}-{variant}:before",
"selectorWithoutVariant": ".mw-ui-icon-wikimedia-{name}:before",
"useDataURI": false,
"defaultColor": "#000",
"class": "ResourceLoaderOOUIIconPackModule",
"variants": {
"progressive": {
"color": "#36c",
"global": true
}
},
"icons": [
"menu",
"heart",
"language",
"ellipsis",
"userAvatar",
"userAdd",
"userAnonymous",
"userTalk",
"sandbox",
"search",
"settings",
"labFlask",
"unStar",
"watchlist",
"userContributions",
"logIn",
"logOut",
"imageGallery",
"userGroup",
"expand",
"listBullet",
"close"
]
},
"skins.vector.js": {
"es6": true,
"styles": [
"resources/skins.vector.js/limitedWidthToggle.less"
],
"packageFiles": [
"resources/skins.vector.js/skin.js",
"resources/skins.vector.js/setupIntersectionObservers.js",
"resources/skins.vector.js/searchToggle.js",
"resources/skins.vector.js/stickyHeader.js",
"resources/skins.vector.js/scrollObserver.js",
"resources/skins.vector.js/AB.js",
"resources/skins.vector.js/tableOfContents.js",
"resources/skins.vector.js/sectionObserver.js",
"resources/skins.vector.js/deferUntilFrame.js",
"resources/skins.vector.js/pinnableElement.js",
"resources/skins.vector.js/features.js",
"resources/skins.vector.js/limitedWidthToggle.js",
"resources/skins.vector.js/popupNotification.js",
{
"name": "resources/skins.vector.js/activeABTest.json",
"callback": "MediaWiki\\Skins\\Vector\\Hooks::getActiveABTest"
},
{
"name": "resources/skins.vector.js/config.json",
"config": [ "VectorSearchApiUrl", "VectorLimitedWidthIndicator" ]
},
{
"name": "resources/skins.vector.js/tableOfContentsConfig.json",
"config": [
"VectorTableOfContentsCollapseAtCount",
"VectorTableOfContentsBeginning"
]
},
{
"name": "resources/skins.vector.js/templates/TableOfContents__list.mustache",
"file": "includes/templates/TableOfContents__list.mustache",
"type": "text"
},
{
"name": "resources/skins.vector.js/templates/TableOfContents__line.mustache",
"file": "includes/templates/TableOfContents__line.mustache",
"type": "text"
},
"resources/skins.vector.js/watchstar.js",
"resources/skins.vector.js/dropdownMenus.js",
"resources/skins.vector.js/languageButton.js",
"resources/skins.vector.js/echo.js",
"resources/skins.vector.js/searchLoader.js",
"resources/skins.vector.js/menuTabs.js"
],
"dependencies": [
"mediawiki.user",
"mediawiki.page.watch.ajax",
"mediawiki.storage",
"mediawiki.cookie",
"mediawiki.experiments",
"skins.vector.icons.js",
"mediawiki.page.ready",
"mediawiki.util"
],
"messages": [
"vector-limited-width-toggle-on-popup",
"vector-limited-width-toggle-off-popup",
"vector-search-loader",
"vector-limited-width-toggle",
"vector-toc-beginning",
"vector-toc-label",
"vector-pin-element-label",
"vector-unpin-element-label",
"vector-toc-unpinned-popup",
"vector-page-tools-unpinned-popup",
"vector-main-menu-unpinned-popup"
]
},
"skins.vector.legacy.js": {
"packageFiles": [
"resources/skins.vector.legacy.js/skin-legacy.js",
"resources/skins.vector.legacy.js/collapsibleTabs.js",
"resources/skins.vector.legacy.js/vector.js"
],
"dependencies": [
"mediawiki.page.ready",
"mediawiki.util"
]
}
},
"ResourceFileModulePaths": {
"localBasePath": "",
"remoteSkinPath": "Vector"
},
"ResourceModuleSkinStyles": {
"vector-2022": {
"+ext.growthExperiments.StructuredTask.PreEdit": "skinStyles/ext.growthExperiments.StructuredTask.PreEdit.less",
"ext.echo.styles.badge": "skinStyles/ext.echo.styles.badge.less",
"+ext.echo.styles.alert": "skinStyles/ext.echo.styles.alert.less",
"+mediawiki.action.edit": "skinStyles/mediawiki.action.edit.less",
"+mediawiki.action.view.redirectPage": "skinStyles/mediawiki.action.view.redirectPage.less",
"+mediawiki.notification": "skinStyles/mediawiki.notification.less",
"+oojs-ui-core.styles": "skinStyles/ooui.less",
"mediawiki.special": "skinStyles/mediawiki.special.less",
"mediawiki.special.search.interwikiwidget.styles": "skinStyles/mediawiki.special.search.interwikiwidget.less",
"+ext.relatedArticles.readMore": "skinStyles/ext.relatedArticles.readMore.less",
"+ext.uls.compactlinks": "skinStyles/ext.uls.compactlinks.less",
"+ext.uls.interface": "skinStyles/ext.uls.interface.less",
"+ext.visualEditor.base": "skinStyles/ext.visualEditor.less",
"jquery.ui": [
"skinStyles/jquery.ui/jquery.ui.core.css",
"skinStyles/jquery.ui/jquery.ui.theme.css",
"skinStyles/jquery.ui/jquery.ui.accordion.css",
"skinStyles/jquery.ui/jquery.ui.autocomplete.css",
"skinStyles/jquery.ui/jquery.ui.button.css",
"skinStyles/jquery.ui/jquery.ui.datepicker.css",
"skinStyles/jquery.ui/jquery.ui.dialog.css",
"skinStyles/jquery.ui/jquery.ui.menu.css",
"skinStyles/jquery.ui/jquery.ui.progressbar.css",
"skinStyles/jquery.ui/jquery.ui.resizable.css",
"skinStyles/jquery.ui/jquery.ui.selectable.css",
"skinStyles/jquery.ui/jquery.ui.slider.css",
"skinStyles/jquery.ui/jquery.ui.tabs.css",
"skinStyles/jquery.ui/jquery.ui.tooltip.css"
]
},
"vector": {
"ext.echo.styles.badge": "skinStyles/vector/ext.echo.styles.badge.less",
"+ext.echo.styles.alert": "skinStyles/ext.echo.styles.alert.less",
"jquery.tipsy": "skinStyles/jquery.tipsy.less",
"jquery.ui": [
"skinStyles/jquery.ui/jquery.ui.core.css",
"skinStyles/jquery.ui/jquery.ui.theme.css",
"skinStyles/jquery.ui/jquery.ui.accordion.css",
"skinStyles/jquery.ui/jquery.ui.autocomplete.css",
"skinStyles/jquery.ui/jquery.ui.button.css",
"skinStyles/jquery.ui/jquery.ui.datepicker.css",
"skinStyles/jquery.ui/jquery.ui.dialog.css",
"skinStyles/jquery.ui/jquery.ui.menu.css",
"skinStyles/jquery.ui/jquery.ui.progressbar.css",
"skinStyles/jquery.ui/jquery.ui.resizable.css",
"skinStyles/jquery.ui/jquery.ui.selectable.css",
"skinStyles/jquery.ui/jquery.ui.slider.css",
"skinStyles/jquery.ui/jquery.ui.tabs.css",
"skinStyles/jquery.ui/jquery.ui.tooltip.css"
],
"+mediawiki.action.view.redirectPage": "skinStyles/mediawiki.action.view.redirectPage.less",
"+mediawiki.notification": "skinStyles/vector/mediawiki.notification.less",
"+oojs-ui-core.styles": "skinStyles/ooui.less",
"mediawiki.special": "skinStyles/mediawiki.special.less",
"+ext.relatedArticles.readMore": "skinStyles/ext.relatedArticles.readMore.less",
"+ext.uls.compactlinks": "skinStyles/ext.uls.compactlinks.less",
"+ext.uls.interface": "skinStyles/ext.uls.interface.less"
}
},
"config": {
"VectorLimitedWidthIndicator": {
"value": false,
"description": "Temporary configuration flag that determines whether Vector skins can load indicators for limited width."
},
"VectorShareUserScripts": {
"value": true,
"description": "Temporary configuration flag that determines whether Vector skins should share user scripts and styles."
},
"VectorSearchApiUrl": {
"value": "",
"description": "To override the default search API, set this to the URL to rest.php on another wiki. Can be used with $wgDisableTextSearch and $wgSearchForwardUrl to mimic user experience on production."
},
"VectorUseIconWatch": {
"value": true
},
"VectorMaxWidthOptions": {
"value": {
"exclude": {
"mainpage": false,
"querystring": {
"action": "(history|edit|submit)",
"diff": ".+"
},
"namespaces": [
-1,
14
]
},
"include": [
"Special:Preferences"
]
},
"description": "options for configuring where where max-width should and should not apply. More details can be found in Hooks::shouldDisableMaxWidth PHP documentation."
},
"VectorResponsive": {
"value": false,
"description": "@var boolean turn Vector-2022 into a responsive skin by applying a view port and disabling the min-width"
[Special:Preferences] [PHP] Add skin version user preference and configs Add a Vector-specific user preference to Special:Preferences for toggling skin version, either Legacy Vector or the latest Vector. The presentation of the new preference section and the default values for anonymous, new, and existing accounts are configurable via $wgVectorShowSkinPreferences, $wgVectorDefaultSkinVersion (to be used by the feature manager in T244481), $wgVectorDefaultSkinVersionForExistingAccounts, and $wgVectorDefaultSkinVersionForNewAccounts. These configurations default to the fullest experience so that third-party configuration is minimal. See skin.json for details. The configurations are each tested in VectorHooksTest.php. When presentation is enabled, the new preference appears as a checkbox; enabled is Legacy mode and disable is latest. There are a number of unfortunate details: - Showing and hiding a checkbox is supported by OOUI. Showing and hiding a whole section (Vector skin preferences, in this case) is not so this additional client JavaScript functionality is added in Core (see Iaf68b238a8ac7a4fb22b9ef5d6c5a3394ee2e377). - Stylization as a checkbox is wanted. However, the implied storage type for OOUI checkboxes is a boolean. This is not wanted in the event that another skin version is added (e.g., '3' or 'alpha'). As a workaround, the preference is converted from a boolean to a version string ('1' or '2') on save in Hooks::onPreferencesFormPreSave() and from a version string to a checkbox enable / disable string ('1' or '0') in onGetPreferences(). There a number of test cases to help cover these concerning details. Documentation for overriding the skin version as a URL query parameter is provided in anticipation of T244481. Bug: T242381 Bug: T245793 Depends-On: Iaf68b238a8ac7a4fb22b9ef5d6c5a3394ee2e377 Depends-On: Ifc2863fca9cd9efd11ac30c780420e8d89e8cb22 Change-Id: I177dad88fc982170641059b6a4f53fbb38eefad6
2020-01-23 21:53:09 +00:00
},
"VectorDefaultSkinVersionForExistingAccounts": {
"value": "1",
"description": "@var string:['2'|'1'] The version ('2' for latest, '1' for legacy) of the Vector skin to use when an existing user has not specified a preference. This configuration is not used for new accounts (see VectorDefaultSkinVersionForNewAccounts) and is impermanent. In the future, this field may contains versions such as \"beta\" which when specified and the BetaFeatures extension is installed, and the user is enrolled, the latest version is used otherwise legacy. The value is _not_ persisted."
[Special:Preferences] [PHP] Add skin version user preference and configs Add a Vector-specific user preference to Special:Preferences for toggling skin version, either Legacy Vector or the latest Vector. The presentation of the new preference section and the default values for anonymous, new, and existing accounts are configurable via $wgVectorShowSkinPreferences, $wgVectorDefaultSkinVersion (to be used by the feature manager in T244481), $wgVectorDefaultSkinVersionForExistingAccounts, and $wgVectorDefaultSkinVersionForNewAccounts. These configurations default to the fullest experience so that third-party configuration is minimal. See skin.json for details. The configurations are each tested in VectorHooksTest.php. When presentation is enabled, the new preference appears as a checkbox; enabled is Legacy mode and disable is latest. There are a number of unfortunate details: - Showing and hiding a checkbox is supported by OOUI. Showing and hiding a whole section (Vector skin preferences, in this case) is not so this additional client JavaScript functionality is added in Core (see Iaf68b238a8ac7a4fb22b9ef5d6c5a3394ee2e377). - Stylization as a checkbox is wanted. However, the implied storage type for OOUI checkboxes is a boolean. This is not wanted in the event that another skin version is added (e.g., '3' or 'alpha'). As a workaround, the preference is converted from a boolean to a version string ('1' or '2') on save in Hooks::onPreferencesFormPreSave() and from a version string to a checkbox enable / disable string ('1' or '0') in onGetPreferences(). There a number of test cases to help cover these concerning details. Documentation for overriding the skin version as a URL query parameter is provided in anticipation of T244481. Bug: T242381 Bug: T245793 Depends-On: Iaf68b238a8ac7a4fb22b9ef5d6c5a3394ee2e377 Depends-On: Ifc2863fca9cd9efd11ac30c780420e8d89e8cb22 Change-Id: I177dad88fc982170641059b6a4f53fbb38eefad6
2020-01-23 21:53:09 +00:00
},
"VectorDefaultSkinVersionForNewAccounts": {
"value": null,
"description": "@var string|null The version ('2' for latest, '1' for legacy) of the Vector skin to **set** for newly created user accounts. **The value is persisted as a user preference.** This configuration is not used for preexisting accounts (see VectorDefaultSkinVersionForExistingAccounts) and only ever executed once at new account creation time. If it is null, no user preference will be set."
},
"VectorWvuiSearchOptions": {
"value": {
"showThumbnail": true,
"showDescription": true
}
},
"VectorLanguageInHeader": {
"value": {
"logged_in": true,
"logged_out": true
},
"description": "@var array Moves the language links from the sidebar into a menu beside the page title. Also moves the indicators to the line below, next to the tagline (siteSub)."
},
"VectorLanguageInMainPageHeader": {
"value": {
"logged_in": false,
"logged_out": false
},
"description": "@var When `VectorLanguageInHeader` is enabled, determines whether the Main Page's language button should be at the top or bottom of the content. The default position on the main page is at the bottom."
},
"VectorStickyHeader": {
"value": {
"logged_in": true,
"logged_out": false
},
"description": "@var array Enables a persistent header that allows quick access to user links, editing tools, search and other links while scrolling down a page"
},
"VectorWebABTestEnrollment": {
"value": {
"name": "skin-vector-zebra-experiment",
"enabled": false,
"buckets": {
"unsampled": {
"samplingRate": 0
},
"control": {
"samplingRate": 0.5
},
"treatment": {
"samplingRate": 0.5
}
}
},
"description": "An associative array of A/B test configs keyed by parameters noted in mediawiki.experiments.js. There must be an `unsampled` bucket that represents a population excluded from the experiment. Additionally, the treatment bucket(s) must include a case-insensitive `treatment` substring in their name (e.g. `treatment`, `stickyHeaderTreatment`, `sticky-header-treatment`)"
},
"VectorPromoteAddTopic": {
"value": true,
"description": "@var boolean Temporary feature flag that promotes the 'Add topic' link in the views menu, to a button in the page title bar."
},
"VectorTableOfContentsBeginning": {
"value": true,
"description": "@var boolean Temporary feature flag that controls link to beginning of article."
},
"VectorTableOfContentsCollapseAtCount": {
"value": 28,
"description": "@var The minimum number of headings required to collapse all headings in the sticky table of contents by default."
},
"VectorZebraDesign": {
"value": {
"logged_in": false,
"logged_out": false
},
"description": "@var boolean Temporary feature flag that enables the zebra design for the Vector skin."
}
},
"ServiceWiringFiles": [
"includes/ServiceWiring.php"
],
"manifest_version": 2
}