From a2b2a7419352c487e87b16b1eaa9b19acb08652b Mon Sep 17 00:00:00 2001
From: llaffont <llaffont@git-test.afi-sa.fr>
Date: Mon, 20 Aug 2012 08:49:05 +0000
Subject: [PATCH] =?UTF-8?q?Am=C3=A9lioration=20partage=20r=C3=A9seaux=20so?=
 =?UTF-8?q?ciaux,=20prends=20la=20bonne=20url=20de=20la=20page=20courante?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 application/modules/opac/controllers/IndexController.php | 9 +++++----
 library/Class/WebService/ReseauxSociaux.php              | 3 ++-
 library/ZendAfi/View/Helper/SocialShare.php              | 2 +-
 .../opac/controllers/ProfilOptionsControllerTest.php     | 6 +++---
 4 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/application/modules/opac/controllers/IndexController.php b/application/modules/opac/controllers/IndexController.php
index 02d17ad15f6..d39432c7b71 100644
--- a/application/modules/opac/controllers/IndexController.php
+++ b/application/modules/opac/controllers/IndexController.php
@@ -50,15 +50,16 @@ class IndexController extends Zend_Controller_Action {
 
 
 	public function shareAction() {
-		$this->_helper->getHelper('viewRenderer')
-			->setNoRender();
+		$this->_helper->getHelper('viewRenderer')->setNoRender();
 
-		$profil = Class_Profil::getCurrentProfil();
+		$url = urldecode($this->_getParam('url'));
+		$url .= (false === strpos($url, '?')) ? '?' : '&amp;';
+		$url .= 'id_profil='. Class_Profil::getCurrentProfil()->getId();
 
 		$rs = new Class_WebService_ReseauxSociaux();
 		$body = sprintf("window.open('%s','_blank','location=yes, width=800, height=410')",
 										$rs->getUrl($this->_getParam('on'), 
-																$this->view->url(array('id_profil' => $profil->getId()), null, true),
+																$url,
 																urldecode($this->_getParam('titre'))));
 
 		$this->getResponse()->setHeader('Content-Type', 'application/javascript; charset=utf-8');
diff --git a/library/Class/WebService/ReseauxSociaux.php b/library/Class/WebService/ReseauxSociaux.php
index a69b57b2ab0..c40b3705935 100644
--- a/library/Class/WebService/ReseauxSociaux.php
+++ b/library/Class/WebService/ReseauxSociaux.php
@@ -48,7 +48,8 @@ class Class_WebService_ReseauxSociaux {
 	//------------------------------------------------------------------------------------------------------
 	public function getUrl($id_reseau,$url_afi, $message = '')	{
 		// Short url
-		$url_afi="http://".$_SERVER["HTTP_HOST"].BASE_URL.$url_afi;
+		if (false === strpos($url_afi, 'http'))
+			$url_afi = "http://".$_SERVER["HTTP_HOST"].BASE_URL.$url_afi;
 
 		// Url réseau
 		return sprintf($this->reseaux[$id_reseau]["url"], 
diff --git a/library/ZendAfi/View/Helper/SocialShare.php b/library/ZendAfi/View/Helper/SocialShare.php
index 3ed81b1fdc0..2e1d9ea8a56 100644
--- a/library/ZendAfi/View/Helper/SocialShare.php
+++ b/library/ZendAfi/View/Helper/SocialShare.php
@@ -49,7 +49,7 @@ class ZendAfi_View_Helper_SocialShare extends Zend_View_Helper_HtmlElement {
 	public function addHeadScript() {
 		Class_ScriptLoader::getInstance()
 			->addInlineScript(sprintf("function socialShare(network) {"
-																."jQuery.getScript('%s/index/share/on/' + network + '/titre/' + $(\"title\").text());"
+																."jQuery.getScript('%s/index/share/on/' + network + '/titre/' + $(\"title\").text() + '?url=' + encodeURIComponent(window.location));"
 																."}",
 																BASE_URL));
 	}
diff --git a/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php b/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php
index c6af40452c6..3d31ba3bf6e 100644
--- a/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php
+++ b/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php
@@ -80,7 +80,7 @@ class ProfilOptionsControllerTwitterLinkWithProfilAdulteTest extends ProfilOptio
 		$this->_mock_web_client
 			->whenCalled('open_url')
 			->with(sprintf('http://is.gd/api.php?longurl=%s', 
-										 urlencode('http://localhost' . BASE_URL . '/index/index/id_profil/2')))
+										 urlencode('http://localhost' . BASE_URL . '/index/index?id_profil=2')))
 			->answers('http://is.gd/PkdNgD')
 			->beStrict();
 	}
@@ -94,7 +94,7 @@ class ProfilOptionsControllerTwitterLinkWithProfilAdulteTest extends ProfilOptio
 
 	/** @test */
 	public function twitterLinkShouldReturnJavascriptForTweet() {
-		$this->dispatch('/opac/index/share/on/twitter/titre/Profil+Adulte');
+		$this->dispatch('/opac/index/share/on/twitter/titre/Profil+Adulte?url='.urlencode('http://localhost'.BASE_URL.'/index/index'));
 		$this->assertContains(sprintf("window.open('http://twitter.com/home?status=%s','_blank','location=yes, width=800, height=410')",
 																	urlencode('Profil Adulte http://is.gd/PkdNgD')),
 													$this->_response->getBody());
@@ -103,7 +103,7 @@ class ProfilOptionsControllerTwitterLinkWithProfilAdulteTest extends ProfilOptio
 
 	/** @test */
 	public function facebookLinkShouldReturnJavascriptForTweet() {
-		$this->dispatch('/opac/index/share/on/facebook/titre/Profil+Adulte');
+		$this->dispatch('/opac/index/share/on/facebook/titre/Profil+Adulte?url='.urlencode('/index/index'), true);
 		$this->assertContains(sprintf("window.open('http://www.facebook.com/share.php?u=%s','_blank','location=yes, width=800, height=410')",
 																	urlencode('Profil Adulte http://is.gd/PkdNgD')),
 													$this->_response->getBody());
-- 
GitLab