From 6b8ad931d15825f03fcc2afb18fa8efb9307a67e Mon Sep 17 00:00:00 2001
From: Laurent Laffont <llaffont@afi-sa.fr>
Date: Fri, 1 Sep 2017 16:15:27 +0200
Subject: [PATCH] dev #61993 kiosk admin front : use extended actions to change
 kiosk content

---
 .../ZendAfi/View/Helper/Accueil/Kiosque.php   | 53 +++++++++++--------
 .../ZendAfi/View/Helper/FonctionsAdmin.php    | 28 +++++-----
 public/admin/css/front_nav.css                |  8 +++
 public/opac/css/global.css                    |  8 ---
 .../View/Helper/Accueil/KiosqueTest.php       |  5 +-
 5 files changed, 55 insertions(+), 47 deletions(-)

diff --git a/library/ZendAfi/View/Helper/Accueil/Kiosque.php b/library/ZendAfi/View/Helper/Accueil/Kiosque.php
index 70e98f3a8cf..c59660584b3 100644
--- a/library/ZendAfi/View/Helper/Accueil/Kiosque.php
+++ b/library/ZendAfi/View/Helper/Accueil/Kiosque.php
@@ -69,20 +69,17 @@ class ZendAfi_View_Helper_Accueil_Kiosque extends ZendAfi_View_Helper_Accueil_Ba
     $this->contenu =  (in_array($this->preferences['style_liste'], ['mur', 'vignettes', 'chrono']))
       ? $this->getKiosqueHtml()
       : $this->getKiosqueIFrame();
-    $this->contenu = $this->getChangeKiosqueData() . $this->contenu;
+    $this->contenu = $this->contenu;
 
     return $this->getHtmlArray();
   }
 
 
