Files
diplomarbeitsportal/src/collections/Papers.ts
2025-03-26 14:20:05 +01:00

123 lines
2.4 KiB
TypeScript

import type { CollectionConfig } from 'payload'
export const Papers: CollectionConfig = {
slug: 'papers',
labels: {
singular: 'Diplomarbeit',
plural: 'Diplomarbeiten',
},
access: {
},
admin: {
useAsTitle: 'title',
},
fields: [
{
name: 'title',
type: 'text',
required: true,
},
{
name: 'issue',
label: 'Problemstellung',
type: 'textarea',
required: true,
},
{
name: 'goal',
label: 'Zielsetzung',
type: 'textarea',
required: true,
},
{
name: 'technologies',
type: 'array',
fields: [
{
name: 'technology',
type: 'relationship',
relationTo: 'technologies',
required: true,
},
{
name: 'description',
type: 'text',
required: true,
admin: {
placeholder: '... wurde für das Frontend verwendet',
}
},
],
},
{
name: 'prototype',
type: 'group',
fields: [
{
name: 'image',
type: 'upload',
relationTo: 'media',
required: true,
},
{
name: 'description',
type: 'text',
required: true,
},
],
},
{
name: 'authors',
type: 'array',
label: 'Projektmitglieder',
required: true,
fields: [
{
name: 'profilePicture',
type: 'upload',
relationTo: 'media',
required: true,
},
{
name: 'user',
type: 'relationship',
relationTo: 'users',
required: true,
},
{
name: 'position',
type: 'select',
required: true,
options: [
{
label: 'Projektleiter (PL)',
value: 'leader',
},
{
label: 'Projektmitarbeiter (PM)',
value: 'member',
},
],
},
{
name: 'description',
type: 'text',
required: true,
},
],
validate: (authors) => {
// @ts-ignore
const leaders = authors.filter(author => author.position === 'leader')
if (leaders.length > 1) {
return 'Only one author can be the project leader.'
}
return true
},
},
],
}