diff --git a/UniversalLanguageSelector.hooks.php b/UniversalLanguageSelector.hooks.php index 36c292b6..4938527c 100644 --- a/UniversalLanguageSelector.hooks.php +++ b/UniversalLanguageSelector.hooks.php @@ -76,6 +76,8 @@ class UniversalLanguageSelectorHooks { if ( is_string( $wgULSGeoService ) ) { $out->addModules( 'ext.uls.geoclient' ); + } elseif ( $wgULSGeoService === true ) { + $out->addScript( '' ); } if ( self::isToolbarEnabled( $out->getUser() ) ) { @@ -92,6 +94,35 @@ class UniversalLanguageSelectorHooks { return true; } + /** + * Register conditional modules + * + * @param ResourceLoader $rl + */ + public static function onResourceLoaderRegisterModules( ResourceLoader &$rl ) { + global $wgULSEventLogging; + // If EventLogging integration is enabled, first ensure that + // the EventLogging extension is present, then declare schema module. + // If it is not present, emit a warning and disable logging. + if ( $wgULSEventLogging ) { + if ( class_exists( 'ResourceLoaderSchemaModule' ) ) { + // NB: When updating the schema, remember also to update the version + // in the schema default in the JavaScript library. + /// @see https://meta.wikimedia.org/wiki/Schema:UniversalLanguageSelector + $rl->register( 'schema.UniversalLanguageSelector', array( + 'class' => 'ResourceLoaderSchemaModule', + 'schema' => 'UniversalLanguageSelector', + 'revision' => 7327441, + ) ); + } else { + wfWarn( 'UniversalLanguageSelector is configured to use EventLogging, ' + . 'but the extension is not available. Disabling wgULSEventLogging.' ); + $wgULSEventLogging = false; + } + } + + } + /** * @param $testModules array of javascript testing modules. 'qunit' is fed * using tests/qunit/QUnitTestResources.php. diff --git a/UniversalLanguageSelector.php b/UniversalLanguageSelector.php index 717221aa..587c4b4f 100644 --- a/UniversalLanguageSelector.php +++ b/UniversalLanguageSelector.php @@ -200,6 +200,8 @@ $GLOBALS['wgAutoloadClasses'] += array( ); $GLOBALS['wgHooks']['BeforePageDisplay'][] = 'UniversalLanguageSelectorHooks::addModules'; +$GLOBALS['wgHooks']['ResourceLoaderRegisterModules'][] = + 'UniversalLanguageSelectorHooks::onResourceLoaderRegisterModules'; $GLOBALS['wgHooks']['PersonalUrls'][] = 'UniversalLanguageSelectorHooks::addPersonalBarTrigger'; $GLOBALS['wgHooks']['ResourceLoaderTestModules'][] = 'UniversalLanguageSelectorHooks::addTestModules'; @@ -217,39 +219,4 @@ $GLOBALS['wgHooks']['GetPreferences'][] = 'UniversalLanguageSelectorHooks::onGet $GLOBALS['wgHooks']['GetBetaFeaturePreferences'][] = 'UniversalLanguageSelectorHooks::onGetBetaFeaturePreferences'; -$GLOBALS['wgExtensionFunctions'][] = function () { - global $wgHooks, $wgResourceModules, $wgULSEventLogging, $wgULSGeoService; - - if ( $wgULSGeoService === true ) { - $wgHooks['BeforePageDisplay'][] = function ( &$out ) { - /** @var OutputPage $out */ - $out->addScript( '' ); - - return true; - }; - } - - // If EventLogging integration is enabled, first ensure that - // the EventLogging extension is present, then declare schema module. - // If it is not present, emit a warning and disable logging. - if ( $wgULSEventLogging ) { - if ( class_exists( 'ResourceLoaderSchemaModule' ) ) { - // NB: When updating the schema, remember also to update the version - // in the schema default in the JavaScript library. - /// @see https://meta.wikimedia.org/wiki/Schema:UniversalLanguageSelector - $wgResourceModules['schema.UniversalLanguageSelector'] = array( - 'class' => 'ResourceLoaderSchemaModule', - 'schema' => 'UniversalLanguageSelector', - 'revision' => 7327441, - ); - } else { - wfWarn( 'UniversalLanguageSelector is configured to use EventLogging, ' - . 'but the extension is not available. Disabling wgULSEventLogging.' ); - $wgULSEventLogging = false; - } - } - - return true; -}; - require __DIR__ . '/Resources.php';