From a81670cdf4bfc756cb2a1a64010bfd256e4da9d4 Mon Sep 17 00:00:00 2001 From: Kai Eichinger Date: Thu, 16 Nov 2023 13:40:50 +0100 Subject: [PATCH 1/5] Bump dependencies --- CHANGELOG.md | 6 ++++++ composer.json | 16 ++++++++-------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 181392f..1890f32 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +3.6.0 +===== + +* (improvement) Bump dependencies. + + 3.5.1 ===== diff --git a/composer.json b/composer.json index 60f3cd0..7c4a6a4 100644 --- a/composer.json +++ b/composer.json @@ -10,22 +10,22 @@ } ], "require": { - "php": ">= 8.1", + "php": ">= 8.2", "21torr/bundle-helpers": "^2.1.2", "21torr/cli": "^1.0", "psr/log": "^3.0", - "symfony/console": "^6.1", - "symfony/http-client": "^6.1", - "symfony/lock": "^6.2", - "symfony/rate-limiter": "^6.2", - "symfony/string": "^6.2", - "symfony/validator": "^6.1" + "symfony/console": "^6.3", + "symfony/http-client": "^6.3", + "symfony/lock": "^6.3", + "symfony/rate-limiter": "^6.3", + "symfony/string": "^6.3", + "symfony/validator": "^6.3" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", "phpunit/phpunit": "^10.4", "roave/security-advisories": "dev-latest", - "symfony/phpunit-bridge": "^6.1.6" + "symfony/phpunit-bridge": "^6.3" }, "autoload": { "psr-4": { From 2a9e32eda4b803a34756e0c1530c0f66a9d01b02 Mon Sep 17 00:00:00 2001 From: Kai Eichinger Date: Thu, 16 Nov 2023 13:42:07 +0100 Subject: [PATCH 2/5] Add `ComponentAssetsHelper` to easily generate component preview screenshot URLs --- CHANGELOG.md | 1 + composer.json | 2 ++ src/Assets/ComponentAssetsHelper.php | 27 +++++++++++++++++++++++++++ 3 files changed, 30 insertions(+) create mode 100644 src/Assets/ComponentAssetsHelper.php diff --git a/CHANGELOG.md b/CHANGELOG.md index 1890f32..2f6f0eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ===== * (improvement) Bump dependencies. +* (feature) Add `ComponentAssetsHelper` to easily generate component preview screenshot URLs. 3.5.1 diff --git a/composer.json b/composer.json index 7c4a6a4..32eb7b7 100644 --- a/composer.json +++ b/composer.json @@ -14,8 +14,10 @@ "21torr/bundle-helpers": "^2.1.2", "21torr/cli": "^1.0", "psr/log": "^3.0", + "symfony/asset": "^6.3", "symfony/console": "^6.3", "symfony/http-client": "^6.3", + "symfony/http-foundation": "^6.3", "symfony/lock": "^6.3", "symfony/rate-limiter": "^6.3", "symfony/string": "^6.3", diff --git a/src/Assets/ComponentAssetsHelper.php b/src/Assets/ComponentAssetsHelper.php new file mode 100644 index 0000000..111265d --- /dev/null +++ b/src/Assets/ComponentAssetsHelper.php @@ -0,0 +1,27 @@ +format("U"), "%s?version=%s")); + + return $this->urlHelper->getAbsoluteUrl( + $package->getUrl("/component-preview-images/{$componentKey}.png"), + ); + } +} From b1ec7e6a3763e15b2fbe80cadede186c9617cc27 Mon Sep 17 00:00:00 2001 From: Kai Eichinger Date: Thu, 16 Nov 2023 13:43:18 +0100 Subject: [PATCH 3/5] Disable PHP 8.1 The minimum required version has been pushed to PHP 8.2 --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 35bcf43..b6f8164 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ jobs: strategy: matrix: - php: ['8.1', '8.2'] + php: ['8.2'] steps: - name: Checkout Code From 0a466e249a6d55d8faf0519fe363692bc066331c Mon Sep 17 00:00:00 2001 From: Kai Eichinger Date: Thu, 16 Nov 2023 14:28:30 +0100 Subject: [PATCH 4/5] Make asset path configurable via `storyblok.components_preview_image_path` --- src/Assets/ComponentAssetsHelper.php | 10 ++++++++-- .../StoryblokBundleConfiguration.php | 4 ++++ src/TorrStoryblokBundle.php | 4 ++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/Assets/ComponentAssetsHelper.php b/src/Assets/ComponentAssetsHelper.php index 111265d..70a0b25 100644 --- a/src/Assets/ComponentAssetsHelper.php +++ b/src/Assets/ComponentAssetsHelper.php @@ -9,9 +9,15 @@ final readonly class ComponentAssetsHelper { + private readonly string $componentPreviewImagePath; + public function __construct ( private UrlHelper $urlHelper, - ) {} + string $componentsPreviewImagePath, + ) + { + $this->componentPreviewImagePath = \trim($componentsPreviewImagePath, "/"); + } public function generatePreviewScreenshotUrl (AbstractComponent $component) : string { @@ -21,7 +27,7 @@ public function generatePreviewScreenshotUrl (AbstractComponent $component) : st $package = new Package(new StaticVersionStrategy($cacheDate->format("U"), "%s?version=%s")); return $this->urlHelper->getAbsoluteUrl( - $package->getUrl("/component-preview-images/{$componentKey}.png"), + $package->getUrl("/{$this->componentPreviewImagePath}/{$componentKey}.png"), ); } } diff --git a/src/DependencyInjection/StoryblokBundleConfiguration.php b/src/DependencyInjection/StoryblokBundleConfiguration.php index bd7c474..f4d8622 100644 --- a/src/DependencyInjection/StoryblokBundleConfiguration.php +++ b/src/DependencyInjection/StoryblokBundleConfiguration.php @@ -29,6 +29,10 @@ public function getConfigTreeBuilder () : TreeBuilder ->defaultValue(0) ->info("The slug level that includes the locales (0-based).") ->end() + ->scalarNode("components_preview_image_path") + ->defaultValue("assets/storyblok/component-preview") + ->info("The path within Symfony's /public/ directory. This path is being used by the ComponentAssetsHelper to generate URLs to component preview images.") + ->end() ->end(); return $treeBuilder; diff --git a/src/TorrStoryblokBundle.php b/src/TorrStoryblokBundle.php index 35528af..8d3f7e9 100644 --- a/src/TorrStoryblokBundle.php +++ b/src/TorrStoryblokBundle.php @@ -5,6 +5,7 @@ use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Extension\ExtensionInterface; use Symfony\Component\HttpKernel\Bundle\Bundle; +use Torr\Storyblok\Assets\ComponentAssetsHelper; use Torr\Storyblok\Component\AbstractComponent; use Torr\Storyblok\Config\StoryblokConfig; use Torr\Storyblok\DependencyInjection\StoryblokBundleConfiguration; @@ -27,6 +28,9 @@ static function (array $config, ContainerBuilder $container) : void ->setArgument('$managementToken', $config["management_token"]) ->setArgument('$contentToken', $config["content_token"]) ->setArgument('$localeLevel', $config["locale_level"]); + + $container->getDefinition(ComponentAssetsHelper::class) + ->setArgument('$componentsPreviewImagePath', $config["components_preview_image_path"]); }, "storyblok", ); From 145f04d1c03bd5173c5962fb0f0e299ee4803a7d Mon Sep 17 00:00:00 2001 From: Kai Eichinger Date: Thu, 16 Nov 2023 14:40:27 +0100 Subject: [PATCH 5/5] Let callers decide on exact preview image path --- src/Assets/ComponentAssetsHelper.php | 17 +++-------------- .../StoryblokBundleConfiguration.php | 4 ---- src/TorrStoryblokBundle.php | 4 ---- 3 files changed, 3 insertions(+), 22 deletions(-) diff --git a/src/Assets/ComponentAssetsHelper.php b/src/Assets/ComponentAssetsHelper.php index 70a0b25..551fd26 100644 --- a/src/Assets/ComponentAssetsHelper.php +++ b/src/Assets/ComponentAssetsHelper.php @@ -5,29 +5,18 @@ use Symfony\Component\Asset\Package; use Symfony\Component\Asset\VersionStrategy\StaticVersionStrategy; use Symfony\Component\HttpFoundation\UrlHelper; -use Torr\Storyblok\Component\AbstractComponent; final readonly class ComponentAssetsHelper { - private readonly string $componentPreviewImagePath; - public function __construct ( private UrlHelper $urlHelper, - string $componentsPreviewImagePath, - ) - { - $this->componentPreviewImagePath = \trim($componentsPreviewImagePath, "/"); - } + ) {} - public function generatePreviewScreenshotUrl (AbstractComponent $component) : string + public function generatePreviewScreenshotUrl (string $subPath) : string { - $componentKey = $component::getKey(); - $cacheDate = new \DateTimeImmutable(); $package = new Package(new StaticVersionStrategy($cacheDate->format("U"), "%s?version=%s")); - return $this->urlHelper->getAbsoluteUrl( - $package->getUrl("/{$this->componentPreviewImagePath}/{$componentKey}.png"), - ); + return $this->urlHelper->getAbsoluteUrl($package->getUrl($subPath)); } } diff --git a/src/DependencyInjection/StoryblokBundleConfiguration.php b/src/DependencyInjection/StoryblokBundleConfiguration.php index f4d8622..bd7c474 100644 --- a/src/DependencyInjection/StoryblokBundleConfiguration.php +++ b/src/DependencyInjection/StoryblokBundleConfiguration.php @@ -29,10 +29,6 @@ public function getConfigTreeBuilder () : TreeBuilder ->defaultValue(0) ->info("The slug level that includes the locales (0-based).") ->end() - ->scalarNode("components_preview_image_path") - ->defaultValue("assets/storyblok/component-preview") - ->info("The path within Symfony's /public/ directory. This path is being used by the ComponentAssetsHelper to generate URLs to component preview images.") - ->end() ->end(); return $treeBuilder; diff --git a/src/TorrStoryblokBundle.php b/src/TorrStoryblokBundle.php index 8d3f7e9..35528af 100644 --- a/src/TorrStoryblokBundle.php +++ b/src/TorrStoryblokBundle.php @@ -5,7 +5,6 @@ use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Extension\ExtensionInterface; use Symfony\Component\HttpKernel\Bundle\Bundle; -use Torr\Storyblok\Assets\ComponentAssetsHelper; use Torr\Storyblok\Component\AbstractComponent; use Torr\Storyblok\Config\StoryblokConfig; use Torr\Storyblok\DependencyInjection\StoryblokBundleConfiguration; @@ -28,9 +27,6 @@ static function (array $config, ContainerBuilder $container) : void ->setArgument('$managementToken', $config["management_token"]) ->setArgument('$contentToken', $config["content_token"]) ->setArgument('$localeLevel', $config["locale_level"]); - - $container->getDefinition(ComponentAssetsHelper::class) - ->setArgument('$componentsPreviewImagePath', $config["components_preview_image_path"]); }, "storyblok", );