jenkins-bot has submitted this change and it was merged.

Change subject: Filter out auto-generated reference lists
......................................................................


Filter out auto-generated reference lists

Bug: T101553
Bug: T127664
Change-Id: Idc8c6f30ccdd5eaf76a3f7c1b923d8656ca36413
Depends-On: I24250845e97acb4b7de9c495cb46dbd28fc8817e
---
M modules/ve-mw/ce/nodes/ve.ce.MWTransclusionNode.js
M modules/ve-mw/ui/datatransferhandlers/ve.ui.MWWikitextStringTransferHandler.js
2 files changed, 22 insertions(+), 11 deletions(-)

Approvals:
  Jforrester: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/modules/ve-mw/ce/nodes/ve.ce.MWTransclusionNode.js 
b/modules/ve-mw/ce/nodes/ve.ce.MWTransclusionNode.js
index 2f0cdb5..29bdc04 100644
--- a/modules/ve-mw/ce/nodes/ve.ce.MWTransclusionNode.js
+++ b/modules/ve-mw/ce/nodes/ve.ce.MWTransclusionNode.js
@@ -122,8 +122,18 @@
 
        // Work around https://github.com/jquery/jquery/issues/1997
        contentNodes = $.parseHTML( response.visualeditor.content, 
this.getModelHtmlDocument() ) || [];
+       // Filter out auto-generated items, e.g. reference lists
+       contentNodes = contentNodes.filter( function ( node ) {
+               var dataMw = node.nodeType === Node.ELEMENT_NODE &&
+                       node.hasAttribute( 'data-mw' ) &&
+                       JSON.parse( node.getAttribute( 'data-mw' ) );
+               if ( dataMw && dataMw.autoGenerated ) {
+                       return false;
+               }
+               return true;
+       } );
        // HACK: if $content consists of a single paragraph, unwrap it.
-       // We have to do this because the PHP parser wraps everything in <p>s, 
and inline templates
+       // We have to do this because the parser wraps everything in <p>s, and 
inline templates
        // will render strangely when wrapped in <p>s.
        if ( contentNodes.length === 1 && contentNodes[ 0 
].nodeName.toLowerCase() === 'p' ) {
                contentNodes = Array.prototype.slice.apply( contentNodes[ 0 
].childNodes );
diff --git 
a/modules/ve-mw/ui/datatransferhandlers/ve.ui.MWWikitextStringTransferHandler.js
 
b/modules/ve-mw/ui/datatransferhandlers/ve.ui.MWWikitextStringTransferHandler.js
index 5bd7607..8a4bb88 100644
--- 
a/modules/ve-mw/ui/datatransferhandlers/ve.ui.MWWikitextStringTransferHandler.js
+++ 
b/modules/ve-mw/ui/datatransferhandlers/ve.ui.MWWikitextStringTransferHandler.js
@@ -95,21 +95,22 @@
 
        // Don't immediately chain, as this.parsoidRequest must be abortable
        this.parsoidRequest.then( function ( response ) {
-               var doc, surface;
+               var htmlDoc, doc, surface;
+
                if ( ve.getProp( response, 'visualeditor', 'result' ) !== 
'success' ) {
                        return failure();
                }
 
-               doc = handler.surface.getModel().getDocument().newFromHtml(
-                       response.visualeditor.content,
-                       {
-                               external: {
-                                       // Blacklist reference lists as they 
were likely generated by mistake, see T101553
-                                       blacklist: [ 'mwReferencesList' ]
-                               }
-                               // No additional sanitization, since HTML is 
from Parsoid
+               htmlDoc = ve.createDocumentFromHtml( 
response.visualeditor.content );
+               // Filter out auto-generated items, e.g. reference lists
+               $( htmlDoc.body ).find( '[data-mw]' ).each( function () {
+                       var dataMw = JSON.parse( this.getAttribute( 'data-mw' ) 
);
+                       if ( dataMw.autoGenerated ) {
+                               this.remove();
                        }
-               );
+               } );
+
+               doc = handler.surface.getModel().getDocument().newFromHtml( 
htmlDoc );
 
                if ( !doc.data.hasContent() ) {
                        return failure();

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Idc8c6f30ccdd5eaf76a3f7c1b923d8656ca36413
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <[email protected]>
Gerrit-Reviewer: Esanders <[email protected]>
Gerrit-Reviewer: Jforrester <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to