diff --git a/application/modules/admin/controllers/CmsController.php b/application/modules/admin/controllers/CmsController.php index 2ef7edf2824679b1f3e8c76a35dd3c1a20e82aba..f457ede4d0d3a3e4a5004e750b8726867e4d1417 100644 --- a/application/modules/admin/controllers/CmsController.php +++ b/application/modules/admin/controllers/CmsController.php @@ -39,7 +39,7 @@ class Admin_CmsController extends ZendAfi_Controller_Action { protected function _renderList() { $bibs = Class_Bib::findAllForCurrentUserAndPortal(); - $current_library = ($this->identity->isAdmin()) + $current_library = (Class_Users::isCurrentUserCanAccessAllBibs()) ? null : $this->identity->getBib(); diff --git a/library/Class/Bib.php b/library/Class/Bib.php index c4249991999744dedaf7f7439b5551e91e6074ec..780d919ad38227a7d0a5b80690f34222786f7a52 100644 --- a/library/Class/Bib.php +++ b/library/Class/Bib.php @@ -285,7 +285,7 @@ class BibLoader extends Storm_Model_Loader { protected function _findAllForCurrentUser() : array { - return (! Class_Users::isCurrentUserAdmin()) && ($user_library = Class_Users::getIdentity()->getBib()) + return (! Class_Users::isCurrentUserCanAccessAllBibs()) && ($user_library = Class_Users::getIdentity()->getBib()) ? [$user_library] : Class_Bib::findAllBy(['order' => 'libelle']); } diff --git a/library/ZendAfi/Controller/Action/Helper/ListViewMode/Article.php b/library/ZendAfi/Controller/Action/Helper/ListViewMode/Article.php index 5f9ee72b31093e960b5c0aa59f85283371112050..1130b5a94b46793a32365a3238a0299770710660 100644 --- a/library/ZendAfi/Controller/Action/Helper/ListViewMode/Article.php +++ b/library/ZendAfi/Controller/Action/Helper/ListViewMode/Article.php @@ -315,7 +315,8 @@ class ZendAfi_Controller_Action_Helper_ListViewMode_Article 'label' => $this->getBibLabel(), 'options' => []]]; - if ($bib = $this->getParam('bib')) + if (! Class_Users::isCurrentUserCanAccessAllBibs() + && $bib = $this->getParam('bib')) $breadcrumb = [['url' => ['module' => 'admin', 'controller' => 'cms', 'action' => 'index'], diff --git a/tests/application/modules/admin/controllers/CmsControllerListModeTest.php b/tests/application/modules/admin/controllers/CmsControllerListModeTest.php index bf1f18e688f1f2f3a8e0f257207adc2a74bc4598..bf4e44cd7442488881720e6804629235da4baa07 100644 --- a/tests/application/modules/admin/controllers/CmsControllerListModeTest.php +++ b/tests/application/modules/admin/controllers/CmsControllerListModeTest.php @@ -73,7 +73,7 @@ class CmsControllerListModeAdminRootTest extends CmsControllerListModeTestCase { -class CmsControllerListModeModoPortailInPortailTest extends CmsControllerListModeTestCase { +class CmsControllerListModeModoPortailAndNoLibraryInPortailTest extends CmsControllerListModeTestCase { public function setUp() { parent::setUp(); $this->_bernard->beModoPortail()->setBib(null); @@ -91,6 +91,89 @@ class CmsControllerListModeModoPortailInPortailTest extends CmsControllerListMod +class CmsControllerListModeModoPortailIndexTest extends CmsControllerListModeTestCase { + public function setUp() { + parent::setUp(); + $this->_bernard->beModoPortail(); + ZendAfi_Auth::getInstance()->logUser($this->_bernard); + $this->dispatch('/admin/cms'); + } + + + /** @test */ + public function shouldDisplayPortailCategory() { + $this->assertXPathContentContains('//td/a[@href="/admin/cms/index/id_bib/0"]', + 'Portail'); + } + + + /** @test */ + public function shouldDisplayAnnecyCategory() { + $this->assertXPathContentContains('//td/a[@href="/admin/cms/index/id_bib/1"]', + 'Annecy'); + } + + + /** @test */ + public function shouldDisplayCranGevrierCategory() { + $this->assertXPathContentContains('//td/a[@href="/admin/cms/index/id_bib/3"]', + 'Cran-Gevrier'); + } +} + + + + +class CmsControllerListModeModoPortailPortailCategoryEditTest extends CmsControllerListModeTestCase { + public function setUp() { + parent::setUp(); + $this->_bernard->beModoPortail(); + ZendAfi_Auth::getInstance()->logUser($this->_bernard); + $this->dispatch('/admin/cms/index/id_bib/0'); + } + + + /** @test */ + public function breadcrumbShouldDisplayRacine() { + $this->assertXPathContentContains('//div[@class="breadcrumb"]//a[@href="/admin/cms"]', + 'Racine', $this->_response->getBody()); + } + + + /** @test */ + public function breadcrumbShouldDisplayPortail() { + $this->assertXPathContentContains('//div[@class="breadcrumb"]/a[contains(@href,"id_bib/0")]', + 'Portail'); + } +} + + + + +class CmsControllerListModeModoPortailInAnnecyTest extends CmsControllerListModeTestCase { + public function setUp() { + parent::setUp(); + $this->_bernard->beModoPortail(); + ZendAfi_Auth::getInstance()->logUser($this->_bernard); + $this->dispatch('/admin/cms/index/id_bib/1'); + } + + /** @test */ + public function breadCrumbShouldDisplayRacine() { + $this->assertXPathContentContains('//div[contains(@class, "breadcrumb")]//a[@href= "/admin/cms"]', + 'Racine'); + } + + /** @test */ + public function breadCrumbShouldDisplayAnnecy() { + $this->assertXPathContentContains('//div[contains(@class, "breadcrumb")]//a[contains(@href, "id_bib/1")]', + 'Annecy'); + } +} + + + + class CmsControllerListModeAdminBibRootTest extends CmsControllerListModeTestCase { public function setUp() {