Page MenuHomePhabricator

VisualEditor failing to load on interwiki redirect pages
Closed, ResolvedPublicBUG REPORT

Description

Steps to replicate the issue (include links if applicable):

  1. https://www.mediawiki.org/wiki/Performance_profiling_for_Wikimedia_code?veaction=edit

What happens?:

Page is stuck indefinitely loading.

cap.png (2,348×1,498 px, 624 KB)

Uncaught TypeError: linkData is null
  toDataElement @injectedScript
  createDataElements https://www.mediawiki.org/w/load.php?lang=en&modules=ext.visualEditor.core,mwtransclusion&skin=vector&version=1s8p8:251
  getDataFromDomSubtree https://www.mediawiki.org/w/load.php?lang=en&modules=ext.visualEditor.core,mwtransclusion&skin=vector&version=1s8p8:257
  getModelFromDom https://www.mediawiki.org/w/load.php?lang=en&modules=ext.visualEditor.core,mwtransclusion&skin=vector&version=1s8p8:252
  createModelFromDom @injectedScript
  createModelFromDom @injectedScript
  setupSurface

Other information (browser name/version, screenshots, etc.):

Firefox. macOS. Is affecting other redirect pages on mediawik.org as well, but only interwiki ones it seems. For example:

And several others.

Event Timeline

I don't think we've ever supported editing cross-wiki redirects (or realized that the feature exists).

The following VisualEditor patch appears to be sufficient to stop the visual editor from breaking, without any other cascading failure that I can see from a quick test:

diff --git a/modules/ve-mw/dm/metaitems/ve.dm.MWRedirectMetaItem.js b/modules/ve-mw/dm/metaitems/ve.dm.MWRedirectMetaItem.js
index 3d5d1a8bb..231f00c0a 100644
--- a/modules/ve-mw/dm/metaitems/ve.dm.MWRedirectMetaItem.js
+++ b/modules/ve-mw/dm/metaitems/ve.dm.MWRedirectMetaItem.js
@@ -35,7 +35,7 @@ ve.dm.MWRedirectMetaItem.static.matchRdfaTypes = [ 'mw:PageProp/redirect' ];
 ve.dm.MWRedirectMetaItem.static.toDataElement = function ( domElements, converter ) {
        // HACK piggy-back on MWInternalLinkAnnotation's ./ stripping logic
        var linkData = ve.dm.MWInternalLinkAnnotation.static.toDataElement( domElements, converter );
-       linkData.type = this.name;
+       if (linkData) linkData.type = this.name;
        return linkData;
 };

Of course, in addition to this we'd probably want to patch MW itself to hide the visual edit option and default to edit source, because all you get is an empty visual editor.

Change #1065918 had a related patch set uploaded (by Pppery; author: Mqudsi):

[mediawiki/extensions/VisualEditor@master] Fix exception editing cross-wiki redirects

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

Change #1065918 merged by jenkins-bot:

[mediawiki/extensions/VisualEditor@master] Fix exception editing cross-wiki redirects

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

matmarex assigned this task to mqudsi.

Thanks for the patch @mqudsi! This indeed allows the editor to load and function, so I think this can be considered resolved, even though the redirect target is not editable.

Proper editing support for cross-wiki redirects will probably have to wait for T322340: Support editing interwiki links within the visual editor (not sure if that will ever happen).

Change #1068881 had a related patch set uploaded (by Bartosz Dziewoński; author: Mqudsi):

[mediawiki/extensions/VisualEditor@REL1_41] Fix exception editing cross-wiki redirects

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

Change #1068882 had a related patch set uploaded (by Bartosz Dziewoński; author: Mqudsi):

[mediawiki/extensions/VisualEditor@REL1_42] Fix exception editing cross-wiki redirects

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

Backporting as requested by @mqudsi (in discussion on the patch).

Change #1068881 merged by jenkins-bot:

[mediawiki/extensions/VisualEditor@REL1_41] Fix exception editing cross-wiki redirects

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

Change #1068882 merged by jenkins-bot:

[mediawiki/extensions/VisualEditor@REL1_42] Fix exception editing cross-wiki redirects

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

@matmarex thank you very much for your help with this and for taking on the backports. It's much appreciated!