diff --git a/library/Class/AdminVar.php b/library/Class/AdminVar.php index 0899a65c3e3b13cad42f24c558271700be64f2ca..62e6339541143e511d2001b74f338da11249659f 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 8849f4aed6ce2ad9424b963c52cbfee4eaf58076..5882ec6a91723d0e7d5764772de82a158bd5314a 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 41c78b0d873d73087d5ac05cffb1a8e9643808e6..bc5c2da26b78a0d1ee5c52decfa1bd092f6cbd4f 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() {