From ef2b59617de6c5fc7eb3c21bfd0e5e374ea8cde7 Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Sun, 13 Aug 2006 22:55:08 +0000 Subject: [PATCH] revision de #FORMULAIRE_FORUM{#SELF} et #PARAMTRES_FORUM{#SELF} (nicolas riquois) --- ecrire/balise/formulaire_forum.php | 23 ++++++++++------------- ecrire/inc/forum_insert.php | 9 +++++++-- ecrire/public/assembler.php | 1 - ecrire/public/balises.php | 2 +- 4 files changed, 18 insertions(+), 17 deletions(-) diff --git a/ecrire/balise/formulaire_forum.php b/ecrire/balise/formulaire_forum.php index e8c6c869e0..6020d84bd9 100644 --- a/ecrire/balise/formulaire_forum.php +++ b/ecrire/balise/formulaire_forum.php @@ -98,7 +98,7 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) } // Tableau des valeurs servant au calcul d'une signature de securite. // Elles seront placees en Input Hidden pour que inc/forum_insert - // recalcule la meme chose et verifie l'identité des resultats. + // recalcule la meme chose et verifie l'identite des resultats. // Donc ne pas changer la valeur de ce tableau entre le calcul de // la signature et la fabrication des Hidden // Faire attention aussi a 0 != '' @@ -116,7 +116,7 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) $previsu = ' '; // au premier appel (pas de Post-var nommee "retour_forum") - // memoriser evntuellement l'URL de retour pour y revenir apres + // memoriser eventuellement l'URL de retour pour y revenir apres // envoi du message ; aux appels suivants, reconduire la valeur. // Initialiser aussi l'auteur if (!$retour_forum = rawurldecode(_request('retour_forum'))) { @@ -126,7 +126,9 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) // par defaut, on veut prendre url_forum(), mais elle ne sera connue // qu'en sortie, on inscrit donc une valeur absurde ("!") $retour_forum = "!"; - + // sauf si on a passe un parametre en argument (exemple : {#SELF}) + if ($url_param_retour) + $retour_forum = str_replace('&', '&', $url_param_retour); } if (isset($_COOKIE['spip_forum_user']) AND is_array($cookie_user = unserialize($_COOKIE['spip_forum_user']))) { @@ -156,17 +158,12 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) include_spip('inc/actions'); $hash = calculer_action_auteur('ajout_forum'.join(' ', $ids).' '.$alea); - } - - // Poser un cookie pour ne pas retaper les infos invariables - include_spip('inc/cookie'); - spip_setcookie('spip_forum_user', - serialize(array('nom' => $auteur, - 'email' => $email_auteur))); - // sauf si on a passe un parametre en argument (exemple : {#SELF}) - if ($url_param_retour) { - $script = $url_param_retour; + // Poser un cookie pour ne pas retaper les infos invariables + include_spip('inc/cookie'); + spip_setcookie('spip_forum_user', + serialize(array('nom' => $auteur, + 'email' => $email_auteur))); } // pour la chaine de hidden diff --git a/ecrire/inc/forum_insert.php b/ecrire/inc/forum_insert.php index 1c1fd92685..52381a4bc4 100644 --- a/ecrire/inc/forum_insert.php +++ b/ecrire/inc/forum_insert.php @@ -252,10 +252,10 @@ function inc_forum_insert_dist() { // Entrer les mots-cles associes if (is_array($ajouter_mot)) mots_du_forum($ajouter_mot, $id_message); - if ($statut == 'publie') { // // INVALIDATION DES CACHES LIES AUX FORUMS // + if ($statut == 'publie') { include_spip('inc/invalideur'); suivre_invalideur ("id='id_forum/" . calcul_index_forum($id_article, @@ -271,7 +271,12 @@ function inc_forum_insert_dist() { prevenir_auteurs($auteur, $email_auteur, $id_message, $id_article, $texte, $titre, $statut); } - if (!$calculer_retour) return $retour_forum; + // En cas de retour sur (par exemple) {#SELF}, on ajoute quand + // meme #forum12 a la fin de l'url, sauf si un #ancre est explicite + if (!$calculer_retour) + return strstr('#', $retour_forum) ? + $retour_forum + : $retour_forum.'#forum'.$id_message; // le retour automatique envoie sur le thread, ce qui permet // de traiter elegamment le cas des forums moderes a priori. diff --git a/ecrire/public/assembler.php b/ecrire/public/assembler.php index ae114bb7ea..63f879fe2d 100644 --- a/ecrire/public/assembler.php +++ b/ecrire/public/assembler.php @@ -30,7 +30,6 @@ function public_assembler_dist($fond) { } // Si envoi pour un forum, enregistrer puis rediriger - if (isset($_POST['confirmer_forum']) OR (isset($_POST['ajouter_mot']) AND $GLOBALS['afficher_texte']=='non')) { $f = charger_fonction('forum_insert', 'inc'); diff --git a/ecrire/public/balises.php b/ecrire/public/balises.php index 2d310f4aef..67b3031200 100644 --- a/ecrire/public/balises.php +++ b/ecrire/public/balises.php @@ -850,7 +850,7 @@ function balise_PARAMETRES_FORUM_dist($p) { // Attention un eventuel &retour=xxx dans l'URL est prioritaire $c .= '. - (($lien = (_request("retour") ? _request("retour") : '.$retour.')) ? "&retour=".rawurlencode($lien) : "")'; + (($lien = (_request("retour") ? _request("retour") : str_replace("&", "&", '.$retour.'))) ? "&retour=".rawurlencode($lien) : "")'; $p->code .= code_invalideur_forums($p, "(".$c.")"); -- GitLab