Hashar has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/316010

Change subject: Skip registering RL modules depending on VisualEditor
......................................................................

Skip registering RL modules depending on VisualEditor

When VisualEditor is not installed, there is no point in registered
resource loader modules that depends on it.  A use case is trying to run
tests for the MediaWiki tarball. It comes with Cite but without
VisualEditor.

The patch is based on GuidedTour patch by Matthew Flaschen
https://gerrit.wikimedia.org/r/#/c/305691/ for T143297

Change-Id: Idf769e0149f93c099a94b1b7a6cb203273dab881
---
M extension.json
M includes/CiteHooks.php
2 files changed, 114 insertions(+), 88 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Cite 
refs/changes/10/316010/1

diff --git a/extension.json b/extension.json
index b3aa8af..35d451c 100644
--- a/extension.json
+++ b/extension.json
@@ -33,6 +33,9 @@
                "ResourceLoaderTestModules": [
                        "CiteHooks::onResourceLoaderTestModules"
                ],
+               "ResourceLoaderRegisterModules": [
+                       "CiteHooks::onResourceLoaderRegisterModules"
+               ],
                "LinksUpdate": [
                        "CiteHooks::onLinksUpdate"
                ],
@@ -66,94 +69,6 @@
                        "class": "CiteCSSFileModule",
                        "styles": "ext.cite.style.css",
                        "position": "top",
