diff --git a/application/modules/admin/controllers/ModulesnoticeController.php b/application/modules/admin/controllers/ModulesnoticeController.php index 723ca18efd46d72b3f1be168ee24d0efa7311a36..a3729d1cfe2d41f2397d4c58c0a5f97624ffb53d 100644 --- a/application/modules/admin/controllers/ModulesnoticeController.php +++ b/application/modules/admin/controllers/ModulesnoticeController.php @@ -46,7 +46,6 @@ class Admin_ModulesnoticeController extends ZendAfi_Controller_Action { $cfg = $profil->getCfgNoticeAsArray(); $preferences=$cfg[$this->type_module]; - if(!$preferences) $preferences=$module->getValeursParDefaut($this->type_module); // Variables de vue $this->view->titre_module=$def_module["libelle"]; @@ -61,27 +60,19 @@ class Admin_ModulesnoticeController extends ZendAfi_Controller_Action { Zend_Layout::startMvc(); } -//------------------------------------------------------------------------------------------------------ -// Proprietés : EXEMPLAIRES -//------------------------------------------------------------------------------------------------------ - function exemplairesAction(){ + + function exemplairesAction() { $this->view->titre = $this->view->_('Propriété du bloc des exemplaires'); - // Retour du formulaire - if ($this->_request->isPost()) - { + if ($this->_request->isPost()) { $enreg=$_POST; - if($enreg["grouper"]==0) - { - $enreg["section"]=0; - $enreg["emplacement"]=0; - $enreg["annexe"]=0; + if (!$enreg['grouper']) { + $enreg['section'] = 0; + $enreg['emplacement'] = 0; + $enreg['annexe'] = 0; } $this->updateEtRetour($enreg); } - - if (!array_isset("en_pret", $this->view->preferences) || !trim($this->view->preferences["en_pret"])) - $this->view->preferences["en_pret"]="emprunté"; } //------------------------------------------------------------------------------------------------------ diff --git a/library/Class/Exemplaire.php b/library/Class/Exemplaire.php index 4d6e43ad537cb036b57ee4c6ecbc9eb4f0c09274..838ce2435190330db8769102762e504aadd03ccc 100644 --- a/library/Class/Exemplaire.php +++ b/library/Class/Exemplaire.php @@ -55,10 +55,10 @@ class Class_Exemplaire extends Storm_Model_Abstract { public function getPret() { - return Class_Pret::getLoader()->findFirstBy(['id_site' => $this->getIdBib(), - 'id_notice_origine' => $this->getIdOrigine(), - 'code_barres' => $this->getCodeBarres(), - 'EN_COURS' => 1]); + return Class_Pret::findFirstBy(['id_site' => $this->getIdBib(), + 'id_notice_origine' => $this->getIdOrigine(), + 'code_barres' => $this->getCodeBarres(), + 'EN_COURS' => 1]); } diff --git a/library/Class/Profil.php b/library/Class/Profil.php index c854c5c7b57dcb04fce0733e9b09e24c6af7cf5b..349e0cfd68d74367d2afce8aebfc6fd1b5c412fa 100644 --- a/library/Class/Profil.php +++ b/library/Class/Profil.php @@ -812,7 +812,11 @@ class Class_Profil extends Storm_Model_Abstract { * @return array */ public function getCfgNoticeAsArray() { - return $this->_getCfgAsArrayNamed('Notice'); + $cfg = $this->_getCfgAsArrayNamed('Notice'); + $module = new Class_Systeme_ModulesNotice(); + $cfg['exemplaires'] = array_merge($module->getValeursParDefaut('exemplaires'), $cfg['exemplaires']); + + return $cfg; } diff --git a/library/Class/Systeme/ModulesNotice.php b/library/Class/Systeme/ModulesNotice.php index fedee0b8277d6772bd0580ca8ca81969c4b2c909..822649014c45cc1fcec0f05f13e3b2a4d6ec3efd 100644 --- a/library/Class/Systeme/ModulesNotice.php +++ b/library/Class/Systeme/ModulesNotice.php @@ -66,30 +66,23 @@ class Class_Systeme_ModulesNotice } } -//------------------------------------------------------------------------------------------------------ -// Valeurs par defaut module bande-annonce -//------------------------------------------------------------------------------------------------------ - private function getDefautBandeAnnonce() - { - $ret["target"]="1"; // Ouvrir dans un nouvel onglet ou pas - $ret["url"]="http://google.fr"; // Test de proprietes + + private function getDefautBandeAnnonce() { + $ret['target'] = '1'; // Ouvrir dans un nouvel onglet ou pas + $ret['url'] = 'http://google.fr'; // Test de proprietes return $ret; } -//------------------------------------------------------------------------------------------------------ -// Valeurs par defaut module : Exemplaires -//------------------------------------------------------------------------------------------------------ - private function getDefautExemplaires() - { - $ret["grouper"]="0"; // Groupage - $ret["bib"]="1"; // Afficher la bibliotheque - $ret["section"]="0"; // Afficher la section - $ret["emplacement"]="0"; // Afficher l'emplacement - $ret["localisation"]="1"; // Afficher lien vers la localisation sur le plan - $ret["plan"]="1"; // Afficher lien vers google maps - $ret["resa"]="1"; // Afficher le lien de réservation - $ret["dispo"]="1"; // Afficher la disponibilité - return $ret; + private function getDefautExemplaires() { + return ['grouper' => '0', // Groupage + 'bib' => '1', // Afficher la bibliotheque + 'section' => '0', // Afficher la section + 'emplacement' => '0', // Afficher l'emplacement + 'localisation' => '1', // Afficher lien vers la localisation sur le plan + 'plan' => '1', // Afficher lien vers google maps + 'resa' => '1', // Afficher le lien de réservation + 'en_pret' => 'emprunté', // Libéllé des exemplaires empruntés + 'dispo' => '1']; // Afficher la disponibilité } } \ No newline at end of file diff --git a/tests/application/modules/opac/controllers/NoticeAjaxControllerPergameTest.php b/tests/application/modules/opac/controllers/NoticeAjaxControllerPergameTest.php new file mode 100644 index 0000000000000000000000000000000000000000..a442f5855e1661eed72ffb64dfda3a716f66b21b --- /dev/null +++ b/tests/application/modules/opac/controllers/NoticeAjaxControllerPergameTest.php @@ -0,0 +1,114 @@ +<?php +/** + * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ +require_once 'AbstractControllerTestCase.php'; + + +/** @see http://forge.afi-sa.fr/issues/21462 */ +abstract class NoticeAjaxControllerPergameItemTestCase extends AbstractControllerTestCase { + protected $_exemplaire; + + public function setUp() { + parent::setUp(); + + $this->fixture('Class_IntBib', ['id' => 1, + 'nom' => 'Site principal', + 'nom_court' => 'limours', + 'sigb' => Class_IntBib::COM_PERGAME, + 'comm_sigb' => Class_IntBib::COM_PERGAME, + 'comm_params' => 'a:3:{s:26:"Autoriser_docs_disponibles";s:0:"";s:13:"Max_par_carte";s:1:"4";s:16:"Max_par_document";s:3:"100";}']); + + $this->fixture('Class_Notice', ['id' => 23, + 'cle_oeuvre' => 'DDD']); + + $this->fixture('Class_Exemplaire', ['id' => 732494, + 'id_notice' => 23, + 'id_bib' => 1, + 'code_barres' => '0213689147', + 'cote' => 'EA WAD', + 'genre' => 8, + 'documentaire' => 0, + 'section' => 3, + 'activite' => 'En rayon', + 'emplacement' => 0, + 'annexe' => 1, + 'date_nouveaute' => '0000-00-00', + 'id_origine' => '00013313', + 'id_int_bib' => 1, + 'is_available' => 1]); + + $this->fixture('Class_Pret', ['id' => 98216, + 'id_site' => 1, + 'pergame' => 291392, + 'id_notice_origine' => '13313', + 'en_cours' => 1, + 'date_pret' => '2015-02-17', + 'date_retour' => '2015-03-31', + 'code_barres' => '0213689147']); + } + +} + + + +class NoticeAjaxControllerPergameItemNoDefaultLabelTest + extends NoticeAjaxControllerPergameItemTestCase { + public function setUp() { + parent::setUp(); + $cfg = Class_Profil::getCurrentProfil()->getCfgNoticeAsArray(); + $cfg['exemplaires']['grouper'] = 1; + unset($cfg['exemplaires']['en_pret']); + Class_Profil::getCurrentProfil()->setCfgNotice($cfg); + + $this->dispatch('/noticeajax/exemplaires/id_notice/23', true); + } + + + /** @test */ + public function availabilityLabelShouldBeEmprunte() { + $this->assertXPathContentContains('//td[contains(@class, "dispo")]', + 'emprunt', + $this->_response->getBody()); + } +} + + + + +class NoticeAjaxControllerPergameItemLabelConfiguredTest + extends NoticeAjaxControllerPergameItemTestCase { + public function setUp() { + parent::setUp(); + $cfg = Class_Profil::getCurrentProfil()->getCfgNoticeAsArray(); + $cfg['exemplaires']['grouper'] = 1; + $cfg['exemplaires']['en_pret'] = 'En pret'; + Class_Profil::getCurrentProfil()->setCfgNotice($cfg); + + $this->dispatch('/noticeajax/exemplaires/id_notice/23', true); + } + + + /** @test */ + public function availabilityLabelShouldBeEnPret() { + $this->assertXPathContentContains('//td[contains(@class, "dispo")]', + 'En pret', + $this->_response->getBody()); + } +}