From 890652892260b18e8f0a39b246be8ef2eb6056b8 Mon Sep 17 00:00:00 2001 From: efalcy <efalcy@afi-sa.fr> Date: Thu, 23 Jul 2015 18:20:18 +0200 Subject: [PATCH] hotdev $26909 : add pager on viewcritiques page and option to customize number of critics display per page --- .../views/scripts/modules/blog_all.phtml | 9 ++++++++ .../opac/controllers/BlogController.php | 16 ++++++++++--- .../views/scripts/blog/viewcritiques.phtml | 13 +++++++---- library/Class/Systeme/ModulesAppli.php | 3 ++- .../controllers/ModulesControllerTest.php | 16 +++++++++++++ .../controllers/AbonneControllerAvisTest.php | 23 +++++++++++++++---- 6 files changed, 66 insertions(+), 14 deletions(-) diff --git a/application/modules/admin/views/scripts/modules/blog_all.phtml b/application/modules/admin/views/scripts/modules/blog_all.phtml index 5c8ab78edfe..1d9ec7f6545 100644 --- a/application/modules/admin/views/scripts/modules/blog_all.phtml +++ b/application/modules/admin/views/scripts/modules/blog_all.phtml @@ -1,2 +1,11 @@ <?php echo $this->render('modules/_debut.phtml');?> + +<table> + <tr> + + <td class="droite"><?php echo $this->_('Nombre affichés par page:'); ?> </td> + <td class="gauche"> <input name="nb_display" value="<?php echo $this->preferences['nb_display']; ?>" /></td> + </tr> +</table> + <?php echo $this->render('modules/_fin.phtml');?> diff --git a/application/modules/opac/controllers/BlogController.php b/application/modules/opac/controllers/BlogController.php index 4ec79a6e167..27a13c20daf 100644 --- a/application/modules/opac/controllers/BlogController.php +++ b/application/modules/opac/controllers/BlogController.php @@ -37,6 +37,7 @@ class BlogController extends ZendAfi_Controller_Action { } + public function viewauteurAction() { $id_user = (int)$this->_getParam('id', $this->_user->ID_USER); if ($auteur = Class_Users::find($id_user)) { @@ -90,13 +91,22 @@ class BlogController extends ZendAfi_Controller_Action { public function viewcritiquesAction() { + $this->view->page = $this->_getParam('page',1); $id_module = (int)$this->_getParam('id_module'); - $preferences = Class_Profil::getCurrentProfil() + $profil = Class_Profil::getCurrentProfil(); + $preferences = $profil ->getModuleAccueilPreferences($id_module, 'CRITIQUES'); - $avis = Class_AvisNotice::getAvisFromPreferences($preferences); + $this->view->config=$profil->getConfigurationOf('blog','viewcritiques',''); + + $avis = Class_AvisNotice::getAvisFromPreferences($preferences,[$this->view->page, $this->view->config['nb_display']]); - $this->view->nb_aff = 50; $this->view->liste_avis = $avis; + + $params_url=$this->_request->getParams(); + unset($params_url['page']); + unset($params_url['current_module']); + $this->view->params_url=$params_url; + $this->view->total=count(Class_AvisNotice::getAvisFromPreferences($preferences)); $this->view->title = 'Dernières critiques'; if (array_key_exists('titre', $preferences)) $this->view->title = $preferences['titre']; diff --git a/application/modules/opac/views/scripts/blog/viewcritiques.phtml b/application/modules/opac/views/scripts/blog/viewcritiques.phtml index 54ceeb12fc7..d51790df69a 100644 --- a/application/modules/opac/views/scripts/blog/viewcritiques.phtml +++ b/application/modules/opac/views/scripts/blog/viewcritiques.phtml @@ -1,13 +1,16 @@ -<?php +<?php $this->openBoite($this->title); -if(is_array($this->liste_avis)) +xdebug_break(); +if(is_array($this->liste_avis)) { - $avis_to_show = array_slice($this->liste_avis, 0, $this->nb_aff); - $html_avis = array(); - foreach($avis_to_show as $avis) + $html_avis = []; + foreach($this->liste_avis as $avis) $html_avis []= $this->avis($avis); echo implode('<div class="separator"></div>', $html_avis); } + +echo BR.'<div align="center" style="width:100%">'.$this->pager($this->total,$this->config['nb_display'],$this->page,$this->params_url ).'</div>'; + $this->closeBoite(); ?> diff --git a/library/Class/Systeme/ModulesAppli.php b/library/Class/Systeme/ModulesAppli.php index d72b2a493e6..c45d40bf32f 100644 --- a/library/Class/Systeme/ModulesAppli.php +++ b/library/Class/Systeme/ModulesAppli.php @@ -411,7 +411,8 @@ class Class_Systeme_ModulesAppli extends Class_Systeme_ModulesAbstract { * @return array */ private function getDefautBlog($action) { - return array('barre_nav' => 'Critique'); + return ['barre_nav' => 'Critique', + 'nb_display' => 50]; } /** diff --git a/tests/application/modules/admin/controllers/ModulesControllerTest.php b/tests/application/modules/admin/controllers/ModulesControllerTest.php index 8cee70c2eb7..744b5748ae0 100644 --- a/tests/application/modules/admin/controllers/ModulesControllerTest.php +++ b/tests/application/modules/admin/controllers/ModulesControllerTest.php @@ -412,6 +412,22 @@ class ModulesControllerConfigRechercheResultatTest extends Admin_AbstractControl +class ModulesControllerConfigViewCritiquesResultatTest extends Admin_AbstractControllerTestCase { + + public function setUp() { + parent::setUp(); + Class_Profil::getCurrentProfil()->setCfgModules([]); + $this->dispatch('/admin/modules/blog?config=site&type_module=blog&id_profil=2&action1=viewcritiques&action2=', true); + } + + /** @test */ + public function inputNumberOfCriticsDisplayOnPageShouldBe50() { + $this->assertXPath('//input[@name="nb_display"][@value="50"]'); + } +} + + + class ModulesControllerRechercheSaisieTest extends Admin_AbstractControllerTestCase { public function setUp() { diff --git a/tests/application/modules/opac/controllers/AbonneControllerAvisTest.php b/tests/application/modules/opac/controllers/AbonneControllerAvisTest.php index e24a7e99dd9..1f2339cfd2f 100644 --- a/tests/application/modules/opac/controllers/AbonneControllerAvisTest.php +++ b/tests/application/modules/opac/controllers/AbonneControllerAvisTest.php @@ -290,8 +290,8 @@ abstract class AvisControllersFixturesTestCase extends AbonneFlorenceIsLoggedCon $this->millenium_with_vignette->save(); - $this->avis_millenium = Class_AvisNotice::newInstanceWithId(13, [ - 'entete' => "J'adore", + $this->avis_millenium = $this->fixture('Class_AvisNotice', ['id' => 13, + 'entete' => "J'adore", 'avis' => '<div><ul><li>Suspense Intense !</li><li>Suspense Intense !</li></ul></div>', 'note' => 5, 'date_avis' => '2011-03-18 13:00:00', @@ -614,13 +614,15 @@ abstract class ModuleSelectionCritiquesTestCase extends AvisControllersFixturesT $preferences = array('modules' => array(3 => array('division' => 2, 'type_module' => 'CRITIQUES', - 'preferences' => array('titre' => 'Coups de coeur')))); + 'preferences' => array('titre' => 'Coups de coeur' + )))); $profil = Class_Profil::getLoader() ->find(2) + ->setCfgModules( ['blog' => ['viewcritiques' => ['nb_display' => 2]]]) ->setCfgAccueil($preferences); - $this->_generateLoaderFor('Class_AvisNotice', array('getAvisFromPreferences')) - ->expects($this->once()) + $this->_generateLoaderFor('Class_AvisNotice', ['getAvisFromPreferences']) +// ->expects($this->once()) ->method('getAvisFromPreferences') ->will($this->returnValue([$this->avis_millenium, $this->avis_potter, @@ -645,6 +647,17 @@ class AbonneControllerAvisBlogControllerViewCritiquesTest extends ModuleSelectio $this->assertQueryContentContains('h2', 'Potter'); } + /** @test */ + public function pagerShouldBeDisplayed() { + $this->assertXPath('//a[@href="/blog/viewcritiques/id_profil/2/id_module/3/page/2"]', $this->_response->getBody()); + } + + /** @test */ + public function pagerShouldNotContains3Pages() { + $this->assertNotXPath('//a[contains(@href,"/page/3")]', $this->_response->getBody()); + } + + /** @test */ public function titleShouldBeCoupsDeCoeur() { $this->assertXPathContentContains('//h1', 'Coups de coeur'); -- GitLab