From 966faac14683f4cd84a3748ed0c55a63093b5ce9 Mon Sep 17 00:00:00 2001 From: gloas <gloas@git-test.afi-sa.fr> Date: Mon, 17 Jun 2013 11:12:10 +0000 Subject: [PATCH] Ajout variable AFFICHER_DISPONIBILITE_SUR_RECHERCHE --- .../admin/controllers/IndexController.php | 3 +- library/Class/AdminVar.php | 6 ++++ library/ZendAfi/View/Helper/ListeNotices.php | 5 +++- public/opac/js/liste_notices_mur.js | 29 ++++++++++++++----- .../ProfilOptionsControllerTest.php | 16 ++++++++++ 5 files changed, 49 insertions(+), 10 deletions(-) diff --git a/application/modules/admin/controllers/IndexController.php b/application/modules/admin/controllers/IndexController.php index 15918d66875..831827aed0e 100644 --- a/application/modules/admin/controllers/IndexController.php +++ b/application/modules/admin/controllers/IndexController.php @@ -181,7 +181,8 @@ class Admin_IndexController extends Zend_Controller_Action { 'MENU_BOITE' => 'Activation des boîtes dans les menus. 0 = inactif, 1 = actif', 'INTERDIRE_MODIF_FICHE_ABONNE' => 'Interdire la modification de la fiche abonne 0 = inactif, 1 = actif', 'CHAMPS_FICHE_UTILISATEUR' => 'Liste des champs que l\'utilisateur peux modifier. <br/>Ex: nom;prenom;pseudo;adresse;<br/>code_postal;ville;mail;is_contact_mail;<br/>telephone;is_contact_telephone;', - 'URL_TYPO3' => 'Url d\'import d\un agenda TYPO3' + 'URL_TYPO3' => 'Url d\'import d\un agenda TYPO3', + 'AFFICHER_DISPONIBILITE_SUR_RECHERCHE' => 'Activation de la disponibilite dans le resultat de recherche. 0 = inactif, 1 = actif' ); diff --git a/library/Class/AdminVar.php b/library/Class/AdminVar.php index 67c5c2a94be..b82c490fb87 100644 --- a/library/Class/AdminVar.php +++ b/library/Class/AdminVar.php @@ -88,6 +88,7 @@ class Class_AdminVar extends Storm_Model_Abstract { 'FACETTE_INTERET_LIBELLE', 'FACETTE_MATIERE_LIBELLE', 'FACETTE_TAG_LIBELLE', + 'AFFICHER_DISPONIBILITE_SUR_RECHERCHE' ); @@ -305,6 +306,11 @@ class Class_AdminVar extends Storm_Model_Abstract { return self::isModuleEnabled('MENU_BOITE'); } + + public static function isAfficherDispoSurRechercheEnabled() { + return self::isModuleEnabled('AFFICHER_DISPONIBILITE_SUR_RECHERCHE'); + } + public function getValeur() { return stripslashes($this->_get('valeur')); diff --git a/library/ZendAfi/View/Helper/ListeNotices.php b/library/ZendAfi/View/Helper/ListeNotices.php index caedbb6ed9f..2e473dba7dd 100644 --- a/library/ZendAfi/View/Helper/ListeNotices.php +++ b/library/ZendAfi/View/Helper/ListeNotices.php @@ -247,10 +247,13 @@ class ZendAfi_View_Helper_ListeNotices extends ZendAfi_View_Helper_BaseHelper { public function loadScript(){ Class_ScriptLoader::getInstance() ->addInlineScript("var resumeAjaxBaseUrl='".$this->view->url(['controller' => 'noticeajax', 'action' => 'resumenotice'])."';") - ->addInlineScript("var disponibiliteAjaxBaseUrl='".$this->view->url(['controller' => 'noticeajax', 'action' => 'dispo-notice'], null, true)."';") ->addOPACScript('liste_notices_mur') ->addJQueryReady("vignetteHover($('.liste_mur .notice[data-id]'));") ->loadPrettyPhoto(); + if(Class_AdminVar::isAfficherDispoSurRechercheEnabled()) + Class_ScriptLoader::getInstance()->addInlineScript("var disponibiliteAjaxBaseUrl='".$this->view->url(['controller' => 'noticeajax', 'action' => 'dispo-notice'], null, true)."';"); + else + Class_ScriptLoader::getInstance()->addInlineScript("var disponibiliteAjaxBaseUrl;"); } } \ No newline at end of file diff --git a/public/opac/js/liste_notices_mur.js b/public/opac/js/liste_notices_mur.js index da0f0913729..367833b6c9d 100644 --- a/public/opac/js/liste_notices_mur.js +++ b/public/opac/js/liste_notices_mur.js @@ -14,16 +14,29 @@ function noticeMurOpen(context, id){ context.tooltip('option', 'content', liste_resumes[id]); return; } + $.get(resumeAjaxBaseUrl+'?id_notice='+id , function(data) { var resume = ('' == data) ? '' : data; - $.get(disponibiliteAjaxBaseUrl+'?id_notice='+id, function(data) { - var dispo = ('true' == data) ? '<span class="disponible">Disponible</span>' : '<span class="dispo">Non disponible</span>'; - var content = '<span class="resume">' + resume + '</span>' + dispo; - liste_resumes[id] = content; - context.tooltip('option', 'content', content); - });}); + if(!(undefined==disponibiliteAjaxBaseUrl)) + getDisponibilite(id, function(dispo) {popupResumeAndDispo(context, resume, dispo, id)}); + else + popupResumeAndDispo(context, resume, '', id); + + }); } +function getDisponibilite(id, callback){ + $.get(disponibiliteAjaxBaseUrl+'?id_notice='+id, function(data) { + var dispo = ('true' == data) ? '<span class="disponible">Disponible</span>' : '<span class="dispo">Non disponible</span>'; + callback(dispo); + }); +} + +function popupResumeAndDispo(context, resume, dispo, id) { + var content = '<span class="resume">' + resume + '</span>' + dispo; + liste_resumes[id] = content; + context.tooltip('option', 'content', content); +} function noticeMurTooltip(item) { var id = $(item).data('id'); @@ -41,7 +54,7 @@ function noticeMurTooltip(item) { var anchor = $(this); $(this).click(function(event) { event.preventDefault(); -// $(anchor).toggleClass('yop'); + // $(anchor).toggleClass('yop'); $(item).find('.vignette-reseaux-sociaux').toggle(); })}); @@ -97,7 +110,7 @@ function noticeMurPanierWithData(data, anchor){ opacHideModal(); if (undefined == event.currentTarget) noticeMurPanier(anchor); - + }) } diff --git a/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php b/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php index 59677febe8f..5a38f447aba 100644 --- a/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php +++ b/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php @@ -118,9 +118,11 @@ class ProfilOptionsControllerProfilAdulteWithCacheTest extends ProfilOptionsCont public function setUp(){ parent::setUp(); + Class_AdminVar::newInstanceWithId('AFFICHER_DISPONIBILITE_SUR_RECHERCHE', ['valeur'=>1] ); Class_AdminVar::newInstanceWithId('CACHE_ACTIF', ['valeur'=>1] ); $this->dispatch('/'); $this->bootstrap(); + Class_ScriptLoader::resetInstance(); $this->dispatch('/'); } @@ -139,6 +141,20 @@ class ProfilOptionsControllerProfilAdulteWithCacheTest extends ProfilOptionsCont $this->assertXPathContentContains('//script','openDialogExemplaires'); } + /** @test */ + public function scriptShouldContainsDisponibiliteAjaxBaseUrl() { + $this->assertXPathContentContains('//script', 'disponibiliteAjaxBaseUrl'); + } + + /** @test */ + public function withOutOptionAfficherDisponibiliteSurRechercheScriptShouldNotContainsDisponibiliteAjaxBaseUrl(){ + Class_AdminVar::newInstanceWithId('AFFICHER_DISPONIBILITE_SUR_RECHERCHE', ['valeur'=>0] ); + $this->bootstrap(); + Class_ScriptLoader::resetInstance(); + $this->dispatch('/'); + $this->assertNotXPathContentContains('//script', 'disponibiliteAjaxBaseUrl'); + } + } -- GitLab