feat: redesign CMS and unify German admin UI
This commit is contained in:
@@ -8,9 +8,9 @@ import { canViewAnalytics, isAdmin } from "@/access";
|
||||
*/
|
||||
export const AnalyticsSettings: GlobalConfig = {
|
||||
slug: "analytics-settings",
|
||||
label: "Analytics-Einstellungen",
|
||||
label: "Auswertungs-Einstellungen",
|
||||
admin: {
|
||||
description: "Aufbewahrungsdauer für Analytics-Rohdaten und aggregierte Tagesstatistiken.",
|
||||
description: "Aufbewahrungsdauer für Rohdaten und zusammengefasste Tagesstatistiken.",
|
||||
group: "Datenschutz",
|
||||
},
|
||||
access: {
|
||||
@@ -27,7 +27,7 @@ export const AnalyticsSettings: GlobalConfig = {
|
||||
min: 7,
|
||||
admin: {
|
||||
description:
|
||||
"Wie lange einzelne Analytics-Events gespeichert bleiben. Begrenzt auch den wählbaren Zeitraum im Analytics-Dashboard.",
|
||||
"Wie lange einzelne Messwerte gespeichert bleiben. Begrenzt auch den wählbaren Zeitraum in der Auswertung.",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
||||
@@ -3,12 +3,12 @@ import { isAdmin } from "@/access";
|
||||
|
||||
/**
|
||||
* Consent-category configuration shown in the public cookie banner
|
||||
* (components/Analytics.tsx). Read access is intentionally public — the
|
||||
* (components/Analytics.tsx). Read access is intentionally public - the
|
||||
* unauthenticated frontend needs the labels/descriptions and the
|
||||
* enabled/disabled flags before a visitor has logged in anywhere.
|
||||
*
|
||||
* "necessary" deliberately has no `enabled` field at all, anywhere in this
|
||||
* schema — there is no toggle to accidentally switch off, so it can never
|
||||
* schema - there is no toggle to accidentally switch off, so it can never
|
||||
* be disabled through the admin UI (see requirement: technically required
|
||||
* functionality must not be disable-able by an admin).
|
||||
*/
|
||||
@@ -32,14 +32,14 @@ export const CookieSettings: GlobalConfig = {
|
||||
defaultValue: "1.0",
|
||||
admin: {
|
||||
description:
|
||||
"Bei Änderung müssen alle Besucher erneut zustimmen — bereits gespeicherte Einwilligungen mit einer älteren Version werden ignoriert und der Banner erscheint erneut.",
|
||||
"Bei Änderung müssen alle Besucher erneut zustimmen - bereits gespeicherte Einwilligungen mit einer älteren Version werden ignoriert und der Banner erscheint erneut.",
|
||||
},
|
||||
},
|
||||
{
|
||||
type: "group",
|
||||
name: "necessary",
|
||||
label: "Notwendig",
|
||||
admin: { description: "Immer aktiv — technisch erforderlich, kann nicht deaktiviert werden." },
|
||||
admin: { description: "Immer aktiv - technisch erforderlich, kann nicht deaktiviert werden." },
|
||||
fields: [
|
||||
{ name: "label", type: "text", label: "Bezeichnung", required: true, defaultValue: "Notwendig" },
|
||||
{
|
||||
@@ -93,7 +93,7 @@ export const CookieSettings: GlobalConfig = {
|
||||
defaultValue: true,
|
||||
admin: {
|
||||
description:
|
||||
"Globaler Schalter für das gesamte Analytics-System. Wenn deaktiviert, wird diese Kategorie im Banner nicht mehr angeboten und Analytics-Daten werden serverseitig abgelehnt — auch bei einer noch gespeicherten alten Zustimmung.",
|
||||
"Globaler Schalter für die gesamte Reichweitenmessung. Wenn deaktiviert, wird diese Kategorie im Banner nicht mehr angeboten und Messdaten werden serverseitig abgelehnt - auch bei einer noch gespeicherten alten Zustimmung.",
|
||||
},
|
||||
},
|
||||
],
|
||||
|
||||
@@ -13,7 +13,7 @@ const WEEKDAYS = [
|
||||
|
||||
/**
|
||||
* Central SEO settings, edited once by Anna, applied automatically across
|
||||
* the whole website (see lib/seo/*). Everything here is optional — nothing
|
||||
* the whole website (see lib/seo/*). Everything here is optional - nothing
|
||||
* is invented if a field is left blank (see lib/seo/jsonld.ts, which only
|
||||
* emits LocalBusiness structured data once real address data exists).
|
||||
*/
|
||||
@@ -21,7 +21,7 @@ export const SEOSettings: GlobalConfig = {
|
||||
slug: "seo-settings",
|
||||
label: "SEO-Einstellungen",
|
||||
admin: {
|
||||
description: "Globale SEO-Vorgaben für die gesamte Website — greift automatisch überall dort, wo eine Seite keine eigenen SEO-Angaben hat.",
|
||||
description: "Globale SEO-Vorgaben für die gesamte Website - greift automatisch überall dort, wo eine Seite keine eigenen SEO-Angaben hat.",
|
||||
group: "SEO",
|
||||
},
|
||||
access: {
|
||||
@@ -40,7 +40,7 @@ export const SEOSettings: GlobalConfig = {
|
||||
type: "text",
|
||||
label: "Website-URL",
|
||||
admin: {
|
||||
description: "Nur bei Bedarf setzen (z. B. https://anouma.org) — überschreibt die Server-Konfiguration. Leer lassen, um die technische Standardeinstellung zu verwenden.",
|
||||
description: "Nur bei Bedarf setzen (z. B. https://anouma.org) - überschreibt die Server-Konfiguration. Leer lassen, um die technische Standardeinstellung zu verwenden.",
|
||||
},
|
||||
validate: (value: string | null | undefined) => {
|
||||
if (!value) return true;
|
||||
@@ -58,8 +58,8 @@ export const SEOSettings: GlobalConfig = {
|
||||
name: "defaultOgImage",
|
||||
type: "upload",
|
||||
relationTo: "media",
|
||||
label: "Standard Social-Media-Bild",
|
||||
admin: { description: "Wird verwendet, wenn eine Seite kein eigenes Open-Graph-Bild hat." },
|
||||
label: "Standardbild für soziale Netzwerke",
|
||||
admin: { description: "Wird verwendet, wenn eine Seite kein eigenes Bild für soziale Netzwerke hat." },
|
||||
},
|
||||
{
|
||||
name: "robotsIndexable",
|
||||
@@ -67,14 +67,14 @@ export const SEOSettings: GlobalConfig = {
|
||||
label: "Website für Suchmaschinen sichtbar",
|
||||
defaultValue: true,
|
||||
admin: {
|
||||
description: "Deaktivieren, um die gesamte öffentliche Website vorübergehend für Suchmaschinen zu sperren (z. B. während des Aufbaus). Betrifft nicht Admin/Konto — die sind ohnehin immer gesperrt.",
|
||||
description: "Deaktivieren, um die gesamte öffentliche Website vorübergehend für Suchmaschinen zu sperren (z. B. während des Aufbaus). Betrifft nicht Admin/Konto - die sind ohnehin immer gesperrt.",
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Lokale Informationen",
|
||||
admin: { description: "Werden nur verwendet, wenn tatsächlich ausgefüllt — es werden keine Angaben erfunden." },
|
||||
admin: { description: "Werden nur verwendet, wenn tatsächlich ausgefüllt - es werden keine Angaben erfunden." },
|
||||
fields: [
|
||||
{
|
||||
name: "businessName",
|
||||
@@ -99,7 +99,7 @@ export const SEOSettings: GlobalConfig = {
|
||||
name: "openingHours",
|
||||
type: "array",
|
||||
label: "Öffnungs-/Erreichbarkeitszeiten",
|
||||
admin: { description: "Optional — nur für tatsächlich feste Zeiten (z. B. Sprechzeiten)." },
|
||||
admin: { description: "Optional - nur für tatsächlich feste Zeiten (z. B. Sprechzeiten)." },
|
||||
fields: [
|
||||
{
|
||||
type: "row",
|
||||
|
||||
Reference in New Issue
Block a user