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