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

Reply via email to