Annonces à venir proposées, et dates d'événement au lieu des dates de publication

Retour du commanditaire après le premier envoi réel (juillet 2026) : des
annonces à venir n'étaient pas proposées à la coche, et les dates affichées
étaient les dates de publication.

- Fenêtre « à venir » de 12 mois (FUTURE_HORIZON_MONTHS), démarrant à la fin
  du mois de la newsletter ou à aujourd'hui si ce mois est passé, en
  remplacement du plafond « début de fenêtre <= fin du mois ». Idem pour les
  séances (SEANCE_WINDOW_MARGIN_DAYS de 5 jours supprimée). Ces items sont
  regroupés dans un bloc « À venir », décochés par défaut.
- event_date_label() centralise les libellés du thème (« Le X de H1 à H2 »,
  « Du X au Y », « Jusqu'au X », « X à H ») sur la convention
  date_de_debut > datetime > post_date. Utilisée par l'export et par la
  pastille de la liste à cocher, qui affichent donc la même chose.
- Tri par date d'événement (sql_event_date_order) et non par date de
  publication.
- Fenêtres de fin « +35 j » et « +3 mois » recalées sur la date d'événement :
  un événement annoncé plus de 35 jours à l'avance sortait de la fenêtre
  avant d'avoir eu lieu et manquait dans la newsletter de son propre mois.
- merge_selected_items() : une sélection déjà enregistrée est réinjectée dans
  la liste même si ses items sont sortis de la fenêtre — sans ça, rouvrir puis
  réenregistrer une ancienne newsletter l'amputait silencieusement.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011w7RzAHv4r1Yahnm2NwDDG
This commit is contained in:
2026-08-27 17:48:08 +02:00
co-authored by Claude Opus 5
parent 021f322719
commit 3cf09ea74f
6 changed files with 409 additions and 136 deletions
+27
View File
@@ -304,3 +304,30 @@
grid-template-columns: 1fr;
}
}
/* ---- Annonces à venir (au-delà du mois affiché) ---- */
.thalim-nl-future {
margin-top: 10px;
padding-top: 6px;
border-top: 1px dashed #dcdcde;
}
.thalim-nl-future-title {
margin: 0 0 2px 0;
font-size: 11px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.04em;
color: #787c82;
}
.thalim-nl-future-title span {
font-weight: normal;
text-transform: none;
letter-spacing: 0;
font-style: italic;
}
.thalim-nl-post-row.is-future .thalim-nl-post-title {
color: #50575e;
}
+7
View File
@@ -36,6 +36,13 @@
makeSortable($body, '> .thalim-nl-post-row');
}
});
// Le bloc « À venir » est une zone de tri à part, pour que ses lignes
// ne puissent pas se mélanger à celles du mois (l'ordre du DOM est
// l'ordre de soumission, donc l'ordre de rendu dans le mail).
$root.find('.thalim-nl-future').each(function () {
makeSortable($(this), '> .thalim-nl-post-row');
});
}
// A click on the drag handle must not toggle its enclosing checkbox label.