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
'''caption''' [[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