-                       "targets": [
-                               "desktop",
-                               "mobile"
-                       ]
-               },
-               "ext.cite.visualEditor.core": {
-                       "scripts": [
-                               "ve-cite/ve.dm.MWReferenceModel.js",
-                               "ve-cite/ve.dm.MWReferencesListNode.js",
-                               "ve-cite/ve.dm.MWReferenceNode.js",
-                               "ve-cite/ve.ce.MWReferencesListNode.js",
-                               "ve-cite/ve.ce.MWReferenceNode.js",
-                               "ve-cite/ve.ui.MWReferencesListCommand.js"
-                       ],
-                       "styles": [
-                               "ve-cite/ve.ce.MWReferencesListNode.css",
-                               "ve-cite/ve.ce.MWReferenceNode.css"
-                       ],
-                       "dependencies": [
-                               "ext.visualEditor.mwcore"
-                       ],
-                       "messages": [
-                               "cite-ve-referenceslist-isempty",
-                               "cite-ve-referenceslist-isempty-default",
-                               "cite-ve-referenceslist-missingref"
-                       ],
-                       "targets": [
-                               "desktop",
-                               "mobile"
-                       ]
-               },
-               "ext.cite.visualEditor.data": {
-                       "class": "CiteDataModule"
-               },
-               "ext.cite.visualEditor": {
-                       "scripts": [
-                               "ve-cite/ve.ui.MWReferenceGroupInputWidget.js",
-                               "ve-cite/ve.ui.MWReferenceSearchWidget.js",
-                               "ve-cite/ve.ui.MWReferenceResultWidget.js",
-                               
"ve-cite/ve.ui.MWUseExistingReferenceCommand.js",
-                               "ve-cite/ve.ui.MWCitationDialog.js",
-                               "ve-cite/ve.ui.MWReferencesListDialog.js",
-                               "ve-cite/ve.ui.MWReferenceDialog.js",
-                               "ve-cite/ve.ui.MWReferenceDialogTool.js",
-                               "ve-cite/ve.ui.MWCitationDialogTool.js",
-                               "ve-cite/ve.ui.MWReferenceContextItem.js",
-                               "ve-cite/ve.ui.MWReferencesListContextItem.js",
-                               "ve-cite/ve.ui.MWCitationContextItem.js",
-                               "ve-cite/ve.ui.MWCitationAction.js",
-                               "ve-cite/ve.ui.MWReference.init.js"
-                       ],
-                       "styles": [
-                               "ve-cite/ve.ui.MWReferenceContextItem.css",
-                               "ve-cite/ve.ui.MWReferenceGroupInputWidget.css",
-                               "ve-cite/ve.ui.MWReferenceIcons.css",
-                               "ve-cite/ve.ui.MWReferenceResultWidget.css",
-                               "ve-cite/ve.ui.MWReferenceSearchWidget.css"
-                       ],
-                       "dependencies": [
-                               "ext.cite.visualEditor.core",
-                               "ext.cite.visualEditor.data",
-                               "ext.cite.style",
-                               "ext.visualEditor.mwtransclusion",
-                               "ext.visualEditor.mediawiki"
-                       ],
-                       "messages": [
-                               "cite-ve-dialog-reference-editing-reused",
-                               "cite-ve-dialog-reference-options-group-label",
-                               
"cite-ve-dialog-reference-options-group-placeholder",
-                               "cite-ve-dialog-reference-options-name-label",
-                               "cite-ve-dialog-reference-options-section",
-                               "cite-ve-dialog-reference-title",
-                               
"cite-ve-dialog-reference-useexisting-full-label",
-                               "cite-ve-dialog-reference-useexisting-label",
-                               "cite-ve-dialog-reference-useexisting-tool",
-                               
"cite-ve-dialog-referenceslist-contextitem-description-general",
-                               
"cite-ve-dialog-referenceslist-contextitem-description-named",
-                               "cite-ve-dialog-referenceslist-title",
-                               
"cite-ve-dialogbutton-citation-educationpopup-title",
-                               
"cite-ve-dialogbutton-citation-educationpopup-text",
-                               "cite-ve-dialogbutton-reference-full-label",
-                               "cite-ve-dialogbutton-reference-tooltip",
-                               "cite-ve-dialogbutton-reference-title",
-                               "cite-ve-dialogbutton-referenceslist-tooltip",
-                               "cite-ve-reference-input-placeholder",
-                               "cite-ve-toolbar-group-label",
-                               "cite-ve-othergroup-item"
-                       ],
                        "targets": [
                                "desktop",
                                "mobile"
diff --git a/includes/CiteHooks.php b/includes/CiteHooks.php
index efa7c5e..7e3c5bf 100644
--- a/includes/CiteHooks.php
+++ b/includes/CiteHooks.php
@@ -70,6 +70,117 @@
        }
 
        /**
+        * Conditionally register resource loader modules that depends on the
+        * VisualEditor MediaWiki extension.
+        *
+        * @param $resourceLoader
+        * @return true
+        */
+       public static function onResourceLoaderRegisterModules( 
&$resourceLoader ) {
+
+               if ( ! class_exists( 'VisualEditorHooks' ) ) {
+                       return true;
+               }
+
+               $dir = dirname( __DIR__ ) . DIRECTORY_SEPARATOR;
+
+               $resourceLoader->register( "ext.cite.visualEditor.core", [
+                       'localBasePath' => $dir . 'modules',
+                       'remoteExtPath' => 'Cite/modules',
+                       "scripts" => [
+                               "ve-cite/ve.dm.MWReferenceModel.js",
+                               "ve-cite/ve.dm.MWReferencesListNode.js",
+                               "ve-cite/ve.dm.MWReferenceNode.js",
+                               "ve-cite/ve.ce.MWReferencesListNode.js",
+                               "ve-cite/ve.ce.MWReferenceNode.js",
+                               "ve-cite/ve.ui.MWReferencesListCommand.js"
+                       ],
+                       "styles" => [
+                               "ve-cite/ve.ce.MWReferencesListNode.css",
+                               "ve-cite/ve.ce.MWReferenceNode.css"
+                       ],
+                       "dependencies" => [
+                               "ext.visualEditor.mwcore"
+                       ],
+                       "messages" => [
+                               "cite-ve-referenceslist-isempty",
+                               "cite-ve-referenceslist-isempty-default",
+                               "cite-ve-referenceslist-missingref"
+                       ],
+                       "targets" => [
+                               "desktop",
+                               "mobile"
+                       ]
+               ] );
+
+               $resourceLoader->register( "ext.cite.visualEditor.data",
+                       [ "class" => "CiteDataModule" ] );
+
+               $resourceLoader->register( "ext.cite.visualEditor", [
+                       'localBasePath' => $dir . 'modules',
+                       'remoteExtPath' => 'Cite/modules',
+                       "scripts" => [
+                               "ve-cite/ve.ui.MWReferenceGroupInputWidget.js",
+                               "ve-cite/ve.ui.MWReferenceSearchWidget.js",
+                               "ve-cite/ve.ui.MWReferenceResultWidget.js",
+                               
"ve-cite/ve.ui.MWUseExistingReferenceCommand.js",
+                               "ve-cite/ve.ui.MWCitationDialog.js",
+                               "ve-cite/ve.ui.MWReferencesListDialog.js",
+                               "ve-cite/ve.ui.MWReferenceDialog.js",
+                               "ve-cite/ve.ui.MWReferenceDialogTool.js",
+                               "ve-cite/ve.ui.MWCitationDialogTool.js",
+                               "ve-cite/ve.ui.MWReferenceContextItem.js",
+                               "ve-cite/ve.ui.MWReferencesListContextItem.js",
+                               "ve-cite/ve.ui.MWCitationContextItem.js",
+                               "ve-cite/ve.ui.MWCitationAction.js",
+                               "ve-cite/ve.ui.MWReference.init.js"
+                       ],
+                       "styles" => [
+                               "ve-cite/ve.ui.MWReferenceContextItem.css",
+                               "ve-cite/ve.ui.MWReferenceGroupInputWidget.css",
+                               "ve-cite/ve.ui.MWReferenceIcons.css",
+                               "ve-cite/ve.ui.MWReferenceResultWidget.css",
+                               "ve-cite/ve.ui.MWReferenceSearchWidget.css"
+                       ],
+                       "dependencies" => [
+                               "ext.cite.visualEditor.core",
+                               "ext.cite.visualEditor.data",
+                               "ext.cite.style",
+                               "ext.visualEditor.mwtransclusion",
+                               "ext.visualEditor.mediawiki"
+                       ],
+                       "messages" => [
+                               "cite-ve-dialog-reference-editing-reused",
+                               "cite-ve-dialog-reference-options-group-label",
+                               
"cite-ve-dialog-reference-options-group-placeholder",
+                               "cite-ve-dialog-reference-options-name-label",
+                               "cite-ve-dialog-reference-options-section",
+                               "cite-ve-dialog-reference-title",
+                               
"cite-ve-dialog-reference-useexisting-full-label",
+                               "cite-ve-dialog-reference-useexisting-label",
+                               "cite-ve-dialog-reference-useexisting-tool",
+                               
"cite-ve-dialog-referenceslist-contextitem-description-general",
+                               
"cite-ve-dialog-referenceslist-contextitem-description-named",
+                               "cite-ve-dialog-referenceslist-title",
+                               
"cite-ve-dialogbutton-citation-educationpopup-title",
+                               
"cite-ve-dialogbutton-citation-educationpopup-text",
+                               "cite-ve-dialogbutton-reference-full-label",
+                               "cite-ve-dialogbutton-reference-tooltip",
+                               "cite-ve-dialogbutton-reference-title",
+                               "cite-ve-dialogbutton-referenceslist-tooltip",
+                               "cite-ve-reference-input-placeholder",
+                               "cite-ve-toolbar-group-label",
+                               "cite-ve-othergroup-item"
+                       ],
+                       "targets" => [
+                               "desktop",
+                               "mobile"
+                       ]
+               ] );
+               return true;
+       }
+
+       /**
         * Callback for LinksUpdate hook
         * Post-output processing of references property, for proper db storage
         * Deferred to avoid performance overhead when outputting the page

-- 
To view, visit https://gerrit.wikimedia.org/r/316010
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Idf769e0149f93c099a94b1b7a6cb203273dab881
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Cite
Gerrit-Branch: master
Gerrit-Owner: Hashar <has...@free.fr>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to