Skip to content

Commit

Permalink
fix: consolidate copy and paste code to parent class.
Browse files Browse the repository at this point in the history
  • Loading branch information
Sebastian Thulin committed Sep 25, 2024
1 parent 23dc606 commit b0474c8
Show file tree
Hide file tree
Showing 5 changed files with 102 additions and 152 deletions.
43 changes: 6 additions & 37 deletions source/php/Module/Card/Card.php
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand All @@ -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
{
Expand Down
44 changes: 6 additions & 38 deletions source/php/Module/Featured/Featured.php
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand All @@ -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";
Expand Down
48 changes: 8 additions & 40 deletions source/php/Module/Full/Full.php
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand All @@ -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
*
Expand Down
43 changes: 6 additions & 37 deletions source/php/Module/Split/Split.php
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand All @@ -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";
Expand Down
76 changes: 76 additions & 0 deletions source/php/Section.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
<?php

namespace ModularitySections;

use Modularity\Integrations\Component\ImageResolver;
use Modularity\Integrations\Component\ImageFocusResolver;
use ComponentLibrary\Integrations\Image\Image as ImageComponentContract;

class Section extends \Modularity\Module
{

/**
* Creates a unique id for the module
*
* @param string $slug
* @param array $data
*
* @return array
*/
public function addFallbackId(string $slug, array $data) {
$data['fallbackId'] = $slug . '-' . uniqid();
return $data;
}

/**
* Replaces image array with image contract
*
* @param array $data
*/
public function getImageContract(array $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;
}

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
*/
}

0 comments on commit b0474c8

Please sign in to comment.