From: Florianschmidtwelzow Date: Sun, 1 Feb 2015 21:37:34 +0000 (+0100) Subject: Allow adding of context-based LESS Variables X-Git-Tag: 1.31.0-rc.0~12460^2 X-Git-Url: http://git.cyclocoop.org/%24action?a=commitdiff_plain;h=6d9bb5d0d5fd09969b1a0889a9267205b88cc7b6;p=lhc%2Fweb%2Fwiklou.git Allow adding of context-based LESS Variables Add new hook (ResourceLoaderGetLessVars) called in ResourceLoader::getLessVars to allow context-based less variables. Cache the resulting array to avoid multiple runs of this hook. Change-Id: I5a73bbd0ab58f8fe34519931c4f26c90998e3451 --- diff --git a/docs/hooks.txt b/docs/hooks.txt index dba6281666..f47890d8da 100644 --- a/docs/hooks.txt +++ b/docs/hooks.txt @@ -2277,6 +2277,10 @@ configuration variables to JavaScript. Things that depend on the current page or request state must be added through MakeGlobalVariablesScript instead. &$vars: array( variable name => value ) +'ResourceLoaderGetLessVars': Called in ResourceLoader::getLessVars after variables +from $wgResourceLoaderLESSVars are added. Can be used to add context-based variables. +&$lessVars: array of variables already added + 'ResourceLoaderRegisterModules': Right before modules information is required, such as when responding to a resource loader request or generating HTML output. diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index 82011fe3b8..59a9c42de8 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -3541,6 +3541,9 @@ $wgResourceLoaderExperimentalAsyncLoading = false; * * Changes to LESS variables do not trigger cache invalidation. * + * If the LESS variables need to be dynamic, you can use the + * ResourceLoaderGetLessVars hook (since 1.25). + * * @par Example: * @code * $wgResourceLoaderLESSVars = array( diff --git a/includes/resourceloader/ResourceLoader.php b/includes/resourceloader/ResourceLoader.php index 15bb13f4cb..1922999d1a 100644 --- a/includes/resourceloader/ResourceLoader.php +++ b/includes/resourceloader/ResourceLoader.php @@ -35,6 +35,9 @@ class ResourceLoader { /** @var bool */ protected static $debugMode = null; + /** @var array */ + private static $lessVars = null; + /** * Module name/ResourceLoaderModule object pairs * @var array @@ -1557,9 +1560,13 @@ class ResourceLoader { * @return array Map of variable names to string CSS values. */ public static function getLessVars( Config $config ) { - $lessVars = $config->get( 'ResourceLoaderLESSVars' ); - // Sort by key to ensure consistent hashing for cache lookups. - ksort( $lessVars ); - return $lessVars; + if ( !self::$lessVars ) { + $lessVars = $config->get( 'ResourceLoaderLESSVars' ); + Hooks::run( 'ResourceLoaderGetLessVars', array( &$lessVars ) ); + // Sort by key to ensure consistent hashing for cache lookups. + ksort( $lessVars ); + self::$lessVars = $lessVars; + } + return self::$lessVars; } }