Cscott has uploaded a new change for review.
https://gerrit.wikimedia.org/r/228009
Change subject: WIP: T107435: Properly escape non-block image captions during
WTS.
......................................................................
WIP: T107435: Properly escape non-block image captions during WTS.
Change-Id: I19e860c5d1e24b260c5a2c2b7fd177ee8b3d530e
---
M lib/wts.LinkHandler.js
M tests/mocha/jsapi.js
M tests/parserTests.txt
3 files changed, 22 insertions(+), 4 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid
refs/changes/09/228009/1
diff --git a/lib/wts.LinkHandler.js b/lib/wts.LinkHandler.js
index 6100f24..03cddd1 100644
--- a/lib/wts.LinkHandler.js
+++ b/lib/wts.LinkHandler.js
@@ -772,12 +772,16 @@
// Reconstruct the caption
var caption = null;
+ if (!captionElt && outerElt && typeof DU.getDataMw(outerElt).caption
=== 'string') {
+ captionElt = outerElt.ownerDocument.createElement('div');
+ captionElt.innerHTML = DU.getDataMw(outerElt).caption;
+ // Needs a parent node in order for WTS to be happy
+
outerElt.ownerDocument.createElement('div').appendChild(captionElt);
+ }
if (captionElt) {
state.inCaption = true;
caption = state.serializeChildrenToString(captionElt,
this.wteHandlers.wikilinkHandler, false);
state.inCaption = false;
- } else if (outerElt) {
- caption = DU.getDataMw(outerElt).caption;
}
// Fetch the alt (if any)
diff --git a/tests/mocha/jsapi.js b/tests/mocha/jsapi.js
index a0645c7..4a1917c 100644
--- a/tests/mocha/jsapi.js
+++ b/tests/mocha/jsapi.js
@@ -193,8 +193,7 @@
String(images[1].caption).should.equal('caption');
images[0].caption = '|';
images[1].caption = null;
- // XXX Bug T107435
- //
String(pdoc).should.equal('[[File:SomeFile1.jpg|<nowiki>|</nowiki>]]
[[File:SomeFile2.jpg|thumb]]');
+
String(pdoc).should.equal('[[File:SomeFile1.jpg|<nowiki>|</nowiki>]]
[[File:SomeFile2.jpg|thumb]]');
images[0].caption = null;
images[1].caption = '|';
String(pdoc).should.equal('[[File:SomeFile1.jpg]]
[[File:SomeFile2.jpg|thumb|<nowiki>|</nowiki>]]');
diff --git a/tests/parserTests.txt b/tests/parserTests.txt
index 94e7268..719fd58 100644
--- a/tests/parserTests.txt
+++ b/tests/parserTests.txt
@@ -12518,6 +12518,21 @@
!! end
!! test
+Escaping non-block captions (T107435)
+!! options
+parsoid={
+ "modes": ["wt2wt"],
+ "changes": [
+ ["[typeof~='mw:Image']", "attr", "data-mw", "{\"caption\": \"|\"}"]
+ ]
+}
+!! wikitext
+[[Image:Foobar.jpg|caption]]
+!! wikitext/edited
+[[Image:Foobar.jpg|<nowiki>|</nowiki>]]
+!! end
+
+!! test
Image with link parameter, wgExternalLinkTarget
!! wikitext
[[Image:foobar.jpg|link=http://example.com/]]
--
To view, visit https://gerrit.wikimedia.org/r/228009
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I19e860c5d1e24b260c5a2c2b7fd177ee8b3d530e
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Cscott <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits