diff --git a/ecrire/action/editer_forum.php b/ecrire/action/editer_forum.php index ba0097b3f288c1e1b1eaf828e1697cbc14e91d19..687a1d3a570f7ed2f4f04239001dd5894afbefa2 100644 --- a/ecrire/action/editer_forum.php +++ b/ecrire/action/editer_forum.php @@ -21,7 +21,7 @@ function action_editer_forum_dist() { $arg = _request('arg'); // arg = l'eventuel mot a supprimer pour d'eventuelles Row SQL - if (!preg_match(',^(\d+)\D(\d+)\D(\d+)\D(\d+)\D(\d+)\D(\d+)\D(\w+)$,', $arg, $r)) + if (!preg_match(',^(\d+)\D(\d+)\D(\w+)\W(\w+)\W(\w+)$,', $arg, $r)) spip_log("action editer_forum: $arg pas compris"); else action_editer_forum_post($r); } @@ -31,9 +31,11 @@ function action_editer_forum_post($r) { global $redirect, $nom_site, $texte, $titre_message, $url_site, $modif_forum, $valider_forum; - list($x,$id_rubrique,$id_parent,$id_article,$id_breve,$id_message,$id_syndic, $statut) = $r; + list($x,$id,$id_parent,$statut,$script,$objet) = $r; - if ($valider_forum AND ($statut!='')) { + $redirect = urldecode($redirect); + spip_log("$id,$id_parent,$statut $script $objet $valider_forum "); + if ($valider_forum AND ($statut!='')) { include_spip('inc/texte'); include_spip('base/abstract_sql'); include_spip('inc/forum'); @@ -41,7 +43,7 @@ function action_editer_forum_post($r) $titre_message = corriger_caracteres($titre_message); $texte = corriger_caracteres($texte); - spip_abstract_insert('spip_forum', "(titre, texte, date_heure, nom_site, url_site, statut, id_auteur, auteur, email_auteur, id_rubrique, id_parent, id_article, id_breve, id_message, id_syndic)", "(" . _q($titre_message) . ", " . _q($texte) . ", NOW(), " . _q($nom_site) . ", " . _q($url_site) . ", " . _q($statut) . ", " . $GLOBALS['auteur_session']['id_auteur'] . ", " . _q($GLOBALS['auteur_session']['nom']) . ", " . _q($GLOBALS['auteur_session']['email']) . ", '$id_rubrique', '$id_parent', '$id_article', '$id_breve', '$id_message', '$id_syndic')"); + spip_abstract_insert('spip_forum', "($objet, titre, texte, date_heure, nom_site, url_site, statut, id_auteur, auteur, email_auteur, id_parent)", "($id, " . _q($titre_message) . ", " . _q($texte) . ", NOW(), " . _q($nom_site) . ", " . _q($url_site) . ", " . _q($statut) . ", " . $GLOBALS['auteur_session']['id_auteur'] . ", " . _q($GLOBALS['auteur_session']['nom']) . ", " . _q($GLOBALS['auteur_session']['email']) . ", $id_parent)"); calculer_threads(); @@ -49,28 +51,20 @@ function action_editer_forum_post($r) spip_query("UPDATE spip_auteurs_messages SET vu = 'non' WHERE id_message='$id_message'"); } - redirige_par_entete(_DIR_RESTREINT . urldecode($redirect)); + redirige_par_entete($redirect); + } else { // on ne fait que passer .... // et si les clients HTTP respectaient le RFC HTTP selon lequel // une redirection d'un POST doit etre en POST et pas en GET // on n'aurait pas a faire l'horreur ci-dessous. + set_request('exec', 'forum_envoi'); - set_request('id_article', $id_article); - set_request('id_breve', $id_breve); - set_request('id_message', $id_message); + set_request('id', $id); set_request('id_parent', $id_parent); - set_request('id_rubrique', $id_rubrique); - set_request('id_syndic', $id_syndic); - - set_request('modif_forum', $modif_forum); - set_request('nom_site', $nom_site); set_request('statut', $statut); - set_request('texte', $texte); - set_request('titre_message', $titre_message); - set_request('url_site', $url_site); - set_request('url', $redirect); - set_request('valider_forum', $valider_forum); + set_request('script', $script); + include('ecrire/index.php'); } exit; diff --git a/ecrire/exec/articles.php b/ecrire/exec/articles.php index 45e991d84a2a422404c07eaa241acd10d60aabfc..c290cf5a402941a028398cf2829b344d431f6e64 100644 --- a/ecrire/exec/articles.php +++ b/ecrire/exec/articles.php @@ -34,7 +34,7 @@ function exec_articles_dist() $res = articles_affiche($id_article, $row, _request('cherche_auteur'), _request('ids'), _request('cherche_mot'), _request('select_groupe'), _request('trad_err')) . "<br /><br />\n<div align='center'>" - . icone(_T('icone_poster_message'), generer_url_ecrire("forum_envoi","statut=prive&id_article=$id_article&titre_message=" .rawurlencode($row['titre']) . "&url=" . generer_url_retour("articles","id_article=$id_article")), "forum-interne-24.gif", "creer.gif", '', false) + . icone(_T('icone_poster_message'), generer_url_ecrire("forum_envoi", "statut=prive&id=$id_article&script=articles") ."#formulaire", "forum-interne-24.gif", "creer.gif", '', false) . "</div><br />" . $discuter($id_article, false, _request('debut')); } diff --git a/ecrire/exec/breves_voir.php b/ecrire/exec/breves_voir.php index 21d574c46d9c7b07f8f9e9c2a84237dc6ef09cd0..dbd3c965c7e409953a9d3409a16f1cdb6b570bb6 100644 --- a/ecrire/exec/breves_voir.php +++ b/ecrire/exec/breves_voir.php @@ -213,12 +213,10 @@ function afficher_breves_voir($id_breve, $changer_lang, $cherche_mot, $select_gr // Forums // - $tm = rawurlencode($titre); - echo "<br /><br />"; echo "\n<div align='center'>"; - icone(_T('icone_poster_message'), generer_url_ecrire("forum_envoi", "statut=prive&id_breve=$id_breve&titre_message=$tm&url=".generer_url_retour("breves_voir", "id_breve=$id_breve")), + icone(_T('icone_poster_message'), generer_url_ecrire("forum_envoi", "statut=prive&id=$id_breve&script=breves_voir") . '#formulaire', "forum-interne-24.gif", "creer.gif"); echo "</div>"; diff --git a/ecrire/exec/forum.php b/ecrire/exec/forum.php index 8b3a4d54b56201ab6f15a7a85c8298bd56fb5e3a..0813b789bb22fa0629cf8ef6c3a63f2d5e2041fc 100644 --- a/ecrire/exec/forum.php +++ b/ecrire/exec/forum.php @@ -72,10 +72,9 @@ function exec_forum_dist() if ($total > 10) liste_numeros_forum($script, $debut, $total); - $tm = rawurlencode(filtrer_entites(_T('texte_nouveau_message'))); + echo "<p><div align='center'>"; - icone (_T('icone_poster_message'), generer_url_ecrire("forum_envoi", "statut=$statutforum&titre_message=$tm&url=" . generer_url_retour($script)), - $logo, "creer.gif"); + icone (_T('icone_poster_message'), generer_url_ecrire("forum_envoi", "statut=$statutforum&script=$script"), $logo, "creer.gif"); echo "</div></p>"; echo "<p align='left'>"; diff --git a/ecrire/exec/forum_envoi.php b/ecrire/exec/forum_envoi.php index 50bdb42a721bf89f224c5ef13b5988116f34c0e9..67537de5660d0b655252ddbe9bbb9753b280faae 100644 --- a/ecrire/exec/forum_envoi.php +++ b/ecrire/exec/forum_envoi.php @@ -19,49 +19,32 @@ include_spip('inc/barre'); function exec_forum_envoi_dist() { forum_envoi( - intval(_request('id_article')), - intval(_request('id_breve')), - intval(_request('id_message')), + intval(_request('id')), intval(_request('id_parent')), - intval(_request('id_rubrique')), - intval(_request('id_syndic')), - _request('modif_forum'), _request('nom_site'), _request('statut'), _request('texte'), _request('titre_message'), _request('url_site'), - _request('url'), + _request('script'), _request('valider_forum')); } function forum_envoi( - $id_article, - $id_breve, - $id_message, + $id, $id_parent, - $id_rubrique, - $id_syndic, - $modif_forum, $nom_site, $statut, $texte, $titre_message, $url_site, - $url, + $script, $valider_forum) { global $options, $spip_lang_rtl; - if ($id_message) debut_page(_T('titre_page_forum_envoi'), "accueil", "messagerie"); - else debut_page(_T('titre_page_forum_envoi'), "accueil"); - debut_gauche(); - debut_droite(); - - $titre_parent = ''; - $parent = ''; if ($id_parent) { $result = spip_query("SELECT * FROM spip_forum WHERE id_forum=$id_parent"); if ($row = spip_fetch_array($result)) { @@ -71,18 +54,16 @@ function forum_envoi( $id_message = $row['id_message']; $id_syndic = $row['id_syndic']; $statut = $row['statut']; - $titre_parent = $row['titre']; + $titre_parent = typo($row['titre']); $texte_parent = $row['texte']; $auteur_parent = $row['auteur']; $id_auteur_parent = $row['id_auteur']; $date_heure_parent = $row['date_heure']; $nom_site_parent = $row['nom_site']; $url_site_parent = $row['url_site']; - } - if ($titre_parent) { - $parent = debut_cadre_forum("forum-interne-24.gif", true, "", typo($titre_parent)) - . "<span class='arial2'>$date_heure_parent</span> "; + $parent = debut_cadre_forum("forum-interne-24.gif", true, "", $titre_parent) + . "<span class='arial2'>$date_heure_parent</span> "; if ($id_auteur_parent) { $formater_auteur = charger_fonction('formater_auteur', 'inc'); @@ -95,25 +76,81 @@ function forum_envoi( if (strlen($url_site_parent) > 10 AND $nom_site_parent) { $parent .="<p align='left'><font face='Verdana,Arial,Sans,sans-serif'><b><a href='$url_site_parent'>$nom_site_parent</a></b></font></p>"; } - $parent .= fin_cadre_forum(true); } + + } else $parent = $titre_parent = ''; + + if ($script == 'articles') { + $table ='articles'; + $objet = 'id_article'; + $titre = 'titre'; + $num = _T('info_numero_article'); + if (!$id) $id = $id_article; + } elseif ($script == 'breves_voir') { + $table = 'breves'; + $objet = 'id_breve'; + $titre = 'titre'; + $num = _T('info_gauche_numero_breve'); + if (!$id) $id = $id_breve; + } elseif ($script == 'message') { + $table = 'messages'; + $objet = 'id_message'; + $titre = 'titre'; + $num = _T('message') . ' ' ._T('info_numero_abbreviation'); + if (!$id) $id = $id_message; + } elseif ($script == 'rubriques') { + $table = 'rubriques'; + $objet = 'id_rubrique'; + $titre = 'titre'; + $num = _T('titre_numero_rubrique'); + if (!$id) $id = $id_rubrique; + } elseif ($script == 'sites') { + $table = 'syndic'; + $objet = 'id_syndic'; + $titre = 'nom_site'; + $num = _T('titre_site_numero'); + if (!$id) $id = $id_syndic; + } else { + $table = 'forum'; + $objet = 'id_forum'; + $titre = 'titre'; + $id = 0; + $titre_page = filtrer_entites(_T('texte_nouveau_message')); + $num = ''; + } + + if ($num) { + $q = spip_query("SELECT $titre AS titre FROM spip_$table WHERE $objet=$id"); + $q = spip_fetch_array($q); + $titre_page = $q['titre']; + $num = "<br />(" + . str_replace(':','',strtolower($num)) + . $id + . ", " + ._T('info_forum_interne') . ')'; } + if ($id_message) debut_page(_T('titre_page_forum_envoi'), "accueil", "messagerie"); + else debut_page(_T('titre_page_forum_envoi'), "accueil"); + debut_gauche(); + debut_droite(); + gros_titre($titre_page . $num); + if ($statut == "prive") $logo = "forum-interne-24.gif"; else if ($statut == "privadm") $logo = "forum-admin-24.gif"; else if ($statut == "privrac") $logo = "forum-interne-24.gif"; else $logo = "forum-public-24.gif"; $corps = "\n<table border='0' cellpadding='0' cellspacing='0' background='' width='100%'><tr><td>" - . icone(_T('icone_retour'), rawurldecode($url), $logo, '','', false) + . icone(_T('icone_retour'), generer_url_ecrire($script, "$objet=$id"), $logo, '','', false) ."</td>" ."\n<td><img src='" . _DIR_IMG_PACK . "rien.gif' width='10' border='0' /></td><td width=\"100%\">" ."<b>"._T('info_titre')."</b><br />" . "<input type='text' class='formo' name='titre_message' value=\"" - . entites_html($titre_message) + . entites_html($titre_message ? $titre_message : $titre_page) . "\" size='40' />\n" . "</td></tr></table>" . @@ -155,15 +192,15 @@ function forum_envoi( "\n<table width='100%' cellpadding='0' cellspacing='0' border='0'>" . (!$parent ? '' : "<tr><td colspan='2'>$parent</td></tr>") - . "\n<tr><td width='10' height='13' valign='top'" - . (!$titre_parent ? '' - : (" background='" - . _DIR_IMG_PACK - . "forum-vert.gif'" )) - . ">" - . http_img_pack('rien.gif', ' ', "width='10' height='13' border='0'") - . "</td>\n" - . "<td width='100%' valign='top' rowspan='2'>" + . "\n<tr>" + . (!$parent ? "<td colsan='2'" + : (" <td width='10' height='13' valign='top' background='" + . _DIR_IMG_PACK + . "forum-vert.gif'" + . ">" + . http_img_pack('rien.gif', ' ', "width='10' height='13' border='0'") + . "</td>\n<td ")) + . " width='100%' valign='top' rowspan='2'>" . debut_cadre_thread_forum("", true, "", typo($titre_message)) . propre($texte) . (!$nom_site ? '' : "<p><a href='$url_site'>$nom_site</a></p>") @@ -173,7 +210,7 @@ function forum_envoi( . fin_cadre_thread_forum(true) . "</td>" . "</tr>\n" - . (!$titre_parent ? '' + . (!$parent ? '' : ("<tr><td width='10' valign='top' background='" . _DIR_IMG_PACK . "rien.gif'>" @@ -185,17 +222,16 @@ function forum_envoi( $parent = ''; } - $arg = intval($id_rubrique) . '/' + $cat = intval($id) . '/' . intval($id_parent) . '/' - . intval($id_article) . '/' - . intval($id_breve) . '/' - . intval($id_message) . '/' - . intval($id_syndic) . '/' - . $statut; + . $statut . '/' + . $script . '/' + . $objet; echo $parent, "\n<div> </div>" - . generer_action_auteur('editer_forum',$arg, urldecode($url), $corps, " name='formulaire'") + . redirige_action_auteur('editer_forum',$cat, $script, "$objet=$id", $corps, "") + . "<a id='formulaire'></a>" . fin_page(); } diff --git a/ecrire/exec/message.php b/ecrire/exec/message.php index 0646cfb97215f480d5c1b542877892c717f90f1f..b26d8aebf9aded38f84b8ec33a86624a454fb1a6 100644 --- a/ecrire/exec/message.php +++ b/ecrire/exec/message.php @@ -238,12 +238,11 @@ function http_ajouter_participants($ze_auteurs, $id_message) } // http://doc.spip.org/@http_afficher_forum_perso -function http_afficher_forum_perso($id_message, $titre) +function http_afficher_forum_perso($id_message) { - $utitre = rawurlencode($titre); echo "<br /><br />\n<div align='center'>"; - icone(_T('icone_poster_message'), generer_url_ecrire("forum_envoi","statut=perso&id_message=$id_message&titre_message=$utitre&url=" . generer_url_retour("message","id_message=$id_message")), "forum-interne-24.gif", "creer.gif"); + icone(_T('icone_poster_message'), generer_url_ecrire("forum_envoi", "statut=perso&id=$id_message&script=message"). '#formulaire', "forum-interne-24.gif", "creer.gif"); echo "</div>\n<p align='left'>"; $query_forum = spip_query("SELECT * FROM spip_forum WHERE statut='perso' AND id_message='$id_message' AND id_parent=0 ORDER BY date_heure DESC LIMIT 20"); @@ -541,7 +540,7 @@ function exec_affiche_message_dist($id_message, $cherche_auteur, $nouv_auteur, $ // reponses et bouton poster message - http_afficher_forum_perso($id_message, $titre); + http_afficher_forum_perso($id_message); } echo fin_page(); diff --git a/ecrire/exec/sites.php b/ecrire/exec/sites.php index 109a177fed7c8cbc469077d6d3b9d45106e284f9..7b393c71ef938ab9fe6c4dded2f948ff792305ce 100644 --- a/ecrire/exec/sites.php +++ b/ecrire/exec/sites.php @@ -519,7 +519,7 @@ fin_cadre_relief(); echo "<br /><br />\n<div align='center'>"; - icone (_T('icone_poster_message'), generer_url_ecrire('forum_envoi',"id_syndic=$id_syndic&statut=prive&titre_message=$nom_site&url=".generer_url_retour("sites","id_syndic=$id_syndic")), "forum-interne-24.gif", "creer.gif"); + icone (_T('icone_poster_message'), generer_url_ecrire('forum_envoi', "id_syndic=$id&statut=prive&script=sites") . '#formulaire', "forum-interne-24.gif", "creer.gif"); echo "</div><p align='left'>\n"; diff --git a/ecrire/inc/presentation.php b/ecrire/inc/presentation.php index 57e65954f0d5f9f70518f962cbff9adacf05dc46..b2dede36f69ce89d759ee00b53ccc564c2a6b1a0 100644 --- a/ecrire/inc/presentation.php +++ b/ecrire/inc/presentation.php @@ -1265,7 +1265,7 @@ function afficher_forum_thread($row, $controle_id_article, $compteur_forum, $nb_ $tm = rawurlencode($titre); $res .= "<div align='right' class='verdana1'>" . "<b><a href='" - . generer_url_ecrire("forum_envoi","id_parent=$id_forum&titre_message=$tm&url=" . generer_url_retour($retour, $arg) .'#formulaire') + . generer_url_ecrire("forum_envoi", "id_parent=$id_forum&titre_message=$tm&script=$retour") . '#formulaire' . "'>" . _T('lien_repondre_message') . "</a></b></div>";