Tim Starling has uploaded a new change for review.
https://gerrit.wikimedia.org/r/238356
Change subject: Fix support for height parameter and mustRender
......................................................................
Fix support for height parameter and mustRender
* Validate txopts as if they were image link parameters, by passing them
through $handler->validateParam().
* Fill in the default width if it is not set, like in
Linker::makeImageLink(). Parsoid always sets the width if a thumbnail
format is requested, so we can assume that the source width is
desired, which reduces the amount of code somewhat. This allows
transform requests with only a height to work -- box scaling is done
in MediaHandler::normaliseParams().
* Always transform the image, even if no txopts is given. This matches
the behaviour of Linker::makeImageLink() and is required for
mustRender() support. Parsoid will happily process the thumbnail
output even if it didn't ask for it.
Bug: T111870
Bug: T112045
Change-Id: I56d28e9ae85b03ac59367fb2613da9f6b3987b4a
(cherry picked from commit deceda36737ecd68c57f65910a6db879ef764a97)
---
M includes/ApiParsoidBatch.php
1 file changed, 47 insertions(+), 15 deletions(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/ParsoidBatchAPI
refs/changes/56/238356/1
diff --git a/includes/ApiParsoidBatch.php b/includes/ApiParsoidBatch.php
index 02753ac..e3bc802 100644
--- a/includes/ApiParsoidBatch.php
+++ b/includes/ApiParsoidBatch.php
@@ -75,7 +75,7 @@
} elseif ( $action === 'imageinfo' ) {
$filename = $itemParams['filename'];
$file = isset( $files[$filename] ) ?
$files[$filename] : null;
- $txopts = isset( $itemParams['txopts'] ) ?
$itemParams['txopts'] : null;
+ $txopts = isset( $itemParams['txopts'] ) ?
$itemParams['txopts'] : array();
$itemResult = $this->imageinfo( $filename,
$file, $txopts );
} else {
throw new Exception( "Invalid action despite
validation already being done" );
@@ -190,26 +190,58 @@
'url' => wfExpandUrl( $file->getFullURL(),
PROTO_CURRENT )
);
- if ( $txopts ) {
- $mto = $file->transform( $txopts );
- if ( $mto ) {
- if ( $mto->isError() ) {
- $result['thumberror'] = $mto->toText();
- } else {
- // Proposed MediaTransformOutput
serialization method for T51896 etc.
- if ( is_callable( $mto, 'getAPIData' )
) {
- $result['thumbdata'] =
$mto->getAPIData();
- }
-
- $result['thumburl'] = wfExpandUrl(
$mto->getUrl(), PROTO_CURRENT );
- $result['thumbwidth'] =
$mto->getWidth();
- $result['thumbheight'] =
$mto->getHeight();
+ $txopts = $this->makeTransformOptions( $file, $txopts );
+ $mto = $file->transform( $txopts );
+ if ( $mto ) {
+ if ( $mto->isError() ) {
+ $result['thumberror'] = $mto->toText();
+ } else {
+ // Proposed MediaTransformOutput serialization
method for T51896 etc.
+ if ( is_callable( $mto, 'getAPIData' ) ) {
+ $result['thumbdata'] =
$mto->getAPIData();
}
+
+ $result['thumburl'] = wfExpandUrl(
$mto->getUrl(), PROTO_CURRENT );
+ $result['thumbwidth'] = $mto->getWidth();
+ $result['thumbheight'] = $mto->getHeight();
}
}
return $result;
}
+ protected function makeTransformOptions( $file, $hp ) {
+ // Validate the input parameters like Parser::makeImage()
+ $handler = $file->getHandler();
+ if ( !$handler ) {
+ return array(); // will get iconThumb()
+ }
+ foreach ( $hp as $name => $value ) {
+ if ( !$handler->validateParam( $name, $value ) ) {
+ unset( $hp[$name] );
+ }
+ }
+
+ // This part is similar to Linker::makeImageLink(). If there is
no width,
+ // set one based on the source file size.
+ $page = isset( $hp['page'] ) ? $hp['page'] : false;
+ if ( !isset( $hp['width'] ) ) {
+ if ( isset( $hp['height'] ) && $file->isVectorized() ) {
+ // If it's a vector image, and user only
specifies height
+ // we don't want it to be limited by its
"normal" width.
+ global $wgSVGMaxSize;
+ $hp['width'] = $wgSVGMaxSize;
+ } else {
+ $hp['width'] = $file->getWidth( $page );
+ }
+
+ // We don't need to fill in a default thumbnail width
here, since
+ // that is done by Parsoid. Parsoid always sets the
width parameter
+ // for thumbnails.
+ }
+
+ return $hp;
+ }
+
public function isInternal() {
return true;
}
--
To view, visit https://gerrit.wikimedia.org/r/238356
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I56d28e9ae85b03ac59367fb2613da9f6b3987b4a
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/ParsoidBatchAPI
Gerrit-Branch: wmf/1.26wmf22
Gerrit-Owner: Tim Starling <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits