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';