From 0d7fe766fb1ef7b465911ea8f33741bb200ba799 Mon Sep 17 00:00:00 2001 From: Ghislain Loas <ghislo@sandbox.pergame.net> Date: Fri, 6 Nov 2015 11:34:13 +0100 Subject: [PATCH] dev #10430 fix issues + add tests --- .../opac/controllers/CmsController.php | 6 ++-- .../opac/views/scripts/cms/articleview.phtml | 4 +-- library/Class/Article.php | 11 +++++- .../ZendAfi/View/Helper/Calendar/Table.php | 2 +- .../ProfilOptionsControllerTest.php | 34 +++++++++++++++---- 5 files changed, 45 insertions(+), 12 deletions(-) diff --git a/application/modules/opac/controllers/CmsController.php b/application/modules/opac/controllers/CmsController.php index cb1dcf37597..781ac43f7fa 100644 --- a/application/modules/opac/controllers/CmsController.php +++ b/application/modules/opac/controllers/CmsController.php @@ -61,11 +61,13 @@ class CmsController extends ZendAfi_Controller_Action { if($preferences['display_mode']=='Summary') $preferences['summary_content']='Summary'; + if($preferences['display_mode']!='Title') - $this->_viewArticlesByPreferences($preferences); + return $this->_viewArticlesByPreferences($preferences); $articles = Class_Article::getArticlesByPreferences($preferences); $articles = Class_Article::filterByLocaleAndWorkflow($articles); + $articles = Class_Article::filterByDay(strtotime($this->_getParam('d')), $articles); $articles = Class_Article::groupByBibId($articles); if ((count($articles) == 1) && isset($articles[0])) @@ -291,6 +293,7 @@ class CmsController extends ZendAfi_Controller_Action { ->getArticlesByPreferences($preferences); $articles = Class_Article::getLoader()->filterByLocaleAndWorkflow($articles); + $articles = Class_Article::filterByDay(strtotime($this->_getParam('d')), $articles); $this->view->articles = $articles; @@ -309,6 +312,5 @@ class CmsController extends ZendAfi_Controller_Action { } $this->renderScript('cms/articlesview.phtml'); - } } \ No newline at end of file diff --git a/application/modules/opac/views/scripts/cms/articleview.phtml b/application/modules/opac/views/scripts/cms/articleview.phtml index 1295bcf60af..aa8f8c7dfcc 100644 --- a/application/modules/opac/views/scripts/cms/articleview.phtml +++ b/application/modules/opac/views/scripts/cms/articleview.phtml @@ -1,6 +1,6 @@ <a name="Top"></a> <?php - echo $this->partial('cms/article_partial.phtml', array('article' => $this->article)); + echo $this->partial('cms/article_partial.phtml', ['article' => $this->article]); ?> <table style="width:100%"> @@ -8,4 +8,4 @@ <td style="text-align:left"><a href="javascript:history.back()"><?php echo $this->_('Retour') ?></a></td> <td style="text-align:right"><a href="#Top"><?php echo $this->_('Haut') ?></a></td> </tr> -</table> \ No newline at end of file +</table> diff --git a/library/Class/Article.php b/library/Class/Article.php index 041e6bd629b..5e1dc28732e 100644 --- a/library/Class/Article.php +++ b/library/Class/Article.php @@ -437,9 +437,18 @@ class ArticleLoader extends Storm_Model_Loader { $page++; } } -} + public function filterByDay($day, $articles) { + $day_num = gmdate("w", $day); + return array_filter($articles, + function($event) { + if(empty($event->getPickDayAsArray()) || in_array($day_num, $event->getPickDayAsArray())) + return $event; + }); + } +} + class Class_Article extends Storm_Model_Abstract { diff --git a/library/ZendAfi/View/Helper/Calendar/Table.php b/library/ZendAfi/View/Helper/Calendar/Table.php index 2e6e0fa6f6e..f3a5209765b 100644 --- a/library/ZendAfi/View/Helper/Calendar/Table.php +++ b/library/ZendAfi/View/Helper/Calendar/Table.php @@ -141,7 +141,7 @@ class ZendAfi_View_Helper_Calendar_Table extends Zend_View_Helper_HtmlElement { $mois_fin = (int)date('m', $event_fin); if(!empty($event->getPickDayAsArray()) && !in_array($day_num, $event->getPickDayAsArray())) - return false; + continue; // Jour clickable5# if($mois_debut == $month && $mois_fin == $month) { diff --git a/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php b/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php index f221c228261..9e4bfd93f5e 100644 --- a/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php +++ b/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php @@ -1648,14 +1648,25 @@ abstract class ProfilOptionsControllerProfilBoiteCalendarTestCase extends Abstra 'description' => 'à Moulins', 'events_debut' => '2011-09-05', 'events_fin' => '2011-10-05', - 'pick_day' => '12345', + 'pick_day' => '123', + 'categorie' => $fiesta_annecy]); + + $fete_valleiry = $this->fixture('Class_Article', + ['id' => 36, + 'titre' => 'Fête de la FIA', + 'contenu' => 'Fiesta fiesta à la FIA', + 'description' => 'à Valleiry', + 'events_debut' => '2011-09-15', + 'events_fin' => '2011-10-30', + 'pick_day' => '', 'categorie' => $fiesta_annecy]); Class_AdminVar::beVolatile(); Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article') ->whenCalled('getArticlesByPreferences') ->answers([$fete_caion, - $fete_moulins]); + $fete_moulins, + $fete_valleiry]); } } @@ -1743,7 +1754,13 @@ class ProfilOptionsControllerProfilBoiteCalendarWithCalendarDisplayedAndModeSimp /** @test **/ public function boiteCalendarLiShouldContainsCalendarEventDate() { - $this->assertXPathContentContains('//li/span[@class="calendar_event_date"]', 'samedi 03 septembre 2011'); + $this->assertXPathContentContains('//li/span[@class="calendar_event_date"]', 'jeudi 01 septembre 2011'); + } + + + /** @test */ + public function firstSeptemberShouldContainsLink() { + $this->assertXPath('//table//tr/td[4]//a[contains(@class, "day_clickable")]' ); } @@ -1754,12 +1771,17 @@ class ProfilOptionsControllerProfilBoiteCalendarWithCalendarDisplayedAndModeSimp /** @test */ - public function sundayShouldNotContainsLink() { - $this->assertNotXPath('//td[@class="calendar_weekend"]//a[contains(@class, "day_clickable")]', $this->_response->getBody()); + public function saturdayThe10ThShouldNotContainsLink() { + $this->assertXPathContentContains('//td[@class="calendar_weekend"]//span[@class="calendar_day_non_clickable"]', '10'); } -} + /** @test */ + public function fridayShouldContainsLink() { + $this->assertXPath('//table//tr/td[5]//a[contains(@class, "day_clickable")]', $this->_response->getBody()); + } +} + class ProfilOptionsControllerProfilBoiteCalendarWithCalendarDisplayedWithModeSimpleAndCatOption extends ProfilOptionsControllerProfilBoiteCalendarTestCase { -- GitLab