From bfa31ff32cb03015ca0d9fa61428303d603e808f Mon Sep 17 00:00:00 2001 From: llaffont <llaffont@git-test.afi-sa.fr> Date: Wed, 1 Aug 2012 16:17:31 +0000 Subject: [PATCH] =?UTF-8?q?Ajout=20lien=20vers=20le=20planning=20ouverture?= =?UTF-8?q?s=20dans=20la=20gestion=20des=20biblioth=C3=A8ques=20+=20tests?= =?UTF-8?q?=20/=20refactoring=20+=20option=20Planning?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitattributes | 1 + .../admin/controllers/BibController.php | 4 +- .../controllers/OuverturesController.php | 12 +++ .../admin/views/scripts/bib/index.phtml | 67 ++++++++---- categories.org | 1 + library/Class/AdminVar.php | 8 ++ library/Class/Bib.php | 12 ++- public/admin/images/picto/calendar.gif | Bin 0 -> 582 bytes .../admin/controllers/BibControllerTest.php | 99 ++++++++++++++---- .../controllers/OuverturesControllerTest.php | 5 +- 10 files changed, 160 insertions(+), 49 deletions(-) create mode 100644 public/admin/images/picto/calendar.gif diff --git a/.gitattributes b/.gitattributes index 4588aa54b70..6a769da18be 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2492,6 +2492,7 @@ public/admin/images/picto/articles_48.png -text public/admin/images/picto/bibliotheques_16.png -text public/admin/images/picto/bibliotheques_48.png -text public/admin/images/picto/books.png -text +public/admin/images/picto/calendar.gif -text svneol=unset#unset public/admin/images/picto/catalogues.png -text public/admin/images/picto/chat.gif.png -text public/admin/images/picto/cms.gif -text diff --git a/application/modules/admin/controllers/BibController.php b/application/modules/admin/controllers/BibController.php index 9dd28f1a859..450a130787b 100644 --- a/application/modules/admin/controllers/BibController.php +++ b/application/modules/admin/controllers/BibController.php @@ -55,9 +55,7 @@ class Admin_BibController extends Zend_Controller_Action if ($user->ROLE_LEVEL == ZendAfi_Acl_AdminControllerRoles::ADMIN_BIB) $this->_redirect(sprintf('admin/bib/edit/id/%d', $user->ID_SITE)); - $bibClass = new Class_Bib(); - $liste_bib = $bibClass->getAllBibByIdZone($this->id_zone); - $this->view->bib_array = $liste_bib; + $this->view->bib_array = Class_Bib::getLoader()->findAllByIdZone($this->id_zone); } //------------------------------------------------------------------------------------------------------ diff --git a/application/modules/admin/controllers/OuverturesController.php b/application/modules/admin/controllers/OuverturesController.php index 3e27069d60d..9f951bbc2a4 100644 --- a/application/modules/admin/controllers/OuverturesController.php +++ b/application/modules/admin/controllers/OuverturesController.php @@ -53,6 +53,18 @@ class Admin_OuverturesController extends ZendAfi_Controller_Action { ); } + + + + public function indexAction() { + if (!$this->_getParam('id_site')) { + $this->_redirect('admin/bib'); + return; + } + + parent::indexAction(); + } + } ?> \ No newline at end of file diff --git a/application/modules/admin/views/scripts/bib/index.phtml b/application/modules/admin/views/scripts/bib/index.phtml index c8f4d9a0e42..d4dc04acba1 100644 --- a/application/modules/admin/views/scripts/bib/index.phtml +++ b/application/modules/admin/views/scripts/bib/index.phtml @@ -4,37 +4,62 @@ echo ('<center><div align="center"><br>'.$this->bouton('id=c_19','picto=add.gif' ?> <br /><table cellspacing="0" cellpadding="0"> <tr class="soustitre"> - <td style="width:30%;">Ville</td> - <td style="width:55%">Libelle</td> - <td style="width:15%;padding-left:10px;" colspan="4"> Action</td> + <td>Ville</td> + <td>Libelle</td> + <td colspan="6"> Action</td> </tr> <tr> - <td colspan="6" class="separ"> </td> + <td colspan="8" class="separ"> </td> </tr> <?php $ligne = 0; -foreach ($this->bib_array as $bib) -{ - $class_zone = new Class_Zone(); - $class_bib = new Class_bib(); - $test = $class_bib->isBibDeletable($bib["ID_SITE"]); - if($test == true) $ico_del = '<a href="'.BASE_URL.'/admin/bib/delete/id/'.$bib["ID_SITE"].'">'.$this->boutonIco("type=del").'</a>'; - else $ico_del ='<a href="#" onclick="alert(\'Cette bibliothèque possède encore du contenu\'); return false;"><img src="'.URL_ADMIN_IMG.'ico/del.gif" class="ico" alt="Supprimer" title="Supprimer"/></a>'; +foreach ($this->bib_array as $bib) { + $ico_del = $bib->isBibDeletable() + ? '<a href="'.BASE_URL.'/admin/bib/delete/id/'.$bib->getId().'">'.$this->boutonIco("type=del").'</a>' + : '<a href="#" onclick="alert(\'Cette bibliothèque possède encore du contenu\'); return false;"><img src="'.URL_ADMIN_IMG.'ico/del.gif" class="ico" alt="Supprimer" title="Supprimer"/></a>'; $ligne ++ ; if ($ligne & 1) $class="first"; else $class="second"; - $ville = ucfirst($bib["VILLE"]); - echo('<tr class="'.$class.'"> - <td valign="top">'.$ville. '</td> - <td valign="top" align="left">'.$bib["LIBELLE"].'</td> - <td valign="top" align="center"><a href="'.BASE_URL.'/admin/bib/edit/id/'.$bib["ID_SITE"].'">'.$this->boutonIco("type=edit").'</a></td> - <td valign="top" align="center">'.$ico_del.'</td> - <td valign="top" align="center"><a href="'.BASE_URL.'/admin/bib/planacces/id/'.$bib["ID_SITE"].'"><img src="'.URL_ADMIN_IMG.'picto/map.gif" border="0" alt="Configurer le plan d\'accès" title="Configurer le plan d\'accès"/></a></td> - <td valign="top" align="center"><a href="'.BASE_URL.'/admin/bib/plans/id_bib/'.$bib["ID_SITE"].'"><img src="'.URL_ADMIN_IMG.'picto/plan.gif" border="0" alt="Plans et de la bibliothèque" title="Plans de la bibliothèque"/></a></td> - <td valign="top" align="center"><a href="'.BASE_URL.'/admin/bib/localisations/id_bib/'.$bib["ID_SITE"].'"><img src="'.URL_ADMIN_IMG.'picto/localisation.gif" border="0" alt="Localisations de la bibliothèque" title="Localisations de la bibliothèque"/></a></td> - </tr>'); + $ville = ucfirst($bib->getVille()); + echo '<tr class="'.$class.'">'. + '<td valign="top">'.$ville. '</td>'. + '<td valign="top" align="left">'.$bib->getLibelle().'</td>'. + '<td valign="top" align="center"><a href="'.BASE_URL.'/admin/bib/edit/id/'.$bib->getId().'">'.$this->boutonIco("type=edit").'</a></td>'. + '<td valign="top" align="center">'.$ico_del.'</td>'; + + + + $action = '<td valign="top" align="center"><a href="%s"><img src="'.URL_ADMIN_IMG.'picto/%s" border="0" alt="%3$s" title="%3$s"/></a></td>'; + echo sprintf($action, + $this->url(array('action' => 'planacces', + 'id_bib' => $bib->getId())), + 'map.gif', + $this->_('Configurer le plan d\'accès')); + + echo sprintf($action, + $this->url(array('action' => 'plans', + 'id_bib' => $bib->getId())), + 'plan.gif', + $this->_('Plans de la bibliothèque')); + + echo sprintf($action, + $this->url(array('action' => 'localisations', + 'id_bib' => $bib->getId())), + 'localisation.gif', + $this->_('Localisations de la bibliothèque')); + + if (Class_AdminVar::isPlanningOuverturesEnabled()) + echo sprintf($action, + $this->url(array('controller' => 'ouvertures', + 'action' => 'index', + 'id_site' => $bib->getId())), + 'calendar.gif', + $this->_('Planification des ouvertures')); + + echo '</tr>'; } + echo ('</table>'); echo '<span id="abonne_erreur" class="abonne">'.$this->errorMessage.'</span>'; ?> diff --git a/categories.org b/categories.org index 19150fb711f..c8671a7cae7 100644 --- a/categories.org +++ b/categories.org @@ -2,6 +2,7 @@ * AFI Multimedia ** Planning des ouvertures + Note: les ouvertures sont une option conditionnés par la variable MULTIMEDIA_KEY [[file:library/Class/Ouverture.php::class%20Class_Ouverture%20extends%20Storm_Model_Abstract%20{][Modele Ouverture]] [[file:application/modules/admin/views/scripts/ouvertures/edit.phtml::<?php%20echo%20$this->renderForm($this->form)%3B%20?][Vue edit ouverture]] - [[http://localhost/afi-opac3/admin/ouvertures/edit/site_id/1/id/2][Page édition d'une ouverture]] [[file:tests/application/modules/admin/controllers/OuverturesControllerTest.php::abstract%20class%20OuverturesControllerTestCase%20extends%20Admin_AbstractControllerTestCase%20{][Tests Controller Ouvertures]] diff --git a/library/Class/AdminVar.php b/library/Class/AdminVar.php index 6217b2ebaf4..cc26b259097 100644 --- a/library/Class/AdminVar.php +++ b/library/Class/AdminVar.php @@ -185,6 +185,14 @@ class Class_AdminVar extends Storm_Model_Abstract { } + /** + * @return bool + */ + public static function isPlanningOuverturesEnabled() { + return self::isMultimediaEnabled(); + } + + /** * @return bool */ diff --git a/library/Class/Bib.php b/library/Class/Bib.php index d0a7fd87490..a07020e2e41 100644 --- a/library/Class/Bib.php +++ b/library/Class/Bib.php @@ -50,6 +50,14 @@ class BibLoader extends Storm_Model_Loader { } + public function findAllByIdZone($id_zone=0) { + if (!$id_zone) + return $this->findAllBy(array('order' => 'ville')); + return $this->findAllBy(array('id_zone' => $id_zone, + 'order' => 'ville')); + } + + public function getPortail() { if (!isset($this->_portail)) $this->_portail = $this->newInstanceWithId(0)->setLibelle('Portail'); @@ -197,8 +205,8 @@ class Class_Bib extends Storm_Model_Abstract { //---------------------------------------------------------------------------- // Controle de suppression d'une bibliothèque //---------------------------------------------------------------------------- - function isBibDeletable($id_bib) - { + function isBibDeletable() { + $id_bib = $this->getId(); $cms=fetchOne("Select count(*) from cms_categorie where ID_SITE=$id_bib"); $rss=fetchOne("Select count(*) from rss_categorie where ID_SITE=$id_bib"); $sito=fetchOne("Select count(*) from sito_categorie where ID_SITE=$id_bib"); diff --git a/public/admin/images/picto/calendar.gif b/public/admin/images/picto/calendar.gif new file mode 100644 index 0000000000000000000000000000000000000000..c05f86bc1260031c3e29d1dab63c8260b2e9ca2d GIT binary patch literal 582 zcmZ?wbhEHb<YVAvc*el+|NsAgAn^Ymkn#8L@4x@P|NH;v_pkrIf4=?m|NFP^uYUdi z@$JX+Z~s4h`T648ucu%CzyJLG)5lNmKK=Oo;q&|V?>_+HyZ7(jzI*@n{p+{y-@N(o z_RZVZZ$7+!_2$XzFE5|JeEICf^QX_BJ$?4<$+M@ApFVx`^vR<q|L-1t{P6Mphah<G z0T|x9ckj+!AiQ_$?%msW@7=z4_tu>|H}AZ?di3`7o7b*hy8;B4uDm+2{r`a({|?Of zaA^7e-97(zb${4BbNBAuyLRu|xohW+ojd-oDB8Mp>*mdyH*MbZe{tfHrArnsS-fcR zqJ@hV{%^PW(_}tn+LWo&rcRkUW%AU?lc!9cIC)}mS#e=WVPR=uK}kVgQC?nQUS2_N zUO`@dL0(Q?PEKxiPHt9qZgy5~R#r|{W>!W*azadeOk_-CP-qYXWkB&K3j;gDe+C_p zF`zhMU|-ze-PGLT)0W{E*cBMo8`d3|>8WFBsb^(iV5Mhap_Ssyz{A5J!myNqi;E%L zQ&nGI(_B~6RNcr(CDnyNkegY6l~sX3RFomYU0Bu5##%~BTU<#=EY5@9(cdk=Ox{pI zTU#c<mD$08!%Krrkx^2TA?n7hJNF(udUEQF?fHx1%5D+DOa~m97<gGYJ}@{mu`ooQ W%i&CZ);&W{Vt0?^W>;SY25SI#&?TDy literal 0 HcmV?d00001 diff --git a/tests/application/modules/admin/controllers/BibControllerTest.php b/tests/application/modules/admin/controllers/BibControllerTest.php index 4d51c06eefa..fe48cfcf4cf 100644 --- a/tests/application/modules/admin/controllers/BibControllerTest.php +++ b/tests/application/modules/admin/controllers/BibControllerTest.php @@ -24,8 +24,7 @@ abstract class BibControllerTestCase extends AbstractControllerTestCase { public function setUp() { parent::setUp(); - $this->bib_annecy = Class_Bib::getLoader() - ->newInstanceWithId(2) + $this->bib_annecy = Class_Bib::newInstanceWithId(2) ->setLibelle('Annecy') ->setResponsable('Ludivine') ->setAffZone('') @@ -36,17 +35,78 @@ abstract class BibControllerTestCase extends AbstractControllerTestCase { ->setArticleCategories(array()); - $this->bib_cran = Class_Bib::getLoader() - ->newInstanceWithId(3) + $this->bib_cran = Class_Bib::newInstanceWithId(3) ->setLibelle('Cran-Gévrier'); + $all_bibs = array($this->bib_annecy, $this->bib_cran); + Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Bib') ->whenCalled('findAll') - ->answers(array($this->bib_annecy, $this->bib_cran)); + ->answers($all_bibs) + + ->whenCalled('findAllByIdZone') + ->answers($all_bibs); } } + + +class BibControllerIndexWidthAdminPortailTest extends BibControllerTestCase { + protected function _loginHook($account) { + $account->ROLE_LEVEL = ZendAfi_Acl_AdminControllerRoles::ADMIN_PORTAIL; + } + + public function setUp() { + parent::setUp(); + Class_AdminVar::newInstanceWithId('MULTIMEDIA_KEY')->setValeur('coin coin'); + $this->dispatch('admin/bib/index', true); + } + + + /** @test */ + public function pageShouldDisplayBibAnnecy() { + $this->assertXPathContentContains('//tr[3]//td', 'Annecy'); + } + + + /** @test */ + public function bibAnnecyShouldHaveActionToEdit() { + $this->assertXPath('//tr[3]//a[contains(@href, "bib/edit/id/2")]'); + } + + + /** @test */ + public function bibAnnecyShouldHaveActionToOuverturesIndex() { + $this->assertXPath('//tr[3]//a[contains(@href, "ouvertures/index/id_site/2")]'); + } + + + /** @test */ + public function pageShouldDisplayBibCran() { + $this->assertXPathContentContains('//tr[4]//td', 'Cran-Gévrier'); + } + + + /** @test */ + public function bibCranShouldHaveActionToEdit() { + $this->assertXPath('//tr[4]//a[contains(@href, "bib/edit/id/3")]'); + } + + + /** @test */ + public function whenMultimediaDisabledOuverturesShouldNotBeAvailable() { + Class_AdminVar::find('MULTIMEDIA_KEY')->setValeur(''); + $this->bootstrap(); + parent::setUp(); + $this->dispatch('admin/bib/index', true); + $this->assertNotXPath('//a[contains(@href, "ouvertures")]'); + } +} + + + + class BibControllerWithModoPortailTest extends BibControllerTestCase { protected function _loginHook($account) { $account->ROLE_LEVEL = ZendAfi_Acl_AdminControllerRoles::MODO_PORTAIL; @@ -90,13 +150,18 @@ class BibControllerWithModerateurBibTest extends BibControllerTestCase { -class BibControllerWithAdminBibTest extends BibControllerTestCase { + +abstract class BibControllerWithAdminBibTestCase extends BibControllerTestCase { protected function _loginHook($account) { $account->ROLE_LEVEL = ZendAfi_Acl_AdminControllerRoles::ADMIN_BIB; $account->ID_SITE = 2; } +} + + +class BibControllerWithAdminBibTest extends BibControllerWithAdminBibTestCase { /** @test */ function responseToIndexShouldBeARedirectToEditSite2() { $this->dispatch('admin/bib/index'); @@ -120,12 +185,8 @@ class BibControllerWithAdminBibTest extends BibControllerTestCase { -class BibControllerWithAdminBibEditAnnecyTest extends BibControllerTestCase { - protected function _loginHook($account) { - $account->ROLE_LEVEL = ZendAfi_Acl_AdminControllerRoles::ADMIN_BIB; - $account->ID_SITE = 2; - } +class BibControllerWithAdminBibEditAnnecyTest extends BibControllerWithAdminBibTestCase { public function setUp() { parent::setUp(); $this->dispatch('admin/bib/edit/id/2'); @@ -144,17 +205,16 @@ class BibControllerWithAdminBibEditAnnecyTest extends BibControllerTestCase { + class BibControllerGetArticlesJSONTest extends BibControllerTestCase { public function setUp() { parent::setUp(); - $vive_les_vacances = Class_Article::getLoader() - ->newInstanceWithId(42) + $vive_les_vacances = Class_Article::newInstanceWithId(42) ->setIdCat(3) ->setTitre('Vive les vacances !'); - $cat_cran_news = Class_ArticleCategorie::getLoader() - ->newInstanceWithId(3) + $cat_cran_news = Class_ArticleCategorie::newInstanceWithId(3) ->setLibelle('News') ->setIdSite(3) ->setArticles(array($vive_les_vacances)) @@ -163,19 +223,16 @@ class BibControllerGetArticlesJSONTest extends BibControllerTestCase { $this->bib_cran->setArticleCategories(array($cat_cran_news)); - $reseau_en_route = Class_Article::getLoader() - ->newInstanceWithId(123) + $reseau_en_route = Class_Article::newInstanceWithId(123) ->setIdCat(9) ->setTitre('Reseau en route'); - $cat_portail_infos = Class_ArticleCategorie::getLoader() - ->newInstanceWithId(9) + $cat_portail_infos = Class_ArticleCategorie::newInstanceWithId(9) ->setLibelle('Infos') ->setArticles(array($reseau_en_route)) ->setSousCategories(array()); - $portail = Class_Bib::getLoader() - ->newInstanceWithId(0) + $portail = Class_Bib::newInstanceWithId(0) ->setLibelle('Portail') ->setArticleCategories(array($cat_portail_infos)); diff --git a/tests/application/modules/admin/controllers/OuverturesControllerTest.php b/tests/application/modules/admin/controllers/OuverturesControllerTest.php index 5bb8bfac847..3ade5b84548 100644 --- a/tests/application/modules/admin/controllers/OuverturesControllerTest.php +++ b/tests/application/modules/admin/controllers/OuverturesControllerTest.php @@ -89,8 +89,9 @@ class OuverturesControllerIndexActionWithoutSiteTest extends OuverturesControlle /** @test */ - public function actionShouldBeIndex() { - $this->assertAction('index'); + public function answerShouldRedirectToIndexBib() { + xdebug_break(); + $this->assertRedirectTo('/admin/bib'); } } -- GitLab