From 5ce9f7bd51bd16068db927b9dbe1506a9caeaa97 Mon Sep 17 00:00:00 2001
From: pbarroca <pbarroca@afi-sa.fr>
Date: Tue, 4 Mar 2014 16:24:50 +0100
Subject: [PATCH] rel #12091: Fix domain browser settings popup

---
 .../admin/controllers/ModulesController.php   |  5 ++
 .../admin/views/scripts/modules/domains.phtml |  3 ++
 .../opac/views/scripts/domains/browse.phtml   |  2 +
 library/Class/Systeme/ModulesAppli.php        | 19 +++----
 .../ZendAfi/View/Helper/FonctionsAdmin.php    | 53 ++++++++-----------
 public/opac/css/global.css                    |  1 +
 .../controllers/ModulesControllerTest.php     | 20 +++++++
 .../controllers/DomainsControllerTest.php     | 10 +++-
 8 files changed, 69 insertions(+), 44 deletions(-)
 create mode 100644 application/modules/admin/views/scripts/modules/domains.phtml

diff --git a/application/modules/admin/controllers/ModulesController.php b/application/modules/admin/controllers/ModulesController.php
index 78f4cd28889..6d9896ad14a 100644
--- a/application/modules/admin/controllers/ModulesController.php
+++ b/application/modules/admin/controllers/ModulesController.php
@@ -123,6 +123,11 @@ class Admin_ModulesController extends ZendAfi_Controller_Action {
 	}
 
 
+	public function domainsAction() {
+		return $this->_simpleAction('domains');
+	}
+
+
 	public function catalogueAction() {
 		$this->view->titre = 'Domaines';
 		if ($this->_request->isPost()) {
diff --git a/application/modules/admin/views/scripts/modules/domains.phtml b/application/modules/admin/views/scripts/modules/domains.phtml
new file mode 100644
index 00000000000..8d88c73ccfa
--- /dev/null
+++ b/application/modules/admin/views/scripts/modules/domains.phtml
@@ -0,0 +1,3 @@
+<?php echo $this->render('modules/_debut.phtml');?>
+
+<?php echo $this->render('modules/_fin.phtml');?>
diff --git a/application/modules/opac/views/scripts/domains/browse.phtml b/application/modules/opac/views/scripts/domains/browse.phtml
index fd0a0b8ce6d..af13ab67d2b 100644
--- a/application/modules/opac/views/scripts/domains/browse.phtml
+++ b/application/modules/opac/views/scripts/domains/browse.phtml
@@ -1,3 +1,5 @@
 <?php
+$this->openBoite();
 echo $this->renderDomainBrowser($this->current_domain,$this->current_breadcrumb);
+$this->closeBoite();
 ?>
diff --git a/library/Class/Systeme/ModulesAppli.php b/library/Class/Systeme/ModulesAppli.php
index 5c44c980f54..a92a14122a8 100644
--- a/library/Class/Systeme/ModulesAppli.php
+++ b/library/Class/Systeme/ModulesAppli.php
@@ -138,9 +138,9 @@ class Class_Systeme_ModulesAppli extends Class_Systeme_ModulesAbstract {
 														'popup_width' => 710, 
 														'popup_height' => 620]],
 		
-		'browse' => ['*' => ['libelle' => 'Domaines', 
-												 'popup_width' => 710, 
-												 'popup_height' => 620]]
+		'domains' => ['*' => ['libelle' => 'Domaines', 
+													'popup_width' => 710, 
+													'popup_height' => 620]]
 		];
 
 
