소스 검색

add support for form/filter theme overwrite

Thomas Rabaix 10 년 전
부모
커밋
47384d4308

+ 2 - 2
DependencyInjection/Compiler/AddDependencyCallsCompilerPass.php

@@ -234,7 +234,7 @@ class AddDependencyCallsCompilerPass implements CompilerPassInterface
 
 
         $definition->addMethodCall('setPersistFilters', array($persistFilters));
         $definition->addMethodCall('setPersistFilters', array($persistFilters));
 
 
-        $this->fixTemplates($container, $definition, isset($overwriteAdminConfiguration['templates']) ? $overwriteAdminConfiguration['templates'] : array());
+        $this->fixTemplates($container, $definition, isset($overwriteAdminConfiguration['templates']) ? $overwriteAdminConfiguration['templates'] : array('view' => array()));
 
 
         if ($container->hasParameter('sonata.admin.configuration.security.information') && !$definition->hasMethodCall('setSecurityInformation')) {
         if ($container->hasParameter('sonata.admin.configuration.security.information') && !$definition->hasMethodCall('setSecurityInformation')) {
             $definition->addMethodCall('setSecurityInformation', array('%sonata.admin.configuration.security.information%'));
             $definition->addMethodCall('setSecurityInformation', array('%sonata.admin.configuration.security.information%'));
@@ -306,7 +306,7 @@ class AddDependencyCallsCompilerPass implements CompilerPassInterface
             'outer_list_rows_mosaic'     => 'SonataAdminBundle:CRUD:list_outer_rows_mosaic.html.twig',
             'outer_list_rows_mosaic'     => 'SonataAdminBundle:CRUD:list_outer_rows_mosaic.html.twig',
             'outer_list_rows_list'       => 'SonataAdminBundle:CRUD:list_outer_rows_list.html.twig',
             'outer_list_rows_list'       => 'SonataAdminBundle:CRUD:list_outer_rows_list.html.twig',
             'outer_list_rows_tree'       => 'SonataAdminBundle:CRUD:list_outer_rows_tree.html.twig',
             'outer_list_rows_tree'       => 'SonataAdminBundle:CRUD:list_outer_rows_tree.html.twig',
-        ), $definedTemplates, $overwrittenTemplates);
+        ), $definedTemplates, $overwrittenTemplates['view']);
 
 
         $definition->addMethodCall('setTemplates', array($definedTemplates));
         $definition->addMethodCall('setTemplates', array($definedTemplates));
     }
     }

+ 13 - 4
DependencyInjection/Configuration.php

@@ -131,9 +131,7 @@ class Configuration implements ConfigurationInterface
                         ->end()
                         ->end()
                     ->end()
                     ->end()
                 ->end()
                 ->end()
-
                 ->arrayNode('admin_services')
                 ->arrayNode('admin_services')
-                    ->useAttributeAsKey('id')
                     ->prototype('array')
                     ->prototype('array')
                         ->children()
                         ->children()
                             ->scalarNode('model_manager')->defaultValue(null)->end()
                             ->scalarNode('model_manager')->defaultValue(null)->end()
@@ -151,8 +149,19 @@ class Configuration implements ConfigurationInterface
                             ->scalarNode('route_builder')->defaultValue(null)->end()
                             ->scalarNode('route_builder')->defaultValue(null)->end()
                             ->scalarNode('label_translator_strategy')->defaultValue(null)->end()
                             ->scalarNode('label_translator_strategy')->defaultValue(null)->end()
                             ->arrayNode('templates')
                             ->arrayNode('templates')
-                                ->useAttributeAsKey('id')
-                                ->prototype('scalar')->defaultValue(null)->end()
+                                ->addDefaultsIfNotSet()
+                                ->children()
+                                    ->arrayNode('form')
+                                        ->prototype('scalar')->end()
+                                    ->end()
+                                    ->arrayNode('filter')
+                                        ->prototype('scalar')->end()
+                                    ->end()
+                                    ->arrayNode('view')
+                                        ->useAttributeAsKey('id')
+                                        ->prototype('scalar')->end()
+                                    ->end()
+                                ->end()
                             ->end()
                             ->end()
                         ->end()
                         ->end()
                     ->end()
                     ->end()

