Explorar o código

Refactoring the Menu/Breadcrumb management due to a change in the KnpLab Menu lib

Thomas Rabaix %!s(int64=14) %!d(string=hai) anos
pai
achega
fc187bf483

+ 18 - 9
Admin/Admin.php

@@ -36,8 +36,8 @@ use Sonata\AdminBundle\Security\Handler\SecurityHandlerInterface;
 use Sonata\AdminBundle\Route\RouteCollection;
 use Sonata\AdminBundle\Model\ModelManagerInterface;
 
-use Knp\Bundle\MenuBundle\Menu;
-use Knp\Bundle\MenuBundle\MenuItem;
+use Knp\Menu\MenuFactory;
+use Knp\Menu\MenuItem;
 
 abstract class Admin implements AdminInterface, DomainObjectInterface
 {
@@ -398,7 +398,7 @@ abstract class Admin implements AdminInterface, DomainObjectInterface
     }
 
     /**
-     * @param \Knp\Bundle\MenuBundle\MenuItem $menu
+     * @param \Knp\Menu\MenuItem $menu
      * @param $action
      * @param null|Admin $childAdmin
      * @return void
@@ -1099,7 +1099,8 @@ abstract class Admin implements AdminInterface, DomainObjectInterface
 
         $this->loaded['side_menu'] = true;
 
-        $menu = new Menu;
+        $menuFactory = new MenuFactory();
+        $menu = $menuFactory->createItem('root');
 
         $this->configureSideMenu($menu, $action, $childAdmin);
 
@@ -1639,7 +1640,7 @@ abstract class Admin implements AdminInterface, DomainObjectInterface
      * Generates the breadcrumbs array
      *
      * @param string $action
-     * @param \Knp\Bundle\MenuBundle\MenuItem|null $menu
+     * @param \Knp\Menu\MenuItem|null $menu
      * @return array
      */
     public function buildBreadcrumbs($action, MenuItem $menu = null)
@@ -1648,11 +1649,19 @@ abstract class Admin implements AdminInterface, DomainObjectInterface
             return $this->breadcrumbs[$action];
         }
 
-        $menu = $menu ?: new Menu;
+        if (!$menu) {
+            $factory = new MenuFactory();
+            $menu = $factory->createItem('root');
+        }
 
         $child = $menu->addChild(
+            $this->trans('breadcrumb.dashboard', array(), 'SonataAdminBundle'),
+            array('uri' => $this->router->generate('sonata_admin_dashboard'))
+        );
+
+        $child = $child->addChild(
             $this->trans(sprintf('breadcrumb.link_%s_list', $this->getClassnameLabel())),
-            $this->generateUrl('list')
+            array('uri' => $this->generateUrl('list'))
         );
 
         $childAdmin = $this->getCurrentChildAdmin();
@@ -1662,7 +1671,7 @@ abstract class Admin implements AdminInterface, DomainObjectInterface
 
             $child = $child->addChild(
                 (string) $this->getSubject(),
-                $this->generateUrl('edit', array('id' => $id))
+                array('uri' => $this->generateUrl('edit', array('id' => $id)))
             );
 
             return $childAdmin->buildBreadcrumbs($action, $child);
@@ -1670,7 +1679,7 @@ abstract class Admin implements AdminInterface, DomainObjectInterface
             if ($action != 'list') {
                 $menu = $menu->addChild(
                     $this->trans(sprintf('breadcrumb.link_%s_list', $this->getClassnameLabel())),
-                    $this->generateUrl('list')
+                    array('uri' => $this->generateUrl('list'))
                 );
             }
 

+ 2 - 2
Admin/AdminExtensionInterface.php

@@ -18,7 +18,7 @@ use Sonata\AdminBundle\Route\RouteCollection;
 use Sonata\AdminBundle\Validator\ErrorElement;
 use Sonata\AdminBundle\Admin\AdminInterface;
 