@@ -150,11 +150,11 @@ class Class_Systeme_ModulesAppli extends Class_Systeme_ModulesAbstract {
 	 */
 	public static function getAvailableListeNoticeFormat() {
 		return 
-			[Class_Systeme_ModulesAppli::LISTE_FORMAT_TABLEAU => "Tableau",
-			 Class_Systeme_ModulesAppli::LISTE_FORMAT_ACCORDEON =>"Liste en mode accordéon",
-			 Class_Systeme_ModulesAppli::LISTE_FORMAT_VIGNETTES => "Vignettes",
-			 Class_Systeme_ModulesAppli::LISTE_FORMAT_MUR => "Mur",
-			 Class_Systeme_ModulesAppli::LISTE_FORMAT_CHRONO => "Chronologique"];
+			[Class_Systeme_ModulesAppli::LISTE_FORMAT_TABLEAU => 'Tableau',
+			 Class_Systeme_ModulesAppli::LISTE_FORMAT_ACCORDEON => 'Liste en mode accordéon',
+			 Class_Systeme_ModulesAppli::LISTE_FORMAT_VIGNETTES => 'Vignettes',
+			 Class_Systeme_ModulesAppli::LISTE_FORMAT_MUR => 'Mur',
+			 Class_Systeme_ModulesAppli::LISTE_FORMAT_CHRONO => 'Chronologique'];
 	}
 
 
@@ -224,9 +224,6 @@ class Class_Systeme_ModulesAppli extends Class_Systeme_ModulesAbstract {
 			break;
 		case "bib": $valeurs = $this->getDefautBib($action);
 			break;
-		case "browse": 
-			$valeurs = $this->getDefautRecherche('resultat');
-			break;
 		default : $valeurs = array();
 		}
 
diff --git a/library/ZendAfi/View/Helper/FonctionsAdmin.php b/library/ZendAfi/View/Helper/FonctionsAdmin.php
index 9f025ddb305..e3bc1102e7a 100644
--- a/library/ZendAfi/View/Helper/FonctionsAdmin.php
+++ b/library/ZendAfi/View/Helper/FonctionsAdmin.php
@@ -18,57 +18,48 @@
  * along with AFI-OPAC 2.0; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
  */
-//////////////////////////////////////////////////////////////////////////////////////////
-// OPAC3 :	Fonctions admin en fonction du role dans interface du site
-//////////////////////////////////////////////////////////////////////////////////////////
 
 class ZendAfi_View_Helper_FonctionsAdmin extends ZendAfi_View_Helper_BaseHelper {
-	protected 
-		$id_profil,											// Profil en cours d'utilisation
-		$type_module,
-		$id_module;
+	protected $id_profil,	$type_module,	$id_module;
 	
-//------------------------------------------------------------------------------------------------------
-// Main routine
-//------------------------------------------------------------------------------------------------------  
 	public function fonctionsAdmin($id_module=0, $type_module=false) {
 		if (!Class_Users::isCurrentUserCanConfigFront())
-			return false;
+			return '';
 
 		$this->id_profil = Class_Profil::getCurrentProfil()->getId();
 		$this->type_module = $type_module;
 		$this->id_module = $id_module;
 		
 		$fonction = $this->getPopupParams();
+		if (!$fonction) 
+			return '';
+
+		$label = $this->translate()->_('Propriétés du module');
+		$onclick = "showPopWin('" . htmlspecialchars(BASE_URL . $fonction["url"]) . "'," 
+			. $fonction["popup_width"] ."," 
+			. $fonction["popup_height"] . ", null)";
 
-		// Html
-		if(!$fonction) return false;
-		$html='<div class="configuration_module" style="text-align:right">';
-		$onclick="showPopWin('".htmlspecialchars(BASE_URL.$fonction["url"])."',".$fonction["popup_width"].",".$fonction["popup_height"].",null)";
-		$html.=sprintf('<img src="'.URL_ADMIN_IMG.'ico/fonctions_admin.png" onclick="%s" alt="%s" title="%s" style="cursor:pointer" />',
-									 $onclick,
-									 $this->translate()->_('Propriétés du module'),
-									 $this->translate()->_('Propriétés du module'));
-		$html.='</div>';
-		return $html;
+		return '<div class="configuration_module" style="text-align:right">'
+			. $this->view->tagImg(URL_ADMIN_IMG . 'ico/fonctions_admin.png',
+														['onclick' => $onclick,
+														 'alt' => $label,
+														 'title' => $label])
+			. '</div>';
 	}
 
-//------------------------------------------------------------------------------------------------------
-// Modules des controllers
-//------------------------------------------------------------------------------------------------------ 
 	protected function getPopupParams()	{
-		// Parametres
 		$controller = $this->view->_current_module['controller'];
 		$action = $this->view->_current_module['action'];
 		$action2 = $this->view->_current_module['action2'];
 		
-		$cls_module=new Class_Systeme_ModulesAppli();
-		$props=$cls_module->getModule($controller,$action);
-		if(!$props) return false;
+		$cls_module = new Class_Systeme_ModulesAppli();
+		$props = $cls_module->getModule($controller, $action);
+		if(!$props) 
+			return false;
 		
-		$ret["url"]="/admin/modules/".$controller."?config=site&type_module=".$controller."&id_profil=".$this->id_profil."&action1=".$action."&action2=".$action2;
-		$ret["popup_width"]=$props["popup_width"];
-		$ret["popup_height"]=$props["popup_height"];
+		$ret["url"] = "/admin/modules/" . $controller . "?config=site&type_module=" . $controller . "&id_profil=" . $this->id_profil . "&action1=" . $action . "&action2=" . $action2;
+		$ret["popup_width"] = $props["popup_width"];
+		$ret["popup_height"] = $props["popup_height"];
 		return $ret;
 	}
 }
\ No newline at end of file
diff --git a/public/opac/css/global.css b/public/opac/css/global.css
index 85268e90f69..3a21bd28a59 100644
--- a/public/opac/css/global.css
+++ b/public/opac/css/global.css
@@ -40,6 +40,7 @@ a {
     position: relative; 
     height: 0px;
     z-index: 1000;
+    cursor:pointer;
 }
 
 .configuration_module + .newsadd {
diff --git a/tests/application/modules/admin/controllers/ModulesControllerTest.php b/tests/application/modules/admin/controllers/ModulesControllerTest.php
index 58e94fc6e68..3d1dc54010b 100644
--- a/tests/application/modules/admin/controllers/ModulesControllerTest.php
+++ b/tests/application/modules/admin/controllers/ModulesControllerTest.php
@@ -669,4 +669,24 @@ class ModulesControllerSearchPostValidationTest extends Admin_AbstractController
 	}
 }
 
