Forráskód Böngészése

Add option to edit title and logo
Integrate the SonataUserBundle if available

Thomas Rabaix 13 éve
szülő
commit
8fc37bb627

+ 24 - 2
Admin/Pool.php

@@ -25,12 +25,18 @@ class Pool
 
     protected $templates    = array();
 
+    protected $title;
+
+    protected $titleLogo;
+
     /**
      * @param \Symfony\Component\DependencyInjection\ContainerInterface $container
      */
-    public function __construct(ContainerInterface $container)
+    public function __construct(ContainerInterface $container, $title, $logoTitle)
     {
-        $this->container = $container;
+        $this->container  = $container;
+        $this->title      = $title;
+        $this->titleLogo  = $logoTitle;
     }
 
     /**
@@ -207,4 +213,20 @@ class Pool
 
         return null;
     }
+
+    /**
+     * @return string
+     */
+    public function getTitleLogo()
+    {
+        return $this->titleLogo;
+    }
+
+    /**
+     * @return string
+     */
+    public function getTitle()
+    {
+        return $this->title;
+    }
 }

+ 4 - 0
DependencyInjection/Configuration.php

@@ -46,6 +46,9 @@ class Configuration implements ConfigurationInterface
             ->children()
                 ->scalarNode('security_handler')->defaultValue('sonata.admin.security.handler.noop')->end()
 
+                ->scalarNode('title')->defaultValue('Sonata > ')->cannotBeEmpty()->end()
+                ->scalarNode('title_logo')->defaultValue('/bundles/sonataadmin/logo_title.png')->cannotBeEmpty()->end()
+
                 ->arrayNode('dashboard_groups')
                     ->useAttributeAsKey('id')
                     ->prototype('array')
@@ -84,6 +87,7 @@ class Configuration implements ConfigurationInterface
                 ->arrayNode('templates')
                     ->addDefaultsIfNotSet()
                     ->children()
+                        ->scalarNode('user_block')->defaultValue('SonataAdminBundle:Core:user_block.html.twig')->cannotBeEmpty()->end()
                         ->scalarNode('layout')->defaultValue('SonataAdminBundle::standard_layout.html.twig')->cannotBeEmpty()->end()
                         ->scalarNode('ajax')->defaultValue('SonataAdminBundle::ajax_layout.html.twig')->cannotBeEmpty()->end()
                         ->scalarNode('list')->defaultValue('SonataAdminBundle:CRUD:list.html.twig')->cannotBeEmpty()->end()

+ 11 - 0
DependencyInjection/SonataAdminExtension.php

@@ -37,6 +37,15 @@ class SonataAdminExtension extends Extension
      */
     public function load(array $configs, ContainerBuilder $container)
     {
+        if (class_exists('Sonata\UserBundle\SonataUserBundle')) {
+            // integrate the SonataUserBundle / FOSUserBundle if the bundle exists
+            array_unshift($configs, array(
+                'templates' => array(
+                    'user_block' => 'SonataUserBundle:Admin:Core/user_block.html.twig'
+                )
+            ));
+        }
+
         $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
         $loader->load('templates.xml');
         $loader->load('twig.xml');
@@ -51,6 +60,8 @@ class SonataAdminExtension extends Extension
 
         $pool = $container->getDefinition('sonata.admin.pool');
         $pool->addMethodCall('setTemplates', array($config['templates']));
+        $pool->replaceArgument(1, $config['title']);
+        $pool->replaceArgument(2, $config['title_logo']);
         $pool->addMethodCall('__hack__', $config);
 
         $container->setAlias('sonata.admin.security.handler', $config['security_handler']);

+ 2 - 0
Resources/config/core.xml

@@ -7,6 +7,8 @@
     <services>
         <service id="sonata.admin.pool" class="Sonata\AdminBundle\Admin\Pool">
             <argument type="service" id="service_container" />
+            <argument />
+            <argument />
         </service>
 
         <service id="sonata.admin.route_loader" class="Sonata\AdminBundle\Route\AdminPoolLoader">

BIN
Resources/public/logo_title.png


+ 1 - 0
Resources/views/Core/user_blog.html.twig

@@ -0,0 +1 @@
+{% block user_block %}Customize this value{% endblock %}

+ 21 - 14
Resources/views/standard_layout.html.twig

@@ -76,22 +76,29 @@ file that was distributed with this source code.
             <div class="topbar">
                 <div class="topbar-inner">
                     <div class="container-fluid">
-                        <a href="{{ url('sonata_admin_dashboard') }}" class="brand">{% trans from 'SonataAdminBundle' %}Admin{% endtrans %}</a>
                         {% if admin_pool is defined %}
-                            <ul class="nav">
-                                {% for group in admin_pool.dashboardgroups %}
-                                    <li class="dropdown">
-                                        <a href="#" class="dropdown-toggle">{{ group.label|trans({}, 'SonataAdminBundle') }}</a>
-                                        <ul class="dropdown-menu">
-                                            {% for admin in group.items %}
-                                                <li><a href="{{ admin.generateUrl('list')}}">{{ admin.label|trans({}, admin.translationdomain) }}</a></li>
-                                            {% endfor %}
-                                        </ul>
-                                    </li>
-                                {% endfor %}
-                            </ul>
+                            {% block logo %}
+                                <a href="{{ url('sonata_admin_dashboard') }}" class="brand" style="margin: 0px; padding: 0px;  line-height: 40px;">
+                                    <img src="{{ asset(admin_pool.titlelogo) }}" style="margin:0px; padding: 0px;  padding-right: 5px; height: 28px; vertical-align: middle;" />
+                                    {{ admin_pool.title }}
+                                </a>
+                            {% endblock %}
+                            {% if app.user %}
+                                <ul class="nav">
+                                    {% for group in admin_pool.dashboardgroups %}
+                                        <li class="dropdown">
+                                            <a href="#" class="dropdown-toggle">{{ group.label|trans({}, 'SonataAdminBundle') }}</a>
+                                            <ul class="dropdown-menu">
+                                                {% for admin in group.items %}
+                                                    <li><a href="{{ admin.generateUrl('list')}}">{{ admin.label|trans({}, admin.translationdomain) }}</a></li>
+                                                {% endfor %}
+                                            </ul>
+                                        </li>
+                                    {% endfor %}
+                                </ul>
+                            {% endif %}
+                            <p class="pull-right">{% include admin_pool.getTemplate('user_block') %}</p>
                         {% endif %}
-                        <p class="pull-right">{% block user_block %}<a href="#">Login/Logout</a>{% endblock %}</p>
                     </div>
                 </div>
             </div>