From b03a4ef791d754315dbec82279cc07bbc30cdfdd Mon Sep 17 00:00:00 2001
From: Matthias Meusburger <matthias.meusburger@biblibre.com>
Date: Tue, 22 Apr 2014 16:33:46 +0200
Subject: [PATCH] RF#13039: Add logout button to user profile.

---
 .../opac/views/scripts/abonne/fiche.phtml     |   2 ++
 .../View/Helper/Abonne/Deconnexion.php        |  34 ++++++++++++++++++
 public/opac/images/abonnes/deconnexion.png    | Bin 0 -> 3728 bytes
 .../controllers/AbonneControllerFicheTest.php |  10 ++++++
 4 files changed, 46 insertions(+)
 create mode 100644 library/ZendAfi/View/Helper/Abonne/Deconnexion.php
 create mode 100644 public/opac/images/abonnes/deconnexion.png

diff --git a/application/modules/opac/views/scripts/abonne/fiche.phtml b/application/modules/opac/views/scripts/abonne/fiche.phtml
index f260ecd11b8..91928309bbd 100644
--- a/application/modules/opac/views/scripts/abonne/fiche.phtml
+++ b/application/modules/opac/views/scripts/abonne/fiche.phtml
@@ -11,9 +11,11 @@ echo $this->abonne_Newsletters($this->user);
 echo $this->abonne_Formations($this->user);
 echo $this->abonne_Multimedia($this->user);
 echo $this->abonne_SuggestionAchat($this->user);
+echo $this->abonne_Deconnexion($this->user);
 
 if ($this->error) 
 	echo sprintf('<div class="error">%s</div>', $this->error);
 
 $this->closeBoite();
 ?>
+
diff --git a/library/ZendAfi/View/Helper/Abonne/Deconnexion.php b/library/ZendAfi/View/Helper/Abonne/Deconnexion.php
new file mode 100644
index 00000000000..d2403b1fd61
--- /dev/null
+++ b/library/ZendAfi/View/Helper/Abonne/Deconnexion.php
@@ -0,0 +1,34 @@
+<?php
+/**
+ * Copyright (c) 2013, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * 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 
+ */
+class ZendAfi_View_Helper_Abonne_Deconnexion extends ZendAfi_View_Helper_Abonne_Abstract {
+	public function abonne_Deconnexion($user) {
+		$action_url = $this->view->url(['controller' => 'auth',
+																		'action' => 'logout'], null, true);
+
+		return $this->tagFicheAbonne(sprintf('<a href=\'%s\'>%s</a>', 
+																				 $action_url, 
+																				 $this->view->_('Déconnexion')),
+																 'deconnexion',
+																 $action_url);
+	}
+}
+
+?>
\ No newline at end of file
diff --git a/public/opac/images/abonnes/deconnexion.png b/public/opac/images/abonnes/deconnexion.png
new file mode 100644
index 0000000000000000000000000000000000000000..0e2abed33513210c930b72764a01ab77bc476187
GIT binary patch
literal 3728
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

literal 0
HcmV?d00001

diff --git a/tests/application/modules/opac/controllers/AbonneControllerFicheTest.php b/tests/application/modules/opac/controllers/AbonneControllerFicheTest.php
index 005b2827a48..19848856000 100644
--- a/tests/application/modules/opac/controllers/AbonneControllerFicheTest.php
+++ b/tests/application/modules/opac/controllers/AbonneControllerFicheTest.php
@@ -56,6 +56,11 @@ class AbonneControllerFicheAsAdminTest extends AbstractAbonneControllerFicheTest
 	public function linkToReservationsShouldNotBePresent() {
 		$this->assertNotXPath('//a[contains(@href, "/abonne/reservations")]');
 	}
+
+	/** @test */
+	public function linkToLogoutShouldBePresent() {
+		$this->assertXPath('//a[contains(@href, "/auth/logout")]');
+	}
 }
 
 
@@ -79,6 +84,11 @@ class AbonneControllerFicheAsAbonneTest extends AbstractAbonneControllerFicheTes
 	public function linkToReservationsShouldNotBePresent() {
 		$this->assertXPath('//a[contains(@href, "/abonne/reservations")]');
 	}
+
+	/** @test */
+	public function linkToLogoutShouldBePresent() {
+		$this->assertXPath('//a[contains(@href, "/auth/logout")]');
+	}
 }
 
 
-- 
GitLab