1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-30 01:10:58 +01:00

Add explicit width/height controls for embedded images in Remarkup

Summary: User request. See screenshot.

Test Plan: doge

Reviewers: btrahan, bigo

Reviewed By: btrahan

CC: aran

Differential Revision: https://secure.phabricator.com/D7610
This commit is contained in:
epriestley 2013-11-19 17:33:55 -08:00
parent ccfce7c4ee
commit ab64ad1257
2 changed files with 46 additions and 15 deletions

View file

@ -50,9 +50,11 @@ final class PhabricatorRemarkupRuleEmbedFile
private function getFileOptions($option_string) { private function getFileOptions($option_string) {
$options = array( $options = array(
'size' => 'thumb', 'size' => null,
'layout' => 'left', 'layout' => 'left',
'float' => false, 'float' => false,
'width' => null,
'height' => null,
); );
if ($option_string) { if ($option_string) {
@ -73,23 +75,40 @@ final class PhabricatorRemarkupRuleEmbedFile
$attrs = array(); $attrs = array();
$image_class = null; $image_class = null;
switch ((string)$options['size']) {
case 'full': $use_size = true;
if (!$options['size']) {
$width = $this->parseDimension($options['width']);
$height = $this->parseDimension($options['height']);
if ($width || $height) {
$use_size = false;
$attrs += array( $attrs += array(
'src' => $file->getBestURI(), 'src' => $file->getBestURI(),
'width' => $file->getImageWidth(), 'width' => $width,
'height' => $file->getImageHeight(), 'height' => $height,
); );
break; }
case 'thumb': }
default:
$attrs['src'] = $file->getPreview220URI(); if ($use_size) {
$dimensions = switch ((string)$options['size']) {
PhabricatorImageTransformer::getPreviewDimensions($file, 220); case 'full':
$attrs['width'] = $dimensions['sdx']; $attrs += array(
$attrs['height'] = $dimensions['sdy']; 'src' => $file->getBestURI(),
$image_class = 'phabricator-remarkup-embed-image'; 'width' => $file->getImageWidth(),
break; 'height' => $file->getImageHeight(),
);
break;
case 'thumb':
default:
$attrs['src'] = $file->getPreview220URI();
$dimensions =
PhabricatorImageTransformer::getPreviewDimensions($file, 220);
$attrs['width'] = $dimensions['sdx'];
$attrs['height'] = $dimensions['sdy'];
$image_class = 'phabricator-remarkup-embed-image';
break;
}
} }
$img = phutil_tag('img', $attrs); $img = phutil_tag('img', $attrs);
@ -186,4 +205,14 @@ final class PhabricatorRemarkupRuleEmbedFile
->setFileViewable($options['viewable']); ->setFileViewable($options['viewable']);
} }
private function parseDimension($string) {
$string = trim($string);
if (preg_match('/^(?:\d*\\.)?\d+%?$/', $string)) {
return $string;
}
return null;
}
} }

View file

@ -345,6 +345,8 @@ Valid options are:
- **size** thumb (default), full - **size** thumb (default), full
- **name** with `layout=link` or for non-images, use this name for the link - **name** with `layout=link` or for non-images, use this name for the link
text text
- **width** Scale image to a specific width.
- **height** Scale image to a specific height.
== Embedding Countdowns == Embedding Countdowns