-  public function getAddEditLinks() {
-    if (!Class_Users::isCurrentUserCanAccesBackend())
-      return '';
-
+  public function getEditLink() {
     if (!($this->preferences['id_catalogue'] && ($catalogue = Class_Catalogue::find($this->preferences['id_catalogue']))))
       return '';
 
-    $edit_link =  $this->view->tagAnchor($this->view->url(['module' => 'admin',
+    return  $this->view->tagAnchor($this->view->url(['module' => 'admin',
                                                            'controller' => 'catalogue',
                                                            'action' => 'edit',
                                                            'id_catalogue' => $this->preferences['id_catalogue']]),
@@ -91,10 +88,17 @@ class ZendAfi_View_Helper_Accueil_Kiosque extends ZendAfi_View_Helper_Accueil_Ba
                                                               ['title' => $this->view->_('Modifier le domaine : %s', htmlspecialchars($catalogue->getLibelle()))]),
                                          ['data-popup' => 'true']);
 
+  }
+
+
+  public function getAddLink() {
+    if (!($this->preferences['id_catalogue'] && ($catalogue = Class_Catalogue::find($this->preferences['id_catalogue']))))
+      return null;
+
     if (!$domaine_parent = $catalogue->getDomaineParent())
-      return $edit_link;
+      return null;
 
-    $add_link = $this->view->tagAnchor($this->view->url(['module' => 'admin',
+    return $this->view->tagAnchor($this->view->url(['module' => 'admin',
                                                          'controller' => 'catalogue',
                                                          'action' => 'add',
                                                          'id_catalogue' => $domaine_parent->getId(),
@@ -102,15 +106,23 @@ class ZendAfi_View_Helper_Accueil_Kiosque extends ZendAfi_View_Helper_Accueil_Ba
                                        Class_Admin_Skin::current()
                                          ->renderActionIconOn('add', $this->view, ['title' => $this->view->_('Afficher un nouveau domaine')]),
                                        ['data-popup' => 'true']);
-
-    return $edit_link.$add_link;
   }
 
 
-  public function getChangeKiosqueData() {
+  protected function _extendedActions() {
     if (!Class_Users::isCurrentUserCanAccesBackend())
-      return '<div style="display:none"></div>';
+      return null;
+
+    return [
+            function() { return $this->getChangeKiosqueData(); },
+            function() { return $this->getAddLink(); },
+            function() { return $this->getEditLink(); }
+    ];
+  }
 
+
+
+  public function getChangeKiosqueData() {
     $id_panier = isset($this->preferences['id_panier'])
       ? $this->preferences['id_panier']
       : 0;
@@ -126,17 +138,12 @@ class ZendAfi_View_Helper_Accueil_Kiosque extends ZendAfi_View_Helper_Accueil_Ba
                         'id_module' => $this->id_module
                         ],null,true);
 
-    return
-      $this->_tag('div',
-                  $this->getAddEditLinks() .
-                  $this->view->tagAnchor($change_kiosque_selection_url,
-                                         $this->view->tagImg(Class_Admin_Skin::current()
-                                                             ->getIconUrl('icons',
-                                                                          'domains'),
-                                                             ['title' => $this->view->_('Choisir un autre domaine')]),
-                                         ['data-popup'=>'true']),
-                  ['class' => 'change_kiosque_data configuration_module']);
-
+    return $this->view->tagAnchor($change_kiosque_selection_url,
+                                  $this->view->tagImg(Class_Admin_Skin::current()
+                                                      ->getIconUrl('icons',
+                                                                   'domains'),
+                                                      ['title' => $this->view->_('Choisir un autre domaine')]),
+                                  ['data-popup'=>'true']);
   }
 
 
diff --git a/library/ZendAfi/View/Helper/FonctionsAdmin.php b/library/ZendAfi/View/Helper/FonctionsAdmin.php
index 01d131763eb..a8872ea5e6a 100644
--- a/library/ZendAfi/View/Helper/FonctionsAdmin.php
+++ b/library/ZendAfi/View/Helper/FonctionsAdmin.php
@@ -34,18 +34,22 @@ class ZendAfi_View_Helper_FonctionsAdmin extends ZendAfi_View_Helper_BaseHelper
     $this->division = $division;
     $this->_current_skin = Class_Admin_Skin::current();
 
-    if (!Class_Users::isCurrentUserCanConfigFront())
-      return '';
-
-    return ($actions = trim($this->_extended($extended_actions) . ' '
-                            . $this->_config() . ' '
-                            . $this->_versions() . ' '
-                            . $this->_add() . ' '
-                            . $this->_delete())) ?
-      $this->_tag('div', $actions,
-                  ['class' => 'configuration_module',
-                   'style' => 'text-align:right']) :
-      '';
+    $actions = [$this->_extended($extended_actions)];
+
+    if (Class_Users::isCurrentUserCanConfigFront())
+      $actions = array_merge($actions,
+                             [$this->_config(),
+                              $this->_versions(),
+                              $this->_add(),
+                              $this->_delete()]);
+
+    $html = trim(implode(' ', array_filter($actions)));
+
+    return $html
+      ? $this->_tag('div', $html,
+                    ['class' => 'configuration_module',
+                     'style' => 'text-align:right'])
+      : '';
   }
 
 
diff --git a/public/admin/css/front_nav.css b/public/admin/css/front_nav.css
index a9b4efc3782..20d17cf5b70 100644
--- a/public/admin/css/front_nav.css
+++ b/public/admin/css/front_nav.css
@@ -120,7 +120,9 @@
     filter: invert(1);
 }
 
+
 #site_web_wrapper[data-show_admin_icons="true"] .configuration_module {
+    z-index: 101;
     display: block !important;
     position: absolute;
     right: 10px;
@@ -171,6 +173,12 @@
 }
 
 
+#site_web_wrapper .boite:hover .configuration_module {
+    height: 20px;
+    background-color: var(--line-highlight);
+}
+
+
 #site_web_wrapper a[href*="/admin"]:hover {
     border-color: black !important;
     background-color: white !important;
diff --git a/public/opac/css/global.css b/public/opac/css/global.css
index 27378cc4489..b14fcc8a308 100644
--- a/public/opac/css/global.css
+++ b/public/opac/css/global.css
@@ -35,13 +35,6 @@ a {
 
 
 /* Boites bannière*/
-.configuration_module {
-    z-index: 101;
-    position: relative; 
-    height: 0px;
-    float: right;
-    cursor:pointer;
-}
 
 .select_kiosque_form {
     margin-right:25px;
@@ -1063,7 +1056,6 @@ ul.view-raw-rss li {
 article,
 .colContenu,
 .kiosque .titre,
-.kiosque .contenu,
 .boite.kiosque {
     position: relative;
 }
diff --git a/tests/library/ZendAfi/View/Helper/Accueil/KiosqueTest.php b/tests/library/ZendAfi/View/Helper/Accueil/KiosqueTest.php
index a8c69d0746d..e1ef547edbc 100644
--- a/tests/library/ZendAfi/View/Helper/Accueil/KiosqueTest.php
+++ b/tests/library/ZendAfi/View/Helper/Accueil/KiosqueTest.php
@@ -303,9 +303,6 @@ class ZendAfi_View_Helper_Accueil_KiosqueRequetesAsRedacteurTest extends ZendAfi
   public function setUp() {
     parent::setUp();
 
-//    Storm_Test_ObjectWrapper::onLoaderOfModel('Class_PanierNotice')
-//      ->whenCalled('findAllBy')
-//      ->answers([$this->panier_films, $this->panier_livres]);
 
     $redacteur = Class_Users::newInstanceWithId(54)
       ->beModoBib()
@@ -324,7 +321,7 @@ class ZendAfi_View_Helper_Accueil_KiosqueRequetesAsRedacteurTest extends ZendAfi
 
   /** @test **/
   public function boiteKiosqueWithAdminLoggedShouldContainsLinkToChange() {
-    $this->assertXPath($this->_html, '//div[@class="boite kiosque"]//div[@class="change_kiosque_data configuration_module"]/a[contains(@href,"admin/modules/kiosque-change-data")]');
+    $this->assertXPath($this->_html, '//div[@class="boite kiosque"]//div[@class="configuration_module"]/a[contains(@href,"admin/modules/kiosque-change-data")]');
   }
 
 
-- 
GitLab