Переглянути джерело

Added upgrade instructions, minor fixes, deprecations

Hugo Briand 11 роки тому
батько
коміт
3f2308a490

+ 40 - 13
Admin/Admin.php

@@ -407,7 +407,7 @@ abstract class Admin implements AdminInterface, DomainObjectInterface
         'view_fields'   => false,
         'view_groups'   => false,
         'routes'        => false,
-        'side_menu'     => false,
+        'tab_menu'      => false,
     );
 
     /**
@@ -502,13 +502,37 @@ abstract class Admin implements AdminInterface, DomainObjectInterface
     }
 
     /**
-     * {@inheritdoc}
+     * DEPRECATED: Use configureTabMenu instead
+     *
+     * @param MenuItemInterface $menu
+     * @param                   $action
+     * @param AdminInterface    $childAdmin
+     *
+     * @return mixed
+     *
+     * @deprecated Use configureTabMenu instead
      */
     protected function configureSideMenu(MenuItemInterface $menu, $action, AdminInterface $childAdmin = null)
     {
 
     }
 
+    /**
+     * Configures the tab menu in your admin
+     *
+     * @param MenuItemInterface $menu
+     * @param                   $action
+     * @param AdminInterface    $childAdmin
+     *
+     * @return mixed
+     */
+    protected function configureTabMenu(MenuItemInterface $menu, $action, AdminInterface $childAdmin = null)
+    {
+        // Use configureSideMenu not to mess with previous overrides
+        // TODO remove once deprecation period is over
+        $this->configureSideMenu($menu, $action, $childAdmin);
+    }
+
     /**
      * {@inheritdoc}
      */
@@ -1422,20 +1446,15 @@ abstract class Admin implements AdminInterface, DomainObjectInterface
     }
 
     /**
-     * Build the side menu related to the current action
-     *
-     * @param string                                   $action
-     * @param \Sonata\AdminBundle\Admin\AdminInterface $childAdmin
-     *
-     * @return \Knp\Menu\ItemInterface|boolean
+     * {@inheritdoc}
      */
-    public function buildSideMenu($action, AdminInterface $childAdmin = null)
+    public function buildTabMenu($action, AdminInterface $childAdmin = null)
     {
-        if ($this->loaded['side_menu']) {
+        if ($this->loaded['tab_menu']) {
             return;
         }
 
-        $this->loaded['side_menu'] = true;
+        $this->loaded['tab_menu'] = true;
 
         $menu = $this->menuFactory->createItem('root');
         $menu->setChildrenAttribute('class', 'nav nav-tabs');
@@ -1445,15 +1464,23 @@ abstract class Admin implements AdminInterface, DomainObjectInterface
             $menu->setCurrentUri($this->getRequest()->getBaseUrl().$this->getRequest()->getPathInfo());
         }
 
-        $this->configureSideMenu($menu, $action, $childAdmin);
+        $this->configureTabMenu($menu, $action, $childAdmin);
 
         foreach ($this->getExtensions() as $extension) {
-            $extension->configureSideMenu($this, $menu, $action, $childAdmin);
+            $extension->configureTabMenu($this, $menu, $action, $childAdmin);
         }
 
         $this->menu = $menu;
     }
 
+    /**
+     * {@inheritdoc}
+     */
+    public function buildSideMenu($action, AdminInterface $childAdmin = null)
+    {
+        return $this->buildTabMenu($action, $childAdmin);
+    }
+
     /**
      * @param string                                   $action
      * @param \Sonata\AdminBundle\Admin\AdminInterface $childAdmin

+ 10 - 0
Admin/AdminExtension.php

@@ -59,6 +59,16 @@ abstract class AdminExtension implements AdminExtensionInterface
     public function configureSideMenu(AdminInterface $admin, MenuItemInterface $menu, $action, AdminInterface $childAdmin = null)
     {}
 
+    /**
+     * {@inheritdoc}
+     */
+    public function configureTabMenu(AdminInterface $admin, MenuItemInterface $menu, $action, AdminInterface $childAdmin = null)
+    {
+        // Use configureSideMenu not to mess with previous overrides
+        // TODO remove once deprecation period is over
+        $this->configureSideMenu($admin, $menu, $action, $childAdmin);
+    }
+
     /**
      * {@inheritdoc}
      */

+ 16 - 0
Admin/AdminExtensionInterface.php

@@ -53,15 +53,31 @@ interface AdminExtensionInterface
     public function configureRoutes(AdminInterface $admin, RouteCollection $collection);
 
     /**
+     * DEPRECATED: Use configureTabMenu instead
+     *
      * @param AdminInterface    $admin
      * @param MenuItemInterface $menu
      * @param string            $action
      * @param AdminInterface    $childAdmin
      *
      * @return mixed
+     *
+     * @deprecated
      */
     public function configureSideMenu(AdminInterface $admin, MenuItemInterface $menu, $action, AdminInterface $childAdmin = null);
 
+    /**
+     * Builds the tab menu
+     *
+     * @param AdminInterface    $admin
+     * @param MenuItemInterface $menu
+     * @param string            $action
+     * @param AdminInterface    $childAdmin
+     *
+     * @return mixed
+     */
+    public function configureTabMenu(AdminInterface $admin, MenuItemInterface $menu, $action, AdminInterface $childAdmin = null);
+
     /**
      * @param AdminInterface $admin
      * @param ErrorElement   $errorElement

+ 23 - 0
Admin/AdminInterface.php

@@ -24,6 +24,7 @@ use Sonata\AdminBundle\Validator\ErrorElement;
 use Sonata\AdminBundle\Route\RouteGeneratorInterface;
 
 use Knp\Menu\FactoryInterface as MenuFactoryInterface;
+use Knp\Menu\ItemInterface as MenuItemInterface;
 
 use Symfony\Component\Validator\ValidatorInterface;
 use Symfony\Component\Translation\TranslatorInterface;
@@ -982,4 +983,26 @@ interface AdminInterface
      * @return string
      */
     public function getTranslationLabel($label, $context = '', $type = '');
+
+    /**
+     * DEPRECATED: Use buildTabMenu instead
+     *
+     * @param string                                   $action
+     * @param \Sonata\AdminBundle\Admin\AdminInterface $childAdmin
+     *
+     * @return \Knp\Menu\ItemInterface|boolean
+     *
+     * @deprecated Use buildTabMenu instead
+     */
+    public function buildSideMenu($action, AdminInterface $childAdmin = null);
+
+    /**
+     * Build the tab menu related to the current action
+     *
+     * @param string                                   $action
+     * @param \Sonata\AdminBundle\Admin\AdminInterface $childAdmin
+     *
+     * @return \Knp\Menu\ItemInterface|boolean
+     */
+    public function buildTabMenu($action, AdminInterface $childAdmin = null);
 }

+ 6 - 1
Resources/public/css/styles.css

@@ -35,7 +35,6 @@ body {
     border-bottom: 1px solid #e7e7e7;
 }
 
-
 /* navigation */
 
 .navbar-brand {
@@ -53,6 +52,12 @@ body {
     padding: 0 10px;
 }
 
+/* breadcrumb */
+
+.sonata-bc ol.breadcrumb {
+    margin-top: 8px;
+}
+
 /* top right */
 
 .navbar-static-top {

+ 4 - 2
Resources/views/standard_layout.html.twig

@@ -244,8 +244,10 @@ file that was distributed with this source code.
                     </div>
 
                     {% block sonata_page_content %}
-                        {{ _tab_menu|raw }}
-                        <br/>
+                        {% if _tab_menu is not empty %}
+                            {{ _tab_menu|raw }}
+                            <br/>
+                        {% endif %}
 
                         {% block notice %}
                             {% include 'SonataCoreBundle:FlashMessage:render.html.twig' %}

+ 16 - 0
UPGRADE-2.3-bootstrap3.md

@@ -0,0 +1,16 @@
+UPGRADE FROM 2.2 to 2.3 (Bootstrap3 theming)
+============================================
+
+### Dependencies
+
+You'll need to follow the dependencies upgrade instructions.
+
+### Templates
+
+ - ``standard_layout.html.twig`` has been updated (refactored layout accordingly to the theme). Some blocks have been moved, and the sonata_side_nav twig block became the main menu.
+ - Admin's sidemenus are now tab-menus; former tab-menus are now collapsible items.
+
+### Admin classes
+
+ - ``configureSideMenu`` and ``buildSideMenu`` methods of the ``Admin`` class have been deprecated; they are replaced by ``configureTabMenu`` and ``buildTabMenu``.
+