diff --git a/src/Admin/Menu/AbstractMenuNodeAdmin.php b/src/Admin/Menu/AbstractMenuNodeAdmin.php index c1a03b2..3d0fdec 100644 --- a/src/Admin/Menu/AbstractMenuNodeAdmin.php +++ b/src/Admin/Menu/AbstractMenuNodeAdmin.php @@ -33,6 +33,11 @@ abstract class AbstractMenuNodeAdmin extends AbstractAdmin */ protected $menuRoot; + /** + * @var bool + */ + protected $useBurgovKeyValueForm; + /** * @var string */ @@ -92,6 +97,11 @@ public function setContentTreeBlock($contentTreeBlock) $this->contentTreeBlock = $contentTreeBlock; } + public function setUseBurgovKeyValueForm($useBurgovKeyValueForm) + { + $this->useBurgovKeyValueForm = $useBurgovKeyValueForm; + } + public function toString($object) { if ($object instanceof MenuNodeBase && $object->getLabel()) { diff --git a/src/Admin/Menu/MenuNodeAdmin.php b/src/Admin/Menu/MenuNodeAdmin.php index d9064da..6604c15 100644 --- a/src/Admin/Menu/MenuNodeAdmin.php +++ b/src/Admin/Menu/MenuNodeAdmin.php @@ -21,6 +21,7 @@ use Sonata\DoctrinePHPCRAdminBundle\Form\Type\ChoiceFieldMaskType; use Knp\Menu\ItemInterface as MenuItemInterface; use Doctrine\Common\Util\ClassUtils; +use Burgov\Bundle\KeyValueFormBundle\Form\Type\KeyValueType; class MenuNodeAdmin extends AbstractMenuNodeAdmin { @@ -69,7 +70,7 @@ protected function configureFormFields(FormMapper $formMapper) 'content' => 'content', ), 'map' => array( - 'route' => array('link'), + 'route' => array('link', 'routeParameters'), 'uri' => array('link'), 'content' => array('content', TreeSelectType::class), ), @@ -77,6 +78,25 @@ protected function configureFormFields(FormMapper $formMapper) 'required' => false, )) ->add('link', TextType::class, array('required' => false, 'mapped' => false)) + ; + + if ($this->useBurgovKeyValueForm) + { + $formMapper + ->add('routeParameters', KeyValueType::class, array( + 'value_type' => TextType::class, + 'required' => false, + 'entry_options' => array( + 'value_type' => TextType::class, + 'label' => false, + 'attr' => array('style' => 'clear:both'), + ), + 'label' => 'form.label_options' + )) + ; + } + + $formMapper ->add( 'content', TreeSelectType::class, diff --git a/src/DependencyInjection/Factory/MenuAdminFactory.php b/src/DependencyInjection/Factory/MenuAdminFactory.php index c5ac6cd..5542525 100644 --- a/src/DependencyInjection/Factory/MenuAdminFactory.php +++ b/src/DependencyInjection/Factory/MenuAdminFactory.php @@ -38,6 +38,7 @@ public function addConfiguration(NodeBuilder $builder) { $builder ->booleanNode('recursive_breadcrumbs')->defaultTrue()->end() + ->booleanNode('use_burgov_keyvalue_form')->defaultFalse()->end() ->arrayNode('extensions') ->addDefaultsIfNotSet() ->children() @@ -72,6 +73,7 @@ public function create(array $config, ContainerBuilder $container, XmlFileLoader $loader->load('menu.xml'); $this->loadExtensions($config['extensions'], $container, $loader); + $this->loadBurgovKeyValueForm($container); } private function loadExtensions(array $config, ContainerBuilder $container, XmlFileLoader $loader) @@ -101,4 +103,11 @@ private function loadExtensions(array $config, ContainerBuilder $container, XmlF } } } + + private function loadBurgovKeyValueForm(ContainerBuilder $container) + { + $bundles = $container->getParameter('kernel.bundles'); + + $container->setParameter('cmf_sonata_phpcr_admin_integration.menu.use_burgov_keyvalue_form', isset($bundles['BurgovKeyValueFormBundle']) ); + } } diff --git a/src/Resources/config/menu.xml b/src/Resources/config/menu.xml index 67615b8..f6a7514 100644 --- a/src/Resources/config/menu.xml +++ b/src/Resources/config/menu.xml @@ -68,6 +68,10 @@ %cmf_sonata_phpcr_admin_integration.menu.recursive_breadcrumbs% + + + %cmf_sonata_phpcr_admin_integration.menu.use_burgov_keyvalue_form% +