From d76e0223553d41edfdf105b3752fd5d49c06da7b Mon Sep 17 00:00:00 2001
From: Sebastian Castro <90scastro@gmail.com>
Date: Fri, 29 Mar 2019 11:56:15 +0100
Subject: [PATCH] Display number of new messages and errors in admin logo title

---
 CHANGELOG.md                                  |  1 +
 .../SonataAdminBundle/views/layout.html.twig  | 29 +++++++++++++++++++
 app/config/config_sonata.yml                  |  2 --
 app/config/services.yml                       |  1 +
 src/Application/Twig/AppExtension.php         | 17 +++++++++++
 5 files changed, 48 insertions(+), 2 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9ad8f8b04..17ccf9254 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,7 @@
 v2.3.1
 ======
 
+* FEATURE: Display number of messages and errors in admin top header
 * FEATURE: Add license url for the data
 * BUG: Fix using images in marker popup template
 
diff --git a/app/Resources/SonataAdminBundle/views/layout.html.twig b/app/Resources/SonataAdminBundle/views/layout.html.twig
index fefa157e7..5bc038cbf 100755
--- a/app/Resources/SonataAdminBundle/views/layout.html.twig
+++ b/app/Resources/SonataAdminBundle/views/layout.html.twig
@@ -75,6 +75,11 @@
         }
         .text-and-iframe-container:before { display: table; content: " "; }
         .text-and-iframe-container:after { clear: both; display: table; content: " ";}
+
+        .main-header { display: flex; }
+        .main-header .logo { width: auto; }
+        .main-header .logo label:hover { cursor: pointer; }
+        .main-header .navbar { flex: auto; margin-left: 0; }
     </style>
     
 
@@ -144,6 +149,30 @@
 
 {% endblock %}
 
+{% block logo %}
+    {% spaceless %}
+        <a class="logo" href="{{ path('sonata_admin_dashboard') }}">
+            <img src="{{ asset('assets/img/default-icon.png') }}">
+            <span>GoGoCarto Administration</span>
+            {% set newMsgsCount = new_msgs_count() %}
+            {% if newMsgsCount > 0 %}
+                <label class="label label-info" style="margin-left: 6px">
+                    <i class="fa fa-bell" style="margin-right: 3px;"></i>
+                    {{ newMsgsCount }} {{ newMsgsCount == 1 ? ' message' : ' messages' }}
+                </label>
+            {% endif %}
+            {% set newErrorsCount = errors_count() %}
+            {% if newErrorsCount > 0 %}
+                <label class="label label-danger" style="margin-left: 6px">
+                    <i class="fa fa-warning" style="margin-right: 3px;"></i>
+                    {{ newErrorsCount }} {{ newErrorsCount == 1 ? 'erreur' : 'erreurs' }}
+                </label>
+            {% endif %}
+            
+        </a>
+    {% endspaceless %}
+{% endblock %}
+
 {% block sonata_sidebar_search %}
     <div class="btn-group side-bar-links">
       <a type="button" href={{ path('biopen_homepage') }} target='_blank' class="btn btn-primary">Retour au site</a>
diff --git a/app/config/config_sonata.yml b/app/config/config_sonata.yml
index 2238c9c6a..07e629506 100755
--- a/app/config/config_sonata.yml
+++ b/app/config/config_sonata.yml
@@ -54,8 +54,6 @@ sonata_formatter:
             extensions: [] # Twig formatter cannot have extensions
 
 sonata_admin:
-    title:                'GoGoCarto Administration'
-    # title_logo:           'assets/img/favicon.png'
     security:
         handler: sonata.admin.security.handler.role
     options:
diff --git a/app/config/services.yml b/app/config/services.yml
index 7a10c1e4b..022d8948a 100755
--- a/app/config/services.yml
+++ b/app/config/services.yml
@@ -16,5 +16,6 @@ services:
     app.twig_extension:
         class: Application\Twig\AppExtension
         public: false
+        arguments: [ "@doctrine.odm.mongoDB.document_manager" ]
         tags:
             - { name: twig.extension }
\ No newline at end of file
diff --git a/src/Application/Twig/AppExtension.php b/src/Application/Twig/AppExtension.php
index 885274731..8087051d9 100644
--- a/src/Application/Twig/AppExtension.php
+++ b/src/Application/Twig/AppExtension.php
@@ -9,6 +9,11 @@ use Biopen\SaasBundle\Helper\SaasHelper;
 
 class AppExtension extends AbstractExtension
 {
+    public function __construct($dm)
+    {
+        $this->dm = $dm;
+    }
+
     public function getFilters()
     {
         return array(
@@ -25,6 +30,8 @@ class AppExtension extends AbstractExtension
     {
         return array(
             new TwigFunction('is_root_project', array($this, 'isRootProject')),
+            new TwigFunction('new_msgs_count', array($this, 'getNewMessagesCount')),
+            new TwigFunction('errors_count', array($this, 'getErrorsCount')),
         );
     }
 
@@ -33,4 +40,14 @@ class AppExtension extends AbstractExtension
         $sassHelper = new SaasHelper();
         return $sassHelper->isRootProject();
     }
+
+    public function getNewMessagesCount()
+    {
+        return count($this->dm->getRepository('BiopenCoreBundle:GoGoLog')->findBy(['type' => 'update', 'hidden' => false])); 
+    }
+
+    public function getErrorsCount()
+    {
+        return count($this->dm->getRepository('BiopenCoreBundle:GoGoLog')->findBy(['level' => 'error', 'hidden' => false])); 
+    }
 }
\ No newline at end of file
-- 
GitLab