diff --git a/src/app/admin/actions/content.ts b/src/app/admin/actions/content.ts index dbce963..158a25a 100644 --- a/src/app/admin/actions/content.ts +++ b/src/app/admin/actions/content.ts @@ -5,7 +5,7 @@ import { revalidatePath } from "next/cache"; import { prisma } from "@/lib/prisma"; import { logAdminAction } from "@/lib/audit-log"; import { CONTENT_REGISTRY } from "@/lib/content-registry"; -import { isValidUploadPath } from "@/lib/uploads"; +import { isValidUploadPath, isValidVideoUploadPath } from "@/lib/uploads"; import { requireAdmin } from "./_shared"; /** @@ -43,6 +43,11 @@ export async function updateSiteContentAction(formData: FormData): Promise if (def.type === "image" && valueDe !== "" && !isValidUploadPath(valueDe)) { continue; } + // Analog zum Bild-Feld: ein Video-Feld darf nur einen Pfad enthalten, + // den app/api/admin/upload-video/route.ts tatsaechlich erzeugt hat. + if (def.type === "video" && valueDe !== "" && !isValidVideoUploadPath(valueDe)) { + continue; + } updates.push({ key: def.key, valueDe, valueEn: null }); } } diff --git a/src/app/admin/inhalte/page.tsx b/src/app/admin/inhalte/page.tsx index c808e2e..39adb93 100644 --- a/src/app/admin/inhalte/page.tsx +++ b/src/app/admin/inhalte/page.tsx @@ -1,6 +1,7 @@ import { prisma } from "@/lib/prisma"; import { BackLink } from "@/components/back-link"; import { AdminImageField } from "@/components/admin-image-field"; +import { AdminVideoField } from "@/components/admin-video-field"; import { CONTENT_REGISTRY, type ContentFieldDef } from "@/lib/content-registry"; import { updateSiteContentAction } from "../actions"; import { getLocale } from "@/i18n/locale"; @@ -13,10 +14,11 @@ const ROWS_BY_TYPE: Record = { "list-titled": 5, "list-numbered": 6, "richtext-sections": 14, - // Bild-Feld hat kein