X-Git-Url: http://git.cyclocoop.org/?p=lhc%2Fweb%2Fclavette_www.git;a=blobdiff_plain;f=www%2Fprive%2Fformulaires%2Fdater.php;h=f8aebccd31d5b3b6deeac1a4795ff65350850851;hp=9b6d65d5f86e94092306d1a584850cd6d17cc7fe;hb=cc641eb476987612f6d6df1a5417c1c5582a8ab8;hpb=7d84a490677fb716a1fd4df260f8eab35f6a8506 diff --git a/www/prive/formulaires/dater.php b/www/prive/formulaires/dater.php index 9b6d65d..f8aebcc 100644 --- a/www/prive/formulaires/dater.php +++ b/www/prive/formulaires/dater.php @@ -3,7 +3,7 @@ /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * - * Copyright (c) 2001-2014 * + * Copyright (c) 2001-2016 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * @@ -100,6 +100,12 @@ function formulaires_dater_charger_dist($objet, $id_objet, $retour='', $options= $valeurs['_label_date'] = (($statut == 'publie')? _T('texte_date_publication_objet'): _T('texte_date_creation_objet')); $valeurs['_saisie_en_cours'] = (_request('date_jour')!==null); + // cas ou l'on ne peut pas dater mais on peut modifier la date de redac anterieure + // https://core.spip.net/issues/3494 + $valeurs['_editer_date'] = $valeurs['editable']; + if ($valeurs['_editer_date_anterieure'] AND !$valeurs['editable']){ + $valeurs['editable'] = autoriser('modifier',$objet,$id_objet); + } return $valeurs; } @@ -175,14 +181,19 @@ function formulaires_dater_traiter_dist($objet, $id_objet, $retour=''){ $set = array(); - if (!$d = dater_recuperer_date_saisie(_request('date_jour'))) - $d = array(date('Y'),date('m'),date('d')); - if (!$h = dater_recuperer_heure_saisie(_request('date_heure'))) - $h = array(0,0); + $charger = charger_fonction("charger","formulaires/dater/"); + $v = $charger($objet, $id_objet, $retour, $options); + + if ($v['_editer_date']){ + if (!$d = dater_recuperer_date_saisie(_request('date_jour'))) + $d = array(date('Y'),date('m'),date('d')); + if (!$h = dater_recuperer_heure_saisie(_request('date_heure'))) + $h = array(0,0); - $set[$champ_date] = sql_format_date($d[0], $d[1], $d[2], $h[0], $h[1]); + $set[$champ_date] = sql_format_date($d[0], $d[1], $d[2], $h[0], $h[1]); + } - if (isset($desc['field']['date_redac'])){ + if (isset($desc['field']['date_redac']) AND $v['_editer_date_anterieure']){ if (!_request('date_redac_jour') OR _request('sans_redac')) $set['date_redac'] = sql_format_date(0,0,0,0,0,0); else { @@ -193,8 +204,18 @@ function formulaires_dater_traiter_dist($objet, $id_objet, $retour=''){ $set['date_redac'] = sql_format_date($d[0], $d[1], $d[2], $h[0], $h[1]); } } - include_spip('action/editer_objet'); - objet_modifier($objet, $id_objet, $set); + + if (count($set)){ + $publie_avant = objet_test_si_publie($objet,$id_objet); + include_spip('action/editer_objet'); + objet_modifier($objet, $id_objet, $set); + $publie_apres = objet_test_si_publie($objet,$id_objet); + if ($publie_avant !== $publie_apres){ + // on refuse ajax pour forcer le rechargement de la page ici + // on refera traiter une 2eme fois, mais c'est sans consequence + refuser_traiter_formulaire_ajax(); + } + } } if ($retour)