Erste brauchbare Version

This commit is contained in:
timg
2026-08-31 19:55:41 +02:00
parent 080c4d0f39
commit 892a4d4747
35 changed files with 7103 additions and 219 deletions
+83
View File
@@ -0,0 +1,83 @@
import { type CollectionConfig } from 'payload';
import { lexicalEditor, UploadFeature } from '@payloadcms/richtext-lexical';
export const Posts: CollectionConfig = {
slug: 'posts',
labels: {
singular: 'Artikel',
plural: 'Artikel'
},
admin: {
useAsTitle: 'title',
group: 'Inhalte',
description: 'Artikel verwalten',
defaultColumns: [ 'id', 'slug', 'title', 'author', '_status' ],
hideAPIURL: true,
preview: doc =>
`${process.env.NEXT_PUBLIC_PAYLOAD_URL}/post/${doc.slug}/?preview`
},
versions: {
drafts: true
},
access: {
read: ({ data, req }) => (data?._status && data?._status !== 'draft') || [ 'admin', 'superadmin' ].includes(req.user?.role),
create: ({ req }) => [ 'admin', 'superadmin' ].includes(req.user?.role),
update: ({ req }) => [ 'admin', 'superadmin' ].includes(req.user?.role),
delete: ({ req }) => [ 'admin', 'superadmin' ].includes(req.user?.role)
},
orderable: true,
fields: [
{
name: 'title',
label: 'Titel',
type: 'text',
required: true
},
{
name: 'slug',
label: 'Slug',
type: 'text',
required: true,
unique: true,
admin: {
placeholder: 'Zum Beispiel: mein-toller-post'
}
},
{
name: 'content',
label: 'Inhalt',
type: 'richText',
editor: lexicalEditor({
features: ({ defaultFeatures }) => [
...defaultFeatures,
UploadFeature({
collections: {
media: {
fields: []
}
}
})
]
})
},
{
name: 'author',
label: 'Autor',
type: 'relationship',
relationTo: 'users',
filterOptions: () => {
return {
// eslint-disable-next-line camelcase
role: { not_equals: 'superadmin' }
};
}
}
]
};