Cscott has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/51075


Change subject: Fix link target and retina thumbnails for manual thumbnails. 
(Bug 45405.)
......................................................................

Fix link target and retina thumbnails for manual thumbnails. (Bug 45405.)

The output for [[Image:Bad.jpg|thumb=Foobar.jpg|Title]] used to be:

<div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a
href="/wiki/File:Foobar.jpg" class="image"><img alt=""
src="http://example.com/images/3/3a/Foobar.jpg"; width="1941" height="220"
class="thumbimage" srcset="http://example.com/images/0/09/Bad.jpg 1.5x,
http://example.com/images/0/09/Bad.jpg 2x" /></a>  <div
class="thumbcaption"><div class="magnify"><a href="/wiki/File:Bad.jpg"
class="internal" title="Enlarge"><img
src="/skins/common/images/magnify-clip.png" width="15" height="11" alt=""
/></a></div>Title</div></div></div>

Note that the target of the <a> is the thumb, not the original image,
and that the srcset is loading the full resolution version of Bad.jpg.

The attached patches fix the target and srcset issues.  It also adds a
new "Thumb.jpg" pseudo-file to the parserTests so that we can write
new tests documenting how manual thumbnails are expected to work.

Change-Id: I5be80bfce855b85f9debf3ef1776b877d1f84b9f
---
M includes/Linker.php
M tests/parser/parserTest.inc
M tests/parser/parserTests.txt
3 files changed, 95 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/75/51075/1

diff --git a/includes/Linker.php b/includes/Linker.php
index a96bc5f..00b2e23 100644
--- a/includes/Linker.php
+++ b/includes/Linker.php
@@ -614,7 +614,7 @@
                                $hp['width'] = $file->getWidth( $page );
                        }
 
-                       if ( isset( $fp['thumbnail'] ) || isset( $fp['framed'] 
) || isset( $fp['frameless'] ) || !$hp['width'] ) {
+                       if ( isset( $fp['thumbnail'] ) || isset( 
$fp['manualthumb'] ) || isset( $fp['framed'] ) || isset( $fp['frameless'] ) || 
!$hp['width'] ) {
                                global $wgThumbLimits, $wgThumbUpright;
                                if ( !isset( $widthOption ) || !isset( 
$wgThumbLimits[$widthOption] ) ) {
                                        $widthOption = User::getDefaultOption( 
'thumbsize' );
@@ -841,6 +841,12 @@
                if ( $page ) {
                        $url = wfAppendQuery( $url, 'page=' . urlencode( $page 
) );
                }
+               if ( isset( $fp['manualthumb'] ) &&
+                    !isset( $fp['link-title'] ) &&
+                    !isset( $fp['link-url'] ) &&
+                    !isset( $fp['no-link'] ) ) {
+                       $fp['link-url'] = $url;
+               }
 
                $s = "<div class=\"thumb t{$fp['align']}\"><div 
class=\"thumbinner\" style=\"width:{$outerWidth}px;\">";
                if ( !$exists ) {
diff --git a/tests/parser/parserTest.inc b/tests/parser/parserTest.inc
index 13217e2..559b77d 100644
--- a/tests/parser/parserTest.inc
+++ b/tests/parser/parserTest.inc
@@ -868,17 +868,35 @@
                $this->uploadDir = $this->setupUploadDir();
                $user = User::createNew( 'WikiSysop' );
                $image = wfLocalFile( Title::makeTitle( NS_FILE, 'Foobar.jpg' ) 
);
+               # note that the size/width/height/bits/etc of the file
+               # are actually set by inspecting the file itself; the arguments
+               # to recordUpload2 have no effect.  That said, we try to make 
things
+               # match up so it is less confusing to readers of the code & 
tests.
                $image->recordUpload2( '', 'Upload of some lame file', 'Some 
lame file', array(
-                       'size' => 12345,
+                       'size' => 7881,
                        'width' => 1941,
                        'height' => 220,
-                       'bits' => 24,
+                       'bits' => 8,
                        'media_type' => MEDIATYPE_BITMAP,
                        'mime' => 'image/jpeg',
                        'metadata' => serialize( array() ),
-                       'sha1' => wfBaseConvert( '', 16, 36, 31 ),
+                       'sha1' => wfBaseConvert( '1', 16, 36, 31 ),
                        'fileExists' => true
                ), $this->db->timestamp( '20010115123500' ), $user );
+
+               $image = wfLocalFile( Title::makeTitle( NS_FILE, 'Thumb.png' ) 
);
+               # again, note that size/width/height below are ignored; see 
above.
+               $image->recordUpload2( '', 'Upload of some lame thumbnail', 
'Some lame thumbnail', array(
+                       'size' => 22589,
+                       'width' => 135,
+                       'height' => 135,
+                       'bits' => 8,
+                       'media_type' => MEDIATYPE_BITMAP,
+                       'mime' => 'image/png',
+                       'metadata' => serialize( array() ),
+                       'sha1' => wfBaseConvert( '2', 16, 36, 31 ),
+                       'fileExists' => true
+               ), $this->db->timestamp( '20130225203040' ), $user );
 
                # This image will be blacklisted in [[MediaWiki:Bad image list]]
                $image = wfLocalFile( Title::makeTitle( NS_FILE, 'Bad.jpg' ) );
@@ -890,7 +908,7 @@
                        'media_type' => MEDIATYPE_BITMAP,
                        'mime' => 'image/jpeg',
                        'metadata' => serialize( array() ),
-                       'sha1' => wfBaseConvert( '', 16, 36, 31 ),
+                       'sha1' => wfBaseConvert( '3', 16, 36, 31 ),
                        'fileExists' => true
                ), $this->db->timestamp( '20010115123500' ), $user );
        }
