Valider 4cbea1de rédigé par esj's avatar esj
Parcourir les fichiers

Suite de [7691]: le bouton "retour" dans le formulaire de message de forum...

Suite de [7691]: le bouton "retour" dans le formulaire de message de forum interne ne marchait plus au 2e coup, vues les acrobaties imposées par le non respect du RFC. On retarde donc au maximum la création de l'URL de retour, avec joli lot de consolation au final. En effet, cette page présentait le défaut de ne pas spécifier à quel objet ce forum se rapportait (elle n'affichait que le titre, qui pouvait de plus changer dans le fil des messages). A présent le haut de page rappelle le type de l'objet initial (article, breve et), son numéro et son titre. Seul regret: le non respect du RFC empeche d'installer une ancre pour atterir au niveau du formulaire dans la page. Mais ça n'est vraiment genant que dans une réponse à un message de forum particulièrement long.
parent a44eaf25
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+12 −18
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -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,8 +31,10 @@ 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;

	$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');
@@ -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;
+1 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -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'));
	}
+1 −3
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -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>";
	
+2 −3
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -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'>";
+82 −46
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -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,17 +54,15 @@ 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))
			$parent = debut_cadre_forum("forum-interne-24.gif", true, "", $titre_parent)
			. "<span class='arial2'>$date_heure_parent</span> ";

			if ($id_auteur_parent) {
@@ -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='"
		. "\n<tr>"
		. (!$parent ? "<td colsan='2'"
			: (" <td width='10' height='13' valign='top' background='"
			   . _DIR_IMG_PACK
				. "forum-vert.gif'" ))
			   . "forum-vert.gif'" 
			   . ">"
			   . http_img_pack('rien.gif', ' ', "width='10' height='13' border='0'")
		. "</td>\n"
		.  "<td width='100%' valign='top' rowspan='2'>"
			   . "</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>&nbsp;</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();
}

Chargement en cours