Subramanya Sastry has uploaded a new change for review.

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


Change subject: References handling: Fix bugs introduced by 7d88538d
......................................................................

References handling: Fix bugs introduced by 7d88538d

* source and group attributes were being added as HTML attrs.
  on the ol-node which is invalid.  Plus, after refererences
  generation, source attr was being deleted which causes crashers
  in production if references output is reused from cache.

* Moved both attributes to data.parsoid

* Removed group="" from parserTests that I erroneously added
  in that previous commit.

* Minor cleanup in DOMPostProcessor.

Change-Id: I85f4ad0a311d653d7ba3e010c7a5db028b643e9f
---
M js/lib/ext.Cite.js
M js/lib/mediawiki.DOMPostProcessor.js
M js/tests/parserTests.txt
3 files changed, 13 insertions(+), 11 deletions(-)


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

diff --git a/js/lib/ext.Cite.js b/js/lib/ext.Cite.js
index 322e3d1..d7b6522 100644
--- a/js/lib/ext.Cite.js
+++ b/js/lib/ext.Cite.js
@@ -299,11 +299,15 @@
                        "></ol>"
                ];
 
-               var wrapperDOM = Util.parseHTML(buf.join('')).body.childNodes;
-               wrapperDOM[0].setAttribute('source', 
refsTok.getAttribute('source'));
+               var wrapperDOM = Util.parseHTML(buf.join('')).body.childNodes,
+                       ol = wrapperDOM[0];
+
+               var dp = DU.getJSONAttribute(ol, "data-parsoid", {});
+               dp.src = refsTok.getAttribute('source');
                if (group) {
-                       wrapperDOM[0].setAttribute('group', group);
+                       dp.group = group;
                }
+               DU.setJSONAttribute(ol, "data-parsoid", dp);
 
                var expansion = {
                        nodes: wrapperDOM,
@@ -316,7 +320,6 @@
                // into Util and pass env into it .. can avoid extending 
ExtensionHandler
                // as well.
                this.manager = manager;
-
                cb({ tokens: this.encapsulateExpansionHTML(refsTok, expansion), 
async: false });
        }.bind(this);
 
@@ -420,9 +423,9 @@
 };
 
 References.prototype.insertReferencesIntoDOM = function(refsNode) {
-       var group = refsNode.getAttribute("group") || '',
-               about = refsNode.getAttribute('about'),
-               src = refsNode.getAttribute('source'),
+       var about = refsNode.getAttribute('about'),
+               group = refsNode.data.parsoid.group || '',
+               src = refsNode.data.parsoid.src,
                // Extract ext-source for <references>..</references> usage
                body = Util.extractExtBody("references", src).trim(),
                refGroup = getRefGroup(this.refGroups, group);
@@ -443,7 +446,6 @@
                });
        }
 
-       refsNode.removeAttribute('source');
        refsNode.setAttribute('data-mw', dataMW);
 
        if (refGroup) {
diff --git a/js/lib/mediawiki.DOMPostProcessor.js 
b/js/lib/mediawiki.DOMPostProcessor.js
index 2c047ca..554f480 100644
--- a/js/lib/mediawiki.DOMPostProcessor.js
+++ b/js/lib/mediawiki.DOMPostProcessor.js
@@ -2468,7 +2468,7 @@
        var metaType = node.getAttribute("typeof");
        if (metaType &&
                // TODO: Use /Start for all Transclusion / Param markers!
-               
(metaType.match(/\bmw:(StartTag|EndTag|Extension\/(?:ref|references)\/Marker|TSRMarker)\/?[^\s]*\b/)
 &&
+               
(metaType.match(/\bmw:(StartTag|EndTag|Extension\/ref\/Marker|TSRMarker)\/?[^\s]*\b/)
 &&
                !node.getAttribute("property")) ||
                (editMode && metaType === "mw:Placeholder/StrippedTag")
        ) {
diff --git a/js/tests/parserTests.txt b/js/tests/parserTests.txt
index 3e67ed2..11e3454 100644
--- a/js/tests/parserTests.txt
+++ b/js/tests/parserTests.txt
@@ -14417,7 +14417,7 @@
 <p>A <span about="#mwt2" class="reference" 
data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"group":"a"}}' 
id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a 
href="#cite_note-1">[a 1]</a></span>
 B <span about="#mwt4" class="reference" 
data-mw='{"name":"ref","body":{"html":"bar"},"attrs":{"group":"b"}}' 
id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a 
href="#cite_note-1">[b 1]</a></span></p>
 
-<ol about="#mwt6" class="references" 
data-mw='{"name":"references","attrs":{"group":"a"}}' 
typeof="mw:Extension/references" group="a"><li about="#cite_note-1" 
id="cite_note-1"><span rel="mw:referencedBy"><a 
href="#cite_ref-1-0">↑</a></span> foo</li></ol>
+<ol about="#mwt6" class="references" 
data-mw='{"name":"references","attrs":{"group":"a"}}' 
typeof="mw:Extension/references"><li about="#cite_note-1" 
id="cite_note-1"><span rel="mw:referencedBy"><a 
href="#cite_ref-1-0">↑</a></span> foo</li></ol>
 !!end
 
 !!test
@@ -14459,7 +14459,7 @@
 <p>A <span about="#mwt2" class="reference" 
data-mw='{"name":"ref","body":{"html":"afoo"},"attrs":{"group":"a"}}' 
id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a 
href="#cite_note-1">[a 1]</a></span>
 B <span about="#mwt4" class="reference" 
data-mw='{"name":"ref","body":{"html":"bfoo"},"attrs":{}}' id="cite_ref-1-0" 
rel="dc:references" typeof="mw:Extension/ref" 
data-parsoid='{"src":"<ref>bfoo</ref>","dsr":[30,45,5,6]}'><a 
href="#cite_note-1">[1]</a></span></p>
 
-<ol about="#mwt6" class="references" 
data-mw='{"name":"references","attrs":{"group":"a"}}' 
typeof="mw:Extension/references" group="a"><li about="#cite_note-1" 
id="cite_note-1"><span rel="mw:referencedBy"><a 
href="#cite_ref-1-0">↑</a></span> afoo</li></ol>
+<ol about="#mwt6" class="references" 
data-mw='{"name":"references","attrs":{"group":"a"}}' 
typeof="mw:Extension/references"><li about="#cite_note-1" 
id="cite_note-1"><span rel="mw:referencedBy"><a 
href="#cite_ref-1-0">↑</a></span> afoo</li></ol>
 
 <p>C <span about="#mwt8" class="reference" 
data-mw='{"name":"ref","body":{"html":"cfoo"},"attrs":{}}' id="cite_ref-2-0" 
rel="dc:references" typeof="mw:Extension/ref"><a 
href="#cite_note-2">[2]</a></span></p>
 

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I85f4ad0a311d653d7ba3e010c7a5db028b643e9f
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Parsoid
Gerrit-Branch: master
Gerrit-Owner: Subramanya Sastry <ssas...@wikimedia.org>

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

Reply via email to