function toHTML() {
if ( $this->mPerRow > 0 ) {
$maxwidth = $this->mPerRow * ( $this->mWidths + $this->getAllPadding() );
- $oldStyle = isset( $this->mAttribs['style'] ) ? $this->mAttribs['style'] : '';
+ $oldStyle = $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;" .
}
$textlink = $this->mShowFilename ?
- // Preloaded into LinkCache above
- Linker::linkKnown(
- $nt,
- htmlspecialchars(
- $this->mCaptionLength !== true ?
- $lang->truncate( $nt->getText(), $this->mCaptionLength ) :
- $nt->getText()
- ),
- [
- 'class' => 'galleryfilename' .
- ( $this->mCaptionLength === true ? ' galleryfilename-truncate' : '' )
- ]
- ) . "\n" :
+ $this->getCaptionHtml( $nt, $lang ) :
'';
$galleryText = $textlink . $text . $meta;
$galleryText = $this->wrapGalleryText( $galleryText, $thumb );
+ $gbWidth = $this->getGBWidth( $thumb ) . 'px';
+ if ( $this->getGBWidthOverwrite( $thumb ) ) {
+ $gbWidth = $this->getGBWidthOverwrite( $thumb );
+ }
# Weird double wrapping (the extra div inside the li) needed due to FF2 bug
# Can be safely removed if FF2 falls completely out of existence
$output .= "\n\t\t" . '<li class="gallerybox" style="width: '
- . $this->getGBWidth( $thumb ) . 'px">'
- . '<div style="width: ' . $this->getGBWidth( $thumb ) . 'px">'
+ . $gbWidth . '">'
+ . '<div style="width: ' . $gbWidth . '">'
. $thumbhtml
. $galleryText
. "\n\t\t</div></li>";
return $output;
}
+ /**
+ * @param Title $nt
+ * @param Language $lang
+ * @return string HTML
+ */
+ protected function getCaptionHtml( Title $nt, Language $lang ) {
+ // Preloaded into LinkCache in toHTML
+ return Linker::linkKnown(
+ $nt,
+ htmlspecialchars(
+ is_int( $this->getCaptionLength() ) ?
+ $lang->truncate( $nt->getText(), $this->getCaptionLength() ) :
+ $nt->getText()
+ ),
+ [
+ 'class' => 'galleryfilename' .
+ ( $this->getCaptionLength() === true ? ' galleryfilename-truncate' : '' )
+ ]
+ ) . "\n";
+ }
+
/**
* Add the wrapper html around the thumb's caption
*
return 8;
}
+ /**
+ * Length to truncate filename to in caption when using "showfilename" (if int).
+ * A value of 'true' will truncate the filename to one line using CSS, while
+ * 'false' will disable truncating.
+ *
+ * @return int|bool
+ */
+ protected function getCaptionLength() {
+ return $this->mCaptionLength;
+ }
+
/**
* Get total padding.
*
}
/**
- * Width of gallerybox <li>.
+ * Computed width of gallerybox <li>.
*
* Generally is the width of the image, plus padding on image
* plus padding on gallerybox.
return $this->mWidths + $this->getThumbPadding() + $this->getGBPadding();
}
+ /**
+ * Allows overwriting the computed width of the gallerybox <li> with a string,
+ * like '100%'.
+ *
+ * Generally is the width of the image, plus padding on image
+ * plus padding on gallerybox.
+ *
+ * @note Important: parameter will be false if no thumb used.
+ * @param MediaTransformOutput|bool $thumb MediaTransformObject object or false.
+ * @return bool|string Ignored if false.
+ */
+ protected function getGBWidthOverwrite( $thumb ) {
+ return false;
+ }
+
/**
* Get a list of modules to include in the page.
*