chore: migrate pages and media to be cms controlled.

This commit is contained in:
syntaxbullet
2026-06-17 17:15:45 +02:00
parent 647967482b
commit 3e04a3c7e3
25 changed files with 1359 additions and 256 deletions

View File

@@ -69,6 +69,8 @@ export interface Config {
collections: {
pages: Page;
posts: Post;
events: Event;
preistraeger: Preistraeger;
media: Media;
categories: Category;
users: User;
@@ -91,6 +93,8 @@ export interface Config {
collectionsSelect: {
pages: PagesSelect<false> | PagesSelect<true>;
posts: PostsSelect<false> | PostsSelect<true>;
events: EventsSelect<false> | EventsSelect<true>;
preistraeger: PreistraegerSelect<false> | PreistraegerSelect<true>;
media: MediaSelect<false> | MediaSelect<true>;
categories: CategoriesSelect<false> | CategoriesSelect<true>;
users: UsersSelect<false> | UsersSelect<true>;
@@ -112,12 +116,10 @@ export interface Config {
globals: {
header: Header;
footer: Footer;
'spa-media': SpaMedia;
};
globalsSelect: {
header: HeaderSelect<false> | HeaderSelect<true>;
footer: FooterSelect<false> | FooterSelect<true>;
'spa-media': SpaMediaSelect<false> | SpaMediaSelect<true>;
};
locale: null;
widgets: {
@@ -213,6 +215,10 @@ export interface Page {
description?: string | null;
};
publishedAt?: string | null;
/**
* Route in the legacy SPA used for previewing the current migrated page state.
*/
spaPath?: string | null;
/**
* When enabled, the slug will auto-generate from the title field on save and autosave.
*/
@@ -230,6 +236,31 @@ export interface Post {
id: number;
title: string;
heroImage?: (number | null) | Media;
excerpt?: string | null;
cat?: string | null;
date?: string | null;
authorName?: string | null;
authorRole?: string | null;
readTime?: string | null;
sections?:
| {
heading?: string | null;
body: string;
id?: string | null;
}[]
| null;
tags?:
| {
tag: string;
id?: string | null;
}[]
| null;
relatedSlugs?:
| {
slug: string;
id?: string | null;
}[]
| null;
content: {
root: {
type: string;
@@ -255,6 +286,10 @@ export interface Post {
image?: (number | null) | Media;
description?: string | null;
};
/**
* Route in the legacy SPA used for previewing the current migrated press article state.
*/
spaPath?: string | null;
publishedAt?: string | null;
authors?: (number | User)[] | null;
populatedAuthors?:
@@ -783,6 +818,99 @@ export interface Form {
updatedAt: string;
createdAt: string;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "events".
*/
export interface Event {
id: number;
title: string;
subtitle?: string | null;
image?: (number | null) | Media;
description?: string | null;
longDescription?: string | null;
date?: string | null;
time?: string | null;
location?: string | null;
venue?: string | null;
category?: string | null;
status?: ('geplant' | 'anmeldung-offen' | 'intern' | 'abgeschlossen') | null;
eckdaten?:
| {
label: string;
value: string;
id?: string | null;
}[]
| null;
updates?:
| {
timestamp: string;
type: 'ankündigung' | 'erinnerung' | 'update' | 'highlight' | 'ergebnis' | 'wichtig';
title: string;
body: string;
id?: string | null;
}[]
| null;
/**
* Route in the legacy SPA used for previewing the current migrated event state.
*/
spaPath?: string | null;
publishedAt?: string | null;
meta?: {
title?: string | null;
description?: string | null;
};
/**
* When enabled, the slug will auto-generate from the title field on save and autosave.
*/
generateSlug?: boolean | null;
slug: string;
updatedAt: string;
createdAt: string;
_status?: ('draft' | 'published') | null;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "preistraeger".
*/
export interface Preistraeger {
id: number;
title: string;
image?: (number | null) | Media;
category?: string | null;
year?: number | null;
awardType?: string | null;
shortDesc?: string | null;
longDesc?: string | null;
/**
* Fallback description. Prefer Kurzbeschreibung / Langbeschreibung for migrated Preisträger content.
*/
description?: string | null;
quote?: string | null;
quotePerson?: string | null;
quoteRole?: string | null;
location?: string | null;
industry?: string | null;
website?: string | null;
hasMedia?: boolean | null;
/**
* Route in the legacy SPA used for previewing the current migrated Preisträger state.
*/
spaPath?: string | null;
publishedAt?: string | null;
meta?: {
title?: string | null;
description?: string | null;
};
/**
* When enabled, the slug will auto-generate from the title field on save and autosave.
*/
generateSlug?: boolean | null;
slug: string;
updatedAt: string;
createdAt: string;
_status?: ('draft' | 'published') | null;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "redirects".
@@ -981,6 +1109,14 @@ export interface PayloadLockedDocument {
relationTo: 'posts';
value: number | Post;
} | null)
| ({
relationTo: 'events';
value: number | Event;
} | null)
| ({
relationTo: 'preistraeger';
value: number | Preistraeger;
} | null)
| ({
relationTo: 'media';
value: number | Media;
@@ -1100,6 +1236,7 @@ export interface PagesSelect<T extends boolean = true> {
description?: T;
};
publishedAt?: T;
spaPath?: T;
generateSlug?: T;
slug?: T;
updatedAt?: T;
@@ -1197,6 +1334,31 @@ export interface FormBlockSelect<T extends boolean = true> {
export interface PostsSelect<T extends boolean = true> {
title?: T;
heroImage?: T;
excerpt?: T;
cat?: T;
date?: T;
authorName?: T;
authorRole?: T;
readTime?: T;
sections?:
| T
| {
heading?: T;
body?: T;
id?: T;
};
tags?:
| T
| {
tag?: T;
id?: T;
};
relatedSlugs?:
| T
| {
slug?: T;
id?: T;
};
content?: T;
relatedPosts?: T;
categories?: T;
@@ -1207,6 +1369,7 @@ export interface PostsSelect<T extends boolean = true> {
image?: T;
description?: T;
};
spaPath?: T;
publishedAt?: T;
authors?: T;
populatedAuthors?:
@@ -1221,6 +1384,86 @@ export interface PostsSelect<T extends boolean = true> {
createdAt?: T;
_status?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "events_select".
*/
export interface EventsSelect<T extends boolean = true> {
title?: T;
subtitle?: T;
image?: T;
description?: T;
longDescription?: T;
date?: T;
time?: T;
location?: T;
venue?: T;
category?: T;
status?: T;
eckdaten?:
| T
| {
label?: T;
value?: T;
id?: T;
};
updates?:
| T
| {
timestamp?: T;
type?: T;
title?: T;
body?: T;
id?: T;
};
spaPath?: T;
publishedAt?: T;
meta?:
| T
| {
title?: T;
description?: T;
};
generateSlug?: T;
slug?: T;
updatedAt?: T;
createdAt?: T;
_status?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "preistraeger_select".
*/
export interface PreistraegerSelect<T extends boolean = true> {
title?: T;
image?: T;
category?: T;
year?: T;
awardType?: T;
shortDesc?: T;
longDesc?: T;
description?: T;
quote?: T;
quotePerson?: T;
quoteRole?: T;
location?: T;
industry?: T;
website?: T;
hasMedia?: T;
spaPath?: T;
publishedAt?: T;
meta?:
| T
| {
title?: T;
description?: T;
};
generateSlug?: T;
slug?: T;
updatedAt?: T;
createdAt?: T;
_status?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "media_select".
@@ -1758,27 +2001,6 @@ export interface Footer {
updatedAt?: string | null;
createdAt?: string | null;
}
/**
* Central media map for legacy /spa images and videos. The migration script stores each original URL/path here and points it to a Payload media entry.
*
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "spa-media".
*/
export interface SpaMedia {
id: number;
assets?:
| {
/**
* Original /spa image/video path or external URL, e.g. /images/gala-dinner.jpg.
*/
source: string;
media: number | Media;
id?: string | null;
}[]
| null;
updatedAt?: string | null;
createdAt?: string | null;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "header_select".
@@ -1897,22 +2119,6 @@ export interface FooterSelect<T extends boolean = true> {
createdAt?: T;
globalType?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "spa-media_select".
*/
export interface SpaMediaSelect<T extends boolean = true> {
assets?:
| T
| {
source?: T;
media?: T;
id?: T;
};
updatedAt?: T;
createdAt?: T;
globalType?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "collections_widget".
@@ -1939,6 +2145,14 @@ export interface TaskSchedulePublish {
| ({
relationTo: 'posts';
value: number | Post;
} | null)
| ({
relationTo: 'events';
value: number | Event;
} | null)
| ({
relationTo: 'preistraeger';
value: number | Preistraeger;
} | null);
global?: string | null;
user?: (number | null) | User;