Arlolra has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/340265 )
Change subject: Pass dataMw to the media handlers ...................................................................... Pass dataMw to the media handlers Change-Id: Ic114bf32cf0cf2cb11884db0c21bcb65b341496c --- M lib/wt2html/tt/LinkHandler.js 1 file changed, 26 insertions(+), 36 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid refs/changes/65/340265/1 diff --git a/lib/wt2html/tt/LinkHandler.js b/lib/wt2html/tt/LinkHandler.js index f066d23..274a373 100644 --- a/lib/wt2html/tt/LinkHandler.js +++ b/lib/wt2html/tt/LinkHandler.js @@ -934,7 +934,7 @@ } // Set up the actual image structure, attributes etc -WikiLinkHandler.prototype.handleImage = function(opts, info, errs) { +WikiLinkHandler.prototype.handleImage = function(opts, info, dataMw) { var img = new SelfclosingTagTk('img', []); if ('alt' in opts) { @@ -953,7 +953,7 @@ info.height = Number(info.height); info.width = Number(info.width); - if (!errs.length) { + if (!dataMw.errors) { // Add (read-only) information about original file size (T64881) img.addAttribute('data-file-width', String(info.width)); img.addAttribute('data-file-height', String(info.height)); @@ -1100,10 +1100,21 @@ errs.push({ key: 'thumb-error', 'message': info.thumberror }); } + var dataMwAttr = token.getAttribute('data-mw'); + var dataMw = dataMwAttr ? JSON.parse(dataMwAttr) : {}; + + // Add error info to data-mw + if (errs.length > 0) { + if (Array.isArray(dataMw.errors)) { + errs = dataMw.errors.concat(errs); + } + dataMw.errors = errs; + } + var o; switch (info.mediatype && info.mediatype.toLowerCase()) { default: - o = this.handleImage(opts, info, errs); + o = this.handleImage(opts, info, dataMw); } var iContainerName = o.hasLink ? 'a' : 'span'; @@ -1202,19 +1213,7 @@ var tokens = [container, innerContain].concat(o.elt, innerContainClose); var manager = this.manager; - var dataMW = token.getAttribute("data-mw"); - var dataMWObj = null; - - // Add error info to data-mw - if (errs.length > 0) { - dataMWObj = dataMW ? JSON.parse(dataMW) : {}; - if (Array.isArray(dataMWObj.errors)) { - errs = dataMWObj.errors.concat(errs); - } - dataMWObj.errors = errs; - } - - var setupDataMW = function(obj, str, captionDOM) { + var setupDataMW = function(obj, captionDOM) { if (opts.caption !== undefined) { if (useFigure) { tokens = tokens.concat([ @@ -1241,53 +1240,43 @@ documentCB: function(doc) { // Async goto: return to top of function // with the parsed caption in `captionDOM` - setupDataMW(obj, str, doc); + setupDataMW(obj, doc); }, }); } else { - if (!obj) { obj = str ? JSON.parse(str) : {}; } // Use parsed DOM given in `captionDOM` obj.caption = DU.ppToXML(captionDOM.body, { innerXML: true }); } } if (opts.manualthumb !== undefined) { - if (!obj) { obj = str ? JSON.parse(str) : {}; } obj.thumb = opts.manualthumb.v; } - // We only parse the str -> obj if we had to update it. - container.addAttribute("data-mw", obj ? JSON.stringify(obj) : str); + if (Object.keys(obj).length) { + container.addAttribute("data-mw", JSON.stringify(obj)); + } tokens.push(containerClose); cb({ tokens: tokens }); }; - if (dataAttribs.uneditable) { - // Don't bother setting up data-mw unless we added error info - // SSS FIXME: Is this even useful since the image has been marked unneditable? - setupDataMW(dataMWObj, null); - } else if (optSources) { + if (dataAttribs.uneditable || !optSources) { + setupDataMW(dataMw); + } else { cb({ async: true }); var inVals = optSources.map(function(e) { return e[1]; }); Util.expandValuesToDOM(manager.env, manager.frame, inVals, this.options.wrapTemplates, function(e, outVals) { // FIXME: Do something with `e`? - if (!dataMWObj) { - dataMWObj = dataMW ? JSON.parse(dataMW) : {}; - } - if (!dataMWObj.attribs) { - dataMWObj.attribs = []; - } + if (!dataMw.attribs) { dataMw.attribs = []; } for (var i = 0; i < outVals.length; i++) { - dataMWObj.attribs.push([optSources[i][0].optKey, outVals[i]]); + dataMw.attribs.push([optSources[i][0].optKey, outVals[i]]); } container.addAttribute("about", manager.env.newAboutId()); container.addSpaceSeparatedAttribute("typeof", "mw:ExpandedAttrs"); - setupDataMW(dataMWObj); + setupDataMW(dataMw); }); - } else { - setupDataMW(dataMWObj, dataMW); } }; @@ -1359,6 +1348,7 @@ t.getAttribute("typeof") === "mw:Transclusion"; }) !== undefined; }; + while (optKVs.length > 0) { var oContent = optKVs.shift(); var origOptSrc, optInfo, oText; -- To view, visit https://gerrit.wikimedia.org/r/340265 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic114bf32cf0cf2cb11884db0c21bcb65b341496c Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/services/parsoid Gerrit-Branch: master Gerrit-Owner: Arlolra <abrea...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits