From 471e5a3841ec8834b0326c65fd368d4f7571b5b6 Mon Sep 17 00:00:00 2001 From: Dominik Natter Date: Thu, 27 Mar 2025 21:37:44 +0100 Subject: [PATCH] add: Team section --- public/person-placeholder.svg | 55 +++++++++++++ src/app/(frontend)/diplomarbeit/[id]/page.tsx | 82 ++++++++++++++++--- src/collections/Papers.ts | 5 ++ src/payload-types.ts | 2 + 4 files changed, 131 insertions(+), 13 deletions(-) create mode 100644 public/person-placeholder.svg diff --git a/public/person-placeholder.svg b/public/person-placeholder.svg new file mode 100644 index 0000000..b331a75 --- /dev/null +++ b/public/person-placeholder.svg @@ -0,0 +1,55 @@ + + + + + + + + image/svg+xml + + + + + + + + diff --git a/src/app/(frontend)/diplomarbeit/[id]/page.tsx b/src/app/(frontend)/diplomarbeit/[id]/page.tsx index fdd514e..3aeec15 100644 --- a/src/app/(frontend)/diplomarbeit/[id]/page.tsx +++ b/src/app/(frontend)/diplomarbeit/[id]/page.tsx @@ -1,29 +1,85 @@ import { getPayload } from 'payload'; import config from '@payload-config'; import Link from "next/link" +import React from 'react' + +const team = [ + { + name: 'Emma Dorsey', + role: 'Senior Developer', + imageUrl: + 'https://images.unsplash.com/photo-1505840717430-882ce147ef2d?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=8&w=1024&h=1024&q=80', + bio: 'Praesentium iure error aliquam voluptas ut libero. Commodi placeat sit iure nulla officiis. Ut ex sit repellat tempora. Qui est accusamus exercitationem natus ut voluptas. Officiis velit eos ducimus.', + xUrl: '#', + linkedinUrl: '#', + }, + // More people... +] + +function Team({ people }) { + return ( +
+
+
+

+ Projektteam +

+
+
    + {people.map((person) => ( +
  • + {"Bild +

    + {person.name} +

    +

    + {person.position == "leader" + ? "Projektleiter" + : "Projektmitarbeiter"} +

    +

    + {person.description} +

    +
  • + ))} +
+
+
+ ); +} export default async function Page({ - params, - }: { - params: Promise<{ id: number }> + params, +}: { + params: Promise<{ id: number }>; }) { - const { id } = await params - + const { id } = await params; const payload = await getPayload({ config }); - const result = await payload.findByID({ - collection: 'papers', // required + collection: "papers", // required id: id, // required - }) - + }); return ( -
- {"<-"} Back -

Diplom- und Abschlussarbeiten ({result.year})

+
+ + Zurück + + +

+ Diplom- und Abschlussarbeiten ({result.year}) +

{result.title}

+

Zielsetzung

{result.goal}

Problemstellung

@@ -31,5 +87,5 @@ export default async function Page({

Ergebnisse

{result.result}

- ) + ); } diff --git a/src/collections/Papers.ts b/src/collections/Papers.ts index c6d7c60..5de19a5 100644 --- a/src/collections/Papers.ts +++ b/src/collections/Papers.ts @@ -116,6 +116,11 @@ export const Papers: CollectionConfig = { type: "array", label: "Projektmitglieder", fields: [ + { + name: "image", + type: "upload", + relationTo: "media", + }, { name: "name", type: "text", diff --git a/src/payload-types.ts b/src/payload-types.ts index 6462fe4..a3a083f 100644 --- a/src/payload-types.ts +++ b/src/payload-types.ts @@ -144,6 +144,7 @@ export interface Paper { mentor?: string | null; authors?: | { + image?: (number | null) | Media; name: string; position: 'leader' | 'member'; description?: string | null; @@ -384,6 +385,7 @@ export interface PapersSelect { authors?: | T | { + image?: T; name?: T; position?: T; description?: T;