Hoo man has uploaded a new change for review.
https://gerrit.wikimedia.org/r/223660
Change subject: Use the ResourceLoaderRegisterModules hook + ExtensionRegistry
for dynamic dependencies
......................................................................
Use the ResourceLoaderRegisterModules hook + ExtensionRegistry for dynamic
dependencies
Needed as ULS switched to the new extension registration.
Bug: T105211
Change-Id: I4412f1441f0a5a956a5acb8b2bd1d6f7fe94890e
---
M lib/WikibaseLib.hooks.php
M lib/WikibaseLib.php
M lib/resources/Resources.php
M repo/Wikibase.hooks.php
M repo/Wikibase.php
M repo/resources/Resources.php
M view/init.mw.php
M view/resources/jquery/resources.php
M view/resources/wikibase/resources.php
9 files changed, 169 insertions(+), 75 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase
refs/changes/60/223660/1
diff --git a/lib/WikibaseLib.hooks.php b/lib/WikibaseLib.hooks.php
index 784386e..271f716 100644
--- a/lib/WikibaseLib.hooks.php
+++ b/lib/WikibaseLib.hooks.php
@@ -2,6 +2,7 @@
namespace Wikibase;
+use ExtensionRegistry;
use ResourceLoader;
/**
@@ -51,4 +52,42 @@
return true;
}
+ /**
+ * Register ResourceLoader modules with dynamic dependencies.
+ *
+ * @param ResourceLoader $resourceLoader
+ */
+ public static function onResourceLoaderRegisterModules( ResourceLoader
$resourceLoader ) {
+ preg_match( '+' . preg_quote( DIRECTORY_SEPARATOR ) .
'(?:vendor|extensions)'
+ . preg_quote( DIRECTORY_SEPARATOR ) . '.*+', __DIR__,
$remoteExtPath );
+ $hasULS = ExtensionRegistry::getInstance()->isLoaded(
'UniversalLanguageSelector' );
+
+ $moduleTemplate = array(
+ 'localBasePath' => __DIR__ . '/resources',
+ 'remoteExtPath' => '..' . $remoteExtPath[0],
+ 'position' => 'top' // reducing the time between DOM
construction and JS initialisation
+ );
+
+ $dependencies = array(
+ 'mediawiki.util',
+ 'util.inherit',
+ 'wikibase',
+ );
+
+ if ( $hasULS ) {
+ $dependencies[] = 'ext.uls.mediawiki';
+ }
+
+ $resourceLoader->register(
+ 'wikibase.Site',
+ $moduleTemplate + array(
+ 'scripts' => array(
+ 'wikibase.Site.js',
+ ),
+ 'dependencies' => $dependencies,
+ )
+ );
+
+ return true;
+ }
}
diff --git a/lib/WikibaseLib.php b/lib/WikibaseLib.php
index 6241784..228c345 100644
--- a/lib/WikibaseLib.php
+++ b/lib/WikibaseLib.php
@@ -77,6 +77,7 @@
// Hooks
$wgHooks['UnitTestsList'][]
= 'Wikibase\LibHooks::registerPhpUnitTests';
$wgHooks['ResourceLoaderTestModules'][] =
'Wikibase\LibHooks::registerQUnitTests';
+ $wgHooks['ResourceLoaderRegisterModules'][] =
'Wikibase\LibHooks::onResourceLoaderRegisterModules';
/**
* Called when generating the extensions credits, use this to change
the tables headers.
diff --git a/lib/resources/Resources.php b/lib/resources/Resources.php
index 9c85474..10baad6 100644
--- a/lib/resources/Resources.php
+++ b/lib/resources/Resources.php
@@ -45,17 +45,6 @@
),
),
- 'wikibase.Site' => $moduleTemplate + array(
- 'scripts' => array(
- 'wikibase.Site.js',
- ),
- 'dependencies' => array(
- 'mediawiki.util',
- 'util.inherit',
- 'wikibase',
- ),
- ),
-
'wikibase.sites' => $moduleTemplate + array(
'scripts' => array(
'wikibase.sites.js',
@@ -74,10 +63,6 @@
include __DIR__ . '/deprecated/resources.php',
include __DIR__ . '/jquery.wikibase/resources.php'
);
-
- if ( defined( 'ULS_VERSION' ) ) {
- $modules['wikibase.Site']['dependencies'][] =
'ext.uls.mediawiki';
- }
return $modules;
} );
diff --git a/repo/Wikibase.hooks.php b/repo/Wikibase.hooks.php
index 25833f5..95cbf53 100644
--- a/repo/Wikibase.hooks.php
+++ b/repo/Wikibase.hooks.php
@@ -8,6 +8,7 @@
use Content;
use ContentHandler;
use DatabaseUpdater;
+use ExtensionRegistry;
use HistoryPager;
use Html;
use Linker;
@@ -1137,4 +1138,81 @@
return true;
}
+ /**
+ * Register ResourceLoader modules with dynamic dependencies.
+ *
+ * @param ResourceLoader $resourceLoader
+ */
+ public static function onResourceLoaderRegisterModules( ResourceLoader
$resourceLoader ) {
+ preg_match( '+' . preg_quote( DIRECTORY_SEPARATOR ) .
'(?:vendor|extensions)'
+ . preg_quote( DIRECTORY_SEPARATOR ) . '.*+', __DIR__,
$remoteExtPath );
+ $hasULS = ExtensionRegistry::getInstance()->isLoaded(
'UniversalLanguageSelector' );
+
+ $moduleTemplate = array(
+ 'localBasePath' => __DIR__ . '/resources',
+ 'remoteExtPath' => '..' . $remoteExtPath[0],
+ 'position' => 'top' // reducing the time between DOM
construction and JS initialisation
+ );
+
+ $dependencies = array(
+ 'util.ContentLanguages',
+ 'util.inherit',
+ 'ext.uls.languagenames',
+ 'wikibase',
+ );
+
+ if ( $hasULS ) {
+ $dependencies[] = 'ext.uls.languagenames';
+ }
+
+ $resourceLoader->register(
+ 'wikibase.WikibaseContentLanguages',
+ $moduleTemplate + array(
+ 'scripts' => array(
+ 'wikibase.WikibaseContentLanguages.js',
+ ),
+ 'dependencies' => $dependencies
+ )
+ );
+
+ $dependencies = array(
+ 'wikibase.special',
+ 'jquery.ui.suggester'
+ );
+
+ if ( $hasULS ) {
+ $dependencies[] = 'ext.uls.mediawiki';
+ }
+
+ $resourceLoader->register(
+ 'wikibase.special.itemDisambiguation',
+ $moduleTemplate + array(
+ 'scripts' => array(
+
'wikibase.special/wikibase.special.itemDisambiguation.js'
+ ),
+ 'dependencies' => $dependencies
+ )
+ );
+
+ $dependencies = array(
+ 'wikibase.special',
+ 'jquery.ui.suggester'
+ );
+
+ if ( $hasULS ) {
+ $dependencies[] = 'ext.uls.mediawiki';
+ }
+
+ $resourceLoader->register(
+ 'wikibase.special.entitiesWithout',
+ $moduleTemplate + array(
+ 'scripts' => array(
+
'wikibase.special/wikibase.special.entitiesWithout.js'
+ ),
+ 'dependencies' => $dependencies
+ )
+ );
+
+ return true;
+ }
}
diff --git a/repo/Wikibase.php b/repo/Wikibase.php
index 7dc1280..834711f 100644
--- a/repo/Wikibase.php
+++ b/repo/Wikibase.php
@@ -229,6 +229,7 @@
$wgHooks['BaseTemplateToolbox'][] =
'Wikibase\RepoHooks::onBaseTemplateToolbox';
$wgHooks['SkinTemplateBuildNavUrlsNav_urlsAfterPermalink'][] =
'Wikibase\RepoHooks::onSkinTemplateBuildNavUrlsNav_urlsAfterPermalink';
$wgHooks['SkinMinervaDefaultModules'][] =
'Wikibase\RepoHooks::onSkinMinervaDefaultModules';
+ $wgHooks['ResourceLoaderRegisterModules'][] =
'Wikibase\RepoHooks::onResourceLoaderRegisterModules';
// update hooks
$wgHooks['LoadExtensionSchemaUpdates'][] =
'\Wikibase\Repo\Store\Sql\ChangesSubscriptionSchemaUpdater::onSchemaUpdate';
diff --git a/repo/resources/Resources.php b/repo/resources/Resources.php
index 3df97f5..4407c98 100644
--- a/repo/resources/Resources.php
+++ b/repo/resources/Resources.php
@@ -149,16 +149,6 @@
)
),
- 'wikibase.special.entitiesWithout' => $moduleTemplate + array(
- 'scripts' => array(
-
'wikibase.special/wikibase.special.entitiesWithout.js'
- ),
- 'dependencies' => array(
- 'wikibase.special',
- 'jquery.ui.suggester'
- )
- ),
-
'wikibase.special.itemByTitle' => $moduleTemplate + array(
'scripts' => array(
'wikibase.special/wikibase.special.itemByTitle.js'
@@ -170,34 +160,7 @@
)
),
- 'wikibase.special.itemDisambiguation' => $moduleTemplate +
array(
- 'scripts' => array(
-
'wikibase.special/wikibase.special.itemDisambiguation.js'
- ),
- 'dependencies' => array(
- 'wikibase.special',
- 'jquery.ui.suggester'
- )
- ),
-
- 'wikibase.WikibaseContentLanguages' => $moduleTemplate + array(
- 'scripts' => array(
- 'wikibase.WikibaseContentLanguages.js',
- ),
- 'dependencies' => array(
- 'util.ContentLanguages',
- 'util.inherit',
- 'wikibase',
- ),
- ),
-
);
-
- if ( defined( 'ULS_VERSION' ) ) {
-
$modules['wikibase.special.itemDisambiguation']['dependencies'][] =
'ext.uls.mediawiki';
- $modules['wikibase.special.entitiesWithout']['dependencies'][]
= 'ext.uls.mediawiki';
- $modules['wikibase.WikibaseContentLanguages']['dependencies'][]
= 'ext.uls.languagenames';
- }
return array_merge(
$modules,
diff --git a/view/init.mw.php b/view/init.mw.php
index 2defe4a..c422402 100644
--- a/view/init.mw.php
+++ b/view/init.mw.php
@@ -22,3 +22,53 @@
$GLOBALS['wgHooks']['UnitTestsList'][] = function( array &$paths ) {
$paths[] = __DIR__ . '/tests/phpunit';
};
+
+/**
+ * Register ResourceLoader modules with dynamic dependencies.
+ *
+ * @param ResourceLoader $resourceLoader
+ */
+$GLOBALS['wgHooks']['ResourceLoaderRegisterModules'][] = function(
ResourceLoader $resourceLoader ) {
+ preg_match( '+' . preg_quote( DIRECTORY_SEPARATOR ) .
'(?:vendor|extensions)'
+ . preg_quote( DIRECTORY_SEPARATOR ) . '.*+', __DIR__,
$remoteExtPath );
+ $hasULS = ExtensionRegistry::getInstance()->isLoaded(
'UniversalLanguageSelector' );
+
+ $moduleTemplate = array(
+ 'remoteExtPath' => '..' . $remoteExtPath[0],
+ 'position' => 'top' // reducing the time between DOM
construction and JS initialisation
+ );
+
+ $dependencies = array();
+ if ( $hasULS ) {
+ $dependencies[] = 'ext.uls.mediawiki';
+ }
+
+ $resourceLoader->register(
+ 'jquery.util.getDirectionality',
+ $moduleTemplate + array(
+ 'localBasePath' => __DIR__ . '/resources/jquery',
+ 'scripts' => array(
+ 'jquery.util.getDirectionality.js',
+ ),
+ 'dependencies' => $dependencies
+ )
+ );
+
+ $dependencies = array( 'wikibase' );
+ if ( $hasULS ) {
+ $dependencies[] = 'ext.uls.mediawiki';
+ }
+
+ $resourceLoader->register(
+ 'wikibase.getLanguageNameByCode',
+ $moduleTemplate + array(
+ 'localBasePath' => __DIR__ . '/resources/wikibase',
+ 'scripts' => array(
+ 'wikibase.getLanguageNameByCode.js'
+ ),
+ 'dependencies' => $dependencies
+ )
+ );
+
+ return true;
+};
\ No newline at end of file
diff --git a/view/resources/jquery/resources.php
b/view/resources/jquery/resources.php
index 076f6a6..efd01ff 100644
--- a/view/resources/jquery/resources.php
+++ b/view/resources/jquery/resources.php
@@ -40,17 +40,7 @@
),
),
- 'jquery.util.getDirectionality' => $moduleTemplate + array(
- 'scripts' => array(
- 'jquery.util.getDirectionality.js',
- ),
- ),
-
);
-
- if ( defined( 'ULS_VERSION' ) ) {
- $modules['jquery.util.getDirectionality']['dependencies'][] =
'ext.uls.mediawiki';
- }
return $modules;
} );
diff --git a/view/resources/wikibase/resources.php
b/view/resources/wikibase/resources.php
index 3359133..59d9383 100644
--- a/view/resources/wikibase/resources.php
+++ b/view/resources/wikibase/resources.php
@@ -37,15 +37,6 @@
)
),
- 'wikibase.getLanguageNameByCode' => $moduleTemplate + array(
- 'scripts' => array(
- 'wikibase.getLanguageNameByCode.js'
- ),
- 'dependencies' => array(
- 'wikibase'
- )
- ),
-
'wikibase.RevisionStore' => $moduleTemplate + array(
'scripts' => array(
'wikibase.RevisionStore.js',
@@ -71,10 +62,6 @@
),
);
-
- if ( defined( 'ULS_VERSION' ) ) {
- $modules['wikibase.getLanguageNameByCode']['dependencies'][] =
'ext.uls.mediawiki';
- }
return $modules;
} );
--
To view, visit https://gerrit.wikimedia.org/r/223660
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I4412f1441f0a5a956a5acb8b2bd1d6f7fe94890e
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Hoo man <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits