From 57891f05c19dc7f4da7cc273fcfd1e4d8e77fee9 Mon Sep 17 00:00:00 2001
From: efalcy <stl@gresille.org>
Date: Wed, 14 May 2014 18:41:57 +0200
Subject: [PATCH] dev#13582 change profil deconexion , display option (work in
 progress)

---
 .../views/scripts/modules/auth_form.phtml     | 12 ++++++++++++
 .../opac/controllers/AuthController.php       |  5 ++++-
 .../Class/Systeme/ModulesAccueil/Login.php    |  3 ++-
 library/ZendAfi/Controller/Action.php         | 10 +++++++++-
 .../controllers/AccueilControllerTest.php     | 13 +++++++++++++
 .../opac/controllers/AuthControllerTest.php   | 19 ++++++++++++++++++-
 6 files changed, 58 insertions(+), 4 deletions(-)

diff --git a/application/modules/admin/views/scripts/modules/auth_form.phtml b/application/modules/admin/views/scripts/modules/auth_form.phtml
index 4b8f12f734f..90c22cde8a4 100644
--- a/application/modules/admin/views/scripts/modules/auth_form.phtml
+++ b/application/modules/admin/views/scripts/modules/auth_form.phtml
@@ -79,3 +79,15 @@
     ?>
 	</td>
 </tr>
+
+
+<tr>
+	<td class="droite">Déconnexion : basculer sur le profil:&nbsp;</td>
+	<td class="gauche">
+    <?php  $this->getHelper('ComboProfils')
+		->setTagId('profil_deco_redirect')
+		->setTagName('profil_deco_redirect');
+		echo $this->ComboProfils('ALL', 'ALL', $this->preferences['profil_deco_redirect']);
+    ?>
+	</td>
+</tr>
diff --git a/application/modules/opac/controllers/AuthController.php b/application/modules/opac/controllers/AuthController.php
index 70e6c899a49..8e856c42534 100644
--- a/application/modules/opac/controllers/AuthController.php
+++ b/application/modules/opac/controllers/AuthController.php
@@ -151,8 +151,11 @@ class AuthController extends ZendAfi_Controller_Action {
 
 
 	function logoutAction()	{
+		$preferences = Class_Profil::getCurrentProfil()->getCfgModulesPreferences('auth','login');		
+
 		ZendAfi_Auth::getInstance()->clearIdentity();
-		$this->_redirectToParentProfil();
+		xdebug_break();
+		$this->_redirectToDecoProfil($preferences); 
 	}
 
 
diff --git a/library/Class/Systeme/ModulesAccueil/Login.php b/library/Class/Systeme/ModulesAccueil/Login.php
index 5a91f2973f4..1eb5a5f0e47 100644
--- a/library/Class/Systeme/ModulesAccueil/Login.php
+++ b/library/Class/Systeme/ModulesAccueil/Login.php
@@ -55,7 +55,8 @@ class Class_Systeme_ModulesAccueil_Login extends Class_Systeme_ModulesAccueil_Nu
 		'lien_compte' => '» Mon compte',
 		'lien_deconnection' => '» Se déconnecter',
 		'autocomplete_off' => 1 ,// si == 1, rajoute autocomplete="off" au formulaire
-		'profil_redirect' => '0'
+		'profil_redirect' => '0',
+		'profil_deco_redirect' => '0'
 		];
 }
 ?>
