(bug 26805) Introduce ResourceLoaderGetStartupModules hook to allow extensions to...
authorRoan Kattouw <catrope@users.mediawiki.org>
Sun, 20 Mar 2011 17:15:51 +0000 (17:15 +0000)
committerRoan Kattouw <catrope@users.mediawiki.org>
Sun, 20 Mar 2011 17:15:51 +0000 (17:15 +0000)
docs/hooks.txt
includes/resourceloader/ResourceLoaderStartUpModule.php

index d5866c0..07648a4 100644 (file)
@@ -1400,6 +1400,11 @@ $out: OutputPage object
 loader request or generating HTML output.
 &$resourceLoader: ResourceLoader object
 
+'ResourceLoaderGetStartupModules': Run once the startup module is being generated. This allows you
+to add modules to the startup module. This hook should be used sparingly since any module added here
+will be loaded on all pages. This hook is useful if you want to make code available to module loader 
+scripts. 
+
 'RawPageViewBeforeOutput': Right before the text is blown out in action=raw
 &$obj: RawPage object
 &$text: The text that's going to be the output
index 7048f03..f047fe4 100644 (file)
@@ -159,17 +159,26 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
 
                $out = file_get_contents( "$IP/resources/startup.js" );
                if ( $context->getOnly() === 'scripts' ) {
-                       // Build load query for jquery and mediawiki modules
+
+                       // The core modules:
+                       $modules = array( 'jquery', 'mediawiki' );
+                       wfRunHooks( 'ResourceLoaderGetStartupModules', array( &$modules ) );
+                       
+                       // Get the latest version
+                       $version = 0;                                   
+                       foreach ( $modules as $moduleName ) {
+                               $version = max( $version,
+                                       $context->getResourceLoader()->getModule( $moduleName )->getModifiedTime( $context )
+                               );
+                       }
+                       // Build load query for StartupModules 
                        $query = array(
-                               'modules' => implode( '|', array( 'jquery', 'mediawiki' ) ),
+                               'modules' => implode( '|',  $modules ),
                                'only' => 'scripts',
                                'lang' => $context->getLanguage(),
                                'skin' => $context->getSkin(),
                                'debug' => $context->getDebug() ? 'true' : 'false',
-                               'version' => wfTimestamp( TS_ISO_8601_BASIC, max(
-                                       $context->getResourceLoader()->getModule( 'jquery' )->getModifiedTime( $context ),
-                                       $context->getResourceLoader()->getModule( 'mediawiki' )->getModifiedTime( $context )
-                               ) )
+                               'version' => wfTimestamp( TS_ISO_8601_BASIC, round( $version, -2 ) )
                        );
                        // Ensure uniform query order
                        ksort( $query );