feat: redesign CMS and unify German admin UI

This commit is contained in:
2026-09-17 16:51:24 +02:00
parent a2b3e99174
commit 7ec0c51ff5
129 changed files with 952 additions and 550 deletions
+6 -6
View File
@@ -18,7 +18,7 @@ export const EVENT_CATEGORIES = [
// Auto-generates the meeting password for new online events, and
// regenerates it whenever the admin ticks "Neues Passwort generieren".
// Never derived from the event id/slug — always a fresh random value.
// Never derived from the event id/slug - always a fresh random value.
const setMeetingPassword: CollectionBeforeChangeHook = ({ data, originalDoc }) => {
if (!(data.isOnline ?? originalDoc?.isOnline)) return data;
if (!(data.meetingPassword ?? originalDoc?.meetingPassword) || data.regeneratePassword || originalDoc?.isOnline === false) {
@@ -38,7 +38,7 @@ export const Events: CollectionConfig = {
useAsTitle: "title",
defaultColumns: ["title", "date", "category", "_status"],
group: "Inhalte",
description: "Termine und Veranstaltungen — erscheinen automatisch unter /termine.",
description: "Termine und Veranstaltungen - erscheinen automatisch unter /termine.",
},
versions: {
drafts: {
@@ -149,7 +149,7 @@ export const Events: CollectionConfig = {
},
{
type: "collapsible",
label: "Online-Termin (Video-Call)",
label: "Online-Termin (Videoanruf)",
fields: [
{
name: "isOnline",
@@ -166,7 +166,7 @@ export const Events: CollectionConfig = {
label: "Meeting-Passwort",
// Events are publicly readable (publishedOrAdmin) via the REST/
// GraphQL API, so without this the plaintext password would be
// returned to any visitor fetching the event — defeating the
// returned to any visitor fetching the event - defeating the
// password check in app/(payload)/api/meetings/[slug]/join. Only
// exposed to admins there; the join route reads it via the Local
// API, which bypasses field access by default.
@@ -220,14 +220,14 @@ export const Events: CollectionConfig = {
{
name: "hostReminder60Sent",
type: "checkbox",
label: "Host-Reminder 60 Min. gesendet",
label: "Erinnerung an Anna 60 Min. gesendet",
defaultValue: false,
admin: { readOnly: true, width: "50%" },
},
{
name: "hostReminder30Sent",
type: "checkbox",
label: "Host-Reminder 30 Min. gesendet",
label: "Erinnerung an Anna 30 Min. gesendet",
defaultValue: false,
admin: { readOnly: true, width: "50%" },
},