Page MenuHomePhabricator

D7610.diff

diff --git a/src/applications/files/remarkup/PhabricatorRemarkupRuleEmbedFile.php b/src/applications/files/remarkup/PhabricatorRemarkupRuleEmbedFile.php
--- a/src/applications/files/remarkup/PhabricatorRemarkupRuleEmbedFile.php
+++ b/src/applications/files/remarkup/PhabricatorRemarkupRuleEmbedFile.php
@@ -50,9 +50,11 @@
private function getFileOptions($option_string) {
$options = array(
- 'size' => 'thumb',
+ 'size' => null,
'layout' => 'left',
'float' => false,
+ 'width' => null,
+ 'height' => null,
);
if ($option_string) {
@@ -73,23 +75,40 @@
$attrs = array();
$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(
'src' => $file->getBestURI(),
- 'width' => $file->getImageWidth(),
- 'height' => $file->getImageHeight(),
+ 'width' => $width,
+ 'height' => $height,
);
- 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;
+ }
+ }
+
+ if ($use_size) {
+ switch ((string)$options['size']) {
+ case 'full':
+ $attrs += array(
+ 'src' => $file->getBestURI(),
+ 'width' => $file->getImageWidth(),
+ '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);
@@ -186,4 +205,14 @@
->setFileViewable($options['viewable']);
}
+ private function parseDimension($string) {
+ $string = trim($string);
+
+ if (preg_match('/^(?:\d*\\.)?\d+%?$/', $string)) {
+ return $string;
+ }
+
+ return null;
+ }
+
}
diff --git a/src/docs/user/userguide/remarkup.diviner b/src/docs/user/userguide/remarkup.diviner
--- a/src/docs/user/userguide/remarkup.diviner
+++ b/src/docs/user/userguide/remarkup.diviner
@@ -345,6 +345,8 @@
- **size** thumb (default), full
- **name** with `layout=link` or for non-images, use this name for the link
text
+ - **width** Scale image to a specific width.
+ - **height** Scale image to a specific height.
== Embedding Countdowns

File Metadata

Mime Type
text/x-diff
Storage Engine
amazon-s3
Storage Format
Raw Data
Storage Handle
phabricator/yq/hq/52xnue2g3ireytzj
Default Alt Text
D7610.diff (2 KB)

Event Timeline