mirror of
https://gerrit.wikimedia.org/r/mediawiki/skins/Vector.git
synced 2024-12-02 11:16:37 +00:00
eca9fcbf79
The LatestSkinVersionRequirement is problematic for various reasons: 1) It uses the "useskin" query string parameter which may or may not refer to the correct skin (in the case of a non-existent skin it will always come to the conclusion that it is not modern Vector and thus must be legacy). 2) It uses the User object which may or may not be safeToLoad depending on when called. The feature seems redundant at this point, as we are separating code into separate classes Vector and Vector22 and all the features only apply to modern Vector. I suggest we remove it and use the features explicitly in the skin intended. Bug: T305232 Bug: T305262 Bug: T302627 Change-Id: I92fa33547bd601e05ddc8c1468e681892e47c16b
226 lines
6.5 KiB
PHP
226 lines
6.5 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Service Wirings for Vector skin
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
* http://www.gnu.org/copyleft/gpl.html
|
|
*
|
|
* @file
|
|
* @since 1.35
|
|
*/
|
|
|
|
use MediaWiki\MediaWikiServices;
|
|
use Vector\Constants;
|
|
use Vector\FeatureManagement\FeatureManager;
|
|
use Vector\FeatureManagement\Requirements\DynamicConfigRequirement;
|
|
use Vector\FeatureManagement\Requirements\OverridableConfigRequirement;
|
|
|
|
return [
|
|
Constants::SERVICE_CONFIG => static function ( MediaWikiServices $services ) {
|
|
return $services->getService( 'ConfigFactory' )->makeConfig( Constants::SKIN_NAME_LEGACY );
|
|
},
|
|
Constants::SERVICE_FEATURE_MANAGER => static function ( MediaWikiServices $services ) {
|
|
$featureManager = new FeatureManager();
|
|
|
|
$featureManager->registerRequirement(
|
|
new DynamicConfigRequirement(
|
|
$services->getMainConfig(),
|
|
Constants::CONFIG_KEY_FULLY_INITIALISED,
|
|
Constants::REQUIREMENT_FULLY_INITIALISED
|
|
)
|
|
);
|
|
|
|
$context = RequestContext::getMain();
|
|
|
|
// Feature: Languages in sidebar
|
|
// ================================
|
|
$featureManager->registerRequirement(
|
|
new OverridableConfigRequirement(
|
|
$services->getMainConfig(),
|
|
$context->getUser(),
|
|
$context->getRequest(),
|
|
$services->getCentralIdLookupFactory()->getNonLocalLookup(),
|
|
Constants::CONFIG_KEY_LANGUAGE_IN_HEADER,
|
|
Constants::REQUIREMENT_LANGUAGE_IN_HEADER,
|
|
Constants::QUERY_PARAM_LANGUAGE_IN_HEADER,
|
|
Constants::CONFIG_LANGUAGE_IN_HEADER_TREATMENT_AB_TEST
|
|
)
|
|
);
|
|
|
|
// ---
|
|
|
|
// Temporary T286932 - remove after languages A/B test is finished.
|
|
$requirementName = 'T286932';
|
|
|
|
// MultiConfig checks each config in turn, allowing us to override the main config for specific keys. In this
|
|
// case, override the "VectorLanguageInHeaderABTest" configuration value so that the following requirement
|
|
// always buckets the user as if the language treatment A/B test were running.
|
|
$config = new MultiConfig( [
|
|
new HashConfig( [
|
|
Constants::CONFIG_LANGUAGE_IN_HEADER_TREATMENT_AB_TEST => true,
|
|
] ),
|
|
$services->getMainConfig(),
|
|
] );
|
|
|
|
$featureManager->registerRequirement(
|
|
new OverridableConfigRequirement(
|
|
$config,
|
|
$context->getUser(),
|
|
$context->getRequest(),
|
|
$services->getCentralIdLookupFactory()->getNonLocalLookup(),
|
|
Constants::CONFIG_KEY_LANGUAGE_IN_HEADER,
|
|
$requirementName,
|
|
/* $overrideName = */ '',
|
|
Constants::CONFIG_LANGUAGE_IN_HEADER_TREATMENT_AB_TEST
|
|
)
|
|
);
|
|
|
|
// ---
|
|
|
|
$featureManager->registerFeature(
|
|
Constants::FEATURE_LANGUAGE_IN_HEADER,
|
|
[
|
|
Constants::REQUIREMENT_FULLY_INITIALISED,
|
|
Constants::REQUIREMENT_LANGUAGE_IN_HEADER,
|
|
]
|
|
);
|
|
|
|
// Feature: T293470: Language in main page header
|
|
// ================================
|
|
$featureManager->registerRequirement(
|
|
new OverridableConfigRequirement(
|
|
$services->getMainConfig(),
|
|
$context->getUser(),
|
|
$context->getRequest(),
|
|
null,
|
|
Constants::CONFIG_LANGUAGE_IN_MAIN_PAGE_HEADER,
|
|
Constants::REQUIREMENT_LANGUAGE_IN_MAIN_PAGE_HEADER,
|
|
Constants::QUERY_PARAM_LANGUAGE_IN_MAIN_PAGE_HEADER,
|
|
null
|
|
)
|
|
);
|
|
|
|
$featureManager->registerSimpleRequirement(
|
|
Constants::REQUIREMENT_IS_MAIN_PAGE,
|
|
$context->getTitle() ? $context->getTitle()->isMainPage() : false
|
|
);
|
|
|
|
$featureManager->registerFeature(
|
|
Constants::FEATURE_LANGUAGE_IN_MAIN_PAGE_HEADER,
|
|
[
|
|
Constants::REQUIREMENT_FULLY_INITIALISED,
|
|
Constants::REQUIREMENT_IS_MAIN_PAGE,
|
|
Constants::REQUIREMENT_LANGUAGE_IN_HEADER,
|
|
Constants::REQUIREMENT_LANGUAGE_IN_MAIN_PAGE_HEADER
|
|
]
|
|
);
|
|
|
|
// Feature: T295555: Language switch alert in sidebar
|
|
// ================================
|
|
$featureManager->registerRequirement(
|
|
new OverridableConfigRequirement(
|
|
$services->getMainConfig(),
|
|
$context->getUser(),
|
|
$context->getRequest(),
|
|
null,
|
|
Constants::CONFIG_LANGUAGE_ALERT_IN_SIDEBAR,
|
|
Constants::REQUIREMENT_LANGUAGE_ALERT_IN_SIDEBAR,
|
|
Constants::QUERY_PARAM_LANGUAGE_ALERT_IN_SIDEBAR,
|
|
null
|
|
)
|
|
);
|
|
|
|
$featureManager->registerFeature(
|
|
Constants::FEATURE_LANGUAGE_ALERT_IN_SIDEBAR,
|
|
[
|
|
Constants::REQUIREMENT_FULLY_INITIALISED,
|
|
Constants::REQUIREMENT_LANGUAGE_IN_HEADER,
|
|
Constants::REQUIREMENT_LANGUAGE_ALERT_IN_SIDEBAR
|
|
]
|
|
);
|
|
|
|
// Feature: T297610: Table of Contents
|
|
// ================================
|
|
$featureManager->registerRequirement(
|
|
new OverridableConfigRequirement(
|
|
$services->getMainConfig(),
|
|
$context->getUser(),
|
|
$context->getRequest(),
|
|
null,
|
|
Constants::CONFIG_TABLE_OF_CONTENTS,
|
|
Constants::REQUIREMENT_TABLE_OF_CONTENTS,
|
|
Constants::QUERY_PARAM_TABLE_OF_CONTENTS,
|
|
null
|
|
)
|
|
);
|
|
|
|
$featureManager->registerFeature(
|
|
Constants::FEATURE_TABLE_OF_CONTENTS,
|
|
[
|
|
Constants::REQUIREMENT_FULLY_INITIALISED,
|
|
Constants::REQUIREMENT_TABLE_OF_CONTENTS
|
|
]
|
|
);
|
|
|
|
// Feature: Sticky header
|
|
// ================================
|
|
$featureManager->registerRequirement(
|
|
new OverridableConfigRequirement(
|
|
$services->getMainConfig(),
|
|
$context->getUser(),
|
|
$context->getRequest(),
|
|
null,
|
|
Constants::CONFIG_STICKY_HEADER,
|
|
Constants::REQUIREMENT_STICKY_HEADER,
|
|
Constants::QUERY_PARAM_STICKY_HEADER,
|
|
null
|
|
)
|
|
);
|
|
|
|
$featureManager->registerRequirement(
|
|
new OverridableConfigRequirement(
|
|
$services->getMainConfig(),
|
|
$context->getUser(),
|
|
$context->getRequest(),
|
|
null,
|
|
Constants::CONFIG_STICKY_HEADER_EDIT,
|
|
Constants::REQUIREMENT_STICKY_HEADER_EDIT,
|
|
Constants::QUERY_PARAM_STICKY_HEADER_EDIT,
|
|
null
|
|
)
|
|
);
|
|
|
|
$featureManager->registerFeature(
|
|
Constants::FEATURE_STICKY_HEADER,
|
|
[
|
|
Constants::REQUIREMENT_FULLY_INITIALISED,
|
|
Constants::REQUIREMENT_STICKY_HEADER
|
|
]
|
|
);
|
|
|
|
$featureManager->registerFeature(
|
|
Constants::FEATURE_STICKY_HEADER_EDIT,
|
|
[
|
|
Constants::REQUIREMENT_FULLY_INITIALISED,
|
|
Constants::REQUIREMENT_STICKY_HEADER,
|
|
Constants::REQUIREMENT_STICKY_HEADER_EDIT,
|
|
]
|
|
);
|
|
|
|
return $featureManager;
|
|
}
|
|
];
|