From 816772d05bf0ab353c5e99aefbe0ffd8f87d94ca Mon Sep 17 00:00:00 2001
From: Cerdic <cedric@yterium.com>
Date: Wed, 14 May 2008 17:01:18 +0000
Subject: [PATCH] "la seule action qui necessite de passer du prive au public
 est 'redirect'"

---
 ecrire/inc/utils.php | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index 0bec221373..96d12e2c4a 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -922,19 +922,26 @@ function generer_form_public($script, $corps, $atts='') {
 // http://doc.spip.org/@generer_url_action
 function generer_url_action($script, $args="", $no_entities=false ,$rel = false) {
 
+	// si script=redirect, on veut basculer vers le public !
+	if ($script=='redirect') {
+	  return  generer_url_public('',
+				  "action=$script" .($args ? "&$args" : ''),
+				  $no_entities,$rel);
+	}
+	// sinon, on reste ou on est
 	$url = './';
 	$url = parametre_url($url,'action',$script);
 	if ($args) $url .= quote_amp('&'.$args);
 	if ($redirect = parametre_url($url,'redirect')){
+		// si jamais l'url d'action contient un redirect=ecrire/...
+		// supprimer ce ecrire/ si on y est deja puisqu'on ne le quitte pas
 		if (test_espace_prive() 
 		  AND substr($redirect,0,strlen(_DIR_RESTREINT_ABS))==_DIR_RESTREINT_ABS)
 			$redirect = './'.substr($redirect,strlen(_DIR_RESTREINT_ABS));
 			$url = parametre_url($url,'redirect',$redirect);
 	}
+
 	if ($no_entities) $url = str_replace('&amp;','&',$url);
-	/*return  generer_url_public('',
-				  "action=$script" .($args ? "&$args" : ''),
-				  $no_entities,$rel);*/
 	return $url;
 }
 
-- 
GitLab