Пример #1
0
 /**
  * @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;
 }