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) <noreply@anthropic.com>
This commit is contained in:
2026-08-17 12:32:57 +02:00
parent 0b5d9f4106
commit cbcb533e57
+20 -1
View File
@@ -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'}
</div>
)}
{anteprimaIgnorata === 'login' && (
<div class="anteprima ignorata">
Anteprima non applicata: questa è la pagina di oggi. Entra da <a href="/admin/login">/admin/login</a> e ricarica.
</div>
)}
{anteprimaIgnorata === 'data' && (
<div class="anteprima ignorata">
Anteprima non applicata: «{param}» non è una data leggibile. Usa il formato 2026-08-25.
</div>
)}
{ed ? (
<Fragment>
@@ -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; }