/** * @TODO: this should be moved to editable configuration. * * @param BlockProperty $property * @param Editable\Editable $editable */ protected function configureViewFilters(Editable\Editable $editable, BlockProperty $property) { $propertyId = $property->getId(); if (array_key_exists($propertyId, $this->configuredBlockProperties)) { return; } $filters = array(); // Html content filters if ($editable instanceof Editable\Html) { $filters[] = $this->request instanceof PageRequestEdit ? new Filter\EditableHtmlFilter() : new Filter\HtmlFilter(); // Editable Inline String } elseif ($editable instanceof Editable\InlineString) { if ($this->request instanceof PageRequestEdit) { $filters[] = new Filter\EditableInlineStringFilter(); } // Textarea and Inline Textarea } elseif ($editable instanceof Editable\Textarea || $editable instanceof Editable\InlineTextarea) { $filters[] = new Editable\Filter\TextareaFilter(); if ($this->request instanceof PageRequestEdit && $editable instanceof Editable\InlineTextarea) { $filters[] = new Filter\EditableInlineTextareaFilter(); } } elseif ($editable instanceof Editable\Link) { $filters[] = new Filter\LinkFilter(); } elseif ($editable instanceof Editable\DateTime) { $filters[] = new Editable\Filter\DateTimeFilter(); } elseif ($editable instanceof Editable\Image) { $filters[] = $editable instanceof Editable\InlineImage ? new Filter\InlineImageFilter() : new Filter\ImageFilter(); if ($editable instanceof Editable\InlineImage && $this->request instanceof PageRequestEdit) { $filters[] = new Filter\EditableInlineImageFilter(); } } elseif ($editable instanceof Editable\Gallery) { $filters[] = new Filter\GalleryFilter(); if ($this->request instanceof PageRequestEdit) { $filters[] = new Filter\EditableGalleryFilter(); } } elseif ($editable instanceof Editable\InlineMap) { $filters[] = new Filter\InlineMapFilter(); if ($this->request instanceof PageRequestEdit) { $filters[] = new Filter\EditableInlineMapFilter(); } } elseif ($editable instanceof Editable\Keywords) { $filters[] = new Filter\KeywordsFilter(); } elseif ($editable instanceof Editable\Video) { $filters[] = new Filter\VideoFilter(); } elseif ($editable instanceof Editable\InlineMedia) { $filters[] = new Filter\InlineMediaFilter(); if ($this->request instanceof PageRequestEdit) { $filters[] = new Filter\EditableInlineMediaFilter(); } } foreach ($filters as $filter) { if ($filter instanceof ContainerAware) { $filter->setContainer($this->container); } if ($filter instanceof BlockPropertyAware) { $filter->setBlockProperty($property); } $editable->addViewFilter($filter); } $this->configuredBlockProperties[$propertyId] = true; }