From 2574d514267f51787c69b0763afe3030d9c6b250 Mon Sep 17 00:00:00 2001
From: pbarroca <pbarroca@afi-sa.fr>
Date: Tue, 10 Nov 2015 16:52:08 +0100
Subject: [PATCH] rel #32494: var to activate sito in albums + tests

---
 library/Class/AdminVar.php                    |  9 ++-
 .../View/Helper/Admin/MenuGaucheAdmin.php     | 10 +++-
 .../admin/controllers/IndexControllerTest.php | 55 +++++++++++++++++++
 3 files changed, 71 insertions(+), 3 deletions(-)

diff --git a/library/Class/AdminVar.php b/library/Class/AdminVar.php
index 0899a65c3e3..62e63395411 100644
--- a/library/Class/AdminVar.php
+++ b/library/Class/AdminVar.php
@@ -199,6 +199,7 @@ class Class_AdminVarLoader extends Storm_Model_Loader {
                    'ALBUM_MEDIA_NO_AUTOINDEX_TITLE' => Class_AdminVar_Meta::newOnOff($this->_('Ne pas créer de zone 464 pour les médias dont le titre n\'est pas saisi'))->bePrivate(),
 
                    'BIBNUM' => Class_AdminVar_Meta::newOnOff($this->_('Activer ou désactiver la bibliothèque numérique'))->bePrivate(),
+                   'SITO_IN_ALBUMS' => Class_AdminVar_Meta::newOnOff($this->_('Gérer la sitothèque dans la bibliothèque numérique, nécessite l\'activation de la bibliothèque numérique'))->bePrivate(),
 
                    'CVS_BMKEY' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage CVS'))->bePrivate(),
                    'CVS_BMID' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage CVS'))->bePrivate(),
@@ -276,7 +277,7 @@ class Class_AdminVarLoader extends Storm_Model_Loader {
                    'PREMIERCHAPITRE_BMKEY' => Class_Adminvar_Meta::newDefault($this->_('Password du portail fourni par Premier-Chapitre'))->bePrivate(),
         ],
           'users' => ['NDAYS_EXPIRY_NOTICE' => Class_AdminVar_Meta::newDefault($this->_('Prévenir l\'utilisateur xx jour(s) avant l\'expiration de son abonnement (par défaut 30 jours).'), ['value' => 30]),
-                   'DISABLE_SUGGESTIONS' => Class_AdminVar_Meta::newOnOff($this->_('Désactivation des suggestions d\'achats'))->bePrivate(),
+                      'DISABLE_SUGGESTIONS' => Class_AdminVar_Meta::newOnOff($this->_('Désactivation des suggestions d\'achats'))->bePrivate(),
         ]
 
       ];
@@ -704,6 +705,12 @@ class Class_AdminVarLoader extends Storm_Model_Loader {
     return array_key_exists($name, $known_vars) ?
       $known_vars[$name] : Class_AdminVar_Meta::newDefault('');
   }
+
+
+  public function isSitoInAlbums() {
+    return Class_AdminVar::isBibNumEnabled()
+      && Class_AdminVar::get('SITO_IN_ALBUMS');
+  }
 }
 
 
