Merge "Add config to disable sidebar state persistence for logged-in users."

This commit is contained in:
jenkins-bot 2020-07-17 16:57:18 +00:00 committed by Gerrit Code Review
commit c7e9719b9b
4 changed files with 40 additions and 3 deletions

View file

@ -104,6 +104,11 @@ final class Constants {
*/ */
public const FEATURE_LATEST_SKIN = 'LatestSkin'; public const FEATURE_LATEST_SKIN = 'LatestSkin';
/**
* @var string
*/
public const CONFIG_KEY_DISABLE_SIDEBAR_PERSISTENCE = 'VectorDisableSidebarPersistence';
// These are used for query parameters. // These are used for query parameters.
/** /**
* Override the skin version user preference and site Config. See readme. * Override the skin version user preference and site Config. See readme.

View file

@ -224,6 +224,34 @@ class Hooks {
} }
} }
/**
* NOTE: Please use ResourceLoaderGetConfigVars hook instead if possible
* for adding config to the page.
* Adds config variables to JS that depend on current page/request.
*
* Adds a config flag that can disable saving the VectorSidebarVisible
* user preference when the sidebar menu icon is clicked.
*
* @param array &$vars Array of variables to be added into the output.
* @param OutputPage $out OutputPage instance calling the hook
*/
public static function onMakeGlobalVariablesScript( &$vars, OutputPage $out ) {
if ( $out->getSkin() instanceof SkinVector ) {
$skinVersionLookup = new SkinVersionLookup(
$out->getRequest(),
$out->getUser(),
self::getServiceConfig()
);
if ( !$skinVersionLookup->isLegacy() ) {
$vars[ 'wgVectorDisableSidebarPersistence' ] =
self::getConfig(
Constants::CONFIG_KEY_DISABLE_SIDEBAR_PERSISTENCE
);
}
}
}
/** /**
* Get a configuration variable such as `Constants::CONFIG_KEY_SHOW_SKIN_PREFERENCES`. * Get a configuration variable such as `Constants::CONFIG_KEY_SHOW_SKIN_PREFERENCES`.
* *

View file

@ -79,8 +79,7 @@ function init( window ) {
button = window.document.getElementById( SIDEBAR_BUTTON_ID ); button = window.document.getElementById( SIDEBAR_BUTTON_ID );
initCheckboxHack( checkbox, button ); initCheckboxHack( checkbox, button );
if ( mw.config.get( 'wgUserName' ) && !mw.config.get( 'wgVectorDisableSidebarPersistence' ) ) {
if ( mw.config.get( 'wgUserName' ) ) {
bindSidebarClickEvent( checkbox, button ); bindSidebarClickEvent( checkbox, button );
} }
} }

View file

@ -37,7 +37,8 @@
"PreferencesFormPreSave": "Vector\\Hooks::onPreferencesFormPreSave", "PreferencesFormPreSave": "Vector\\Hooks::onPreferencesFormPreSave",
"SkinTemplateNavigation": "Vector\\Hooks::onSkinTemplateNavigation", "SkinTemplateNavigation": "Vector\\Hooks::onSkinTemplateNavigation",
"LocalUserCreated": "Vector\\Hooks::onLocalUserCreated", "LocalUserCreated": "Vector\\Hooks::onLocalUserCreated",
"OutputPageBodyAttributes": "Vector\\Hooks::onOutputPageBodyAttributes" "OutputPageBodyAttributes": "Vector\\Hooks::onOutputPageBodyAttributes",
"MakeGlobalVariablesScript": "Vector\\Hooks::onMakeGlobalVariablesScript"
}, },
"@note": "When modifying skins.vector.styles definition, make sure the installer still works", "@note": "When modifying skins.vector.styles definition, make sure the installer still works",
"ResourceModules": { "ResourceModules": {
@ -164,6 +165,10 @@
"VectorLayoutMaxWidth": { "VectorLayoutMaxWidth": {
"value": false, "value": false,
"description": "@var boolean Enables the max-width layout for the latest version of Vector. This is intended to be a very short-lived feature flag whose sole purpose is to derisk the deployment of T246420. It should be removed (and made the default) as quickly as possible." "description": "@var boolean Enables the max-width layout for the latest version of Vector. This is intended to be a very short-lived feature flag whose sole purpose is to derisk the deployment of T246420. It should be removed (and made the default) as quickly as possible."
},
"VectorDisableSidebarPersistence": {
"value": false,
"description": "@var boolean Temporary feature flag that disables saving the sidebar expanded/collapsed state as a user-preference (triggered via clicking the main menu icon). This is intended as a temporary kill-switch in the event that the DB is overloaded with writes to the user_options table."
} }
}, },
"ServiceWiringFiles": [ "ServiceWiringFiles": [