+
+
+class ModulesControllerDomainsTest extends Admin_AbstractControllerTestCase {
+	public function setUp() {
+		parent::setUp();
+		$this->dispatch('/admin/modules/domains?config=site&type_module=domains&id_profil=2&action1=browse&action2=', true);
+	}
+
+
+	/** @test */
+	public function shouldDisplayTitleDomains() {
+		$this->assertXPathContentContains('//h1', 'Domaines');
+	}
+
+
+	/** @test */
+	public function shouldDisplayWidgetStyle() {
+		$this->assertXPath('//select[@name="boite"]/option');
+	}
+}
 ?>
\ No newline at end of file
diff --git a/tests/application/modules/opac/controllers/DomainsControllerTest.php b/tests/application/modules/opac/controllers/DomainsControllerTest.php
index 20d9a9af125..507efa153ba 100644
--- a/tests/application/modules/opac/controllers/DomainsControllerTest.php
+++ b/tests/application/modules/opac/controllers/DomainsControllerTest.php
@@ -54,15 +54,21 @@ class DomainsControllerYouthBrowseTest extends DomainsControllerBrowseTestCase {
 	}
 
 	/** @test */
-	public function browsingYouthDomainShouldDisplayLinkToLetterADomain() {
+	public function shouldDisplayLinkToLetterADomain() {
 		$this->assertXPath('//div[@class="children_domains"]/ul/li/a[@href="/domains/browse/id/4/parents/3"]');
 	}
  
 
 	/** @test */
-	public function browsingYouthDomainShouldDisplayLinkToLetterCDomain() {
+	public function shouldDisplayLinkToLetterCDomain() {
 		$this->assertXPath('//div[@class="children_domains"]/ul/li/a[@href="/domains/browse/id/6/parents/3"]');
 	}
+
+
+	/** @test */
+	public function shouldDisplayModuleConfiguration() {
+		$this->assertXPath('//div[@class="configuration_module"]/img[contains(@onclick, "/admin/modules/domains?")][contains(@onclick, "action1=browse")]');
+	}
 }
 
 
-- 
GitLab