From 39b120473d070aa93d5e9a288bf360f201a2235a Mon Sep 17 00:00:00 2001 From: Sebastian Thulin Date: Thu, 19 Sep 2024 11:14:19 +0200 Subject: [PATCH 1/9] feat: add image focus resolver implementation --- .../Component/ImageFocusResolver.php | 20 +++++++++++++++++++ .../{Image.php => ImageResolver.php} | 2 +- source/php/Module/Image/Image.php | 6 ++++-- 3 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 source/php/Integrations/Component/ImageFocusResolver.php rename source/php/Integrations/Component/{Image.php => ImageResolver.php} (87%) diff --git a/source/php/Integrations/Component/ImageFocusResolver.php b/source/php/Integrations/Component/ImageFocusResolver.php new file mode 100644 index 00000000..4e6086fb --- /dev/null +++ b/source/php/Integrations/Component/ImageFocusResolver.php @@ -0,0 +1,20 @@ +key, $id); + if($imageField && isset($imageField['left'], $imageField['top'])) { + return [ + 'left' => $imageField['left'] ?? '50', + 'top' => $imageField['top'] ?? '50' + ]; + } + } +}; \ No newline at end of file diff --git a/source/php/Integrations/Component/Image.php b/source/php/Integrations/Component/ImageResolver.php similarity index 87% rename from source/php/Integrations/Component/Image.php rename to source/php/Integrations/Component/ImageResolver.php index 1f52e339..58362f46 100644 --- a/source/php/Integrations/Component/Image.php +++ b/source/php/Integrations/Component/ImageResolver.php @@ -4,7 +4,7 @@ use \ComponentLibrary\Integrations\Image\ImageResolverInterface; -class Image implements ImageResolverInterface { +class ImageResoler implements ImageResolverInterface { public function getImageUrl(int $id, array $size): ?string { $image = wp_get_attachment_image_src($id, $size); if($image !== false && isset($image[0]) && filter_var($image[0], FILTER_VALIDATE_URL)) { diff --git a/source/php/Module/Image/Image.php b/source/php/Module/Image/Image.php index 35e125ac..1bf66d72 100644 --- a/source/php/Module/Image/Image.php +++ b/source/php/Module/Image/Image.php @@ -3,7 +3,8 @@ namespace Modularity\Module\Image; use Municipio\Helper\Image as ImageHelper; -use Modularity\Integrations\Component\Image as ImageResolverInterface; +use Modularity\Integrations\Component\ImageResolver; +use Modularity\Integrations\Component\ImageFocusResolver; use ComponentLibrary\Integrations\Image\Image as ImageComponentContract; class Image extends \Modularity\Module @@ -59,7 +60,8 @@ public function data() : array $resolvedImage = ImageComponentContract::factory( $imageId, $imageSize, - new ImageResolverInterface() + new ImageResolver(), + new ImageFocusResolver() ); $data['image']['src'] = $resolvedImage; From 60a3cc6187eae3acd6e94d8b34fd139a86ee3f33 Mon Sep 17 00:00:00 2001 From: Sebastian Thulin Date: Thu, 19 Sep 2024 13:28:05 +0200 Subject: [PATCH 2/9] fix: typos --- source/php/Integrations/Component/ImageFocusResolver.php | 2 +- source/php/Integrations/Component/ImageResolver.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/php/Integrations/Component/ImageFocusResolver.php b/source/php/Integrations/Component/ImageFocusResolver.php index 4e6086fb..b1fb6ebf 100644 --- a/source/php/Integrations/Component/ImageFocusResolver.php +++ b/source/php/Integrations/Component/ImageFocusResolver.php @@ -8,7 +8,7 @@ class ImageFocusResolver implements ImageFocusResolverInterface { public function __construct(private string $key){} - public function getImageFocus(int $id): ?array { + public function getFocusPoint(int $id): array { $imageField = get_field($this->key, $id); if($imageField && isset($imageField['left'], $imageField['top'])) { return [ diff --git a/source/php/Integrations/Component/ImageResolver.php b/source/php/Integrations/Component/ImageResolver.php index 58362f46..6423242f 100644 --- a/source/php/Integrations/Component/ImageResolver.php +++ b/source/php/Integrations/Component/ImageResolver.php @@ -4,7 +4,7 @@ use \ComponentLibrary\Integrations\Image\ImageResolverInterface; -class ImageResoler implements ImageResolverInterface { +class ImageResolver implements ImageResolverInterface { public function getImageUrl(int $id, array $size): ?string { $image = wp_get_attachment_image_src($id, $size); if($image !== false && isset($image[0]) && filter_var($image[0], FILTER_VALIDATE_URL)) { From 14ba572cb6e95c8ae9418a4147edb895b3839906 Mon Sep 17 00:00:00 2001 From: Sebastian Thulin Date: Thu, 19 Sep 2024 13:49:42 +0200 Subject: [PATCH 3/9] fix: typos in image focus resolver. --- source/php/Integrations/Component/ImageFocusResolver.php | 5 +++-- source/php/Module/Image/Image.php | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/source/php/Integrations/Component/ImageFocusResolver.php b/source/php/Integrations/Component/ImageFocusResolver.php index b1fb6ebf..7f92817d 100644 --- a/source/php/Integrations/Component/ImageFocusResolver.php +++ b/source/php/Integrations/Component/ImageFocusResolver.php @@ -16,5 +16,6 @@ public function getFocusPoint(int $id): array { 'top' => $imageField['top'] ?? '50' ]; } - } -}; \ No newline at end of file + return ['left' => '50', 'top' => '50']; + } +} diff --git a/source/php/Module/Image/Image.php b/source/php/Module/Image/Image.php index 1bf66d72..921f9f05 100644 --- a/source/php/Module/Image/Image.php +++ b/source/php/Module/Image/Image.php @@ -61,7 +61,7 @@ public function data() : array $imageId, $imageSize, new ImageResolver(), - new ImageFocusResolver() + new ImageFocusResolver('test') ); $data['image']['src'] = $resolvedImage; From 236da3ce85107a4e3af689448ff8ba53378fa953 Mon Sep 17 00:00:00 2001 From: Sebastian Thulin Date: Thu, 19 Sep 2024 15:01:48 +0200 Subject: [PATCH 4/9] fix: resolve successfully for image focus in header. --- .../Component/ImageFocusResolver.php | 14 +++++++------- source/php/Module/Hero/Hero.php | 17 +++++++++++++++++ 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/source/php/Integrations/Component/ImageFocusResolver.php b/source/php/Integrations/Component/ImageFocusResolver.php index 7f92817d..7d68d537 100644 --- a/source/php/Integrations/Component/ImageFocusResolver.php +++ b/source/php/Integrations/Component/ImageFocusResolver.php @@ -6,16 +6,16 @@ class ImageFocusResolver implements ImageFocusResolverInterface { - public function __construct(private string $key){} + public function __construct(private $data){} - public function getFocusPoint(int $id): array { - $imageField = get_field($this->key, $id); - if($imageField && isset($imageField['left'], $imageField['top'])) { + public function getFocusPoint(): array { + $data = $this->data; + if($data && isset($data['left'], $data['top'])) { return [ - 'left' => $imageField['left'] ?? '50', - 'top' => $imageField['top'] ?? '50' + 'left' => $data['left'] ?? 50, + 'top' => $data['top'] ?? 50 ]; } - return ['left' => '50', 'top' => '50']; + return ['left' => 50, 'top' => 50]; } } diff --git a/source/php/Module/Hero/Hero.php b/source/php/Module/Hero/Hero.php index 31ff531f..9a0ed376 100644 --- a/source/php/Module/Hero/Hero.php +++ b/source/php/Module/Hero/Hero.php @@ -2,6 +2,10 @@ namespace Modularity\Module\Hero; +use Modularity\Integrations\Component\ImageResolver; +use Modularity\Integrations\Component\ImageFocusResolver; +use ComponentLibrary\Integrations\Image\Image as ImageComponentContract; + class Hero extends \Modularity\Module { public $slug = 'hero'; @@ -37,6 +41,19 @@ public function data() : array 'left' => $fields['mod_hero_background_image']['left'] ?? '50' ] ]; + + $imageId = $fields['mod_hero_background_image']['id']; + $imageSize = [1728, false]; + + $resolvedImage = ImageComponentContract::factory( + $imageId, + $imageSize, + new ImageResolver(), + new ImageFocusResolver($fields['mod_hero_background_image']) + ); + + + var_dump($resolvedImage->getFocusPoint()); } //Grab video From 31b6b806af24d45245f99d67380c331aef14a4dd Mon Sep 17 00:00:00 2001 From: Sebastian Thulin Date: Thu, 19 Sep 2024 15:12:13 +0200 Subject: [PATCH 5/9] fix: output image contract from controller. --- source/php/Module/Hero/Hero.php | 27 ++++++--------------------- 1 file changed, 6 insertions(+), 21 deletions(-) diff --git a/source/php/Module/Hero/Hero.php b/source/php/Module/Hero/Hero.php index 9a0ed376..06a3117f 100644 --- a/source/php/Module/Hero/Hero.php +++ b/source/php/Module/Hero/Hero.php @@ -32,28 +32,13 @@ public function data() : array //Grab image if ('image' == $type) { $data = [ - 'image' => wp_get_attachment_image_src( - $fields['mod_hero_background_image']['id'], - [1728, false] //90% of 1920 (max screen width) - )[0] ?? false, - 'imageFocus' => [ - 'top' => $fields['mod_hero_background_image']['top'] ?? '50', - 'left' => $fields['mod_hero_background_image']['left'] ?? '50' - ] + 'image' => ImageComponentContract::factory( + (int) $fields['mod_hero_background_image']['id'], + [1920, false], + new ImageResolver(), + new ImageFocusResolver($fields['mod_hero_background_image']) + ) ]; - - $imageId = $fields['mod_hero_background_image']['id']; - $imageSize = [1728, false]; - - $resolvedImage = ImageComponentContract::factory( - $imageId, - $imageSize, - new ImageResolver(), - new ImageFocusResolver($fields['mod_hero_background_image']) - ); - - - var_dump($resolvedImage->getFocusPoint()); } //Grab video From f1fbfb9b49e92b6005c8d12722226d37ee2a8fcf Mon Sep 17 00:00:00 2001 From: Sebastian Thulin Date: Fri, 20 Sep 2024 08:14:35 +0200 Subject: [PATCH 6/9] fix: remove image focus from old method in hero --- source/php/Module/Hero/views/image.blade.php | 1 - 1 file changed, 1 deletion(-) diff --git a/source/php/Module/Hero/views/image.blade.php b/source/php/Module/Hero/views/image.blade.php index 8c89dee5..df223216 100644 --- a/source/php/Module/Hero/views/image.blade.php +++ b/source/php/Module/Hero/views/image.blade.php @@ -1,7 +1,6 @@ @hero([ "classList" => $stretch ? [$class] : [], "image" => $image, - "imageFocus" => $imageFocus, "size" => $size, "title" => !$hideTitle && !empty($postTitle) ? $postTitle : false, "byline" => $byline, From b7322d7c804c824fa307dd5d2648d0d7c0dfdc69 Mon Sep 17 00:00:00 2001 From: Sebastian Thulin Date: Fri, 20 Sep 2024 08:14:47 +0200 Subject: [PATCH 7/9] feat: add a resolver for image alt text --- .../Component/ImageFocusResolver.php | 10 +++++++++ .../Integrations/Component/ImageResolver.php | 22 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/source/php/Integrations/Component/ImageFocusResolver.php b/source/php/Integrations/Component/ImageFocusResolver.php index 7d68d537..42cd9955 100644 --- a/source/php/Integrations/Component/ImageFocusResolver.php +++ b/source/php/Integrations/Component/ImageFocusResolver.php @@ -6,8 +6,18 @@ class ImageFocusResolver implements ImageFocusResolverInterface { + /** + * Constructor + * + * @param array $data The data array to resolve from + */ public function __construct(private $data){} + /** + * Get focus point + * + * @return array + */ public function getFocusPoint(): array { $data = $this->data; if($data && isset($data['left'], $data['top'])) { diff --git a/source/php/Integrations/Component/ImageResolver.php b/source/php/Integrations/Component/ImageResolver.php index 6423242f..32bb7a4f 100644 --- a/source/php/Integrations/Component/ImageResolver.php +++ b/source/php/Integrations/Component/ImageResolver.php @@ -5,6 +5,14 @@ use \ComponentLibrary\Integrations\Image\ImageResolverInterface; class ImageResolver implements ImageResolverInterface { + + /** + * Get image url + * + * @param int $id + * @param array $size + * @return string|null + */ public function getImageUrl(int $id, array $size): ?string { $image = wp_get_attachment_image_src($id, $size); if($image !== false && isset($image[0]) && filter_var($image[0], FILTER_VALIDATE_URL)) { @@ -12,4 +20,18 @@ public function getImageUrl(int $id, array $size): ?string { } return null; } + + /** + * Get image alt + * + * @param int $id + * @return string|null + */ + public function getImageAlt(int $id): ?string { + $alt = get_post_meta($id, '_wp_attachment_image_alt', true); + if($alt) { + return $alt; + } + return null; + } }; \ No newline at end of file From aa1b84db369e0b72a47ff1c9eef76b955a7dab3b Mon Sep 17 00:00:00 2001 From: Sebastian Thulin Date: Fri, 20 Sep 2024 08:17:31 +0200 Subject: [PATCH 8/9] fix: rename alt text func. --- source/php/Integrations/Component/ImageResolver.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/php/Integrations/Component/ImageResolver.php b/source/php/Integrations/Component/ImageResolver.php index 32bb7a4f..0853624f 100644 --- a/source/php/Integrations/Component/ImageResolver.php +++ b/source/php/Integrations/Component/ImageResolver.php @@ -27,7 +27,7 @@ public function getImageUrl(int $id, array $size): ?string { * @param int $id * @return string|null */ - public function getImageAlt(int $id): ?string { + public function getImageAltText(int $id): ?string { $alt = get_post_meta($id, '_wp_attachment_image_alt', true); if($alt) { return $alt; From 7b31ea67ba527615527264d8ceed3993afc9b67d Mon Sep 17 00:00:00 2001 From: Sebastian Thulin Date: Fri, 20 Sep 2024 08:34:40 +0200 Subject: [PATCH 9/9] fix: space --- source/php/Integrations/Component/ImageResolver.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/php/Integrations/Component/ImageResolver.php b/source/php/Integrations/Component/ImageResolver.php index 0853624f..06f60f7e 100644 --- a/source/php/Integrations/Component/ImageResolver.php +++ b/source/php/Integrations/Component/ImageResolver.php @@ -34,4 +34,4 @@ public function getImageAltText(int $id): ?string { } return null; } -}; \ No newline at end of file +} \ No newline at end of file