/** * {@inheritDoc} */ public function createProperty($name) { $property = new BlockProperty($name); $property->setEditableClass(get_class($this->editable)); // @TODO: value conversion // @TODO: localized values $property->setValue($this->editable->getDefaultValue()); return $property; }
/** * @TODO: this should be moved to editable configuration. * * @param Editable\Editable $editable * @param BlockProperty $property */ protected function configureValueTransformers(Editable\Editable $editable, BlockProperty $property) { $transformers = array(); if ($editable instanceof Editable\Html) { $transformers[] = new Transformer\HtmlEditorValueTransformer(); } elseif ($editable instanceof Editable\Link) { $transformers[] = new Transformer\LinkEditorValueTransformer(); } else { if ($editable instanceof Editable\Image) { $transformers[] = new Transformer\ImageEditorValueTransformer(); } else { if ($editable instanceof Editable\Gallery) { $transformers[] = new Transformer\GalleryEditorValueTransformer(); } else { if ($editable instanceof Editable\InlineMap) { $transformers[] = new Transformer\ArrayValueTransformer(); } elseif ($editable instanceof Editable\Video) { $transformers[] = new Transformer\VideoEditorValueTransformer(); } elseif ($editable instanceof Editable\InlineMedia) { $transformers[] = new Transformer\InlineMediaEditorValueTransformer(); } } } } foreach ($transformers as $transformer) { if ($transformer instanceof ContainerAware) { $transformer->setContainer($this->container); } if ($transformer instanceof BlockPropertyAware) { $transformer->setBlockProperty($property); } $editable->addEditorValueTransformer($transformer); } }
/** * @param string $name * @param array $options * @return Editable */ private function createEditable($name, array $options) { $editable = Editable::getEditable($name); $editable->setOptions($options); return $editable; }