Skip to content
This repository was archived by the owner on Sep 16, 2021. It is now read-only.

Commit 2110557

Browse files
Merge pull request #52 from symfony-cmf/use_new_treebrowser
replace treebrowser form types
2 parents 1b6d003 + a9f162e commit 2110557

19 files changed

+139
-68
lines changed

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
"php": "^5.5.6|^7.0",
1616
"symfony/framework-bundle": "^2.8|^3.0",
1717
"sonata-project/doctrine-phpcr-admin-bundle": "^2.0",
18-
"sonata-project/admin-bundle": "^3.6.0"
18+
"sonata-project/admin-bundle": "^3.6.0",
19+
"symfony-cmf/tree-browser-bundle": "^2.0"
1920
},
2021
"require-dev": {
2122
"symfony-cmf/testing": "^2.0",

src/Admin/AbstractAdmin.php

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
3+
namespace Symfony\Cmf\Bundle\SonataAdminIntegrationBundle\Admin;
4+
5+
use Doctrine\Bundle\PHPCRBundle\Form\DataTransformer\DocumentToPathTransformer;
6+
use Sonata\DoctrinePHPCRAdminBundle\Admin\Admin;
7+
use Symfony\Bridge\Doctrine\ManagerRegistry;
8+
use Symfony\Component\Form\FormBuilder;
9+
10+
/**
11+
* @author Maximilian Berghoff <[email protected]>
12+
*/
13+
class AbstractAdmin extends Admin
14+
{
15+
/**
16+
* @var ManagerRegistry
17+
*/
18+
private $managerRegistry;
19+
20+
public function setManagerRegistry(ManagerRegistry $managerRegistry)
21+
{
22+
$this->managerRegistry = $managerRegistry;
23+
}
24+
25+
/**
26+
* Will add a the phpcr data transformer to a specific field.
27+
*
28+
* @param FormBuilder $formBuilder
29+
* @param $fieldName
30+
*/
31+
public function addTransformerToField(FormBuilder $formBuilder, $fieldName)
32+
{
33+
$formBuilder->get($fieldName)->addModelTransformer(new DocumentToPathTransformer(
34+
$this->managerRegistry->getManagerForClass($this->getClass())
35+
));
36+
}
37+
}

src/Admin/Block/AbstractBlockAdmin.php

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@
1212
namespace Symfony\Cmf\Bundle\SonataAdminIntegrationBundle\Admin\Block;
1313

1414
use Sonata\AdminBundle\Form\FormMapper;
15-
use Sonata\DoctrinePHPCRAdminBundle\Admin\Admin;
16-
use Sonata\DoctrinePHPCRAdminBundle\Form\Type\TreeModelType;
15+
use Symfony\Cmf\Bundle\SonataAdminIntegrationBundle\Admin\AbstractAdmin;
16+
use Symfony\Cmf\Bundle\TreeBrowserBundle\Form\Type\TreeSelectType;
1717
use Symfony\Component\Form\Extension\Core\Type\TextType;
1818

1919
/**
2020
* @author Nicolas Bastien <[email protected]>
2121
*/
22-
abstract class AbstractBlockAdmin extends Admin
22+
abstract class AbstractBlockAdmin extends AbstractAdmin
2323
{
2424
/**
2525
* @var string
@@ -31,7 +31,7 @@ abstract class AbstractBlockAdmin extends Admin
3131
*/
3232
public function getExportFormats()
3333
{
34-
return array();
34+
return [];
3535
}
3636

3737
/**
@@ -44,12 +44,14 @@ protected function configureFormFields(FormMapper $formMapper)
4444
->with('form.group_location', ['class' => 'col-md-3'])
4545
->add(
4646
'parentDocument',
47-
TreeModelType::class,
48-
['root_node' => $this->getRootPath(), 'choice_list' => array(), 'select_root_node' => true]
47+
TreeSelectType::class,
48+
['root_node' => $this->getRootPath(), 'widget' => 'browser']
4949
)
5050
->add('name', TextType::class)
5151
->end()
5252
->end()
5353
;
54+
55+
$this->addTransformerToField($formMapper->getFormBuilder(), 'parentDocument');
5456
}
5557
}

src/Admin/Block/MenuBlockAdmin.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
use Sonata\AdminBundle\Datagrid\DatagridMapper;
1515
use Sonata\AdminBundle\Datagrid\ListMapper;
1616
use Sonata\AdminBundle\Form\FormMapper;
17-
use Sonata\DoctrinePHPCRAdminBundle\Form\Type\TreeModelType;
17+
use Symfony\Cmf\Bundle\TreeBrowserBundle\Form\Type\TreeSelectType;
1818

1919
/**
2020
* Sonata admin for the MenuBlock. Allows to select the target menu node from
@@ -47,12 +47,14 @@ protected function configureFormFields(FormMapper $formMapper)
4747
->with('form.group_block', ['class' => 'col-md-9'])
4848
->add(
4949
'menuNode',
50-
TreeModelType::class,
51-
['choice_list' => [], 'required' => true, 'root_node' => $this->menuPath]
50+
TreeSelectType::class,
51+
['root_node' => $this->menuPath, 'widget' => 'browser', 'required' => true]
5252
)
5353
->end()
5454
->end()
5555
;
56+
57+
$this->addTransformerToField($formMapper->getFormBuilder(), 'menuNode');
5658
}
5759

5860
/**

src/Admin/Block/ReferenceBlockAdmin.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
use Sonata\AdminBundle\Datagrid\DatagridMapper;
1515
use Sonata\AdminBundle\Datagrid\ListMapper;
1616
use Sonata\AdminBundle\Form\FormMapper;
17-
use Sonata\DoctrinePHPCRAdminBundle\Form\Type\TreeModelType;
17+
use Symfony\Cmf\Bundle\TreeBrowserBundle\Form\Type\TreeSelectType;
1818

1919
/**
2020
* @author Lukas Kahwe Smith <[email protected]>
@@ -44,8 +44,8 @@ protected function configureFormFields(FormMapper $formMapper)
4444
->with('form.group_block', ['class' => 'col-md-9'])
4545
->add(
4646
'referencedBlock',
47-
TreeModelType::class,
48-
['choice_list' => [], 'required' => false, 'root_node' => $this->getRootPath()]
47+
TreeSelectType::class,
48+
['root_node' => $this->getRootPath(), 'widget' => 'browser', 'required' => false]
4949
)
5050
->end()
5151
->end()

src/Admin/Menu/AbstractMenuNodeAdmin.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@
1414
use Sonata\AdminBundle\Datagrid\ListMapper;
1515
use Sonata\AdminBundle\Form\FormMapper;
1616
use Sonata\AdminBundle\Show\ShowMapper;
17-
use Sonata\DoctrinePHPCRAdminBundle\Admin\Admin;
17+
use Symfony\Cmf\Bundle\SonataAdminIntegrationBundle\Admin\AbstractAdmin;
1818
use Symfony\Component\Form\Extension\Core\Type\TextType;
1919
use Symfony\Cmf\Bundle\MenuBundle\Model\MenuNodeBase;
2020

2121
/**
2222
* Common base admin for Menu and MenuNode.
2323
*/
24-
abstract class AbstractMenuNodeAdmin extends Admin
24+
abstract class AbstractMenuNodeAdmin extends AbstractAdmin
2525
{
2626
/**
2727
* @var string
@@ -74,7 +74,7 @@ protected function configureShowFields(ShowMapper $showMapper)
7474

7575
public function getExportFormats()
7676
{
77-
return array();
77+
return [];
7878
}
7979

8080
public function setContentRoot($contentRoot)

src/Admin/Menu/MenuNodeAdmin.php

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@
1111

1212
namespace Symfony\Cmf\Bundle\SonataAdminIntegrationBundle\Admin\Menu;
1313

14+
use Symfony\Cmf\Bundle\TreeBrowserBundle\Form\Type\TreeSelectType;
1415
use Symfony\Component\Form\Extension\Core\Type\TextType;
1516
use Symfony\Component\Form\FormEvent;
1617
use Symfony\Component\Form\FormEvents;
1718
use Symfony\Cmf\Bundle\MenuBundle\Model\MenuNode;
1819
use Sonata\AdminBundle\Datagrid\ListMapper;
1920
use Sonata\AdminBundle\Form\FormMapper;
2021
use Sonata\DoctrinePHPCRAdminBundle\Form\Type\ChoiceFieldMaskType;
21-
use Sonata\DoctrinePHPCRAdminBundle\Form\Type\TreeModelType;
2222
use Knp\Menu\ItemInterface as MenuItemInterface;
2323
use Doctrine\Common\Util\ClassUtils;
2424

@@ -44,15 +44,17 @@ protected function configureFormFields(FormMapper $formMapper)
4444
$formMapper
4545
->tab('form.tab_general')
4646
->with('form.group_location', ['class' => 'col-sm-3'])
47-
->add('parentDocument', TreeModelType::class, array(
48-
'root_node' => $this->menuRoot,
49-
'choice_list' => array(),
50-
'select_root_node' => true,
51-
))
47+
->add(
48+
'parentDocument',
49+
TreeSelectType::class,
50+
['root_node' => $this->menuRoot, 'widget' => 'browser']
51+
)
5252
->end()
5353
->end()
5454
;
5555

56+
$this->addTransformerToField($formMapper->getFormBuilder(), 'parentDocument');
57+
5658
parent::configureFormFields($formMapper);
5759

5860
if (null === $this->getParentFieldDescription()) {
@@ -69,22 +71,22 @@ protected function configureFormFields(FormMapper $formMapper)
6971
'map' => array(
7072
'route' => array('link'),
7173
'uri' => array('link'),
72-
'content' => array('content', TreeModelType::class),
74+
'content' => array('content', TreeSelectType::class),
7375
),
7476
'placeholder' => 'auto',
7577
'required' => false,
7678
))
7779
->add('link', TextType::class, array('required' => false, 'mapped' => false))
78-
->add('content', TreeModelType::class,
79-
array(
80-
'root_node' => $this->contentRoot,
81-
'choice_list' => array(),
82-
'required' => false,
83-
)
80+
->add(
81+
'content',
82+
TreeSelectType::class,
83+
['root_node' => $this->contentRoot, 'widget' => 'browser', 'required' => false]
8484
)
8585
->end()
8686
->end()
8787
;
88+
89+
$this->addTransformerToField($formMapper->getFormBuilder(), 'content');
8890
}
8991
}
9092

src/Admin/Routing/RedirectRouteAdmin.php

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@
1414
use Sonata\AdminBundle\Datagrid\DatagridMapper;
1515
use Sonata\AdminBundle\Datagrid\ListMapper;
1616
use Sonata\AdminBundle\Form\FormMapper;
17-
use Sonata\DoctrinePHPCRAdminBundle\Admin\Admin;
18-
use Sonata\DoctrinePHPCRAdminBundle\Form\Type\TreeModelType;
17+
use Symfony\Cmf\Bundle\SonataAdminIntegrationBundle\Admin\AbstractAdmin;
18+
use Symfony\Cmf\Bundle\TreeBrowserBundle\Form\Type\TreeSelectType;
1919
use Symfony\Component\Form\Extension\Core\Type\TextType;
2020
use Symfony\Cmf\Bundle\RoutingBundle\Model\Route;
2121

22-
class RedirectRouteAdmin extends Admin
22+
class RedirectRouteAdmin extends AbstractAdmin
2323
{
2424
protected $translationDomain = 'CmfSonataAdminIntegrationBundle';
2525

@@ -41,8 +41,8 @@ protected function configureFormFields(FormMapper $formMapper)
4141
->with('form.group_location', ['class' => 'col-md-3'])
4242
->add(
4343
'parentDocument',
44-
TreeModelType::class,
45-
['choice_list' => [], 'select_root_node' => true, 'root_node' => $this->routeRoot]
44+
TreeSelectType::class,
45+
['root_node' => $this->routeRoot, 'widget' => 'browser']
4646
)
4747
->add('name', TextType::class)
4848
->end()
@@ -52,11 +52,12 @@ protected function configureFormFields(FormMapper $formMapper)
5252
->add('uri', TextType::class, ['required' => false])
5353
->add(
5454
'routeTarget',
55-
TreeModelType::class,
56-
['choice_list' => [], 'required' => false, 'root_node' => $this->routeRoot]
55+
TreeSelectType::class,
56+
['root_node' => $this->routeRoot, 'widget' => 'browser', 'required' => false]
5757
)
5858
->end()
5959
;
60+
$this->addTransformerToField($formMapper->getFormBuilder(), 'parentDocument');
6061
}
6162

6263
protected function configureDatagridFilters(DatagridMapper $datagridMapper)

src/Admin/Routing/RouteAdmin.php

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@
1515
use Sonata\AdminBundle\Datagrid\ListMapper;
1616
use Sonata\AdminBundle\Form\FormMapper;
1717
use Sonata\CoreBundle\Form\Type\ImmutableArrayType;
18-
use Sonata\DoctrinePHPCRAdminBundle\Admin\Admin;
19-
use Sonata\DoctrinePHPCRAdminBundle\Form\Type\TreeModelType;
18+
use Symfony\Cmf\Bundle\SonataAdminIntegrationBundle\Admin\AbstractAdmin;
19+
use Symfony\Cmf\Bundle\TreeBrowserBundle\Form\Type\TreeSelectType;
2020
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
2121
use Symfony\Component\Form\Extension\Core\Type\TextType;
2222
use Symfony\Cmf\Bundle\RoutingBundle\Model\Route;
2323
use Symfony\Cmf\Bundle\RoutingBundle\Form\Type\RouteTypeType;
2424
use PHPCR\Util\PathHelper;
2525

26-
class RouteAdmin extends Admin
26+
class RouteAdmin extends AbstractAdmin
2727
{
2828
protected $translationDomain = 'CmfSonataAdminIntegrationBundle';
2929

@@ -53,8 +53,8 @@ protected function configureFormFields(FormMapper $formMapper)
5353
->with('form.group_location', ['class' => 'col-md-3'])
5454
->add(
5555
'parentDocument',
56-
TreeModelType::class,
57-
['choice_list' => [], 'select_root_node' => true, 'root_node' => $this->routeRoot]
56+
TreeSelectType::class,
57+
['root_node' => $this->routeRoot, 'widget' => 'browser']
5858
)
5959
->add('name', TextType::class)
6060
->end() // group location
@@ -63,8 +63,8 @@ protected function configureFormFields(FormMapper $formMapper)
6363
->with('form.group_target', ['class' => 'col-md-9'])
6464
->add(
6565
'content',
66-
TreeModelType::class,
67-
['choice_list' => [], 'required' => false, 'root_node' => $this->contentRoot]
66+
TreeSelectType::class,
67+
['root_node' => $this->routeRoot, 'widget' => 'browser', 'required' => false]
6868
)
6969
->end() // group general
7070
->end() // tab general
@@ -95,6 +95,11 @@ protected function configureFormFields(FormMapper $formMapper)
9595
->ifEnd()
9696

9797
->end(); // tab general/routing
98+
99+
$this->addTransformerToField($formMapper->getFormBuilder(), 'parentDocument');
100+
if (null === $this->getParentFieldDescription()) {
101+
$this->addTransformerToField($formMapper->getFormBuilder(), 'content');
102+
}
98103
}
99104

100105
protected function configureDatagridFilters(DatagridMapper $datagridMapper)

src/DependencyInjection/CmfSonataAdminIntegrationExtension.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ public function load(array $configs, ContainerBuilder $container)
5555
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
5656

5757
$this->loadBundles($config['bundles'], $loader, $container);
58+
59+
$loader->load('main-phpcr.xml');
5860
}
5961

6062
private function loadBundles(array $config, XmlFileLoader $loader, ContainerBuilder $container)

0 commit comments

Comments
 (0)