\ No newline at end of file
diff --git a/library/ZendAfi/Controller/Action.php b/library/ZendAfi/Controller/Action.php
index fc0100b4c8a..93d073a1fae 100644
--- a/library/ZendAfi/Controller/Action.php
+++ b/library/ZendAfi/Controller/Action.php
@@ -105,7 +105,7 @@ class ZendAfi_Controller_Action extends Zend_Controller_Action {
 
 	public function editAction() {
 		if (!$model = $this->_definitions->find($this->_getParam('id'))) {
-			$this->_redirectToIndex();
+			$this->_rectToIndex();
 			return;
 		}
 		$this->view->titre = $this->_definitions->editActionTitle($model);
@@ -147,6 +147,14 @@ class ZendAfi_Controller_Action extends Zend_Controller_Action {
 	}
 
 
+	protected function _redirectToDecoProfil($preferences) {
+		if ($preferences['profil_deco_redirect']>0)
+			$this->_redirect('/opac/index/index/id_profil/'.$preferences['profil_deco_redirect']);
+		else
+			$this->_redirectToParentProfil();
+	}
+
+
 	protected function _redirectToEdit($model) {
 		$this->_redirect('/admin/'.$this->_request->getControllerName().'/edit/id/'.$model->getId());
 	}
diff --git a/tests/application/modules/admin/controllers/AccueilControllerTest.php b/tests/application/modules/admin/controllers/AccueilControllerTest.php
index 8f9b27d90f5..2b63a84b0e2 100644
--- a/tests/application/modules/admin/controllers/AccueilControllerTest.php
+++ b/tests/application/modules/admin/controllers/AccueilControllerTest.php
@@ -477,6 +477,7 @@ class AccueilControllerConfigBoiteLoginTest extends Admin_AbstractControllerTest
 																	 'division' => 4,
 																	 'id_module' => 32,
 																	 'preferences' => ['profil_redirect'=>'1',
+																										 'profil_deco_redirect' => '1',
 																										 'mot_de_pass_exemple' => 'dd/mm/aaaa']]);		
 		$this->dispatch('/admin/accueil/login?config=accueil&type_module=LOGIN&id_module=32', true);
 	}
@@ -488,6 +489,12 @@ class AccueilControllerConfigBoiteLoginTest extends Admin_AbstractControllerTest
 	}
 
 
+		/** @test */
+	public function selectDecoProfilRedirectShouldContainsProfil1() {
+		$this->assertXPathContentContains('//select[@id="profil_deco_redirect"][@name="profil_deco_redirect"]/optgroup/option[@value="1"][@selected="selected"]', 'portail: Accueil', $this->_response->getBody());
+	}
+
+
 	/** @test */
 	public function inputTitreShouldBeSeConnecter() {
 		$this->assertXPath('//input[@name="titre"][@value="Se connecter"]');
@@ -552,6 +559,12 @@ class AccueilControllerConfigBoiteLoginTest extends Admin_AbstractControllerTest
 	public function selectProfilShloudBeEmptyValue() {
 		$this->assertXPath('//td/select[@id="profil_redirect"]/option');
 	}
+
+	/** @test **/
+	public function selectProfilDeconnectionShouldBeEmptyValue() {
+		$this->assertXPath('//td/select[@id="profil_deco_redirect"]/option');
+	}
+
 }
 
 
diff --git a/tests/application/modules/opac/controllers/AuthControllerTest.php b/tests/application/modules/opac/controllers/AuthControllerTest.php
index e2f936bc7cf..dafeec35c33 100644
--- a/tests/application/modules/opac/controllers/AuthControllerTest.php
+++ b/tests/application/modules/opac/controllers/AuthControllerTest.php
@@ -39,7 +39,8 @@ abstract class PortailWithOneLoginModuleTestCase extends AbstractControllerTestC
 																					'titre_connecte' => 'Vous êtes connecté(e)',
 																					'lien_connexion' => 'please, log me',
 																					'lien_mot_de_passe_oublie' => 'me rappelle plus',
-																					'profil_redirect' => 1]]],
+																					'profil_redirect' => 1,
+																					'profil_deco_redirect' => 5]]],
 										'options' => []];
 
 		Class_Profil::getCurrentProfil()
@@ -194,6 +195,22 @@ class AuthControllerWithProfilPageAbonneSIGBLoggedLogoutTest extends PortailWith
 }
 
 
+
+class AuthControllerWithProfilPageAbonneSIGBLoggedLogoutDeconnectionProfilTest extends PortailWithOneLoginModuleTestCase {
+	public function setUp() {
+		parent::setUp();
+		$this->dispatch('/opac/auth/logout');
+	}
+
+	
+	/** @test **/
+	public function linkSeDeconnecterShouldRedirectToSelectedProfil5() {
+		$this->assertRedirectTo('/opac/index/index/id_profil/5');
+	}
+
+}
+
+
 abstract class AuthControllerNobodyLoggedTestCase extends PortailWithOneLoginModuleTestCase {
 	public function setUp() {
 		parent::setUp();
-- 
GitLab