src/Document/Areabrick/Columns.php line 24

Open in your IDE?
  1. <?php
  2.     /**
  3.      * project: Pimcore
  4.      * User: EBiermann
  5.      * Year: 2022
  6.      */
  7.     namespace App\Document\Areabrick;
  8.     use Pimcore\Extension\Document\Areabrick\EditableDialogBoxConfiguration;
  9.     use Pimcore\Extension\Document\Areabrick\EditableDialogBoxInterface;
  10.     use Pimcore\Http\Request\Resolver\EditmodeResolver;
  11.     use Pimcore\Model\Document\Editable;
  12.     use Pimcore\Model\Document\Editable\Area\Info;
  13.     use Pimcore\Model\Document\Editable\Select;
  14.     use Pimcore\Translation\Translator;
  15.     class Columns extends AbstractAreabrick {
  16.         private $translator;
  17.         private $editmode;
  18.         private $layoutConfigurations;
  19.         public function __constructTranslator $translatorEditmodeResolver $editmodeResolver, array $allowedBricks) {
  20.             $this->translator $translator;
  21.             $this->editmode $editmodeResolver->isEditmode();
  22.             $this->allowedBricks $allowedBricks;
  23.             $this->layoutConfigurations = [
  24.                 '100-12'                        => ['count' => 1'columns' => [12],           'baseclass' => 't100''backendLabel' => $this->translator->trans('brick.columns.1 Column (12)', [], 'admin''en') ],
  25.                 '100-10'                        => ['count' => 1'columns' => [10],           'baseclass' => 't100''backendLabel' => $this->translator->trans('brick.columns.1 Column (10, prefix: 1)', [], 'admin''en') ],
  26.                 '100-8'                         => ['count' => 1'columns' => [8],            'baseclass' => 't100''backendLabel' => $this->translator->trans('brick.columns.1 Column (8, prefix: 2)', [], 'admin''en') ],
  27.                 '50-6-6'                        => ['count' => 2'columns' => [6,6],          'baseclass' => 't50''backendLabel'  => $this->translator->trans('brick.columns.2 Columns (6/6)', [], 'admin''en')],
  28.                 '50-4-4'                        => ['count' => 2'columns' => [4,4],          'baseclass' => 't50''backendLabel'  => $this->translator->trans('brick.columns.2 Column (4/4, prefix: 2)', [], 'admin''en') ],
  29.                 '50-4-6'                        => ['count' => 2'columns' => [4,6],          'baseclass' => 't50''backendLabel'  => $this->translator->trans('brick.columns.2 Column (4/6, prefix: 1)', [], 'admin''en') ],
  30.                 '50-6-4'                        => ['count' => 2'columns' => [6,6],          'baseclass' => 't50''backendLabel'  => $this->translator->trans('brick.columns.2 Column (6/4)', [], 'admin''en') ],
  31.                 '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')],
  32.                 '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')],
  33.             ];
  34.         }
  35.         public function getName() {
  36.             return 'Columns';
  37.         }
  38.         public function getDescription() {
  39.             return 'Distribution of content elements';
  40.         }
  41.         public function action(Info $info) {
  42.             $cssClasses = ['grid'];
  43.             $layoutConfigs $this->layoutConfigurations;
  44.             /** @var Select $layoutSelect */
  45.             $layoutSelect $this->getDocumentEditable$info->getDocument(), 'select''grid-layout');
  46.             $layout $layoutSelect->getData() ?? '100-12';
  47.             array_push$cssClasses'grid--'.$layoutConfigs[$layout]['baseclass']);
  48.             array_push$cssClasses'grid--'.$layout);
  49.             $columnStore = [];
  50.             foreach($layoutConfigs as $layoutKey => $config) {
  51.                 array_push$columnStore, [$layoutKey$config['backendLabel']]);
  52.             }
  53.             if ($this->getDocumentEditable$info->getDocument(), 'checkbox''vertical-center')->isChecked()) {
  54.                 array_push$cssClasses'grid--vc');
  55.             }
  56.             if ($this->getDocumentEditable$info->getDocument(), 'checkbox''horizontal-center')->isChecked()) {
  57.                 array_push$cssClasses'grid--hc');
  58.             }
  59.             if ($this->getDocumentEditable$info->getDocument(), 'checkbox''nmt')->isChecked()) {
  60.                 array_push$cssClasses'grid--nmt');
  61.             }
  62.             if ($this->getDocumentEditable$info->getDocument(), 'checkbox''nmb')->isChecked()) {
  63.                 array_push$cssClasses'grid--nmb');
  64.             }
  65.             if ($this->getDocumentEditable$info->getDocument(), 'checkbox''reverse-order')->isChecked()) {
  66.                 array_push$cssClasses'grid--rvo');
  67.             }
  68.             //if (isset($layoutConfigs[$layout]['count']) && $layoutConfigs[$layout]['count']) {
  69.             //    for ($i = 0; $i < $layoutConfigs[$layout]['count']; $i++) {
  70.             //
  71.             //    }
  72.             //}
  73.             //
  74.             ///** @var Select $backgroundColorSelect */
  75.             //$backgroundColorSelect = $this->getDocumentEditable( $info->getDocument(), 'select', 'bgc');
  76.             //$backgroundColorClass = $backgroundColorSelect->getData() ?? '';
  77.             //array_push( $cssClasses, $backgroundColorClass);
  78.             $info->setParam'columnStore'$columnStore);
  79.             $info->setParam'allowed'$this->allowedBricks);
  80.             $info->setParam'gridColumnCount'$layoutConfigs[$layout]['count']);
  81.             $info->setParam'gridCSSColumns'$layoutConfigs[$layout]['columns']);
  82.             $info->setParam'cssClasses'$cssClasses);
  83.         }
  84.         public function needsReload(): bool {
  85.             return false;
  86.         }
  87.         // returns a custom html wrapper element (return an empty string if you don't want a wrapper element)
  88.         public function getHtmlTagOpen(Info $info) {
  89.             return '';
  90.         }
  91.         public function getHtmlTagClose(Info $info) {
  92.             return '';
  93.         }
  94.     }