+ 6 - 1
Resources/doc/cookbook/recipe_overwrite_admin_configuration.rst

@@ -27,7 +27,12 @@ From the configuration file, you can add a new section named ``admin_services``
 
 
                 # templates configuration
                 # templates configuration
                 templates:
                 templates:
-                    user_block:             mytemplate.twig.html
+                    # view templates
+                    view:
+                        user_block:             mytemplate.twig.html
+                    # form related theme templates => this feature need to be implemented by the Persistency layer of each Admin Bundle
+                    form:   [ 'MyTheme.twig.html', 'MySecondTheme.twig.html']
+                    filter: [ 'MyTheme.twig.html', 'MySecondTheme.twig.html']
 
 
 
 
 With these settings you will be able to change default services and templates used by the `id.of.admin.service`` admin instance.
 With these settings you will be able to change default services and templates used by the `id.of.admin.service`` admin instance.

+ 2 - 3
Tests/DependencyInjection/Compiler/AddDependencyCallsCompilerPassTest.php

@@ -143,8 +143,7 @@ class AddDependencyCallsCompilerPassTest extends \PHPUnit_Framework_TestCase
         $config = array(
         $config = array(
             'dashboard' => array(
             'dashboard' => array(
                 'groups' => array(
                 'groups' => array(
-                    '%sonata.admin.parameter.groupname%' => array(
-                    ),
+                    '%sonata.admin.parameter.groupname%' => array(),
                 )
                 )
             )
             )
         );
         );
@@ -210,7 +209,7 @@ class AddDependencyCallsCompilerPassTest extends \PHPUnit_Framework_TestCase
             'admin_services' => array(
             'admin_services' => array(
                 'sonata_post_admin' => array(
                 'sonata_post_admin' => array(
                     'templates' => array(
                     'templates' => array(
-                        'user_block' => 'foobar.twig.html'
+                        'view' => array('user_block' => 'foobar.twig.html')
                     )
                     )
                 )
                 )
             )
             )

+ 12 - 3
Tests/DependencyInjection/ConfigurationTest.php

@@ -48,12 +48,16 @@ class ConfigurationTest extends \PHPUnit_Framework_TestCase
         $config = $processor->processConfiguration(new Configuration(), array(array(
         $config = $processor->processConfiguration(new Configuration(), array(array(
             'admin_services' => array(
             'admin_services' => array(
                 'my_admin_id' => array(
                 'my_admin_id' => array(
-                    'templates' => array('user_block' => 'SonataAdminBundle:mycustomtemplate.html.twig')
+                    'templates' => array(
+                        'form' => array('form.twig.html', 'form_extra.twig.html'),
+                        'view' => array('user_block' => 'SonataAdminBundle:mycustomtemplate.html.twig'),
+                        'filter' => array()
+                    )
                 )
                 )
             )
             )
         )));
         )));
 
 
-        $this->assertEquals('SonataAdminBundle:mycustomtemplate.html.twig', $config['admin_services']['my_admin_id']['templates']['user_block']);
+        $this->assertEquals('SonataAdminBundle:mycustomtemplate.html.twig', $config['admin_services']['my_admin_id']['templates']['view']['user_block']);
     }
     }
 
 
     public function testAdminServicesDefault()
     public function testAdminServicesDefault()
@@ -79,7 +83,12 @@ class ConfigurationTest extends \PHPUnit_Framework_TestCase
             'route_generator' => null,
             'route_generator' => null,
             'menu_factory' => null,
             'menu_factory' => null,
             'route_builder' => null,
             'route_builder' => null,
-            'label_translator_strategy' => null
+            'label_translator_strategy' => null,
+            'templates' => array(
+                'form' => array(),
+                'filter' => array(),
+                'view' => array(),
+            )
         ), $config['admin_services']['my_admin_id']);
         ), $config['admin_services']['my_admin_id']);
     }
     }
 }
 }