From cbcb533e57a07a24aa0bd2d34f9269ba853b9a2c Mon Sep 17 00:00:00 2001 From: AdrianoDev Date: Mon, 17 Aug 2026 12:32:57 +0200 Subject: [PATCH] Promo: un'anteprima non applicata lo dice, invece di mostrare oggi in silenzio Senza login (o con una data illeggibile) il parametro veniva ignorato e la pagina rispondeva con l'edizione corrente: due date diverse davano lo stesso risultato, e si legge come una funzione rotta invece che come un accesso mancante. Ora una barra rossa dichiara il motivo e come rimediare. Co-Authored-By: Claude Opus 5 (1M context) --- src/pages/promo-eventi.astro | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/pages/promo-eventi.astro b/src/pages/promo-eventi.astro index 25449ee..7f678d3 100644 --- a/src/pages/promo-eventi.astro +++ b/src/pages/promo-eventi.astro @@ -25,7 +25,12 @@ const utente = token ? getSessionUser(getDb(), token) : null; // Una data secca (`2026-08-20`) sarebbe letta come UTC: la si porta a mezzogiorno italiano, // lontano dai confini di mezzanotte dove sta la differenza fra un'edizione e l'altra. const quandoParam = param && /^\d{4}-\d{2}-\d{2}$/.test(param) ? `${param}T12:00:00+02:00` : param; -const anteprima = Boolean(utente && quandoParam && !Number.isNaN(Date.parse(quandoParam))); +const dataLeggibile = Boolean(quandoParam && !Number.isNaN(Date.parse(quandoParam))); +const anteprima = Boolean(utente && dataLeggibile); +// Un'anteprima chiesta e non applicata va **detta**: altrimenti la pagina risponde con +// l'edizione di oggi e due date diverse danno lo stesso risultato — che si legge come «la +// funzione non funziona» invece che «non sei entrato». +const anteprimaIgnorata = !param || anteprima ? null : (!utente ? 'login' : 'data'); const quando = anteprima ? new Date(quandoParam!) : new Date(); const ed = edizioneAttiva(quando); // La pagina cambia contenuto col passare del tempo: una copia in cache la congelerebbe alla @@ -53,6 +58,16 @@ const countdownDeadline = ed ? t(tg('countdown.deadline')) : ''; {ed ? ` edizione «${ed.id}»` : ' nessuna edizione attiva'} )} + {anteprimaIgnorata === 'login' && ( +
+ Anteprima non applicata: questa è la pagina di oggi. Entra da /admin/login e ricarica. +
+ )} + {anteprimaIgnorata === 'data' && ( +
+ Anteprima non applicata: «{param}» non è una data leggibile. Usa il formato 2026-08-25. +
+ )} {ed ? ( @@ -305,6 +320,10 @@ const countdownDeadline = ed ? t(tg('countdown.deadline')) : ''; background: #8A6E3F; color: #FFFFFF; font-size: 12px; font-weight: 700; letter-spacing: 0.04em; padding: 10px 16px; text-align: center; } + /* Anteprima chiesta e non applicata: colore diverso, perché il contenuto sotto è quello di + oggi e non quello della data richiesta. */ + .lp .anteprima.ignorata { background: #8B2E2E; } + .lp .anteprima.ignorata a { color: #FFFFFF; } /* FAQ */ .lp .faq-wrap { padding: 72px 64px; }