GWicke has uploaded a new change for review.

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


Change subject: WIP bug 48231: Avoid inserting metas and span wrappers in 
foster-parenting position
......................................................................

WIP bug 48231: Avoid inserting metas and span wrappers in foster-parenting 
position

This is not-yet working work in progress. Uploading mainly as a starting point
for further work on this bug later.

Bug: 48231
Change-Id: I9eefd9005c3552eba59c365fc3ddaae9166d2885
---
M js/lib/mediawiki.DOMPostProcessor.js
M js/lib/mediawiki.Util.js
2 files changed, 23 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Parsoid 
refs/changes/42/62742/1

diff --git a/js/lib/mediawiki.DOMPostProcessor.js 
b/js/lib/mediawiki.DOMPostProcessor.js
index 5f5962d..2afe5ea 100644
--- a/js/lib/mediawiki.DOMPostProcessor.js
+++ b/js/lib/mediawiki.DOMPostProcessor.js
@@ -936,6 +936,16 @@
                        }
                }
 
+               // Avoid inserting span wrappers in foster-parenting position
+               if (tcStartPar.nodeName === 'TABLE' && !skipSpan) {
+                       // move wrapping to next sibling
+                       tcStart = tcStart.nextSibling;
+                       if (DU.isAncestorOf(tcStart, range.end)) {
+                               range.end = tcStart;
+                       }
+                       skipSpan = true;
+               }
+
                if (!skipSpan) {
                        // wrap tcStart in a span.
                        var span = doc.createElement('span');
@@ -1548,7 +1558,12 @@
 }
 
 function findBuilderCorrectedTags(document, env) {
+       var editMode = env.conf.parsoid.editMode;
+
        function addPlaceholderMeta( node, dp, name, opts ) {
+               if (editMode) {
+                       return;
+               }
                var src = dp.src;
 
                if (!src) {
@@ -1688,7 +1703,7 @@
                                        // Do we need to run auto-inserted 
end-tag detection on c?
                                        // -> Yes if we have tsr
                                        // -> Yes if dont have tsr but end tag 
is outside template
-                                       if (dp.tsr || 
DU.endTagOutsideTemplate(c, dp)) {
+                                       if (!editMode && (dp.tsr || 
DU.endTagOutsideTemplate(c, dp))) {
                                                // Detect auto-inserted end-tags
                                                var metaNode = 
findMetaShadowNode(c, 'mw:EndTag', cNodeName);
                                                if (!metaNode) {
@@ -1721,7 +1736,7 @@
                                                {
                                                        // Strip start-tag 
marker metas that has its matching node
                                                        deleteNode(fc);
-                                               } else {
+                                               } else if (!editMode) {
                                                        
//console.log('autoInsertedStart:', c.outerHTML);
                                                        dp.autoInsertedStart = 
true;
                                                }
diff --git a/js/lib/mediawiki.Util.js b/js/lib/mediawiki.Util.js
index 82ab83b..22af189 100644
--- a/js/lib/mediawiki.Util.js
+++ b/js/lib/mediawiki.Util.js
@@ -248,7 +248,12 @@
        isTableTag: function(token) {
                var tc = token.constructor;
                return (tc === pd.TagTk || tc === pd.EndTagTk) &&
-                       
['table','tbody','caption','th','tr','td'].indexOf(token.name) !== -1;
+                       this.isTableTagName(token.name);
+       },
+
+       isTableTagName: function(name) {
+               var tableNames = {table:1, tbody:1, caption:1, th:1, tr:1, 
td:1};
+               return tableNames[name.toLowerCase()];
        },
 
        isSolTransparent: function(token) {

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9eefd9005c3552eba59c365fc3ddaae9166d2885
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Parsoid
Gerrit-Branch: master
Gerrit-Owner: GWicke <[email protected]>

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

Reply via email to