@@ -959,6 +977,8 @@
 
                wfMkdirParents( $dir . '/3/3a', null, __METHOD__ );
                copy( "$IP/skins/monobook/headbg.jpg", "$dir/3/3a/Foobar.jpg" );
+               wfMkdirParents( $dir . '/e/ea', null, __METHOD__ );
+               copy( "$IP/skins/monobook/wiki.png", "$dir/e/ea/Thumb.png" );
                wfMkdirParents( $dir . '/0/09', null, __METHOD__ );
                copy( "$IP/skins/monobook/headbg.jpg", "$dir/0/09/Bad.jpg" );
 
@@ -1007,6 +1027,8 @@
                                "$dir/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg",
                                "$dir/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg",
 
+                               "$dir/e/ea/Thumb.png",
+
                                "$dir/0/09/Bad.jpg",
 
                                
"$dir/math/f/a/5/fa50b8b616463173474302ca3e63586b.png",
@@ -1023,6 +1045,9 @@
                                "$dir/thumb/3/3a",
                                "$dir/thumb/3",
 
+                               "$dir/e/ea",
+                               "$dir/e",
+
                                "$dir/0/09/",
                                "$dir/0/",
                                "$dir/thumb",
diff --git a/tests/parser/parserTests.txt b/tests/parser/parserTests.txt
index 9e0b6a4..595a753 100644
--- a/tests/parser/parserTests.txt
+++ b/tests/parser/parserTests.txt
@@ -4544,7 +4544,7 @@
 !! input
 {{NUMBEROFFILES}}
 !! result
-<p>2
+<p>3
 </p>
 !! end
 
@@ -6865,10 +6865,67 @@
 
 !! test
 Thumbnail image with link parameter
+!! options
+php
 !! input
 [[Image:foobar.jpg|thumb|link=http://example.com/|Title]]
 !! result
 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a 
href="http://example.com/";><img alt="" 
src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg"; 
width="180" height="20" class="thumbimage" 
srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, 
http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  
<div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" 
class="internal" title="Enlarge"><img 
src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" 
/></a></div>Title</div></div></div>
+
+!! end
+
+!! test
+Manually-specified thumbnail image
+!! options
+php
+!! input
+[[Image:Foobar.jpg|thumb=Thumb.png|Title]]
+!! result
+<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a 
href="/wiki/File:Foobar.jpg"><img alt="" 
src="http://example.com/images/e/ea/Thumb.png"; width="135" height="135" 
class="thumbimage" 
srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, 
http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  
<div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" 
class="internal" title="Enlarge"><img 
src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" 
/></a></div>Title</div></div></div>
+
+!! end
+
+!! test
+Manually-specified thumbnail image with explicit link to wiki page
+!! options
+php
+!! input
+[[Image:Foobar.jpg|thumb=Thumb.png|link=Main Page|Title]]
+!! result
+<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a 
href="/wiki/Main_Page" title="Main Page"><img alt="" 
src="http://example.com/images/e/ea/Thumb.png"; width="135" height="135" 
class="thumbimage" 
srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, 
http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  
<div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" 
class="internal" title="Enlarge"><img 
src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" 
/></a></div>Title</div></div></div>
+
+!! end
+
+!! test
+Manually-specified thumbnail image with explicit link to url
+!! options
+php
+!! input
+[[Image:Foobar.jpg|thumb=Thumb.png|link=http://example.com|Title]]
+!! result
+<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a 
href="http://example.com";><img alt="" 
src="http://example.com/images/e/ea/Thumb.png"; width="135" height="135" 
class="thumbimage" 
srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, 
http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  
<div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" 
class="internal" title="Enlarge"><img 
src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" 
/></a></div>Title</div></div></div>
+
+!! end
+
+!! test
+Manually-specified thumbnail image with explicit no link
+!! options
+php
+!! input
+[[Image:Foobar.jpg|thumb=Thumb.png|link=|Title]]
+!! result
+<div class="thumb tright"><div class="thumbinner" style="width:137px;"><img 
alt="" src="http://example.com/images/e/ea/Thumb.png"; width="135" height="135" 
class="thumbimage" 
srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, 
http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" />  <div 
class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" 
class="internal" title="Enlarge"><img 
src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" 
/></a></div>Title</div></div></div>
+
+!! end
+
+!! test
+Manually-specified thumbnail image with explicit link and alt text
+!! options
+php
+!! input
+[[Image:Foobar.jpg|thumb=Thumb.png|link=Main Page|alt=alttext|Title]]
+!! result
+<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a 
href="/wiki/Main_Page" title="Main Page"><img alt="alttext" 
src="http://example.com/images/e/ea/Thumb.png"; width="135" height="135" 
class="thumbimage" 
srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, 
http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  
<div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" 
class="internal" title="Enlarge"><img 
src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" 
/></a></div>Title</div></div></div>
 
 !! end
 
@@ -9224,7 +9281,7 @@
 !!input
 [[Image:foobar.jpg|thumbnail= ]]
 !!result
-<div class="thumb tright"><div class="thumbinner" style="width:1943px;">Error 
creating thumbnail:   <div class="thumbcaption"></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;">Error 
creating thumbnail:   <div class="thumbcaption"></div></div></div>
 
 !!end
 

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I5be80bfce855b85f9debf3ef1776b877d1f84b9f
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Cscott <[email protected]>

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

Reply via email to