diff --git a/dist/article.html b/dist/article.html index 641adf3a790df511c848bf399f3ba87a555db803..170684eb26bc55c55362a2626594e5ea1af52846 100644 --- a/dist/article.html +++ b/dist/article.html @@ -250,7 +250,7 @@ <!-- Forums --> -[<div class="forum-repondre"><B><A HREF="forum.php3?(#PARAMETRES_FORUM)"><:repondre_article:></A></B></div>] +[<div class="forum-repondre"><B><A HREF="forum.php3?(#PARAMETRES_FORUM*)"><:repondre_article:></A></B></div>] <br /> <B_forums> @@ -271,7 +271,7 @@ <div class="forum-item"> #TEXTE [<div class="forum-titre"><a href="(#URL_SITE)" class="spip_out">#NOM_SITE</a></div>] -[<div class="forum-repondre-message"><a href="forum.php3?(#PARAMETRES_FORUM)"><:repondre_message:></a></div>] +[<div class="forum-repondre-message"><a href="forum.php3?(#PARAMETRES_FORUM*)"><:repondre_message:></a></div>] </div> </div> @@ -288,7 +288,7 @@ <div class="forum-item"> #TEXTE [<div class="forum-titre"><a href="(#URL_SITE)" class="spip_out">#NOM_SITE</a></div>] - [<div class="forum-repondre-message"><a href="forum.php3?(#PARAMETRES_FORUM)"><:repondre_message:></a></div>] + [<div class="forum-repondre-message"><a href="forum.php3?(#PARAMETRES_FORUM*)"><:repondre_message:></a></div>] </div> </div> diff --git a/dist/breve.html b/dist/breve.html index e42739a6d1bd14d6157f9489dd93713f92a616f8..6607aad70fb2ea87ec9678faebb7e6d03dceb8d3 100644 --- a/dist/breve.html +++ b/dist/breve.html @@ -156,7 +156,7 @@ <!-- Forums --> -[<div class="forum-repondre"><B><A HREF="forum.php3?(#PARAMETRES_FORUM)"><:repondre_breve:></A></B></div>] +[<div class="forum-repondre"><B><A HREF="forum.php3?(#PARAMETRES_FORUM*)"><:repondre_breve:></A></B></div>] <br /> <h1 class="structure"><:forum:></h1> @@ -177,7 +177,7 @@ <div class="forum-item"> #TEXTE [<div class="forum-titre"><a href="(#URL_SITE)" class="spip_out">#NOM_SITE</a></div>] -[<div class="forum-repondre-message"><a href="forum.php3?(#PARAMETRES_FORUM)"><:repondre_message:></a></div>] +[<div class="forum-repondre-message"><a href="forum.php3?(#PARAMETRES_FORUM*)"><:repondre_message:></a></div>] </div> </div> @@ -195,7 +195,7 @@ <div class="forum-item"> #TEXTE [<div class="forum-titre"><a href="(#URL_SITE)" class="spip_out">#NOM_SITE</a></div>] - [<div class="forum-repondre-message"><a href="forum.php3?(#PARAMETRES_FORUM)"><:repondre_message:></a></div>] + [<div class="forum-repondre-message"><a href="forum.php3?(#PARAMETRES_FORUM*)"><:repondre_message:></a></div>] </div> </div> diff --git a/ecrire/inc_forum.php3 b/ecrire/inc_forum.php3 index e6c2cf5afc4d52224a41adaf5a9d14c0768d6d6b..8a81ed483cb08f28cb723a880ae6cbaa931e5e27 100644 --- a/ecrire/inc_forum.php3 +++ b/ecrire/inc_forum.php3 @@ -216,5 +216,41 @@ function calculer_threads() { } while ($discussion != "0"); } +// Calculs des URLs des forums (pour l'espace public) +function racine_forum($id_forum){ + if (!$id_forum = intval($id_forum)) return; + $query = "SELECT id_parent, id_rubrique, id_article, id_breve FROM spip_forum WHERE id_forum=".$id_forum; + $result = spip_query($query); + if($row = spip_fetch_array($result)){ + if($row['id_parent']) { + return racine_forum($row['id_parent']); + } + else { + if($row['id_rubrique']) return array('rubrique',$row['id_rubrique'], $id_forum); + if($row['id_article']) return array('article',$row['id_article'], $id_forum); + if($row['id_breve']) return array('breve',$row['id_breve'], $id_forum); + } + } +} + +function generer_url_forum_dist($id_forum, $show_thread=false) { + list($type, $id, $id_thread) = racine_forum($id_forum); + if ($id_thread>0 AND $show_thread) + $id_forum = $id_thread; + switch($type) { + case 'article': + return generer_url_article($id)."#forum$id_forum"; + break; + case 'breve': + return generer_url_breve($id)."#forum$id_forum"; + break; + case 'rubrique': + return generer_url_rubrique($id)."#forum$id_forum"; + break; + default: + return "forum.php3?id_forum=".$id_forum; + } +} + ?> diff --git a/formulaires/inc-formulaire_forum.php3 b/formulaires/inc-formulaire_forum.php3 index b780d483fe569eec5f4a59206c1cca345b61c54c..2ff24afda18859915bf37525f4811b3557b08b14 100644 --- a/formulaires/inc-formulaire_forum.php3 +++ b/formulaires/inc-formulaire_forum.php3 @@ -91,16 +91,16 @@ function balise_FORMULAIRE_FORUM_dyn($titre, $table, $forums_publics, $id_rubriq $previsu = ' '; // au premier appel (pas de Post-var nommee "retour_forum") - // memoriser l'URL courante pour y revenir apres envoi du message - // aux appels suivants, reconduire la valeur. + // memoriser evntuellement 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'))) { if ($retour_forum = rawurldecode(_request('retour'))) $retour_forum = str_replace('&var_mode=recalcul','',$retour_forum); else { - $retour_forum = new Link(); - $retour_forum = $retour_forum->getUrl(); + // par defaut, on veut prendre url_forum(), mais elle ne sera connue + // qu'en sortie, on inscrit donc une valeur absurde ("!") + $retour_forum = "!"; } if (isset($_COOKIE['spip_forum_user']) diff --git a/inc-balises.php3 b/inc-balises.php3 index 9b84f977b9ee03cc27e21e5ea15d8c3530bdad3b..d6d09d299d5762bc04b4ec3831bbfe8c6e4e3d59 100644 --- a/inc-balises.php3 +++ b/inc-balises.php3 @@ -686,7 +686,9 @@ function balise_PARAMETRES_FORUM_dist($p) { } $c .= '. - "&retour=".rawurlencode($lien=_request("retour") ? $lien : nettoyer_uri())'; + (($lien = (_request("retour") ? _request("retour") : ('. + ($p->etoile ? "''" : 'nettoyer_uri()') + .'))) ? "&retour=".rawurlencode($lien) : "")'; $p->code .= code_invalideur_forums($p, "(".$c.")"); diff --git a/inc-messforum.php3 b/inc-messforum.php3 index 332174ff5a3242be4c3d0316880712203fb68c96..c22884e3caa16493a638c397da6ff1f274dd4dfe 100644 --- a/inc-messforum.php3 +++ b/inc-messforum.php3 @@ -120,11 +120,19 @@ function mots_du_forum($ajouter_mot, $id_message) function enregistre_forum() { global $REMOTE_ADDR, $auteur_session, - $afficher_texte, $ajouter_mot, $alea, $hash, - $auteur, $confirmer_forum, $email_auteur, $id_auteur, - $nom_site_forum, $retour_forum, $texte, $titre, $url_site; + $afficher_texte, $ajouter_mot, $alea, $hash, + $auteur, $confirmer_forum, $email_auteur, $id_auteur, + $nom_site_forum, $retour_forum, $texte, $titre, $url_site; + $retour_forum = rawurldecode($retour_forum); + # retour a calculer (cf. inc-formulaire_forum) + if ($retour_forum == '!') { + $retour_forum = new Link(); + $retour_forum = $retour_forum->getUrl(); # en cas d'echec du post + $calculer_retour = true; + } + // Recuperer les donnees postees du formulaire ou stocker '0' foreach (array('id_article', 'id_breve', 'id_syndic', 'id_rubrique', 'id_forum') as $id) @@ -181,7 +189,8 @@ function enregistre_forum() { $statut = ($statut == 'non') ? 'off' : (($statut == 'pri') ? 'prop' : 'publie'); - spip_query("UPDATE spip_forum SET id_parent = $id_forum, + spip_query("UPDATE spip_forum + SET id_parent = $id_forum, id_rubrique = $id_rubrique, id_article = $id_article, id_breve = $id_breve, @@ -200,7 +209,19 @@ function enregistre_forum() { WHERE id_forum = $id_message "); - // calculer_threads(); + // Le cas echeant, calculer le retour + if ($calculer_retour) { + // Gestionnaire d'URLs + if (@file_exists("inc-urls.php3")) + include_local("inc-urls.php3"); + else + include_local("inc-urls-".$GLOBALS['type_urls'].".php3"); + + if ($statut == 'publie') + $retour_forum = generer_url_forum($id_message); + else + $retour_forum = generer_url_forum($id_parent); + } // Entrer les mots-cles associes if (is_array($ajouter_mot)) mots_du_forum($ajouter_mot, $id_message); diff --git a/inc-urls-html.php3 b/inc-urls-html.php3 index 99e89265449972752fc08ce19ccf76fdeeb33cb6..147b4a41c9c8ff52218f3d474f38c08ea1a7f90b 100644 --- a/inc-urls-html.php3 +++ b/inc-urls-html.php3 @@ -55,40 +55,9 @@ function recuperer_parametres_url($fond, $url) { // URLs des forums // -// a mettre dans ecrire/inc_threads.php3 avec les autres trucs de forum -function racine_forum($id_forum){ - if (!$id_forum = intval($id_forum)) return; - $query = "SELECT id_parent, id_rubrique, id_article, id_breve FROM spip_forum WHERE id_forum=".$id_forum; - $result = spip_query($query); - if($row = spip_fetch_array($result)){ - if($row['id_parent']) { - return racine_forum($row['id_parent']); - } - else { - if($row['id_rubrique']) return array('rubrique',$row['id_rubrique'], $id_forum); - if($row['id_article']) return array('article',$row['id_article'], $id_forum); - if($row['id_breve']) return array('breve',$row['id_breve'], $id_forum); - } - } -} - function generer_url_forum($id_forum, $show_thread=false) { - list($type, $id, $id_thread) = racine_forum($id_forum); - if ($id_thread>0 AND $show_thread) - $id_forum = $id_thread; - switch($type) { - case 'article': - return generer_url_article($id)."#forum$id_forum"; - break; - case 'breve': - return generer_url_breve($id)."#forum$id_forum"; - break; - case 'rubrique': - return generer_url_rubrique($id)."#forum$id_forum"; - break; - default: - return "forum$id_forum.html"; - } + include_ecrire('inc_forum.php3'); + return generer_url_forum_dist($id_forum, $show_thread); } ?> diff --git a/inc-urls-propres.php3 b/inc-urls-propres.php3 index 19062a03a492ad74449675d5b8dd33b97c83880a..88b494a45302482dc7b57a7d07ad2a0d1abfc566 100644 --- a/inc-urls-propres.php3 +++ b/inc-urls-propres.php3 @@ -99,8 +99,9 @@ function generer_url_breve($id_breve) { return $url; } -function generer_url_forum($id_forum) { - return "forum.php3?id_forum=$id_forum"; +function generer_url_forum($id_forum, $show_thread=false) { + include_ecrire('inc_forum.php3'); + return generer_url_forum_dist($id_forum, $show_thread); } function generer_url_mot($id_mot) { diff --git a/inc-urls-standard.php3 b/inc-urls-standard.php3 index 4b312f92fb22f1821f72dcc5736344129e590fca..1540d032a177423edf5bbb86546702e4e97ff1fa 100644 --- a/inc-urls-standard.php3 +++ b/inc-urls-standard.php3 @@ -54,40 +54,9 @@ function recuperer_parametres_url($fond, $url) { // URLs des forums // -// a mettre dans ecrire/inc_threads.php3 avec les autres trucs de forum -function racine_forum($id_forum){ - if (!$id_forum = intval($id_forum)) return; - $query = "SELECT id_parent, id_rubrique, id_article, id_breve FROM spip_forum WHERE id_forum=".$id_forum; - $result = spip_query($query); - if($row = spip_fetch_array($result)){ - if($row['id_parent']) { - return racine_forum($row['id_parent']); - } - else { - if($row['id_rubrique']) return array('rubrique',$row['id_rubrique'], $id_forum); - if($row['id_article']) return array('article',$row['id_article'], $id_forum); - if($row['id_breve']) return array('breve',$row['id_breve'], $id_forum); - } - } -} - function generer_url_forum($id_forum, $show_thread=false) { - list($type, $id, $id_thread) = racine_forum($id_forum); - if ($id_thread>0 AND $show_thread) - $id_forum = $id_thread; - switch($type) { - case 'article': - return generer_url_article($id)."#forum$id_forum"; - break; - case 'breve': - return generer_url_breve($id)."#forum$id_forum"; - break; - case 'rubrique': - return generer_url_rubrique($id)."#forum$id_forum"; - break; - default: - return "forum.php3?id_forum=".$id_forum; - } + include_ecrire('inc_forum.php3'); + return generer_url_forum_dist($id_forum, $show_thread); } ?>