diff --git a/library/ZendAfi/View/Helper/Admin/MenuGaucheAdmin.php b/library/ZendAfi/View/Helper/Admin/MenuGaucheAdmin.php
index 8849f4aed6c..5882ec6a917 100644
--- a/library/ZendAfi/View/Helper/Admin/MenuGaucheAdmin.php
+++ b/library/ZendAfi/View/Helper/Admin/MenuGaucheAdmin.php
@@ -74,7 +74,8 @@ class ZendAfi_View_Helper_Admin_MenuGaucheAdmin extends ZendAfi_View_Helper_Base
                       $this->filterAdmin($this->user))
 
       .$this->addMenu("sitotheque_16.png",      $this->translate()->_("Sitothèque"),             "/admin/sito",
-                      $this->filterAdmin($this->user) || $this->user->hasRightToAccess(Class_UserGroup::RIGHT_USER_SITOTHEQUE))
+                      !Class_AdminVar::isSitoInAlbums()
+                      && ($this->filterAdmin($this->user) || $this->user->hasRightToAccess(Class_UserGroup::RIGHT_USER_SITOTHEQUE)))
 
       .$this->addMenu("moderation_16.png",      $this->translate()->_("Modération"),             "/admin/modo/",
                       $this->filterAll($this->user),
@@ -131,7 +132,8 @@ class ZendAfi_View_Helper_Admin_MenuGaucheAdmin extends ZendAfi_View_Helper_Base
                       Class_AdminVar::isJamendoEnabled())
 
       .$this->addMenu("sitotheque_16.png",      $this->translate()->_("Sitothèque"),             "/admin/sito/create",
-                      $this->filterAdmin($this->user) || $this->user->hasRightToAccess(Class_UserGroup::RIGHT_USER_SITOTHEQUE))
+                      Class_AdminVar::isSitoInAlbums()
+                      && ($this->filterAdmin($this->user) || $this->user->hasRightToAccess(Class_UserGroup::RIGHT_USER_SITOTHEQUE)))
 
       /* disabled until interactive harvesting is implemented
       .$this->addMenu("oai_16.png",       $this->translate()->_("Cyberlibris"), "/admin/harvest/cyberlibris-browse",
@@ -340,8 +342,12 @@ class ZendAfi_View_Helper_Admin_MenuGaucheAdmin extends ZendAfi_View_Helper_Base
   }
 
   function addMenu($img, $titre, $lien, $access_allowed, $options=[]) {
+    if ('Sitothèque' == $titre)
+      xdebug_break();
+
     if (!$access_allowed)
       return '';
+
     if(!preg_match('^http://^',$lien))
       $lien = BASE_URL . $lien;
 
diff --git a/tests/application/modules/admin/controllers/IndexControllerTest.php b/tests/application/modules/admin/controllers/IndexControllerTest.php
index 41c78b0d873..bc5c2da26b7 100644
--- a/tests/application/modules/admin/controllers/IndexControllerTest.php
+++ b/tests/application/modules/admin/controllers/IndexControllerTest.php
@@ -78,6 +78,61 @@ class IndexControllerIndexTest extends Admin_AbstractControllerTestCase {
 
 
 
+abstract class IndexControllerIndexSitothequeTestCase extends Admin_AbstractControllerTestCase {
+  protected
+    $_storm_default_to_volatile = true,
+    $_cms_menu_path = '//div[@class="menuGaucheAdmin"][.//td[text()="Gestionnaire de contenu"]]',
+    $_bibnum_menu_path = '//div[@class="menuGaucheAdmin"][.//td[text()="Bibliothèque numérique"]]';
+
+}
+
+
+
+class IndexControllerIndexDefaultSitothequeTest extends IndexControllerIndexSitothequeTestCase {
+  public function setUp() {
+    parent::setUp();
+    $this->dispatch('/admin/index/index');
+  }
+
+
+  /** @test */
+  public function shouldDisplaySitothequeItemInContentManagerMenu() {
+    $this->assertXPathContentContains($this->_cms_menu_path . '//a', 'Sitothèque');
+  }
+
+
+  /** @test */
+  public function shouldNotDisplaySitothequeItemInBibNumMenu() {
+    $this->assertNotXPathContentContains($this->_bibnum_menu_path . '//a', 'Sitothèque');
+  }
+}
+
+
+
+
+class IndexControllerIndexSitothequeInAlbumsTest extends IndexControllerIndexSitothequeTestCase {
+  public function setUp() {
+    parent::setUp();
+    $this->fixture('Class_AdminVar', ['id' => 'BIBNUM', 'valeur' => '1']);
+    $this->fixture('Class_AdminVar', ['id' => 'SITO_IN_ALBUMS', 'valeur' => '1']);
+    $this->dispatch('/admin/index/index');
+  }
+
+  /** @test */
+  public function withSitoInAlbumsShouldNotDisplaySitothequeItemInContentManagerMenu() {
+    $this->assertNotXPathContentContains($this->_cms_menu_path . '//a', 'Sitothèque',
+                                         $this->_response->getBody());
+  }
+
+
+  /** @test */
+  public function withSitoInAlbumsShouldDisplaySitothequeItemInBibNumMenu() {
+    $this->assertXPathContentContains($this->_bibnum_menu_path . '//a', 'Sitothèque');
+  }
+}
+
+
+
 class IndexControllerHeartBeatTest extends Admin_AbstractControllerTestCase {
   /** @test */
   public function adminPageShouldContainsHeartbeatScript() {
-- 
GitLab