church-website/src/collections/Parish.ts
2025-02-24 09:44:24 +01:00

141 lines
2.4 KiB
TypeScript

import { CollectionConfig } from 'payload'
import { isAdmin, isAdminOrEmployee } from '@/collections/access/admin'
export const Parish: CollectionConfig = {
slug: 'parish',
labels: {
singular: {
de: 'Gemeinde',
},
plural: {
de: 'Gemeinden',
},
},
fields: [
{
name: 'name',
label: {
de: 'Name',
},
type: 'text',
required: true,
},
{
name: 'slug',
label: {
de: 'URL slug',
},
type: 'text',
required: true
},
{
name: 'churches',
label: {
de: 'Kirchengebäuden',
},
type: 'relationship',
relationTo: 'church',
hasMany: true,
required: true,
admin: {
allowCreate: false,
},
},
{
name: 'contactPersons',
label: {
de: "Ansprechpartner"
},
type: 'array',
fields: [
{
name: 'title',
label: {
de: 'Titel'
},
type: 'text',
required: true
},
{
name: 'description',
label: {
de: 'Umschreibung'
},
type: 'textarea',
required: true
}
]
},
{
name: 'description',
label: {
de: 'Umschreibung',
},
type: 'textarea',
required: true,
admin: {
rows: 15,
},
},
{
name: 'history',
label: {
de: 'Geschichte',
},
type: 'textarea',
required: true,
admin: {
rows: 15,
},
},
{
name: 'contact',
label: {
de: 'Kontaktinformation',
},
type: 'textarea',
required: true,
admin: {
rows: 10,
},
},
{
name: 'photo',
label: {
de: "Hauptbild"
},
type: 'upload',
relationTo: 'media',
required: true
},
{
name: 'gallery',
label: {
de: 'Weitere Bilder'
},
type: 'array',
fields: [
{
name: 'photo',
label: {
de: 'Bild'
},
type: 'upload',
relationTo: 'media',
required: true
},
],
minRows: 3,
maxRows: 12
}
],
admin: {
useAsTitle: 'name',
},
access: {
read: () => true,
create: isAdmin(),
update: isAdminOrEmployee(),
delete: isAdmin(),
},
}