Esanders has uploaded a new change for review.

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


Change subject: Hack to escape angle brackets in data-parsoid attribute
......................................................................

Hack to escape angle brackets in data-parsoid attribute

Parsoid is sending us some unescaped HTML in the data-parsoid
attribute. When we try to rebuild ref nodes (inline aliens)
this confuses Firefox which tries to sanitise the HTML by converting
<ref/> to <ref></span>.

As a temporary fix we can manually escape <>'s inside the
data-parsoid attribute.

Also in this commit the new MWReference nodes have been moved
to experimental as they are incomplete.

Bug: 47417
Change-Id: Ib6a0cfb880e769f28b42c9fa63ddc1abc75c399d
---
M VisualEditor.php
M modules/ve/dm/nodes/ve.dm.AlienNode.js
2 files changed, 17 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor 
refs/changes/40/60840/1

diff --git a/VisualEditor.php b/VisualEditor.php
index b30756b..1dd7ec8 100644
--- a/VisualEditor.php
+++ b/VisualEditor.php
@@ -279,8 +279,6 @@
                        've/dm/nodes/ve.dm.MWEntityNode.js',
                        've/dm/nodes/ve.dm.MWHeadingNode.js',
                        've/dm/nodes/ve.dm.MWPreformattedNode.js',
-                       've/dm/nodes/ve.dm.MWReferenceListNode.js',
-                       've/dm/nodes/ve.dm.MWReferenceNode.js',
 
                        've/dm/annotations/ve.dm.LinkAnnotation.js',
                        've/dm/annotations/ve.dm.MWExternalLinkAnnotation.js',
@@ -334,8 +332,6 @@
                        've/ce/nodes/ve.ce.MWEntityNode.js',
                        've/ce/nodes/ve.ce.MWHeadingNode.js',
                        've/ce/nodes/ve.ce.MWPreformattedNode.js',
-                       've/ce/nodes/ve.ce.MWReferenceListNode.js',
-                       've/ce/nodes/ve.ce.MWReferenceNode.js',
 
                        've/ce/annotations/ve.ce.LinkAnnotation.js',
                        've/ce/annotations/ve.ce.MWExternalLinkAnnotation.js',
@@ -492,9 +488,13 @@
                'scripts' => array(
                        've/dm/nodes/ve.dm.MWInlineImageNode.js',
                        've/dm/nodes/ve.dm.MWTemplateNode.js',
+                       've/dm/nodes/ve.dm.MWReferenceListNode.js',
+                       've/dm/nodes/ve.dm.MWReferenceNode.js',
 
                        've/ce/nodes/ve.ce.MWInlineImageNode.js',
                        've/ce/nodes/ve.ce.MWTemplateNode.js',
+                       've/ce/nodes/ve.ce.MWReferenceListNode.js',
+                       've/ce/nodes/ve.ce.MWReferenceNode.js',
                ),
                'dependencies' => array(
                        'ext.visualEditor.core',
diff --git a/modules/ve/dm/nodes/ve.dm.AlienNode.js 
b/modules/ve/dm/nodes/ve.dm.AlienNode.js
index 7275c88..a17b29a 100644
--- a/modules/ve/dm/nodes/ve.dm.AlienNode.js
+++ b/modules/ve/dm/nodes/ve.dm.AlienNode.js
@@ -48,7 +48,19 @@
 
 ve.dm.AlienNode.static.toDomElements = function ( dataElement, doc ) {
        var wrapper = doc.createElement( 'div' );
-       $( wrapper ).html( dataElement.attributes.html );
+
+       // Filthy hack: Parsoid is currently sending us unescaped angle brackets
+       // inside data-parsoid. For some reason FF picks this up as html and 
tries
+       // to sanitise it, converting <ref/> to <ref></span> (!?).
+       // As a *very temporary* fix we can regex replace them here.
+       $( wrapper ).html(
+               dataElement.attributes.html.replace(
+                       /data-parsoid="([^"]+)"/g,
+                       function( r0, r1 ) {
+                               return 'data-parsoid="' + r1.replace( /</g, 
'&lt;' ).replace( />/g, '&gt;' ) + '"';
+                       }
+               )
+       );
        // Convert wrapper.children to an array
        return Array.prototype.slice.call( wrapper.childNodes, 0 );
 };

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib6a0cfb880e769f28b42c9fa63ddc1abc75c399d
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to