X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2Fresourceloader%2FResourceLoaderStartUpModule.php;h=a99305ca6142953233824047859317a27ea44cb8;hb=5c8e8ebb1e868ad0f72ea9343b04b9a9d5c5f140;hp=c854fa26c9b7324e62a0dddb55c0912c27efb301;hpb=e73e04c239cc1ef4aecf7e11d9f0cb723df2af99;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/resourceloader/ResourceLoaderStartUpModule.php b/includes/resourceloader/ResourceLoaderStartUpModule.php index c854fa26c9..a99305ca61 100644 --- a/includes/resourceloader/ResourceLoaderStartUpModule.php +++ b/includes/resourceloader/ResourceLoaderStartUpModule.php @@ -194,7 +194,6 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { * @return string JavaScript code for registering all modules with the client loader */ public function getModuleRegistrations( ResourceLoaderContext $context ) { - $resourceLoader = $context->getResourceLoader(); $target = $context->getRequest()->getVal( 'target', 'desktop' ); // Bypass target filter if this request is Special:JavaScriptTest. @@ -202,6 +201,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { $byPassTargetFilter = $this->getConfig()->get( 'EnableJavaScriptTest' ) && $target === 'test'; $out = ''; + $states = []; $registryData = []; // Get registry data @@ -219,8 +219,23 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { continue; } - $versionHash = $module->getVersionHash( $context ); - if ( strlen( $versionHash ) !== 7 ) { + try { + $versionHash = $module->getVersionHash( $context ); + } catch ( Exception $e ) { + // See also T152266 and ResourceLoader::getCombinedVersion() + MWExceptionHandler::logException( $e ); + $context->getLogger()->warning( + 'Calculating version for "{module}" failed: {exception}', + [ + 'module' => $name, + 'exception' => $e, + ] + ); + $versionHash = ''; + $states[$name] = 'error'; + } + + if ( $versionHash !== '' && strlen( $versionHash ) !== 7 ) { $context->getLogger()->warning( "Module '{module}' produced an invalid version hash: '{version}'.", [ @@ -270,6 +285,10 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { // Register modules $out .= "\n" . ResourceLoader::makeLoaderRegisterScript( $registrations ); + if ( $states ) { + $out .= "\n" . ResourceLoader::makeLoaderStateScript( $states ); + } + return $out; } @@ -311,14 +330,12 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { */ public static function getStartupModulesUrl( ResourceLoaderContext $context ) { $rl = $context->getResourceLoader(); - $moduleNames = self::getStartupModules(); $derivative = new DerivativeResourceLoaderContext( $context ); - $derivative->setModules( $moduleNames ); + $derivative->setModules( self::getStartupModules() ); $derivative->setOnly( 'scripts' ); - $derivative->setVersion( - $rl->getCombinedVersion( $context, $moduleNames ) - ); + // Must setModules() before makeVersionQuery() + $derivative->setVersion( $rl->makeVersionQuery( $derivative ) ); return $rl->createLoaderURL( 'local', $derivative ); }