vendor/conecto/pimcore-provider/src/ProviderBundle/Document/Areabrick/Teaser.php line 47

Open in your IDE?
  1. <?php
  2. namespace CONECTO\ProviderBundle\Document\Areabrick;
  3. use Pimcore\Model\DataObject;
  4. use Pimcore\Model\Document\Editable\Area\Info;
  5. class Teaser extends AbstractAreabrick {
  6.     public function getName()
  7.     {
  8.         return 'Teaser Elemente';
  9.     }
  10.     public function getIcon()
  11.     {
  12.         return '/bundles/pimcoreadmin/img/flat-color-icons/snippet.svg';
  13.     }
  14.     public function getAdditionalConfig(): array
  15.     {
  16.         return [
  17.             [
  18.                 'type' => 'panel',
  19.                 'title' => 'Teaser Elemente',
  20.                 'items' => [
  21.                     [
  22.                         'type' => 'relation',
  23.                         'label' => 'nur Teaser aus Verzeichnis anzeigen',
  24.                         'name' => 'dir',
  25.                         'config' => [
  26.                             'width' => 400,
  27.                             'types' => ['object'],
  28.                             'subtypes' => [
  29.                                 'object' => ['folder'],
  30.                             ],
  31.                         ],
  32.                     ]
  33.                 ],
  34.             ],
  35.         ];
  36.     }
  37.     /**
  38.      * {@inheritdoc}
  39.      */
  40.     public function action(Info $info)
  41.     {
  42.         $this->info $info;
  43.         // get areabrick settings
  44.         $dir $this->getDataFromField($info'dir') ?? [];
  45.         $teaser null;
  46.         // get teaser from directory
  47.         if(is_array($dir) && isset($dir['id']) && $dir['id']) {
  48.             $teaser $this->getTeaser($dir);
  49.         }
  50.         $info->setParams([
  51.             'overrideTeaser' => $teaser
  52.         ]);
  53.         return null;
  54.     }
  55.     /**
  56.      * Get Teaser from directory
  57.      *
  58.      * @param array $dir
  59.      * @return DataObject\Teaser\Listing
  60.      */
  61.     protected function getTeaser(array $dir = []):  DataObject\Teaser\Listing
  62.     {
  63.         $teaserListing = new DataObject\Teaser\Listing();
  64.         $teaserListing->setOrderKey("o_index");
  65.         $teaserListing->setOrder("asc");
  66.         // filter by selected dir
  67.         if(is_array($dir) && isset($dir['id']) && $dir['id']) {
  68.             $dirObject DataObject::getById($dir['id']);
  69.             if ($dirObject) {
  70.                 $path $dirObject->getPath() . $dirObject->getKey();
  71.                 if (strlen($path) > 1) {
  72.                     $path .= '/';
  73.                     $teaserListing->addConditionParam("o_path = ?"$path);
  74.                 }
  75.             }
  76.         }
  77.         return $teaserListing;
  78.     }
  79. }