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

Reply via email to