From b0474c8a74baf0d31ef867e3ba93936f143ffa03 Mon Sep 17 00:00:00 2001 From: Sebastian Thulin Date: Wed, 25 Sep 2024 16:16:02 +0200 Subject: [PATCH] fix: consolidate copy and paste code to parent class. --- source/php/Module/Card/Card.php | 43 ++------------ source/php/Module/Featured/Featured.php | 44 ++------------ source/php/Module/Full/Full.php | 48 +++------------- source/php/Module/Split/Split.php | 43 ++------------ source/php/Section.php | 76 +++++++++++++++++++++++++ 5 files changed, 102 insertions(+), 152 deletions(-) create mode 100644 source/php/Section.php diff --git a/source/php/Module/Card/Card.php b/source/php/Module/Card/Card.php index 9e297db..e1e8c92 100644 --- a/source/php/Module/Card/Card.php +++ b/source/php/Module/Card/Card.php @@ -2,11 +2,8 @@ namespace ModularitySections\Module\Card; -use Modularity\Integrations\Component\ImageResolver; -use Modularity\Integrations\Component\ImageFocusResolver; -use ComponentLibrary\Integrations\Image\Image as ImageComponentContract; - -class Card extends \Modularity\Module +use ModularitySections\Section; +class Card extends Section { public $slug = 'section-card'; public $supports = array(); @@ -25,44 +22,16 @@ public function data(): array { $data = $this->getFields(); - $data['fallbackId'] = $this->slug . '-' . uniqid(); - - //Get image id - $imageId = $this->getImageId($data); + //Add fallback id + $data = $this->addFallbackId($this->slug, $data); - //Get image - if($imageId) { - $data['image'] = ImageComponentContract::factory( - $imageId, - [1920, false], - new ImageResolver(), - new ImageFocusResolver( - isset($data['image']) && is_array($data['image']) ? $data['image']: null - ) - ); - } else { - $data['image'] = false; - } + //Get image contract + $data = $this->getImageContract($data); //Send to view return $data; } - /** - * Get image id from data array - * - * @param array $data - * - * @return int - */ - private function getImageId(array $data): ?int { - if($data['image'] && is_array($data['image'])) { - return $data['image']['id']; - } elseif($data['image'] && is_numeric($data['image'])) { - return $data['image']; - } - return null; - } public function template(): string { diff --git a/source/php/Module/Featured/Featured.php b/source/php/Module/Featured/Featured.php index 035db69..6f4ea4d 100644 --- a/source/php/Module/Featured/Featured.php +++ b/source/php/Module/Featured/Featured.php @@ -2,10 +2,8 @@ namespace ModularitySections\Module\Featured; -use Modularity\Integrations\Component\ImageResolver; -use Modularity\Integrations\Component\ImageFocusResolver; -use ComponentLibrary\Integrations\Image\Image as ImageComponentContract; -class Featured extends \Modularity\Module +use ModularitySections\Section; +class Featured extends Section { public $slug = 'section-featured'; public $supports = array(); @@ -19,50 +17,20 @@ public function init() $this->namePlural = __("Section featured", 'modularity-sections'); $this->description = __("Outputs a module.", 'modularity-sections'); } - public function data(): array { $data = $this->getFields(); - $data['fallbackId'] = $this->slug . '-' . uniqid(); - - //Get image id - $imageId = $this->getImageId($data); + //Add fallback id + $data = $this->addFallbackId($this->slug, $data); - //Get image - if($imageId) { - $data['image'] = ImageComponentContract::factory( - $imageId, - [1920, false], - new ImageResolver(), - new ImageFocusResolver( - isset($data['image']) && is_array($data['image']) ? $data['image']: null - ) - ); - } else { - $data['image'] = false; - } + //Get image contract + $data = $this->getImageContract($data); //Send to view return $data; } - /** - * Get image id from data array - * - * @param array $data - * - * @return int - */ - private function getImageId(array $data): ?int { - if($data['image'] && is_array($data['image'])) { - return $data['image']['id']; - } elseif($data['image'] && is_numeric($data['image'])) { - return $data['image']; - } - return null; - } - public function template(): string { return "featured.blade.php"; diff --git a/source/php/Module/Full/Full.php b/source/php/Module/Full/Full.php index 85511b9..6d03c7d 100644 --- a/source/php/Module/Full/Full.php +++ b/source/php/Module/Full/Full.php @@ -2,11 +2,8 @@ namespace ModularitySections\Module\Full; -use Modularity\Integrations\Component\ImageResolver; -use Modularity\Integrations\Component\ImageFocusResolver; -use ComponentLibrary\Integrations\Image\Image as ImageComponentContract; - -class Full extends \Modularity\Module +use ModularitySections\Section; +class Full extends Section { public $slug = 'section-full'; public $supports = array(); @@ -21,49 +18,20 @@ public function init() $this->description = __("Outputs a section.", 'modularity-sections'); } - public function data() : array + public function data(): array { $data = $this->getFields(); + + //Add fallback id + $data = $this->addFallbackId($this->slug, $data); - $data['fallbackId'] = $this->slug . '-' . uniqid(); - - //Get image id - $imageId = $this->getImageId($data); - - //Get image - if($imageId) { - $data['image'] = ImageComponentContract::factory( - $imageId, - [1920, false], - new ImageResolver(), - new ImageFocusResolver( - isset($data['image']) && is_array($data['image']) ? $data['image']: null - ) - ); - } else { - $data['image'] = false; - } + //Get image contract + $data = $this->getImageContract($data); //Send to view return $data; } - /** - * Get image id from data array - * - * @param array $data - * - * @return int - */ - private function getImageId(array $data): ?int { - if($data['image'] && is_array($data['image'])) { - return $data['image']['id']; - } elseif($data['image'] && is_numeric($data['image'])) { - return $data['image']; - } - return null; - } - /** * Set template * diff --git a/source/php/Module/Split/Split.php b/source/php/Module/Split/Split.php index 6cca322..c031582 100644 --- a/source/php/Module/Split/Split.php +++ b/source/php/Module/Split/Split.php @@ -2,10 +2,8 @@ namespace ModularitySections\Module\Split; -use Modularity\Integrations\Component\ImageResolver; -use Modularity\Integrations\Component\ImageFocusResolver; -use ComponentLibrary\Integrations\Image\Image as ImageComponentContract; -class Split extends \Modularity\Module +use ModularitySections\Section; +class Split extends Section { public $slug = 'section-split'; public $supports = array(); @@ -24,45 +22,16 @@ public function data(): array { $data = $this->getFields(); - $data['fallbackId'] = $this->slug . '-' . uniqid(); + //Add fallback id + $data = $this->addFallbackId($this->slug, $data); - //Get image id - $imageId = $this->getImageId($data); - - //Get image - if($imageId) { - $data['image'] = ImageComponentContract::factory( - $imageId, - [1920, false], - new ImageResolver(), - new ImageFocusResolver( - isset($data['image']) && is_array($data['image']) ? $data['image']: null - ) - ); - } else { - $data['image'] = false; - } + //Get image contract + $data = $this->getImageContract($data); //Send to view return $data; } - /** - * Get image id from data array - * - * @param array $data - * - * @return int - */ - private function getImageId(array $data): ?int { - if($data['image'] && is_array($data['image'])) { - return $data['image']['id']; - } elseif($data['image'] && is_numeric($data['image'])) { - return $data['image']; - } - return null; - } - public function template() : string { return "split.blade.php"; diff --git a/source/php/Section.php b/source/php/Section.php new file mode 100644 index 0000000..af4d795 --- /dev/null +++ b/source/php/Section.php @@ -0,0 +1,76 @@ +getImageId($data); + + //Get image + if($imageId) { + $data['image'] = ImageComponentContract::factory( + $imageId, + [1920, false], + new ImageResolver(), + new ImageFocusResolver( + isset($data['image']) && is_array($data['image']) ? $data['image']: null + ) + ); + } else { + $data['image'] = false; + } + + return $data; + } + + /** + * Get image id from data array + * + * @param array $data + * + * @return int + */ + private function getImageId(array $data): ?int { + if($data['image'] && is_array($data['image'])) { + return $data['image']['id']; + } elseif($data['image'] && is_numeric($data['image'])) { + return $data['image']; + } + return null; + } + + /** + * Available "magic" methods for modules: + * init() What to do on initialization + * data() Use to send data to view (return array) + * style() Enqueue style only when module is used on page + * script Enqueue script only when module is used on page + * adminEnqueue() Enqueue scripts for the module edit/add page in admin + * template() Return the view template (blade) the module should use when displayed + */ +}