-use Knp\Bundle\MenuBundle\MenuItem;
+use Knp\Menu\MenuItem;
 
 interface AdminExtensionInterface
 {
@@ -61,7 +61,7 @@ interface AdminExtensionInterface
     /**
      * @abstract
      * @param Admin $admin
-     * @param \Knp\Bundle\MenuBundle\MenuItem $menu
+     * @param \Knp\Menu\MenuItem $menu
      * @param string $action
      * @param null|Admin $childAdmin
      * @return void

+ 5 - 0
CHANGES

@@ -1,3 +1,8 @@
+04/09/2011
+----------
+* Add a delete option on widget with edit = list
+* Refactoring the Menu/Breadcrumb management due to a change in the KnpLab Menu lib
+
 03/08/2011
 ----------
 * remove property definitions

+ 15 - 6
Resources/doc/reference/installation.rst

@@ -10,25 +10,29 @@ the following lines to the file ``deps``::
   [SonatajQueryBundle]
       git=http://github.com/sonata-project/SonatajQueryBundle.git
       target=/bundles/Sonata/jQueryBundle
-  
+
   [SonataBluePrintBundle]
       git=http://github.com/sonata-project/SonataBluePrintBundle.git
       target=/bundles/Sonata/BluePrintBundle
-  
+
   [SonataUserBundle]
       git=http://github.com/sonata-project/SonataUserBundle.git
       target=/bundles/Sonata/UserBundle
-      
+
   [SonataAdminBundle]
       git=http://github.com/sonata-project/SonataAdminBundle.git
       target=/bundles/Sonata/AdminBundle
-  
+
   [MenuBundle]
       git=http://github.com/knplabs/KnpMenuBundle.git
       target=/bundles/Knp/Bundle/MenuBundle
 
+  [KnpMenu]
+      git=https://github.com/knplabs/KnpMenu.git
+      target=/knp/menu
+
 and run::
-  
+
   bin/vendors install
 
 If you are using git, you can add them as submodules::
@@ -37,6 +41,7 @@ If you are using git, you can add them as submodules::
   git submodule add git://github.com/sonata-project/SonataBluePrintBundle.git vendor/bundles/Sonata/BluePrintBundle
   git submodule add git://github.com/sonata-project/SonataAdminBundle.git vendor/bundles/Sonata/AdminBundle
   git submodule add git://github.com/knplabs/KnpMenuBundle.git vendor/bundles/Knp/Bundle/MenuBundle
+  git submodule add git://github.com/knplabs/KnpMenu.git vendor/knp/menu
 
 If you are not using git, you will have to download them :
 
@@ -44,6 +49,7 @@ If you are not using git, you will have to download them :
   - https://github.com/sonata-project/SonataBluePrintBundle/archives/master
   - https://github.com/sonata-project/SonataAdminBundle/archives/master
   - https://github.com/knplabs/KnpMenuBundle/archives/master
+  - https://github.com/knplabs/KnpMenu/archives/master
 
 Configuration
 -------------
@@ -57,7 +63,10 @@ files:
   $loader->registerNamespaces(array(
       // ...
       'Sonata'                         => __DIR__.'/../vendor/bundles',
-      'Knp'                            => __DIR__.'/../vendor/bundles',
+      'Knp'                             => array(
+          __DIR__.'/../vendor/bundles',
+          __DIR__.'/../vendor/knp/menu/src',
+      ),
       // ...
   ));
 

+ 1 - 1
Resources/doc/reference/update.rst

@@ -18,7 +18,7 @@ Example :
     use Sonata\AdminBundle\Datagrid\ListMapper;
     use Sonata\AdminBundle\Show\ShowMapper;
 
-    use Knp\Bundle\MenuBundle\MenuItem;
+    use Knp\Menu\MenuItem;
 
     use Application\Sonata\NewsBundle\Entity\Comment;
 

+ 4 - 4
Resources/doc/tutorial/creating_your_first_admin_class/defining_admin_class.rst

@@ -22,7 +22,7 @@ First, you need to create an Admin/PostAdmin.php file
     use Sonata\AdminBundle\Datagrid\ListMapper;
     use Sonata\AdminBundle\Show\ShowMapper;
 
-    use Knp\Bundle\MenuBundle\MenuItem;
+    use Knp\Menu\MenuItem;
 
     use Application\Sonata\NewsBundle\Entity\Comment;
 
@@ -111,12 +111,12 @@ First, you need to create an Admin/PostAdmin.php file
 
             $menu->addChild(
                 $this->trans('view_post'),
-                $admin->generateUrl('edit', array('id' => $id))
+                array('uri' => $admin->generateUrl('edit', array('id' => $id)))
             );
 
             $menu->addChild(
                 $this->trans('link_view_comment'),
-                $admin->generateUrl('sonata.news.admin.comment.list', array('id' => $id))
+                array('uri' => $admin->generateUrl('sonata.news.admin.comment.list', array('id' => $id)))
             );
         }
     }
@@ -167,7 +167,7 @@ You can specify which field you want displayed for each action (list, form and f
     use Sonata\AdminBundle\Datagrid\DatagridMapper;
     use Sonata\AdminBundle\Datagrid\ListMapper;
 
-    use Knp\Bundle\MenuBundle\MenuItem;
+    use Knp\Menu\MenuItem;
 
     use Application\Sonata\NewsBundle\Entity\Comment;
 

+ 4 - 0
Resources/translations/SonataAdminBundle.ca.xliff

@@ -150,6 +150,10 @@
               <source>flash_delete_success</source>
               <target>S'ha eliminat correctament l'element.</target>
             </trans-unit>
+            <trans-unit id="link_breadcrumb_dashboard">
+                <source>breadcrumb.dashboard</source>
+                <target>&#8962;</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.de.xliff

@@ -150,6 +150,10 @@
               <source>flash_delete_success</source>
               <target>Element wurde erfolgreich gelöscht.</target>
             </trans-unit>
+            <trans-unit id="link_breadcrumb_dashboard">
+                <source>breadcrumb.dashboard</source>
+                <target>&#8962;</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.en.xliff

@@ -150,6 +150,10 @@
               <source>flash_delete_success</source>
               <target>Item has been deleted successfully.</target>
             </trans-unit>
+            <trans-unit id="link_breadcrumb_dashboard">
+                <source>breadcrumb.dashboard</source>
+                <target>&#8962;</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.es.xliff

@@ -86,6 +86,10 @@
                 <source>link_expand</source>
                 <target>expandir/colapsar</target>
             </trans-unit>
+            <trans-unit id="link_breadcrumb_dashboard">
+                <source>breadcrumb.dashboard</source>
+                <target>&#8962;</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.fr.xliff

@@ -150,6 +150,10 @@
               <source>flash_delete_success</source>
               <target>Les éléments ont été supprimés avec succès.</target>
             </trans-unit>
+            <trans-unit id="link_breadcrumb_dashboard">
+                <source>breadcrumb.dashboard</source>
+                <target>&#8962;</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.it.xliff

@@ -150,6 +150,10 @@
               <source>flash_delete_success</source>
               <target>Elemento eliminato con successo.</target>
             </trans-unit>
+            <trans-unit id="link_breadcrumb_dashboard">
+                <source>breadcrumb.dashboard</source>
+                <target>&#8962;</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.ja.xliff

@@ -110,6 +110,10 @@
                 <source>action_show</source>
                 <target>表示</target>
             </trans-unit>
+            <trans-unit id="link_breadcrumb_dashboard">
+                <source>breadcrumb.dashboard</source>
+                <target>&#8962;</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.nl.xliff

@@ -102,6 +102,10 @@
                 <source>action_show</source>
                 <target>Bekijk</target>
             </trans-unit>
+            <trans-unit id="link_breadcrumb_dashboard">
+                <source>breadcrumb.dashboard</source>
+                <target>&#8962;</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.pl.xliff

@@ -114,6 +114,10 @@
                 <source>all_elements</source>
                 <target>Wszystkie</target>
             </trans-unit>
+            <trans-unit id="link_breadcrumb_dashboard">
+                <source>breadcrumb.dashboard</source>
+                <target>&#8962;</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.pt_BR.xliff

@@ -114,6 +114,10 @@
                 <source>all_elements</source>
                 <target>Todos os resultados</target>
             </trans-unit>
+            <trans-unit id="link_breadcrumb_dashboard">
+                <source>breadcrumb.dashboard</source>
+                <target>&#8962;</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.pt_PT.xliff

@@ -150,6 +150,10 @@
               <source>flash_delete_success</source>
               <target>O item foi apagado com sucesso.</target>
             </trans-unit>
+            <trans-unit id="link_breadcrumb_dashboard">
+                <source>breadcrumb.dashboard</source>
+                <target>&#8962;</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.ru.xliff

@@ -114,6 +114,10 @@
                 <source>all_elements</source>
                 <target>Для всех записей</target>
             </trans-unit>
+            <trans-unit id="link_breadcrumb_dashboard">
+                <source>breadcrumb.dashboard</source>
+                <target>&#8962;</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.uk.xliff

@@ -86,6 +86,10 @@
                 <source>link_expand</source>
                 <target>розвернути/звернути</target>
             </trans-unit>
+            <trans-unit id="link_breadcrumb_dashboard">
+                <source>breadcrumb.dashboard</source>
+                <target>&#8962;</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 1 - 1
Resources/views/CRUD/action.html.twig

@@ -24,7 +24,7 @@ file that was distributed with this source code.
     </div>
 {% endblock %}
 
-{% block side_menu %}{% if action is defined %}{{ admin.sidemenu(action).render|raw }}{% endif %}{% endblock %}
+{% block side_menu %}{% if action is defined %}{{ admin.sidemenu(action)|knp_menu_render('list') }}{% endif %}{% endblock %}
 
 {% block content %}
 

+ 1 - 1
Resources/views/CRUD/base_edit.html.twig

@@ -27,7 +27,7 @@ file that was distributed with this source code.
     </div>
 {% endblock %}
 
-{% block side_menu %}{{ admin.sidemenu(action).render|raw }}{% endblock %}
+{% block side_menu %}{{ admin.sidemenu(action)|knp_menu_render('list') }}{% endblock %}
 
 {% block form %}
 

+ 1 - 1
Resources/views/CRUD/base_list.html.twig

@@ -21,7 +21,7 @@ file that was distributed with this source code.
     </div>
 {% endblock %}
 
-{% block side_menu %}{{ admin.sidemenu(action).render|raw }}{% endblock %}
+{% block side_menu %}{{ admin.sidemenu(action)|knp_menu_render('list') }}{% endblock %}
 
 {% block list_table %}
     {% set batchactions = admin.batchactions %}

+ 1 - 1
Resources/views/CRUD/base_show.html.twig

@@ -25,7 +25,7 @@ file that was distributed with this source code.
     </div>
 {% endblock %}
 
-{% block side_menu %}{{ admin.sidemenu(action).render|raw }}{% endblock %}
+{% block side_menu %}{{ admin.sidemenu(action)|knp_menu_render('list') }}{% endblock %}
 
 {% block show %}
     <div class="sonata-ba-view">