feat(editorial): validate publications and preserve partial event updates
CI / check (push) Successful in 57s
CI / deploy (push) Successful in 18s
CI / publish-container (push) Successful in 1m20s

This commit is contained in:
Simo committed 2026-09-11 00:36:55 +02:00
1 parent 76f0420d64
commit db4acbb46e
14 files changed
+613 -16

No files matched your search

+21 -1
View File
@@ -1237,7 +1237,9 @@
"restoreRevision": "Restore into editor",
"confirmRevision": "Replace the current editor content with this previous version as a draft? Review it and choose a publication status before saving.",
"editConflict": "This article changed after you opened it. Your changes were not applied. Copy your work, reload the article, and merge the changes before saving again.",
"retryRecovery": "Reload recovery without changing this form"
"retryRecovery": "Reload recovery without changing this form",
"imageInvalid": "Use a local image path or an HTTP/HTTPS image URL without credentials.",
"linksInvalid": "Review the content links: only local, HTTP/HTTPS and email links are allowed."
},
"articlesShown": "Articles shown",
"latest": "Latest article",
@@ -4332,6 +4334,19 @@
"start": "Start synchronization",
"description": "Synchronization runs in the background. Progress and safe retries remain in your import history after you leave this page.",
"failed": "Could not queue synchronization"
},
"publicationPreflight": {
"affectedPages": "Affected public pages",
"scheduleInvalid": "Choose a valid start or publication date. An event end must follow its start.",
"description": "Checks use the current form values. Remote image and link availability is not tested.",
"slugNormalized": "The public address will use the normalized slug shown below.",
"imageInvalid": "Use a local image path or an HTTP/HTTPS image URL without credentials.",
"imageMissing": "No cover image selected. The page will use its fallback.",
"title": "Publication checks",
"ready": "Image, links and schedule passed the local checks.",
"linksInvalid": "Review the content links: only local, HTTP/HTTPS and email links are allowed.",
"schedulePast": "The selected date is in the past. Review it before publishing.",
"previewHint": "These links show the current public pages. Use Preview to check unsaved content. The final article slug may receive a suffix if already in use."
}
},
"mod": {
@@ -4674,5 +4689,10 @@
"excludedConflicts": "{count, plural, one {# item needs review and is excluded from this import.} other {# items need review and are excluded from this import.}}"
}
}
},
"publicData": {
"loadError": "This section could not be loaded. Please try again.",
"retry": "Retry",
"unavailable": "Unavailable"
}
}
+21 -1
View File
@@ -1211,7 +1211,9 @@
"restoreRevision": "Ripristina nell’editor",
"confirmRevision": "Sostituire il contenuto corrente con questa versione precedente come bozza? Controllala e scegli lo stato di pubblicazione prima di salvare.",
"editConflict": "Questo articolo è stato modificato dopo la tua apertura. Le tue modifiche non sono state applicate. Copia il lavoro, ricarica l’articolo e integra le modifiche prima di salvare di nuovo.",
"retryRecovery": "Ricarica il recupero senza modificare il modulo"
"retryRecovery": "Ricarica il recupero senza modificare il modulo",
"imageInvalid": "Usa un percorso locale o un URL immagine HTTP/HTTPS senza credenziali.",
"linksInvalid": "Controlla i link del contenuto: sono ammessi link locali, HTTP/HTTPS ed email."
},
"articlesShown": "Articoli mostrati",
"latest": "Ultimo articolo",
@@ -4307,6 +4309,19 @@
"start": "Avvia sincronizzazione",
"description": "La sincronizzazione prosegue in background. Avanzamento e tentativi sicuri restano nello storico anche dopo aver chiuso la pagina.",
"failed": "Impossibile accodare la sincronizzazione"
},
"publicationPreflight": {
"affectedPages": "Pagine pubbliche interessate",
"scheduleInvalid": "Scegli una data valida. La fine di un evento deve seguire il suo inizio.",
"description": "I controlli usano i valori del modulo. La disponibilita remota di immagini e link non viene verificata.",
"slugNormalized": "Il percorso pubblico usera lo slug normalizzato indicato sotto.",
"imageInvalid": "Usa un percorso locale o un URL immagine HTTP/HTTPS senza credenziali.",
"imageMissing": "Nessuna copertina selezionata. La pagina usera la propria immagine alternativa.",
"title": "Controlli pubblicazione",
"ready": "Immagine, link e date hanno superato i controlli locali.",
"linksInvalid": "Controlla i link del contenuto: sono ammessi link locali, HTTP/HTTPS ed email.",
"schedulePast": "La data selezionata e nel passato. Controllala prima di pubblicare.",
"previewHint": "I link mostrano le pagine pubbliche attuali. Usa Anteprima per vedere il contenuto non salvato. Lo slug finale potrebbe ricevere un suffisso se gia utilizzato."
}
},
"radioRequests": {
@@ -4679,5 +4694,10 @@
"excludedConflicts": "{count, plural, one {# elemento richiede un controllo ed è escluso da questa importazione.} other {# elementi richiedono un controllo e sono esclusi da questa importazione.}}"
}
}
},
"publicData": {
"loadError": "Non è stato possibile caricare questa sezione. Riprova.",
"retry": "Riprova",
"unavailable": "Non disponibile"
}
}
+21 -1
View File
@@ -1222,7 +1222,9 @@
"statusScheduled": "Ingepland",
"statusPublished": "Gepubliceerd",
"publishAt": "Publiceren op",
"publishedAt": "Gepubliceerd op"
"publishedAt": "Gepubliceerd op",
"imageInvalid": "Gebruik een lokaal pad of een HTTP/HTTPS-afbeeldingsadres zonder inloggegevens.",
"linksInvalid": "Controleer de links: alleen lokale, HTTP/HTTPS- en e-maillinks zijn toegestaan."
},
"listActionError": "De actie voor dit artikel kon niet worden voltooid.",
"listStatus": "Publicatiestatus",
@@ -3923,6 +3925,19 @@
"start": "Synchronisatie starten",
"description": "Synchronisatie draait op de achtergrond. Voortgang en veilige nieuwe pogingen blijven beschikbaar in je importgeschiedenis.",
"failed": "Synchronisatie kon niet worden ingepland"
},
"publicationPreflight": {
"affectedPages": "Betrokken openbare paginas",
"scheduleInvalid": "Kies een geldige datum. De eindtijd van een evenement moet na de begintijd liggen.",
"description": "Controles gebruiken de huidige formulierwaarden. Externe afbeeldingen en links worden niet op beschikbaarheid getest.",
"slugNormalized": "Het openbare adres gebruikt de hieronder getoonde genormaliseerde slug.",
"imageInvalid": "Gebruik een lokaal pad of een HTTP/HTTPS-afbeeldingsadres zonder inloggegevens.",
"imageMissing": "Geen omslagafbeelding geselecteerd. De pagina gebruikt de standaardafbeelding.",
"title": "Publicatiecontroles",
"ready": "Afbeelding, links en planning voldoen aan de lokale controles.",
"linksInvalid": "Controleer de links: alleen lokale, HTTP/HTTPS- en e-maillinks zijn toegestaan.",
"schedulePast": "De geselecteerde datum ligt in het verleden. Controleer deze voor publicatie.",
"previewHint": "Deze links tonen de huidige openbare paginas. Gebruik Voorbeeld voor niet-opgeslagen inhoud. De definitieve artikelslug kan een achtervoegsel krijgen als deze al bestaat."
}
},
"mod": {
@@ -4150,5 +4165,10 @@
"excludedConflicts": "{count, plural, one {# item moet worden gecontroleerd en is uitgesloten van deze import.} other {# items moeten worden gecontroleerd en zijn uitgesloten van deze import.}}"
}
}
},
"publicData": {
"loadError": "Dit onderdeel kon niet worden geladen. Probeer het opnieuw.",
"retry": "Opnieuw proberen",
"unavailable": "Niet beschikbaar"
}
}