church-website/src/collections/Parish.ts
2026-01-06 13:34:07 +01:00

161 lines
3 KiB
TypeScript

import { CollectionConfig } from 'payload'
import { hide, isAdmin, isAdminOrEmployee } from '@/collections/access/admin'
import { ParagraphBlock } from '@/collections/blocks/Paragraph'
import { DocumentBlock } from '@/collections/blocks/Document'
import { DonationBlock } from '@/collections/blocks/Donation'
import { YoutubePlayerBlock } from '@/collections/blocks/YoutubePlayer'
import { DonationAppeal } from '@/collections/blocks/DonationAppeal'
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: 'content',
label: {
de: "Extra Kontent"
},
type: 'blocks',
blocks: [
ParagraphBlock,
DocumentBlock,
DonationBlock,
YoutubePlayerBlock,
DonationAppeal
]
},
{
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',
hidden: hide
},
access: {
read: () => true,
create: isAdmin(),
update: isAdminOrEmployee(),
delete: isAdmin(),
},
}