Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F5510
18682b
Public
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Authored By
•
bzimport
Nov 21 2014, 10:31 PM
2014-11-21 22:31:34 (UTC+0)
Size
9 KB
Referenced Files
None
Subscribers
None
18682b
View Options
Index: tests/parser/parserTests.txt
===================================================================
--- tests/parser/parserTests.txt (revision 86761)
+++ tests/parser/parserTests.txt (working copy)
@@ -7312,6 +7312,7 @@
File:Nonexistant.jpg
image:foobar.jpg|some '''caption''' [[Main Page]]
image:foobar.jpg
+image:foobar.jpg|Blabla|alt=This is a foo-bar.|blabla.
</gallery>
!! result
<ul class="gallery" style="max-width: 202px;_width: 202px;">
@@ -7340,11 +7341,45 @@
<div class="gallerytext">
</div>
</div></li>
+ <li class="gallerybox" style="width: 95px"><div style="width: 95px">
+ <div class="thumb" style="width: 90px;"><div style="margin:26px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="This is a foo-bar." src="http://example.com/images/3/3a/Foobar.jpg" width="60" height="7" /></a></div></div>
+ <div class="gallerytext">
+<p>Blabla|blabla.
+</p>
+ </div>
+ </div></li>
</ul>
!! end
!! test
+Gallery with wikitext inside caption
+!! input
+<gallery>
+File:foobar.jpg|[[File:foobar.jpg|20px|desc|alt=inneralt]]|alt=galleryalt
+File:foobar.jpg|{{tl|test|alt=param}}|alt=galleryalt
+</gallery>
+!! result
+<ul class="gallery">
+ <li class="gallerybox" style="width: 155px"><div style="width: 155px">
+ <div class="thumb" style="width: 150px;"><div style="margin:66px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="galleryalt" src="http://example.com/images/3/3a/Foobar.jpg" width="120" height="14" /></a></div></div>
+ <div class="gallerytext">
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="desc"><img alt="inneralt" src="http://example.com/images/3/3a/Foobar.jpg" width="20" height="2" /></a>
+</p>
+ </div>
+ </div></li>
+ <li class="gallerybox" style="width: 155px"><div style="width: 155px">
+ <div class="thumb" style="width: 150px;"><div style="margin:66px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="galleryalt" src="http://example.com/images/3/3a/Foobar.jpg" width="120" height="14" /></a></div></div>
+ <div class="gallerytext">
+<p><a href="/index.php?title=Template:Tl&action=edit&redlink=1" class="new" title="Template:Tl (page does not exist)">Template:Tl</a>
+</p>
+ </div>
+ </div></li>
+</ul>
+
+!! end
+
+!! test
gallery (with showfilename option)
!! input
<gallery showfilename>
Index: includes/parser/Parser.php
===================================================================
--- includes/parser/Parser.php (revision 86761)
+++ includes/parser/Parser.php (working copy)
@@ -4733,21 +4733,38 @@
if ( strpos( $matches[0], '%' ) !== false ) {
$matches[1] = rawurldecode( $matches[1] );
}
- $tp = Title::newFromText( $matches[1], NS_FILE );
- $nt =& $tp;
- if ( is_null( $nt ) ) {
+ $title = Title::newFromText( $matches[1], NS_FILE );
+ if ( is_null( $title ) ) {
# Bogus title. Ignore these so we don't bomb out later.
continue;
}
+
+ $label = '';
+ $alt = '';
if ( isset( $matches[3] ) ) {
- $label = $matches[3];
- } else {
- $label = '';
+ // look for an |alt= definition while trying not to break existing
+ // captions with multiple pipes (|) in it, until a more sensible grammar
+ // is defined for images in galleries
+
+ $matches[3] = $this->recursiveTagParse( trim( $matches[3] ) );
+ $altmatches = StringUtils::explode('|', $matches[3]);
+ $magicWordAlt = MagicWord::get( 'img_alt' );
+
+ foreach ( $altmatches as $altmatch ) {
+ $match = $magicWordAlt->matchVariableStartToEnd( $altmatch );
+ if ( $match ) {
+ $alt = $this->stripAltText( $match, false );
+ }
+ else {
+ // concatenate all other pipes
+ $label .= '|' . $altmatch;
+ }
+ }
+ // remove the first pipe
+ $label = substr( $label, 1 );
}
- $html = $this->recursiveTagParse( trim( $label ) );
-
- $ig->add( $nt, $html );
+ $ig->add( $title, $label, $alt );
}
return $ig->toHTML();
}
Index: includes/MagicWord.php
===================================================================
--- includes/MagicWord.php (revision 86761)
+++ includes/MagicWord.php (working copy)
@@ -35,6 +35,7 @@
var $mRegexStart = '';
var $mBaseRegex = '';
var $mVariableRegex = '';
+ var $mVariableStartToEndRegex = '';
var $mModified = false;
var $mFound = false;
Index: includes/ImageGallery.php
===================================================================
--- includes/ImageGallery.php (revision 86761)
+++ includes/ImageGallery.php (working copy)
@@ -136,14 +136,15 @@
* Add an image to the gallery.
*
* @param $title Title object of the image that is added to the gallery
- * @param $html String: additional HTML text to be shown. The name and size of the image are always shown.
+ * @param $html String: Additional HTML text to be shown. The name and size of the image are always shown.
+ * @param $alt String: Alt text for the image
*/
- function add( $title, $html='' ) {
+ function add( $title, $html = '', $alt = '' ) {
if ( $title instanceof File ) {
// Old calling convention
$title = $title->getTitle();
}
- $this->mImages[] = array( $title, $html );
+ $this->mImages[] = array( $title, $html, $alt );
wfDebug( "ImageGallery::add " . $title->getText() . "\n" );
}
@@ -151,14 +152,15 @@
* Add an image at the beginning of the gallery.
*
* @param $title Title object of the image that is added to the gallery
- * @param $html String: Additional HTML text to be shown. The name and size of the image are always shown.
+ * @param $html String: Additional HTML text to be shown. The name and size of the image are always shown.
+ * @param $alt String: Alt text for the image
*/
- function insert( $title, $html='' ) {
+ function insert( $title, $html='', $alt='' ) {
if ( $title instanceof File ) {
// Old calling convention
$title = $title->getTitle();
}
- array_unshift( $this->mImages, array( &$title, $html ) );
+ array_unshift( $this->mImages, array( &$title, $html, $alt ) );
}
@@ -218,15 +220,16 @@
if ( $this->mPerRow > 0 ) {
$maxwidth = $this->mPerRow * ( $this->mWidths + self::THUMB_PADDING + self::GB_PADDING + self::GB_BORDERS );
$oldStyle = isset( $this->mAttribs['style'] ) ? $this->mAttribs['style'] : "";
+ # _width is ignored by any sane browser. IE6 doesn't know max-width so it uses _width instead
$this->mAttribs['style'] = "max-width: {$maxwidth}px;_width: {$maxwidth}px;" . $oldStyle;
}
$attribs = Sanitizer::mergeAttributes(
array( 'class' => 'gallery' ), $this->mAttribs );
- $s = Xml::openElement( 'ul', $attribs );
+ $output = Xml::openElement( 'ul', $attribs );
if ( $this->mCaption ) {
- $s .= "\n\t<li class='gallerycaption'>{$this->mCaption}</li>";
+ $output .= "\n\t<li class='gallerycaption'>{$this->mCaption}</li>";
}
$params = array( 'width' => $this->mWidths, 'height' => $this->mHeights );
@@ -234,6 +237,7 @@
foreach ( $this->mImages as $pair ) {
$nt = $pair[0];
$text = $pair[1]; # "text" means "caption" here
+ $alt = $pair[2];
$descQuery = false;
if ( $nt->getNamespace() == NS_FILE ) {
@@ -272,18 +276,19 @@
$thumbhtml = "\n\t\t\t".'<div style="height: '.(self::THUMB_PADDING + $this->mHeights).'px;">'
. htmlspecialchars( $img->getLastError() ) . '</div>';
} else {
- //We get layout problems with the margin, if the image is smaller
- //than the line-height, so we less margin in these cases.
+ # We get layout problems with the margin, if the image is smaller
+ # than the line-height (17), so we add less margin in these cases.
$minThumbHeight = $thumb->height > 17 ? $thumb->height : 17;
$vpad = floor(( self::THUMB_PADDING + $this->mHeights - $minThumbHeight ) /2);
$imageParameters = array(
'desc-link' => true,
- 'desc-query' => $descQuery
+ 'desc-query' => $descQuery,
+ 'alt' => $alt,
);
- # In the absence of a caption, fall back on providing screen readers with the filename as alt text
- if ( $text == '' ) {
+ # In the absence of both alt text and caption, fall back on providing screen readers with the filename as alt text
+ if ( $alt == '' && $text == '' ) {
$imageParameters['alt'] = $nt->getText();
}
@@ -308,14 +313,14 @@
if( $this->mShowBytes ) {
if( $img ) {
- $nb = wfMsgExt( 'nbytes', array( 'parsemag', 'escape'),
+ $fileSize = wfMsgExt( 'nbytes', array( 'parsemag', 'escape'),
$wgLang->formatNum( $img->getSize() ) );
} else {
- $nb = wfMsgHtml( 'filemissing' );
+ $fileSize = wfMsgHtml( 'filemissing' );
}
- $nb = "$nb<br />\n";
+ $fileSize = "$fileSize<br />\n";
} else {
- $nb = '';
+ $fileSize = '';
}
$textlink = $this->mShowFilename ?
@@ -332,20 +337,20 @@
# in version 4.8.6 generated crackpot html in its absence, see:
# http://bugzilla.wikimedia.org/show_bug.cgi?id=1765 -Ævar
- # Weird double wrapping in div needed due to FF2 bug
+ # Weird double wrapping (the extra div inside the li) needed due to FF2 bug
# Can be safely removed if FF2 falls completely out of existance
- $s .=
+ $output .=
"\n\t\t" . '<li class="gallerybox" style="width: ' . ( $this->mWidths + self::THUMB_PADDING + self::GB_PADDING ) . 'px">'
. '<div style="width: ' . ( $this->mWidths + self::THUMB_PADDING + self::GB_PADDING ) . 'px">'
. $thumbhtml
. "\n\t\t\t" . '<div class="gallerytext">' . "\n"
- . $textlink . $text . $nb
+ . $textlink . $text . $fileSize
. "\n\t\t\t</div>"
. "\n\t\t</div></li>";
}
- $s .= "\n</ul>";
+ $output .= "\n</ul>";
- return $s;
+ return $output;
}
/**
File Metadata
Details
Attached
Mime Type
text/x-diff
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5067
Default Alt Text
18682b (9 KB)
Attached To
Mode
T20682: Add alt= parameter support for files in a <gallery>
Attached
Detach File
Event Timeline
Log In to Comment