installer: Read styles from Vector's skin.json
Vector now has a skin.json and the PHP entry point is just a stub, so including it doesn't do anything. We can read from the skin.json file and register the module properly instead of depending upon implicit globals. Also make ExtensionRegistry::__construct() not fail if $wgObjectCaches is not set up properly, which is the case sometimes in the installer. Bug: T98043 Change-Id: I5a653b095665092f8a27416b8a7f28ebf7d4d8c1
This commit is contained in:
parent
eeab8768b8
commit
3c1d3e2bc6
2 changed files with 22 additions and 13 deletions
|
|
@ -133,26 +133,24 @@ class WebInstallerOutput {
|
|||
'mediawiki.skinning.interface',
|
||||
);
|
||||
|
||||
if ( file_exists( "$wgStyleDirectory/Vector/Vector.php" ) ) {
|
||||
$resourceLoader = new ResourceLoader();
|
||||
|
||||
if ( file_exists( "$wgStyleDirectory/Vector/skin.json" ) ) {
|
||||
// Force loading Vector skin if available as a fallback skin
|
||||
// for whatever ResourceLoader wants to have as the default.
|
||||
|
||||
// Include instead of require, as this will work without it, it will just look bad.
|
||||
// We need the 'global' statement for $wgResourceModules because the Vector skin adds the
|
||||
// definitions for its RL modules there that we use implicitly below.
|
||||
|
||||
// @codingStandardsIgnoreStart
|
||||
global $wgResourceModules; // This is NOT UNUSED!
|
||||
// @codingStandardsIgnoreEnd
|
||||
|
||||
include_once "$wgStyleDirectory/Vector/Vector.php";
|
||||
$registry = new ExtensionRegistry();
|
||||
$data = $registry->readFromQueue( array(
|
||||
"$wgStyleDirectory/Vector/skin.json" => 1,
|
||||
) );
|
||||
if ( isset( $data['globals']['wgResourceModules'] ) ) {
|
||||
$resourceLoader->register( $data['globals']['wgResourceModules'] );
|
||||
}
|
||||
|
||||
$moduleNames[] = 'skins.vector.styles';
|
||||
}
|
||||
|
||||
$moduleNames[] = 'mediawiki.legacy.config';
|
||||
|
||||
$resourceLoader = new ResourceLoader();
|
||||
$rlContext = new ResourceLoaderContext( $resourceLoader, new FauxRequest( array(
|
||||
'debug' => 'true',
|
||||
'lang' => $this->getLanguageCode(),
|
||||
|
|
@ -163,6 +161,10 @@ class WebInstallerOutput {
|
|||
foreach ( $moduleNames as $moduleName ) {
|
||||
/** @var ResourceLoaderFileModule $module */
|
||||
$module = $resourceLoader->getModule( $moduleName );
|
||||
if ( !$module ) {
|
||||
// T98043: Don't fatal, but it won't look as pretty.
|
||||
continue;
|
||||
}
|
||||
|
||||
// Based on: ResourceLoaderFileModule::getStyles (without the DB query)
|
||||
$styles = array_merge( $styles, ResourceLoader::makeCombinedStyles(
|
||||
|
|
|
|||
|
|
@ -62,7 +62,14 @@ class ExtensionRegistry {
|
|||
}
|
||||
|
||||
public function __construct() {
|
||||
$this->cache = ObjectCache::newAccelerator( array(), CACHE_NONE );
|
||||
// We use a try/catch instead of the $fallback parameter because
|
||||
// we don't want to fail here if $wgObjectCaches is not configured
|
||||
// properly for APC setup
|
||||
try {
|
||||
$this->cache = ObjectCache::newAccelerator( array() );
|
||||
} catch ( MWException $e ) {
|
||||
$this->cache = new EmptyBagOStuff();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in a new issue