From 63431168bc775e6d90b4c95ed9fc4dbc0432f64c Mon Sep 17 00:00:00 2001 From: Martin Ficzel Date: Fri, 13 Jul 2018 17:54:33 +0200 Subject: [PATCH] TASK: Introduce ScalableImageSourceHelperInterface to make the implementation of scale optional --- .../EelHelpers/AbstractImageSourceHelper.php | 31 ++++++++++++------- Classes/EelHelpers/AssetImageSourceHelper.php | 3 +- Classes/EelHelpers/DummyImageSourceHelper.php | 2 +- .../EelHelpers/ImageSourceHelperInterface.php | 2 -- .../EelHelpers/ResourceImageSourceHelper.php | 5 --- .../ScalableImageSourceHelperInterface.php | 7 +++++ Classes/EelHelpers/UriImageSourceHelper.php | 5 --- README.md | 3 ++ 8 files changed, 33 insertions(+), 25 deletions(-) create mode 100644 Classes/EelHelpers/ScalableImageSourceHelperInterface.php diff --git a/Classes/EelHelpers/AbstractImageSourceHelper.php b/Classes/EelHelpers/AbstractImageSourceHelper.php index ae8a3d9..fd78b4f 100644 --- a/Classes/EelHelpers/AbstractImageSourceHelper.php +++ b/Classes/EelHelpers/AbstractImageSourceHelper.php @@ -72,13 +72,18 @@ public function applyPreset(string $name) : ImageSourceHelperInterface */ public function widthSrcset(array $widthSet): string { - $srcsetArray = []; - foreach ($widthSet as $targetWidth) { - $scaleFactor = $targetWidth / $this->getWidth(); - $scaled = $this->scale($scaleFactor); - $srcsetArray[] = $scaled->src() . ' ' . $targetWidth . 'w'; + if ($this instanceof ScalableImageSourceHelperInterface) { + $srcsetArray = []; + foreach ($widthSet as $targetWidth) { + $scaleFactor = $targetWidth / $this->getWidth(); + $scaled = $this->scale($scaleFactor); + $srcsetArray[] = $scaled->src() . ' ' . $targetWidth . 'w'; + } + return implode(', ', $srcsetArray); + } else { + return $this->src(); } - return implode(', ', $srcsetArray); + } /** @@ -89,12 +94,16 @@ public function widthSrcset(array $widthSet): string */ public function resolutionSrcset(array $resolutionSet): string { - $srcsetArray = []; - foreach ($resolutionSet as $scaleFactor) { - $scaled = $this->scale($scaleFactor); - $srcsetArray[] = $scaled->src() . ' ' . $scaleFactor . 'x'; + if ($this instanceof ScalableImageSourceHelperInterface) { + $srcsetArray = []; + foreach ($resolutionSet as $scaleFactor) { + $scaled = $this->scale($scaleFactor); + $srcsetArray[] = $scaled->src() . ' ' . $scaleFactor . 'x'; + } + return implode(', ', $srcsetArray); + } else { + return $this->src(); } - return implode(', ', $srcsetArray); } /** diff --git a/Classes/EelHelpers/AssetImageSourceHelper.php b/Classes/EelHelpers/AssetImageSourceHelper.php index 6d618af..58adf64 100644 --- a/Classes/EelHelpers/AssetImageSourceHelper.php +++ b/Classes/EelHelpers/AssetImageSourceHelper.php @@ -8,7 +8,7 @@ use Neos\Media\Domain\Model\ThumbnailConfiguration; use Neos\Flow\Mvc\ActionRequest; -class AssetImageSourceHelper extends AbstractImageSourceHelper +class AssetImageSourceHelper extends AbstractImageSourceHelper implements ScalableImageSourceHelperInterface { /** @@ -47,6 +47,7 @@ public function __construct(ImageInterface $asset) $this->asset = $asset; } + /** * @param bool $async */ diff --git a/Classes/EelHelpers/DummyImageSourceHelper.php b/Classes/EelHelpers/DummyImageSourceHelper.php index 8cb74e0..dbbf1cb 100644 --- a/Classes/EelHelpers/DummyImageSourceHelper.php +++ b/Classes/EelHelpers/DummyImageSourceHelper.php @@ -3,7 +3,7 @@ use Neos\Flow\Annotations as Flow; -class DummyImageSourceHelper extends AbstractImageSourceHelper +class DummyImageSourceHelper extends AbstractImageSourceHelper implements ScalableImageSourceHelperInterface { protected $baseWidth = 600; diff --git a/Classes/EelHelpers/ImageSourceHelperInterface.php b/Classes/EelHelpers/ImageSourceHelperInterface.php index acd6169..b2648af 100644 --- a/Classes/EelHelpers/ImageSourceHelperInterface.php +++ b/Classes/EelHelpers/ImageSourceHelperInterface.php @@ -11,8 +11,6 @@ public function setHeight(int $height = null) : ImageSourceHelperInterface; public function applyPreset(string $name) : ImageSourceHelperInterface; - public function scale(float $factor): ImageSourceHelperInterface; - public function src() : string; public function widthSrcset(array $widthSet) : string; diff --git a/Classes/EelHelpers/ResourceImageSourceHelper.php b/Classes/EelHelpers/ResourceImageSourceHelper.php index f7aca19..6221bc2 100644 --- a/Classes/EelHelpers/ResourceImageSourceHelper.php +++ b/Classes/EelHelpers/ResourceImageSourceHelper.php @@ -27,11 +27,6 @@ public function __construct(string $package, string $path) $this->path = $path; } - public function scale(float $factor): ImageSourceHelperInterface - { - return $this; - } - public function src(): string { return $this->resourceManager->getPublicPackageResourceUri($this->package, $this->path); diff --git a/Classes/EelHelpers/ScalableImageSourceHelperInterface.php b/Classes/EelHelpers/ScalableImageSourceHelperInterface.php new file mode 100644 index 0000000..d50519e --- /dev/null +++ b/Classes/EelHelpers/ScalableImageSourceHelperInterface.php @@ -0,0 +1,7 @@ +uri = $uri; } - public function scale(float $factor): ImageSourceHelperInterface - { - return $this; - } - public function src(): string { return $this->uri; diff --git a/README.md b/README.md index f8209a9..dedf23f 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,9 @@ We want to help implementing responsive-images in the context of atomic-fusion and enable previewing fusion-components and their full responsive behavior in the Sitegeist.Monocle living styleguide. +Sitegeist.Kaleidoscope comes with Fusion-ImageSources for Assets, DummyImages, Resources +and static Uris. + ### Authors & Sponsors * Martin Ficzel - ficzel@sitegeist.de