From f0434fdc78a3754d2ec8758478bace38b91434f7 Mon Sep 17 00:00:00 2001 From: Alex Arnaud <alex.arnaud@biblibre.com> Date: Tue, 13 Jan 2015 12:15:39 +0100 Subject: [PATCH] hotline#18512 - Fix the way comments are displayed --- library/Class/Avis.php | 2 +- library/ZendAfi/View/Helper/AvisCms.php | 54 ++++++------------- .../AbonneControllerCmsAvisTest.php | 13 +++-- 3 files changed, 26 insertions(+), 43 deletions(-) diff --git a/library/Class/Avis.php b/library/Class/Avis.php index f878a6cb81c..cf2ebfc8cf3 100644 --- a/library/Class/Avis.php +++ b/library/Class/Avis.php @@ -84,7 +84,7 @@ class Class_Avis extends Storm_Model_Abstract { 'id_cms' => $id_news]); if (!$avis) - $avis = Class_Avis::newInstance(['id_user' => $id_user, + $avis = Class_Avis::getLoader()->newInstance(['id_user' => $id_user, 'id_notice' => '', 'id_cms' => $id_news, 'date_avis' => $this->_today, diff --git a/library/ZendAfi/View/Helper/AvisCms.php b/library/ZendAfi/View/Helper/AvisCms.php index 92123b55a14..8024f82fb8a 100644 --- a/library/ZendAfi/View/Helper/AvisCms.php +++ b/library/ZendAfi/View/Helper/AvisCms.php @@ -25,12 +25,10 @@ class ZendAfi_View_Helper_AvisCms extends Zend_View_Helper_HtmlElement { function rendHtmlBlockAvis($article) { - $info_bib = $this->rendInfoCmsAvis($article, 1); - $info_abo = $this->rendInfoCmsAvis($article, 0); - $nb_avis = 0; - if ($rank = $article->getRank()) - $nb_avis = $rank->getNbAvisTotal(); + if (!$rank = $article->getRank()) + $rank = Class_CmsRank::newInstance(); + $nb_avis = $rank->getNbAvisTotal(); $txt_nb_avis = ($nb_avis == 0) ?" Aucun avis" : " Avis (".$nb_avis.")"; $id_news = $article->getId(); @@ -39,8 +37,10 @@ class ZendAfi_View_Helper_AvisCms extends Zend_View_Helper_HtmlElement { $html.='<br />'; $html.='<a href="#" onclick="javascript:fonction_abonne(\''.Class_Users::currentUserId().'\',\'/opac/abonne/cmsavis?id='.$id_news.'\')">» Donner ou modifier votre avis</a>'; $html.='<ul class="notice_info">'; - $html.='<li>'.$info_bib["NOTE"].' <a href="#" onclick="showAvis('.$id_news.',\'bib\');return false;">Avis de bibliothécaires</a> '.$info_bib["AVIS"].'</li>'; - $html.='<li>'.$info_abo["NOTE"].' <a href="#" onclick="showAvis('.$id_news.',\'abo\');return false;">Avis de lecteurs du portail</a> '.$info_abo["AVIS"].'</li>'; + if ($rank->getBibNombreAvis()) + $html.='<li>'.$this->view->noteImg($rank->getBibNote()).' <a href="#" onclick="showAvis('.$id_news.',\'bib\');return false;">Avis de bibliothécaires</a> '.$this->formatNoteLabel($rank->getBibNombreAvis()).'</li>'; + if ($rank->getAbonNombreAvis()) + $html.='<li>'.$this->view->noteImg($rank->getAbonNote()).' <a href="#" onclick="showAvis('.$id_news.',\'abo\');return false;">Avis de lecteurs du portail</a> '.$this->formatNoteLabel($rank->getAbonNombreAvis()).'</li>'; $html.='</ul>'; $view = (getVar('MODO_AVIS_BIBLIO') == 1) ? 1 : ""; @@ -71,41 +71,17 @@ class ZendAfi_View_Helper_AvisCms extends Zend_View_Helper_HtmlElement { $html.='<div style="width:100%;background:transparent url('.URL_IMG.'box/menu/separ.gif) repeat-x scroll center bottom"> </div>'; return($html); + } + + public function formatNoteLabel($note) { + return $this->view->_plural($note, + '(aucune évaluation)', + '(%d évaluation)', + '(%d évaluations)', + $note); } - public function rendInfoCmsAvis($article, $abon_ou_bib) { - if (!$rank = $article->getRank()) - return array('NOTE' => 0, 'AVIS' => 0, 'ABON_NOMBRE_AVIS' => 0, 'BIB_NOMBRE_AVIS' => 0); - - $abon_nb_avis = $rank->getAbonNombreAvis(); - $bib_nb_avis = $rank->getBibNombreAvis(); - - if($abon_ou_bib == 0) { - if ($abon_nb_avis == 0 || $abon_nb_avis == null) $nb_eva = "(aucune évaluation)"; - elseif($abon_nb_avis == 1) $nb_eva = "(1 évaluation)"; - elseif($abon_nb_avis > 1) $nb_eva = "(".$abon_nb_avis." évaluations)"; - - $note = $rank->getAbonNote(); - } else { - if ($bib_nb_avis == 0 || $bib_nb_avis == null) $nb_eva = "(aucune évaluation)"; - elseif($bib_nb_avis == 1) $nb_eva = "(1 évaluation)"; - elseif($bib_nb_avis > 1) $nb_eva = "(".$bib_nb_avis." évaluations)"; - - $note = $rank->getBibNote(); - } - - $note_r = str_replace('.','-',$note); - $note_r = str_replace('-0','',$note_r); - if ($note_r == '') $note_r = "0"; - $img = '<img src="'.URL_ADMIN_IMG.'stars/stars-'.$note_r.'.gif" alt="note:'.$note.'" border="0"/>'; - $info["NOTE"] = $img; - - $info["AVIS"] = $nb_eva; - return($info); - } - - function getCmsAvisBiblio($article, $statut = "") { return $this->getCmsAvis($article, Trait_Avis::$AVIS_BIBLIO, $statut); } diff --git a/tests/application/modules/opac/controllers/AbonneControllerCmsAvisTest.php b/tests/application/modules/opac/controllers/AbonneControllerCmsAvisTest.php index 31697ceef17..012274cbe3d 100644 --- a/tests/application/modules/opac/controllers/AbonneControllerCmsAvisTest.php +++ b/tests/application/modules/opac/controllers/AbonneControllerCmsAvisTest.php @@ -67,6 +67,13 @@ class AbonneControllerCmsAvisViewArticleWithCommentTest extends AbonneController 'login' => 'max', 'password' => 'maxLaMenace']); + $this->fixture('Class_CmsRank', ['id' => 3, + 'id_cms' => 1, + 'abon_nombre_avis' => 1, + 'abon_note' => '4.0', + 'bib_nombre_avis' => 0, + 'bib_note' => '0.0']); + $this->fixture('Class_Avis' , ['id' => 7, 'id_user' => 112, 'id_cms' => '1', @@ -81,19 +88,19 @@ class AbonneControllerCmsAvisViewArticleWithCommentTest extends AbonneController /** @test */ public function ArticleJeSuisCharlieShouldHaveLinkToAccessBorrowersComments() { - $this->assertXPathContentContains('//a[contains(@onclick, "showAvis(1")]', 'Avis de lecteur du portail'); + $this->assertXPathContentContains('//a[contains(@onclick, "showAvis(1")]', 'Avis de lecteurs du portail'); } /** @test */ public function ArticleJeSuisCharlieShouldHaveOneBorrowersComments() { - $this->assertXPathContentContains('//div[@id="avis_1"]/ul[@class="notice_info"]/li[1]', "</a>\n1"); + $this->assertXPathContentContains('//div[@id="avis_1"]/ul[@class="notice_info"]/li[1]', "(1 évaluation)"); } /** @test */ public function ArticleJeSuisCharlieShouldHaveFourStarsImage() { - $this->assertXPathContentContains('//div[@id="avis_1"]/ul[@class="notice_info"]/li[1]', "<img class=\"note_critique note-4"); + $this->assertXPath('//div[@id="avis_1"]/ul[@class="notice_info"]/li[1]/img[contains(@src, "stars-4.gif")]'); } } -- GitLab