diff --git a/ecrire/action/instituer_article.php b/ecrire/action/instituer_article.php index c69975b2ac2bcaae10f4824a5dff71602834418f..5b93b059e651a301bc20129274d3775885486d1b 100644 --- a/ecrire/action/instituer_article.php +++ b/ecrire/action/instituer_article.php @@ -26,7 +26,13 @@ function action_instituer_article_dist() { include_spip('action/editer_article'); - instituer_article($id_article, array('statut' => $statut)); + $c = array('statut' => $statut); + + // si on a envoye une 'date_posterieure', l'enregistrer + if ($d = _request('date_posterieure')) + $c['date'] = $d; + + instituer_article($id_article, $c); } diff --git a/ecrire/inc/instituer_article.php b/ecrire/inc/instituer_article.php index 522ecddf026bb17a9993d5744e353eb7c683980b..85101a536a88d551f350de5429681bef888c0087 100644 --- a/ecrire/inc/instituer_article.php +++ b/ecrire/inc/instituer_article.php @@ -17,6 +17,12 @@ function inc_instituer_article_dist($id_article, $statut=-1) { if ($statut == -1) return demande_publication($id_article); + // menu de date pour les articles post-dates (plugin) + if ($statut <> 'publie' + AND $GLOBALS['meta']['post_dates'] == 'non' + AND function_exists('menu_postdates')) + list($postdates,$postdates_js) = menu_postdates(); + $res = "\n<div style='text-align: center;' id='instituer_article-$id_article'>" . "<b>" . @@ -26,7 +32,9 @@ function inc_instituer_article_dist($id_article, $statut=-1) "onchange=\"this.nextSibling.nextSibling.src='" . _DIR_IMG_PACK . "' + puce_statut(options[selectedIndex].value);" . - " setvisibility('valider_statut', 'visible');\">\n" . + " setvisibility('valider_statut', 'visible');" + . $postdates_js + . "\">\n" . "<option" . mySel("prepa", $statut) ." style='background-color: white'>" ._T('texte_statut_en_cours_redaction') ."</option>\n" . "<option" . mySel("prop", $statut) . " style='background-color: #FFF1C6'>" ._T('texte_statut_propose_evaluation') ."</option>\n" . "<option" . mySel("publie", $statut) . " style='background-color: #B4E8C5'>" ._T('texte_statut_publie') ."</option>\n" . @@ -41,6 +49,7 @@ function inc_instituer_article_dist($id_article, $statut=-1) "<input type='submit' value='"._T('bouton_valider')."' class='fondo' />" . "</span>" . aide("artstatut") + . $postdates . '</div>'; return redirige_action_auteur('instituer_article',$id_article,'articles', "id_article=$id_article", $res, " method='post'"); diff --git a/ecrire/inc/rubriques.php b/ecrire/inc/rubriques.php index e5536e7ed8869d786fe8adb541cd34e5bfdb9422..672600aec9f483c7f1b77407a90a09ee0588dd7c 100644 --- a/ecrire/inc/rubriques.php +++ b/ecrire/inc/rubriques.php @@ -117,6 +117,9 @@ function calculer_rubriques() { // pour recalculer les langues utilisees sur le site include_spip('inc/lang'); calculer_langues_utilisees(); + + // on calcule la date du prochain article post-date + calculer_prochain_postdate(); } // http://doc.spip.org/@propager_les_secteurs @@ -254,6 +257,16 @@ function calcul_branche ($generation) { } } +function calculer_prochain_postdate() { + include_spip('inc/meta'); + $s = spip_query("SELECT UNIX_TIMESTAMP(date) AS ts FROM spip_articles WHERE statut='publie' AND date>"._q(date('Y-m-d H:i:s'))." ORDER BY date LIMIT 0,1"); + if ($t = spip_fetch_array($s)) + ecrire_meta('date_prochain_postdate', $t['ts']); + else + effacer_meta('date_prochain_postdate'); + ecrire_metas(); +} + // http://doc.spip.org/@cron_rubriques function cron_rubriques($t) { calculer_rubriques(); diff --git a/ecrire/inc/texte.php b/ecrire/inc/texte.php index ca8df2eda9ef5d2685e43ef5a8a99eb2f7f92b97..fcad00aa4d2042092c84b0b0e786df405208ebeb 100644 --- a/ecrire/inc/texte.php +++ b/ecrire/inc/texte.php @@ -1178,7 +1178,7 @@ function traiter_raccourci_lien($regs) { } // sinon c'est un italique else { - $m[1] .= '{'.$m[3].'}'; + $m[1] .= $m[4]; } } // S'il n'y a pas de hreflang sous la forme {}, ce qui suit le | diff --git a/ecrire/public/cacher.php b/ecrire/public/cacher.php index 644c03f803e60abbdb694cd4929d089c8067a5a3..1e7d72db7bc6b58bd3d93bacd0f41bed826523de 100644 --- a/ecrire/public/cacher.php +++ b/ecrire/public/cacher.php @@ -86,6 +86,18 @@ function cache_valide(&$page, $date) { AND $date < $GLOBALS['meta']['derniere_modif']) return 1; + // Apparition d'un nouvel article post-date ? + if ($GLOBALS['meta']['post_dates'] == 'non' + AND $GLOBALS['meta']['date_prochain_postdate'] + AND time() > $GLOBALS['meta']['date_prochain_postdate']) { + spip_log('Un article post-date invalide le cache'); + include_spip('inc/meta'); + include_spip('inc/rubriques'); + ecrire_meta('derniere_modif', time()); + calculer_prochain_postdate(); // fera le ecrire_metas() + return 1; + } + // Sinon comparer l'age du fichier a sa duree de cache $duree = intval($page['entetes']['X-Spip-Cache']); if ($duree == 0) #CACHE{0}