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:
@@ -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; }
|
||||
|
||||
Reference in New Issue
Block a user