src/Document/Areabrick/Teaser.php line 38

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 App\Website\Tool\Image;
  9.     use Devkitchen\DocumentIndexingBundle\IndexingService\IndexingService;
  10.     use Pimcore\Http\Request\Resolver\EditmodeResolver;
  11.     use Pimcore\Model\Asset;
  12.     use Pimcore\Model\Document\Editable\Area\Info;
  13.     use Pimcore\Model\Document\Page;
  14.     use Pimcore\Translation\Translator;
  15.     class Teaser extends AbstractAreabrick {
  16.         private $translator;
  17.         private $editmode;
  18.         private $indexingService;
  19.         public function __constructTranslator $translatorEditmodeResolver $editmodeResolverIndexingService $indexingService) {
  20.             $this->translator $translator;
  21.             $this->editmode $editmodeResolver->isEditmode();
  22.             $this->indexingService $indexingService;
  23.         }
  24.         public function getName() {
  25.             return 'Teaser';
  26.         }
  27.         public function getDescription() {
  28.             return 'A document teaser';
  29.         }
  30.         public function action(Info $info) {
  31.             $displayAsTypeStore[] = ['image-title-text'$this->translator->trans'display-as.teaser.image-title-text', [], 'admin''en')];
  32.             $displayAsTypeStore[] = ['image-title-text-alt'$this->translator->trans'display-as.teaser.image-title-text-alt', [], 'admin''en')];
  33.             $selectedDisplayAsType =  $this->getDocumentEditable$info->getDocument(), 'select''display-as')->getData() ?: 'image-title-text';
  34.             /** @var  $locations */
  35.             $itemLink $this->getDocumentEditable$info->getDocument(), 'relation''item');
  36.             if (!$itemLink->isEmpty()) {
  37.                 $itemLinkData $itemLink->getData();
  38.                 $document Page::getById$itemLinkData['id'] );
  39.                 $documentData $this->indexingService->get$document );
  40.                 if ($documentData) {
  41.                     $teaserThumbnail null;
  42.                     $teaserImageId   $documentData->teaserAssetId;
  43.                     if ( $teaserImageId ) {
  44.                         $teaserImage Asset::getById$teaserImageId );
  45.                     } else {
  46.                         $teaserImage $document->getProperty'document-teaser-image-fallback' );
  47.                     }
  48.                     if ( $teaserImage ) {
  49.                         $gridImageData   Image::getGridThumbnailMetaData$teaserImage$info->getParam'columns' ), $this->editmode'teaser-default' );
  50.                         $teaserThumbnail $teaserImage->getThumbnail$gridImageData->thumbnail );
  51.                         $teaserThumbnail $teaserThumbnail->getHtml();
  52.                     }
  53.                 }
  54.                 $displayAsTypeStore[] = ['image-title-text'$this->translator->trans'display-as.teaser.image-title-text', [], 'admin''en')];
  55.                 $displayAsTypeStore[] = ['image-title-text-alt'$this->translator->trans'display-as.teaser.image-title-text-alt', [], 'admin''en')];
  56.                 $selectedDisplayAsType =  $this->getDocumentEditable$info->getDocument(), 'select''display-as')->getData() ?: 'image-title-text';
  57.                 $info->setParam'url'$document->getHref());
  58.                 $info->setParam'image'$teaserThumbnail ?? '');
  59.                 $info->setParam'title'$documentData->teaserTitle ?? '');
  60.                 $info->setParam'text'$documentData->teaserContent ?? '');
  61.             }
  62.             $info->setParam'displayAsTypeStore'$displayAsTypeStore);
  63.             $info->setParam'selectedDisplayAsType'$selectedDisplayAsType);
  64.             //$info->setParam( 'locations', $locations);
  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.     }