Parcourir la source

Add configuration options to define the template of buttons (#4136)

nykopol il y a 8 ans
Parent
commit
8b90ab4045

+ 7 - 7
Admin/AbstractAdmin.php

@@ -2795,7 +2795,7 @@ EOT;
             && $this->hasRoute('create')
         ) {
             $list['create'] = array(
-                'template' => 'SonataAdminBundle:Button:create_button.html.twig',
+                'template' => $this->getTemplate('button_create'),
             );
         }
 
@@ -2804,7 +2804,7 @@ EOT;
             && $this->hasRoute('edit')
         ) {
             $list['edit'] = array(
-                'template' => 'SonataAdminBundle:Button:edit_button.html.twig',
+                'template' => $this->getTemplate('button_edit'),
             );
         }
 
@@ -2813,7 +2813,7 @@ EOT;
             && $this->hasRoute('history')
         ) {
             $list['history'] = array(
-                'template' => 'SonataAdminBundle:Button:history_button.html.twig',
+                'template' => $this->getTemplate('button_history'),
             );
         }
 
@@ -2823,7 +2823,7 @@ EOT;
             && $this->hasRoute('acl')
         ) {
             $list['acl'] = array(
-                'template' => 'SonataAdminBundle:Button:acl_button.html.twig',
+                'template' => $this->getTemplate('button_acl'),
             );
         }
 
@@ -2833,7 +2833,7 @@ EOT;
             && $this->hasRoute('show')
         ) {
             $list['show'] = array(
-                'template' => 'SonataAdminBundle:Button:show_button.html.twig',
+                'template' => $this->getTemplate('button_show'),
             );
         }
 
@@ -2842,7 +2842,7 @@ EOT;
             && $this->hasRoute('list')
         ) {
             $list['list'] = array(
-                'template' => 'SonataAdminBundle:Button:list_button.html.twig',
+                'template' => $this->getTemplate('button_list'),
             );
         }
 
@@ -2882,7 +2882,7 @@ EOT;
             $actions['create'] = array(
                 'label' => 'link_add',
                 'translation_domain' => 'SonataAdminBundle',
-                'template' => 'SonataAdminBundle:CRUD:dashboard__action_create.html.twig',
+                'template' => $this->getTemplate('action_create'),
                 'url' => $this->generateUrl('create'),
                 'icon' => 'plus-circle',
             );

+ 7 - 0
DependencyInjection/Configuration.php

@@ -288,6 +288,13 @@ class Configuration implements ConfigurationInterface
                         ->scalarNode('pager_results')->defaultValue('SonataAdminBundle:Pager:results.html.twig')->cannotBeEmpty()->end()
                         ->scalarNode('tab_menu_template')->defaultValue('SonataAdminBundle:Core:tab_menu_template.html.twig')->cannotBeEmpty()->end()
                         ->scalarNode('knp_menu_template')->defaultValue('SonataAdminBundle:Menu:sonata_menu.html.twig')->cannotBeEmpty()->end()
+                        ->scalarNode('action_create')->defaultValue('SonataAdminBundle:CRUD:dashboard__action_create.html.twig')->cannotBeEmpty()->end()
+                        ->scalarNode('button_acl')->defaultValue('SonataAdminBundle:Button:acl_button.html.twig')->cannotBeEmpty()->end()
+                        ->scalarNode('button_create')->defaultValue('SonataAdminBundle:Button:create_button.html.twig')->cannotBeEmpty()->end()
+                        ->scalarNode('button_edit')->defaultValue('SonataAdminBundle:Button:edit_button.html.twig')->cannotBeEmpty()->end()
+                        ->scalarNode('button_history')->defaultValue('SonataAdminBundle:Button:history_button.html.twig')->cannotBeEmpty()->end()
+                        ->scalarNode('button_list')->defaultValue('SonataAdminBundle:Button:list_button.html.twig')->cannotBeEmpty()->end()
+                        ->scalarNode('button_show')->defaultValue('SonataAdminBundle:Button:show_button.html.twig')->cannotBeEmpty()->end()
                     ->end()
                 ->end()
 

+ 7 - 0
Resources/doc/reference/templates.rst

@@ -140,6 +140,13 @@ You can specify your templates in the config.yml file, like so:
                 history_revision_timestamp:     SonataAdminBundle:CRUD:history_revision_timestamp.html.twig
                 short_object_description:       SonataAdminBundle:Helper:short-object-description.html.twig
                 search_result_block:            SonataAdminBundle:Block:block_search_result.html.twig
+                action_create:                  SonataAdminBundle:CRUD:dashboard__action_create.html.twig
+                button_acl:                     SonataAdminBundle:Button:acl_button.html.twig
+                button_create:                  SonataAdminBundle:Button:create_button.html.twig
+                button_edit:                    SonataAdminBundle:Button:edit_button.html.twig
+                button_history:                 SonataAdminBundle:Button:history_button.html.twig
+                button_list:                    SonataAdminBundle:Button:list_button.html.twig
+                button_show:                    SonataAdminBundle:Button:show_button.html.twig
 
 Notice that this is a global change, meaning it will affect all model mappings automatically,
 both for ``Admin`` mappings defined by you and by other bundles.

+ 3 - 1
Tests/Admin/AdminTest.php

@@ -1624,7 +1624,7 @@ class AdminTest extends \PHPUnit_Framework_TestCase
     {
         $expected = array(
             'create' => array(
-                'template' => 'SonataAdminBundle:Button:create_button.html.twig',
+                'template' => 'Foo.html.twig',
             ),
         );
 
@@ -1646,6 +1646,8 @@ class AdminTest extends \PHPUnit_Framework_TestCase
             ->will($this->returnValue(true));
         $admin->setRouteGenerator($routeGenerator);
 
+        $admin->setTemplate('button_create', 'Foo.html.twig');
+
         $this->assertSame($expected, $admin->getActionButtons('list', null));
     }
 

+ 1 - 0
Tests/DependencyInjection/Compiler/AddDependencyCallsCompilerPassTest.php

@@ -254,6 +254,7 @@ class AddDependencyCallsCompilerPassTest extends \PHPUnit_Framework_TestCase
                 case 'setTemplates':
                     $this->assertSame('foobar.twig.html', $parameters[0]['user_block']);
                     $this->assertSame('SonataAdminBundle:Pager:results.html.twig', $parameters[0]['pager_results']);
+                    $this->assertSame('SonataAdminBundle:Button:create_button.html.twig', $parameters[0]['button_create']);
                     break;
 
                 case 'setLabel':