Arlolra has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/363654 )

Change subject: [WIP] T169342: Make gallery output for missing images 
consistent with php
......................................................................

[WIP] T169342: Make gallery output for missing images consistent with php

 * This needs a solution to not break currently stored renders when
   serializing.

Change-Id: I1562c6ef7ec70712eb15110b4fec552c57ba4366
---
M lib/ext/Gallery/index.js
M tests/parserTests.txt
2 files changed, 27 insertions(+), 19 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid 
refs/changes/54/363654/1

diff --git a/lib/ext/Gallery/index.js b/lib/ext/Gallery/index.js
index f0b7d28..297d369 100644
--- a/lib/ext/Gallery/index.js
+++ b/lib/ext/Gallery/index.js
@@ -90,12 +90,11 @@
        var matches = obj.line.match(/^([^|]+)(\|(?:.*))?$/);
        if (!matches) { return null; }
 
-       var text = matches[1];
        var caption = matches[2] || '';
 
        // TODO: % indicates rawurldecode.
 
-       var title = env.makeTitleFromText(text,
+       var title = env.makeTitleFromText(matches[1],
                        env.conf.wiki.canonicalNamespaces.file, true);
 
        if (title === null || !title.getNamespace().isFile()) {
@@ -162,6 +161,7 @@
                var typeOf = thumb.getAttribute('typeof');
                if (/\bmw:Error\b/.test(typeOf)) {
                        while (thumb.firstChild) { thumb.firstChild.remove(); }
+                       var text = title._key.replace(/_/g, ' ');
                        thumb.appendChild(doc.createTextNode(text));
                }
 
@@ -249,6 +249,7 @@
 };
 
 var contentHandler = Promise.method(function(node, state) {
+       var env = state.env;
        var content = '\n';
        return Promise.reduce(Array.from(node.childNodes), function(_, child) {
                switch (child.nodeType) {
@@ -264,7 +265,7 @@
                                var elt = thumb.querySelector('img, video');
                                var resource = null;
                                if (elt) {
-                                       // FIXME: Should we preserve the 
original namespace?
+                                       // FIXME: Should we preserve the 
original namespace?  See T151367
                                        resource = elt.getAttribute('resource');
                                        if (resource !== null) {
                                                content += 
resource.replace(/^\.\//, '');
@@ -274,7 +275,14 @@
                                                }
                                        }
                                } else {
-                                       content += thumb.textContent;
+                                       // FIXME: Should we preserve the 
original namespace?  See T151367
+                                       // Presumably, if we have a "thumb" 
element but no media,
+                                       // we were given a valid title that 
resulted in a mw:Error
+                                       // (apierror-filedoesnotexist).
+                                       // Normalize to the prefixedDBKey form.
+                                       var nsid = 
env.conf.wiki.canonicalNamespaces.file;
+                                       var ns = 
env.conf.wiki.namespaceNames[nsid];
+                                       content += ns + ':' + 
thumb.textContent.replace(/ +/g, '_');
                                }
                                // The first "a" is for the link, hopefully.
                                var a = thumb.querySelector('a');
diff --git a/tests/parserTests.txt b/tests/parserTests.txt
index 95df91d..49eecfd 100644
--- a/tests/parserTests.txt
+++ b/tests/parserTests.txt
@@ -19907,7 +19907,7 @@
 
 !! html/parsoid
 <ul class="gallery mw-gallery-traditional" type="123" 
typeof="mw:Extension/gallery" about="#mwt2" 
data-mw='{"name":"gallery","attrs":{"type":"123","summary":"345"},"body":{"extsrc":"\nFile:File:Foobar.jpg\n"}}'>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">File:File:Foobar.jpg</span></div><div 
class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">File:Foobar.jpg</span></div><div class="gallerytext"></div></li>
 </ul>
 !! end
 
@@ -19970,11 +19970,11 @@
 
 !! html/parsoid
 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" 
about="#mwt3" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">image1.png </span></div><div class="gallerytext"></div></li>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">image2.gif</span></div><div class="gallerytext"></div></li>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">image3</span></div><div class="gallerytext"></div></li>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">image4    </span></div><div class="gallerytext"></div></li>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;"> image5.svg</span></div><div class="gallerytext"> <a 
rel="mw:ExtLink" href="http://///////";>http://///////</a></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">Image1.png</span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">Image2.gif</span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">Image3</span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">Image4</span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">Image5.svg</span></div><div class="gallerytext"> <a 
rel="mw:ExtLink" href="http://///////";>http://///////</a></div></li>
 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">* image6</span></div><div class="gallerytext"></div></li>
 </ul>
 !! end
@@ -20033,8 +20033,8 @@
 !! html/parsoid
 <ul class="gallery mw-gallery-traditional" style="max-width: 226px; _width: 
226px;" typeof="mw:Extension/gallery" about="#mwt3" 
data-mw='{"name":"gallery","attrs":{"widths":"70px","heights":"40px","perrow":"2"},"body":{}}'>
 <li class="gallerycaption">Foo <a rel="mw:WikiLink" href="./Main_Page" 
title="Main Page">Main Page</a></li>
-<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 
100px; height: 70px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">File:Nonexistent.jpg</span></div><div 
class="gallerytext">caption</div></li>
-<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 
100px; height: 70px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">File:Nonexistent.jpg</span></div><div 
class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 
100px; height: 70px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">Nonexistent.jpg</span></div><div 
class="gallerytext">caption</div></li>
+<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 
100px; height: 70px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">Nonexistent.jpg</span></div><div class="gallerytext"></div></li>
 <li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 
100px; height: 70px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: 
middle; display: inline-block;"><a href="./File:Foobar.jpg"><img 
resource="./File:Foobar.jpg" 
src="//example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" 
data-file-width="1941" data-file-height="220" data-file-type="bitmap" 
height="8" width="70"/></a></span></div><div class="gallerytext">some 
<b>caption</b> <a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main 
Page</a></div></li>
 <li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 
100px; height: 70px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: 
middle; display: inline-block;"><a href="./File:Foobar.jpg"><img 
resource="./File:Foobar.jpg" 
src="//example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" 
data-file-width="1941" data-file-height="220" data-file-type="bitmap" 
height="8" width="70"/></a></span></div><div class="gallerytext"></div></li>
 <li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 
100px; height: 70px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: 
middle; display: inline-block;"><a href="./File:Foobar.jpg"><img alt="This is a 
foo-bar." resource="./File:Foobar.jpg" 
src="//example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" 
data-file-width="1941" data-file-height="220" data-file-type="bitmap" 
height="8" width="70"/></a></span></div><div 
class="gallerytext">blabla.</div></li>
@@ -20094,8 +20094,8 @@
 !! html/parsoid
 <ul class="gallery mw-gallery-traditional" style="max-width: 226px; _width: 
226px;" typeof="mw:Extension/gallery" about="#mwt3" data-parsoid='{}' 
data-mw='{"name":"gallery","attrs":{"widths":"70px","heights":"40px","perrow":"2","caption":"Foo
 [[Main 
Page]]"},"body":{"extsrc":"\nFile:Nonexistent.jpg|caption\nFile:Nonexistent.jpg\nimage:foobar.jpg|some
 &#39;&#39;&#39;caption&#39;&#39;&#39; [[Main 
Page]]\nimage:foobar.jpg\nimage:foobar.jpg|Blabla|alt=This is a 
foo-bar.|blabla.\n"}}'>
 <li class="gallerycaption">Foo <a rel="mw:WikiLink" href="./Main_Page" 
title="Main Page">Main Page</a></li>
-<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 
100px; height: 70px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">File:Nonexistent.jpg</span></div><div 
class="gallerytext">caption</div></li>
-<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 
100px; height: 70px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">File:Nonexistent.jpg</span></div><div 
class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 
100px; height: 70px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">Nonexistent.jpg</span></div><div 
class="gallerytext">caption</div></li>
+<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 
100px; height: 70px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">Nonexistent.jpg</span></div><div class="gallerytext"></div></li>
 <li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 
100px; height: 70px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: 
middle; display: inline-block;"><a href="./File:Foobar.jpg"><img 
resource="./File:Foobar.jpg" 
src="//example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" 
data-file-width="1941" data-file-height="220" data-file-type="bitmap" 
height="8" width="70"/></a></span></div><div class="gallerytext">some 
<b>caption</b> <a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main 
Page</a></div></li>
 <li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 
100px; height: 70px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: 
middle; display: inline-block;"><a href="./File:Foobar.jpg"><img 
resource="./File:Foobar.jpg" 
src="//example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" 
data-file-width="1941" data-file-height="220" data-file-type="bitmap" 
height="8" width="70"/></a></span></div><div class="gallerytext"></div></li>
 <li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 
100px; height: 70px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: 
middle; display: inline-block;"><a href="./File:Foobar.jpg"><img alt="This is a 
foo-bar." resource="./File:Foobar.jpg" 
src="//example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" 
data-file-width="1941" data-file-height="220" data-file-type="bitmap" 
height="8" width="70"/></a></span></div><div 
class="gallerytext">blabla.</div></li>
@@ -20259,14 +20259,14 @@
 
 !! html/parsoid
 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" 
about="#mwt3" 
data-mw='{"name":"gallery","attrs":{"showfilename":""},"body":{}}'>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">File:Nonexistent.jpg</span></div><div class="gallerytext"><a 
href="./File:Nonexistent.jpg" class="galleryfilename galleryfilename-truncate" 
title="File:Nonexistent.jpg">File:Nonexistent.jpg</a>caption</div></li>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">File:Nonexistent.jpg</span></div><div class="gallerytext"><a 
href="./File:Nonexistent.jpg" class="galleryfilename galleryfilename-truncate" 
title="File:Nonexistent.jpg">File:Nonexistent.jpg</a></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">Nonexistent.jpg</span></div><div class="gallerytext"><a 
href="./File:Nonexistent.jpg" class="galleryfilename galleryfilename-truncate" 
title="File:Nonexistent.jpg">File:Nonexistent.jpg</a>caption</div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">Nonexistent.jpg</span></div><div class="gallerytext"><a 
href="./File:Nonexistent.jpg" class="galleryfilename galleryfilename-truncate" 
title="File:Nonexistent.jpg">File:Nonexistent.jpg</a></div></li>
 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: 
middle; display: inline-block;"><a href="./File:Foobar.jpg"><img 
resource="./File:Foobar.jpg" 
src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" 
data-file-width="1941" data-file-height="220" data-file-type="bitmap" 
height="14" width="120"/></a></span></div><div class="gallerytext"><a 
href="./File:Foobar.jpg" class="galleryfilename galleryfilename-truncate" 
title="File:Foobar.jpg">File:Foobar.jpg</a>some <b>caption</b> <a 
rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a></div></li>
 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: 
middle; display: inline-block;"><a href="./File:Foobar.jpg"><img 
resource="./File:Foobar.jpg" 
src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" 
data-file-width="1941" data-file-height="220" data-file-type="bitmap" 
height="14" width="120"/></a></span></div><div class="gallerytext"><a 
href="./File:Foobar.jpg" class="galleryfilename galleryfilename-truncate" 
title="File:Foobar.jpg">File:Foobar.jpg</a></div></li>
 </ul>
 !! end
 
-## Should Parsoid be preserving these variations?
+## Should Parsoid be preserving these variations?  See T151367
 !! test
 Gallery (with namespace-less filenames)
 !! options
@@ -20307,7 +20307,7 @@
 
 !! html/parsoid
 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" 
about="#mwt2" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">File:Nonexistent.jpg</span></div><div 
class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">Nonexistent.jpg</span></div><div class="gallerytext"></div></li>
 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">Nonexistent.jpg</span></div><div class="gallerytext"></div></li>
 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: 
middle; display: inline-block;"><a href="./File:Foobar.jpg"><img 
resource="./File:Foobar.jpg" 
src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" 
data-file-width="1941" data-file-height="220" data-file-type="bitmap" 
height="14" width="120"/></a></span></div><div class="gallerytext"></div></li>
 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: 
middle; display: inline-block;"><a href="./File:Foobar.jpg"><img 
resource="./File:Foobar.jpg" 
src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" 
data-file-width="1941" data-file-height="220" data-file-type="bitmap" 
height="14" width="120"/></a></span></div><div class="gallerytext"></div></li>
@@ -20448,7 +20448,7 @@
 !! html/parsoid
 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" 
about="#mwt2" data-mw='{"name":"gallery","body":{}}'>
 <li class="gallerycaption">123</li>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">File:Test.png</span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 
150px; height: 150px;"><span style="display: inline-block; height: 100%; 
vertical-align: middle;"></span><span style="vertical-align: middle; display: 
inline-block;">Test.png</span></div><div class="gallerytext"></div></li>
 </ul>
 !! wikitext
 <gallery caption="123">

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1562c6ef7ec70712eb15110b4fec552c57ba4366
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Arlolra <[email protected]>

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

Reply via email to