From e9663a855a04735b84f15f56ace3cf0d07011e24 Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Tue, 1 Aug 2006 00:29:56 +0000
Subject: [PATCH] =?UTF-8?q?Poursuite=20de=20l'autonomisation=20des=20formu?=
 =?UTF-8?q?laires=20pr=C3=A9sents=20dans=20exec/articles=20(cf=20[6947]:?=
 =?UTF-8?q?=20les=20dates.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .gitattributes           |   1 +
 ecrire/action/dater.php  |  53 +++++++++++++
 ecrire/exec/articles.php | 161 ++++++++++++++++++++-------------------
 ecrire/inc/date.php      |   6 +-
 4 files changed, 139 insertions(+), 82 deletions(-)
 create mode 100644 ecrire/action/dater.php

diff --git a/.gitattributes b/.gitattributes
index e540871aa6..1d5ac59e0b 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -19,6 +19,7 @@ dist/style_prive.html -text
 dist/win_width.htc -text
 ecrire/action/ajouter.php -text
 ecrire/action/autoriser.php -text
+ecrire/action/dater.php -text
 ecrire/action/ical.php -text
 ecrire/action/iconifier.php -text
 ecrire/action/instituer.php -text
diff --git a/ecrire/action/dater.php b/ecrire/action/dater.php
new file mode 100644
index 0000000000..8be5c0b702
--- /dev/null
+++ b/ecrire/action/dater.php
@@ -0,0 +1,53 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2006                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+function action_dater_dist() {
+	
+	global $action, $arg, $hash, $id_auteur, $redirect;
+	include_spip('inc/actions');
+	if (!verifier_action_auteur("$action-$arg", $hash, $id_auteur)) {
+		include_spip('inc/minipres');
+		minipres(_T('info_acces_interdit'));
+	}
+
+	if (!preg_match(",^\W*(\d+)$,", $arg, $r)) {
+		spip_log("action_dater_dist $arg pas compris");
+	}
+	else {
+		include_spip('inc/date');
+		if (!isset($_POST['avec_redac']))
+			spip_query("UPDATE spip_articles SET date='" . format_mysql_date($_POST['annee'], $_POST['mois'], $_POST['jour'], $_POST['heure'], $_POST['minute']) ."'	WHERE id_article=$r[1]");
+		else {
+
+			if ($_POST['avec_redac'] == 'non')
+				$annee_redac = $mois_redac = $jour_redac = $heure_redac = $minute_redac = 0;
+			else  {
+				$annee_redac = $_POST['annee_redac'];
+				$mois_redac = $_POST['mois_redac'];
+				$jour_redac = $_POST['jour_redac'];
+				$heure_redac = $_POST['heure_redac'];
+				$minute_redac = $_POST['minute_redac'];
+
+				if ($annee_redac<>'' AND $annee_redac < 1001) 
+					$annee_redac += 9000;
+			}
+
+			spip_query("UPDATE spip_articles SET date_redac='" . format_mysql_date($annee_redac, $mois_redac, $jour_redac, $heure_redac, $minute_redac) ."' WHERE id_article=$r[1]");
+
+		}
+		include_spip('inc/rubriques');
+		calculer_rubriques();
+	}
+}
+?>
diff --git a/ecrire/exec/articles.php b/ecrire/exec/articles.php
index 20c3dd3eb1..f0b23d64b6 100644
--- a/ecrire/exec/articles.php
+++ b/ecrire/exec/articles.php
@@ -598,29 +598,34 @@ function dates_articles($id_article, $id_rubrique, $flag_editable, $statut_artic
   if ($flag_editable AND $options == 'avancees') {
 	debut_cadre_couleur();
 
-	echo generer_url_post_ecrire("articles", "id_article=$id_article");
-
 	if ($statut_article == 'publie') {
 
-		echo "<div><b>";
-		echo bouton_block_invisible("datepub");
-		echo "<span class='verdana1'>"._T('texte_date_publication_article').'</span> ';
-		echo majuscules(affdate($date)),
-			"</b>".aide('artdate')."</div>";
-
-		echo debut_block_invisible("datepub"),
-		  "<div style='margin: 5px; margin-$spip_lang_left: 20px;'>",
-		  afficher_jour($jour, "name='jour' size='1' class='fondl' onChange=\"setvisibility('valider_date', 'visible')\"", true),
-		  afficher_mois($mois, "name='mois' size='1' class='fondl' onChange=\"setvisibility('valider_date', 'visible')\"", true),
-		  afficher_annee($annee, "name='annee' size='1' class='fondl' onChange=\"setvisibility('valider_date', 'visible')\""),
-		  ' - ',
-		  afficher_heure($heure, "name='heure' size='1' class='fondl' onChange=\"setvisibility('valider_date', 'visible')\""),
-		  afficher_minute($minute, "name='minute' size='1' class='fondl' onChange=\"setvisibility('valider_date', 'visible')\""),
-		  "<span class='visible_au_chargement' id='valider_date'>",
-		  " &nbsp; <INPUT TYPE='submit' NAME='Changer' CLASS='fondo' VALUE='"._T('bouton_changer')."'>",
-		  "</span>",
-		  "</div>",
-		  fin_block();
+		echo redirige_action_auteur("dater", 
+			"$id_article",
+			'articles',
+			"id_article=$id_article",
+			(bouton_block_invisible("datepub") .
+ "<b><span class='verdana1'>".
+ _T('texte_date_publication_article').
+ '</span> ' . 
+ majuscules(affdate($date)) .
+ "</b>".
+ aide('artdate') . 
+ debut_block_invisible("datepub") .
+ "<div style='margin: 5px; margin-$spip_lang_left: 20px;'>" .
+ afficher_jour($jour, "name='jour' size='1' class='fondl' onChange=\"setvisibility('valider_date', 'visible')\"", true) .
+ afficher_mois($mois, "name='mois' size='1' class='fondl' onChange=\"setvisibility('valider_date', 'visible')\"", true) .
+ afficher_annee($annee, "name='annee' size='1' class='fondl' onChange=\"setvisibility('valider_date', 'visible')\"") .
+ ' - ' .
+ afficher_heure($heure, "name='heure' size='1' class='fondl' onChange=\"setvisibility('valider_date', 'visible')\"") .
+ afficher_minute($minute, "name='minute' size='1' class='fondl' onChange=\"setvisibility('valider_date', 'visible')\"") .
+ "<span class='visible_au_chargement' id='valider_date'>" .
+ " &nbsp; <input type='submit' class='fondo' value='".
+ _T('bouton_changer')."' />" .
+ "</span>" .
+ "</div>" .
+ fin_block()) ,
+			"method='post'"); 
 	}
 	else {
 		echo "<div><b> <span class='verdana1'>"._T('texte_date_creation_article').'</span> ';
@@ -637,46 +642,59 @@ function dates_articles($id_article, $id_rubrique, $flag_editable, $statut_artic
 		else
 			$date_affichee = majuscules(_T('jour_non_connu_nc'));
 
-		echo "<div><b>";
-		echo bouton_block_invisible('dateredac');
-		echo "<span class='verdana1'>"
-			. majuscules(_T('texte_date_publication_anterieure'))
-			.'</span> '. $date_affichee ." ".aide('artdate_redac')."</b></div>";
-
-		echo debut_block_invisible('dateredac');
-		echo "<div style='margin: 5px; margin-$spip_lang_left: 20px;'>";
-		echo '<table cellpadding="0" cellspacing="0" border="0" width="100%">';
-		echo '<tr><td align="$spip_lang_left">';
-		echo '<input type="radio" name="avec_redac" value="non" id="avec_redac_on"';
-		if (!$possedeDateRedac) echo ' checked="checked"';
-		echo " onClick=\"setvisibility('valider_date_prec', 'visible')\"";
-		echo ' /> <label for="avec_redac_on">'._T('texte_date_publication_anterieure_nonaffichee').'</label>';
-		echo '<br /><input type="radio" name="avec_redac" value="oui" id="avec_redac_off"';
-		if ($possedeDateRedac) echo ' checked="checked"';
-		echo " onClick=\"setvisibility('valider_date_prec', 'visible')\"";
-		echo ' /> <label for="avec_redac_off">'._T('bouton_radio_afficher').' :</label> ',
-		afficher_jour($jour_redac, "name='jour_redac' class='fondl' onChange=\"setvisibility('valider_date_prec', 'visible')\"", true),
-		afficher_mois($mois_redac, "name='mois_redac' class='fondl' onChange=\"setvisibility('valider_date_prec', 'visible')\"", true);
-		echo "<input type='text' name='annee_redac' class='fondl' value='".$annee_redac."' size='5' maxlength='4' onClick=\"setvisibility('valider_date_prec', 'visible')\"/>";
-
-		echo '<div align="center">',
-		afficher_heure($heure_redac, "name='heure_redac' class='fondl' onChange=\"setvisibility('valider_date_prec', 'visible')\"", true),
-		afficher_minute($minute_redac, "name='minute_redac' class='fondl' onChange=\"setvisibility('valider_date_prec', 'visible')\"", true),
-		"</div>\n";
-
-		echo '</td><td align="$spip_lang_right">';
-		echo "<span class='visible_au_chargement' id='valider_date_prec'>";
-		echo '<input type="submit" name="Changer" class="fondo" value="'._T('bouton_changer').'" />';
-		echo "</span>";
-		echo '</td></tr>';
-		echo '</table>';
-		echo "</div>";
-		echo fin_block();
+		echo redirige_action_auteur("dater", 
+			"$id_article",
+			'articles',
+			"id_article=$id_article",
+			(bouton_block_invisible('dateredac') .
+ "<b>" .
+ "<span class='verdana1'>" .
+ majuscules(_T('texte_date_publication_anterieure')) .
+'</span> '.
+ $date_affichee .
+ " " .
+ aide('artdate_redac') .
+ "</b>" .
+ debut_block_invisible('dateredac') .
+ "<div style='margin: 5px; margin-$spip_lang_left: 20px;'>" .
+ '<table cellpadding="0" cellspacing="0" border="0" width="100%">' .
+ '<tr><td align="$spip_lang_left">' .
+ '<input type="radio" name="avec_redac" value="non" id="avec_redac_on"' .
+ ($possedeDateRedac ? '' : ' checked="checked"') .
+ " onClick=\"setvisibility('valider_date_prec', 'visible')\"" .
+ ' /> <label for="avec_redac_on">'.
+ _T('texte_date_publication_anterieure_nonaffichee').
+ '</label>' .
+ '<br /><input type="radio" name="avec_redac" value="oui" id="avec_redac_off"' .
+ (!$possedeDateRedac ? '' : ' checked="checked"') .
+ " onClick=\"setvisibility('valider_date_prec', 'visible')\"" .
+ ' /> <label for="avec_redac_off">'.
+ _T('bouton_radio_afficher').
+ ' :</label> ' .
+ afficher_jour($jour_redac, "name='jour_redac' class='fondl' onChange=\"setvisibility('valider_date_prec', 'visible')\"", true) .
+ afficher_mois($mois_redac, "name='mois_redac' class='fondl' onChange=\"setvisibility('valider_date_prec', 'visible')\"", true) .
+ "<input type='text' name='annee_redac' class='fondl' value='".$annee_redac."' size='5' maxlength='4' onClick=\"setvisibility('valider_date_prec', 'visible')\"/>" .
+
+ '<div align="center">' .
+ afficher_heure($heure_redac, "name='heure_redac' class='fondl' onChange=\"setvisibility('valider_date_prec', 'visible')\"", true) .
+ afficher_minute($minute_redac, "name='minute_redac' class='fondl' onChange=\"setvisibility('valider_date_prec', 'visible')\"", true) .
+ "</div>\n" .
+
+ '</td><td align="$spip_lang_right">' .
+ "<span class='visible_au_chargement' id='valider_date_prec'>" .
+ '<input type="submit" name="Changer" class="fondo" value="'.
+ _T('bouton_changer').'" />' .
+ "</span>" .
+ '</td></tr>' .
+ '</table>' .
+ '</div>' .
+ fin_block()),
+					    " method='post'");
 	}
 
-	echo "</FORM>";
+
 	fin_cadre_couleur();
- }
+  }
 else {
 	if ($statut_article == 'publie') $texte_date = _T('texte_date_publication_article');
 	else $texte_date = _T('texte_date_creation_article');
@@ -1335,11 +1353,11 @@ function insert_article($id_parent)
 				. "', 'non')");
 	return $id_article;
 }
-// Y a-t-il vraiment 56 variables determinant l'edition d'un article ?
+// Y a-t-il vraiment 24 variables determinant l'edition d'un article ?
 
 function exec_articles_dist()
 {
-  global $annee, $annee_redac, $avec_redac, $change_accepter_forum, $change_petition, $changer_virtuel, $chapo, $cherche_auteur, $ids, $cherche_mot, $connect_id_auteur, $date, $date_redac, $debut, $heure, $heure_redac, $id_article, $id_article_bloque, $id_parent, $id_rubrique_old, $id_secteur, $id_trad_new, $jour, $jour_redac, $langue_article, $lier_trad, $minute, $minute_redac, $mois, $mois_redac, $new, $nom_select, $nouv_mot, $supp_mot, $titre, $titre_article, $virtuel; 
+  global $change_accepter_forum, $change_petition, $changer_virtuel, $chapo, $cherche_auteur, $ids, $cherche_mot, $connect_id_auteur, $debut, $id_article, $id_article_bloque, $id_parent, $id_rubrique_old, $id_secteur, $id_trad_new,  $langue_article, $lier_trad, $new, $nom_select, $nouv_mot, $supp_mot, $titre, $titre_article, $virtuel; 
 
  $id_parent = intval($id_parent);
  $lier_trad = intval($lier_trad);
@@ -1375,25 +1393,10 @@ $flag_auteur = spip_num_rows(spip_query("SELECT id_auteur FROM spip_auteurs_arti
 
  $flag_editable = ($statut_rubrique OR ($flag_auteur AND ($statut_article == 'prepa' OR $statut_article == 'prop' OR $statut_article == 'poubelle')));
 
-if ($flag_editable) {
-
-if ($jour) {
-	spip_query("UPDATE spip_articles SET date='" . format_mysql_date($annee, $mois, $jour, $heure, $minute) ."'	WHERE id_article=$id_article");
-	calculer_rubriques();
-}
-
-if ($jour_redac) {
-	if ($annee_redac<>'' AND $annee_redac < 1001) $annee_redac += 9000;
-
-	if ($avec_redac == 'non')
-		$annee_redac = $mois_redac = $jour_redac = $heure_redac = $minute_redac = 0;
+ if ($flag_editable) {
+   maj_documents($id_article, 'article');
 
-	spip_query("UPDATE spip_articles SET date_redac='" . format_mysql_date($annee_redac, $mois_redac, $jour_redac, $heure_redac, $minute_redac) ."' WHERE id_article=$id_article");
-}
-
-maj_documents($id_article, 'article');
-
-if ($changer_virtuel) {
+   if ($changer_virtuel) {
 	if ($virtuel = eregi_replace("^http://$", "", trim($virtuel)))
 		$chapo = corriger_caracteres("=$virtuel");
 	spip_query("UPDATE spip_articles SET chapo=" . spip_abstract_quote($chapo) . ", date_modif=NOW() WHERE id_article=$id_article");
@@ -1417,7 +1420,7 @@ if (isset($_POST['titre'])) {
 	$id_article_bloque = $id_article;   // message pour inc/presentation
  }
 
- }
+}
 
 
 	// renvoyer vers la page de l'article
diff --git a/ecrire/inc/date.php b/ecrire/inc/date.php
index 485a3d3fa7..ac13e05b75 100644
--- a/ecrire/inc/date.php
+++ b/ecrire/inc/date.php
@@ -25,9 +25,9 @@ function format_mysql_date($annee=0, $mois=0, $jour=0, $h=0, $m=0, $s=0) {
 	if ($annee == "0000") $mois = 0;
 	if ($mois == "00") $jour = 0;
 
-	return sprintf("%04s",$annee) . '-' . sprintf("%02s",$mois) . '-'
-		. sprintf("%02s",$jour) . ' ' . sprintf("%02s",$h) . ':'
-		. sprintf("%02s",$m) . ':' . sprintf("%02s",$s);
+	return sprintf("%04u",$annee) . '-' . sprintf("%02u",$mois) . '-'
+		. sprintf("%02u",$jour) . ' ' . sprintf("%02u",$h) . ':'
+		. sprintf("%02u",$m) . ':' . sprintf("%02u",$s);
 }
 
 
-- 
GitLab