From: dr0ptp4kt Date: Tue, 17 Dec 2013 23:10:07 +0000 (-0800) Subject: resourceloader: Add method to get the startup modules load url X-Git-Tag: 1.31.0-rc.0~16802^2 X-Git-Url: https://git.cyclocoop.org/%7B%24admin_url%7Dmembres/cotisations/voir.php?a=commitdiff_plain;h=c49189151cadb779ad954062c8a479c94c3f5721;p=lhc%2Fweb%2Fwiklou.git resourceloader: Add method to get the startup modules load url * Needed in order to incorporate this url in cache-optimizing things like cache manifests. Change-Id: I17608e3fac9f8cb5b2764d8a22aa50ff59b23d2c --- diff --git a/includes/resourceloader/ResourceLoaderStartUpModule.php b/includes/resourceloader/ResourceLoaderStartUpModule.php index d0c3068c53..207e96b85b 100644 --- a/includes/resourceloader/ResourceLoaderStartUpModule.php +++ b/includes/resourceloader/ResourceLoaderStartUpModule.php @@ -185,6 +185,43 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { return true; } + /** + * Get the load URL of the startup modules. + * + * This is a helper for getScript(), but can also be called standalone, such + * as when generating an AppCache manifest. + * + * @param $context ResourceLoaderContext + * @return string + */ + public static function getStartupModulesUrl( ResourceLoaderContext $context ) { + // The core modules: + $moduleNames = array( 'jquery', 'mediawiki' ); + wfRunHooks( 'ResourceLoaderGetStartupModules', array( &$moduleNames ) ); + + // Get the latest version + $loader = $context->getResourceLoader(); + $version = 0; + foreach ( $moduleNames as $moduleName ) { + $version = max( $version, + $loader->getModule( $moduleName )->getModifiedTime( $context ) + ); + } + + $query = array( + 'modules' => ResourceLoader::makePackedModulesString( $moduleNames ), + 'only' => 'scripts', + 'lang' => $context->getLanguage(), + 'skin' => $context->getSkin(), + 'debug' => $context->getDebug() ? 'true' : 'false', + 'version' => wfTimestamp( TS_ISO_8601_BASIC, $version ) + ); + // Ensure uniform query order + ksort( $query ); + return wfAppendQuery( wfScript( 'load' ), $query ); + } + + /** * @param $context ResourceLoaderContext * @return string @@ -195,30 +232,6 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { $out = file_get_contents( "$IP/resources/startup.js" ); if ( $context->getOnly() === 'scripts' ) { - // The core modules: - $moduleNames = array( 'jquery', 'mediawiki' ); - wfRunHooks( 'ResourceLoaderGetStartupModules', array( &$moduleNames ) ); - - // Get the latest version - $loader = $context->getResourceLoader(); - $version = 0; - foreach ( $moduleNames as $moduleName ) { - $version = max( $version, - $loader->getModule( $moduleName )->getModifiedTime( $context ) - ); - } - // Build load query for StartupModules - $query = array( - 'modules' => ResourceLoader::makePackedModulesString( $moduleNames ), - 'only' => 'scripts', - 'lang' => $context->getLanguage(), - 'skin' => $context->getSkin(), - 'debug' => $context->getDebug() ? 'true' : 'false', - 'version' => wfTimestamp( TS_ISO_8601_BASIC, $version ) - ); - // Ensure uniform query order - ksort( $query ); - // Startup function $configuration = $this->getConfig( $context ); $registrations = self::getModuleRegistrations( $context ); @@ -230,7 +243,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { "};\n"; // Conditional script injection - $scriptTag = Html::linkedScript( wfAppendQuery( wfScript( 'load' ), $query ) ); + $scriptTag = Html::linkedScript( self::getStartupModulesUrl( $context ) ); $out .= "if ( isCompatible() ) {\n" . "\t" . Xml::encodeJsCall( 'document.write', array( $scriptTag ) ) . "}\n" .