<?php
/**
* project: Pimcore
* User: EBiermann
* Year: 2022
*/
namespace App\Document\Areabrick;
use Pimcore\Extension\Document\Areabrick\EditableDialogBoxConfiguration;
use Pimcore\Extension\Document\Areabrick\EditableDialogBoxInterface;
use Pimcore\Http\Request\Resolver\EditmodeResolver;
use Pimcore\Model\Document\Editable;
use Pimcore\Model\Document\Editable\Area\Info;
use Pimcore\Model\Document\Editable\Select;
use Pimcore\Translation\Translator;
class Columns extends AbstractAreabrick {
private $translator;
private $editmode;
private $layoutConfigurations;
public function __construct( Translator $translator, EditmodeResolver $editmodeResolver, array $allowedBricks) {
$this->translator = $translator;
$this->editmode = $editmodeResolver->isEditmode();
$this->allowedBricks = $allowedBricks;
$this->layoutConfigurations = [
'100-12' => ['count' => 1, 'columns' => [12], 'baseclass' => 't100', 'backendLabel' => $this->translator->trans('brick.columns.1 Column (12)', [], 'admin', 'en') ],
'100-10' => ['count' => 1, 'columns' => [10], 'baseclass' => 't100', 'backendLabel' => $this->translator->trans('brick.columns.1 Column (10, prefix: 1)', [], 'admin', 'en') ],
'100-8' => ['count' => 1, 'columns' => [8], 'baseclass' => 't100', 'backendLabel' => $this->translator->trans('brick.columns.1 Column (8, prefix: 2)', [], 'admin', 'en') ],
'50-6-6' => ['count' => 2, 'columns' => [6,6], 'baseclass' => 't50', 'backendLabel' => $this->translator->trans('brick.columns.2 Columns (6/6)', [], 'admin', 'en')],
'50-4-4' => ['count' => 2, 'columns' => [4,4], 'baseclass' => 't50', 'backendLabel' => $this->translator->trans('brick.columns.2 Column (4/4, prefix: 2)', [], 'admin', 'en') ],
'50-4-6' => ['count' => 2, 'columns' => [4,6], 'baseclass' => 't50', 'backendLabel' => $this->translator->trans('brick.columns.2 Column (4/6, prefix: 1)', [], 'admin', 'en') ],
'50-6-4' => ['count' => 2, 'columns' => [6,6], 'baseclass' => 't50', 'backendLabel' => $this->translator->trans('brick.columns.2 Column (6/4)', [], 'admin', 'en') ],
'33-4-4-4' => ['count' => 3, 'columns' => [4,4,4], 'baseclass' => 't33', 'backendLabel' => $this->translator->trans('brick.columns.3 Columns (4/4/4)', [], 'admin', 'en')],
'25-3-3-3-3' => ['count' => 4, 'columns' => [3,3,3,3], 'baseclass' => 't25', 'backendLabel' => $this->translator->trans('brick.columns.4 Columns (3/3/3,3)', [], 'admin', 'en')],
];
}
public function getName() {
return 'Columns';
}
public function getDescription() {
return 'Distribution of content elements';
}
public function action(Info $info) {
$cssClasses = ['grid'];
$layoutConfigs = $this->layoutConfigurations;
/** @var Select $layoutSelect */
$layoutSelect = $this->getDocumentEditable( $info->getDocument(), 'select', 'grid-layout');
$layout = $layoutSelect->getData() ?? '100-12';
array_push( $cssClasses, 'grid--'.$layoutConfigs[$layout]['baseclass']);
array_push( $cssClasses, 'grid--'.$layout);
$columnStore = [];
foreach($layoutConfigs as $layoutKey => $config) {
array_push( $columnStore, [$layoutKey, $config['backendLabel']]);
}
if ($this->getDocumentEditable( $info->getDocument(), 'checkbox', 'vertical-center')->isChecked()) {
array_push( $cssClasses, 'grid--vc');
}
if ($this->getDocumentEditable( $info->getDocument(), 'checkbox', 'horizontal-center')->isChecked()) {
array_push( $cssClasses, 'grid--hc');
}
if ($this->getDocumentEditable( $info->getDocument(), 'checkbox', 'nmt')->isChecked()) {
array_push( $cssClasses, 'grid--nmt');
}
if ($this->getDocumentEditable( $info->getDocument(), 'checkbox', 'nmb')->isChecked()) {
array_push( $cssClasses, 'grid--nmb');
}
if ($this->getDocumentEditable( $info->getDocument(), 'checkbox', 'reverse-order')->isChecked()) {
array_push( $cssClasses, 'grid--rvo');
}
//if (isset($layoutConfigs[$layout]['count']) && $layoutConfigs[$layout]['count']) {
// for ($i = 0; $i < $layoutConfigs[$layout]['count']; $i++) {
//
// }
//}
//
///** @var Select $backgroundColorSelect */
//$backgroundColorSelect = $this->getDocumentEditable( $info->getDocument(), 'select', 'bgc');
//$backgroundColorClass = $backgroundColorSelect->getData() ?? '';
//array_push( $cssClasses, $backgroundColorClass);
$info->setParam( 'columnStore', $columnStore);
$info->setParam( 'allowed', $this->allowedBricks);
$info->setParam( 'gridColumnCount', $layoutConfigs[$layout]['count']);
$info->setParam( 'gridCSSColumns', $layoutConfigs[$layout]['columns']);
$info->setParam( 'cssClasses', $cssClasses);
}
public function needsReload(): bool {
return false;
}
// returns a custom html wrapper element (return an empty string if you don't want a wrapper element)
public function getHtmlTagOpen(Info $info) {
return '';
}
public function getHtmlTagClose(Info $info) {
return '';
}
}