File: D:/HostingSpaces/SBogers10/momsecurity.komma.nl/app/Components/Types/Methods.php
<?php
namespace App\Components\Types;
use App\Components\ComponentTypes;
use Komma\KMS\Components\Component\ViewComponent;
use Komma\KMS\Components\ComponentType\Types\AbstractComponentType;
use Komma\KMS\Core\Attributes\Documents;
use Komma\KMS\Core\Attributes\Models\ImageProperty;
use Komma\KMS\Core\Attributes\TextArea;
use Komma\KMS\Core\Attributes\TextField;
class Methods extends AbstractComponentType
{
protected int $id = ComponentTypes::METHODS;
protected string $name = 'methods';
// Number of tabs that can be filled
const POSSIBLE_AMOUNT = 3;
public function defineAttributesAndTabs()
{
$this->addItems([
(new TextField())
->setReference('title')
->setLabelText(__('KMS::attributes/components.title'))
]);
// Make the tabs
for($i = 0; $i < self::POSSIBLE_AMOUNT; $i++) {
$this->addItems([
(new Documents())
->setLabelText('Afbeelding')
->onlyAllowImages()
->setSmallDragAndDropArea()
->setMaxDocuments(1)
->setSubFolder('component_documents')
->setImageProperties([
(new ImageProperty())->setName('original')->setCropMethod(ImageProperty::Resize)->setWidth(1000),
(new ImageProperty())->setName('medium')->setCropMethod(ImageProperty::Resize)->setWidth(800),
])
->setReference('image_' . ($i + 1))
->setDataAttribute('tab', ($i + 1)),
(new TextField())
->setReference('label_' . ($i + 1))
->setLabelText(__('KMS::attributes/components.title'))
->setDataAttribute('tab', ($i + 1)),
(new TextArea())
->setReference('text_' . ($i + 1))
->enableTinymceEditor()
->setLabelText(__('KMS::attributes/components.text'))
->setDataAttribute('tab', ($i + 1))
]);
}
}
public function prepare(ViewComponent $viewComponent)
{
$tabs = collect();
for($i = 1; $i <= self::POSSIBLE_AMOUNT; $i++) {
$label = $viewComponent->{'label_'.$i};
$text = $viewComponent->{'text_'.$i};
$image = $viewComponent->{'image_'.$i};
if(!empty($label) || !empty($text)) {
$tab = (object)[
'id' => $i,
'label' => $label,
'text' => $text,
'image' => $image,
];
$tabs->push($tab);
}
unset($viewComponent->{'label_'.$i});
unset($viewComponent->{'text_'.$i});
unset($viewComponent->{'image_'.$i});
}
$viewComponent->tabs = $tabs;
}
}