X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2Fresourceloader%2FResourceLoaderStartUpModule.php;h=a99305ca6142953233824047859317a27ea44cb8;hb=5c8e8ebb1e868ad0f72ea9343b04b9a9d5c5f140;hp=eb9788c0ce968b770c10fde0deba130b7208cd09;hpb=7abf23c194b6fc87bcb3da2453747638cbea64c5;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/resourceloader/ResourceLoaderStartUpModule.php b/includes/resourceloader/ResourceLoaderStartUpModule.php index eb9788c0ce..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,19 +330,14 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { */ public static function getStartupModulesUrl( ResourceLoaderContext $context ) { $rl = $context->getResourceLoader(); - $moduleNames = self::getStartupModules(); - $query = [ - 'modules' => ResourceLoader::makePackedModulesString( $moduleNames ), - 'only' => 'scripts', - 'lang' => $context->getLanguage(), - 'skin' => $context->getSkin(), - 'debug' => $context->getDebug() ? 'true' : 'false', - 'version' => $rl->getCombinedVersion( $context, $moduleNames ), - ]; - // Ensure uniform query order - ksort( $query ); - return wfAppendQuery( wfScript( 'load' ), $query ); + $derivative = new DerivativeResourceLoaderContext( $context ); + $derivative->setModules( self::getStartupModules() ); + $derivative->setOnly( 'scripts' ); + // Must setModules() before makeVersionQuery() + $derivative->setVersion( $rl->makeVersionQuery( $derivative ) ); + + return $rl->createLoaderURL( 'local', $derivative ); } /**