<?php
namespace CONECTO\ProviderBundle\Document\Areabrick;
use Pimcore\Model\DataObject;
use Pimcore\Model\Document\Editable\Area\Info;
class Teaser extends AbstractAreabrick {
public function getName()
{
return 'Teaser Elemente';
}
public function getIcon()
{
return '/bundles/pimcoreadmin/img/flat-color-icons/snippet.svg';
}
public function getAdditionalConfig(): array
{
return [
[
'type' => 'panel',
'title' => 'Teaser Elemente',
'items' => [
[
'type' => 'relation',
'label' => 'nur Teaser aus Verzeichnis anzeigen',
'name' => 'dir',
'config' => [
'width' => 400,
'types' => ['object'],
'subtypes' => [
'object' => ['folder'],
],
],
]
],
],
];
}
/**
* {@inheritdoc}
*/
public function action(Info $info)
{
$this->info = $info;
// get areabrick settings
$dir = $this->getDataFromField($info, 'dir') ?? [];
$teaser = null;
// get teaser from directory
if(is_array($dir) && isset($dir['id']) && $dir['id']) {
$teaser = $this->getTeaser($dir);
}
$info->setParams([
'overrideTeaser' => $teaser
]);
return null;
}
/**
* Get Teaser from directory
*
* @param array $dir
* @return DataObject\Teaser\Listing
*/
protected function getTeaser(array $dir = []): DataObject\Teaser\Listing
{
$teaserListing = new DataObject\Teaser\Listing();
$teaserListing->setOrderKey("o_index");
$teaserListing->setOrder("asc");
// filter by selected dir
if(is_array($dir) && isset($dir['id']) && $dir['id']) {
$dirObject = DataObject::getById($dir['id']);
if ($dirObject) {
$path = $dirObject->getPath() . $dirObject->getKey();
if (strlen($path) > 1) {
$path .= '/';
$teaserListing->addConditionParam("o_path = ?", $path);
}
}
}
return $teaserListing;
}
}