src/Document/Areabrick/Gallery.php line 43

Open in your IDE?
  1. <?php
  2.     /**
  3.      * project: Pimcore - Schutzverband Nuernberg Rostbratwuerste
  4.      * User: erikb
  5.      * Year: 2022
  6.      */
  7.     namespace App\Document\Areabrick;
  8.     use Pimcore\Http\Request\Resolver\EditmodeResolver;
  9.     use Pimcore\Model\Asset\Image\Thumbnail;
  10.     use Pimcore\Model\Document\Editable\Area\Info;
  11.     use Pimcore\Model\Document\Editable\Relations;
  12.     use Pimcore\Translation\Translator;
  13.     class Gallery extends AbstractAreabrick {
  14.         private $translator;
  15.         private $editmode;
  16.         public function __constructTranslator $translatorEditmodeResolver $editmodeResolver) {
  17.             $this->translator $translator;
  18.             $this->editmode $editmodeResolver->isEditmode();
  19.         }
  20.         public function getName() {
  21.             return 'Gallery';
  22.         }
  23.         public function getDescription() {
  24.             return 'Generates a slideshow';
  25.         }
  26.         public function action(Info $info) {
  27.             $cssClasses $info->getParam'cssClasses') ?? [];
  28.             $info->setParam'cssClasses'$cssClasses);
  29.             $images = [];
  30.             $minHeight 0;
  31.             /** @var Relations $imageRelations */
  32.             $imageRelations $this->getDocumentEditable$info->getDocument(), 'relations''images');
  33.             if (!$imageRelations->isEmpty()) {
  34.                 $imageLinks $imageRelations->getData();
  35.                 foreach($imageLinks as $index => $imageLink) {
  36.                     if ($imageLink instanceof \Pimcore\Model\Asset\Image) {
  37.                         $gridImageData \App\Website\Tool\Image::getGridThumbnailMetaData$imageLink$info->getParam('columns'), $this->editmode'gallery');
  38.                         /** @var Thumbnail $thumbnail */
  39.                         $thumbnail $imageLink->getThumbnail($gridImageData->thumbnail);
  40.                         $loading 'lazy';
  41.                         $decoding $this->editmode 'sync' 'async';
  42.                         if (!$this->editmode && ($info->getParam'sectionIndex') == && $info->getParam'gridIndex') <= 1)) {
  43.                             $loading 'eager';
  44.                         }
  45.                         $images[] = $thumbnail->getHtml([
  46.                             'imgAttributes' => [
  47.                                 'loading' => $loading,
  48.                                 'decoding' => $decoding
  49.                             ]
  50.                                         ]);
  51.                         if ($index == 0) {
  52.                             $minHeight $thumbnail->getHeight();
  53.                         }
  54.                     }
  55.                 }
  56.             }
  57.             $autoplay 0;
  58.             $autoplayNumeric $this->getDocumentEditable$info->getDocument(), 'numeric''autoplay');
  59.             if (!$autoplayNumeric->isEmpty()) {
  60.                 $autoplay $autoplayNumeric->getData();
  61.             }
  62.             $info->setParam'images'$images);
  63.             $info->setParam'autoplay'$autoplay);
  64.             $info->setParam'minHeight'$minHeight);
  65.         }
  66.         public function needsReload(): bool {
  67.             return false;
  68.         }
  69.         // returns a custom html wrapper element (return an empty string if you don't want a wrapper element)
  70.         public function getHtmlTagOpen(Info $info) {
  71.             return '';
  72.         }
  73.         public function getHtmlTagClose(Info $info) {
  74.             return '';
  75.         }
  76.     }