feat: add PartnerLogoMark component for dynamic partner logo rendering
This commit is contained in:
@@ -7,7 +7,7 @@ import { notFound } from 'next/navigation'
|
||||
import NextApp from '@/spa/NextApp'
|
||||
import { normalizeApplicationPhaseData, type SpaApplicationPhaseData } from '@/spa/applicationPhase'
|
||||
import { normalizeFooterData, normalizeHeaderData } from '@/spa/cmsNavigation'
|
||||
import type { CmsRouteDoc } from '@/spa/cmsRoute'
|
||||
import type { CmsRouteCollection, CmsRouteDoc } from '@/spa/cmsRoute'
|
||||
import { normalizeSiteSettings, type SpaSiteSettingsData } from '@/spa/siteSettings'
|
||||
|
||||
export const dynamic = 'force-dynamic'
|
||||
@@ -16,7 +16,7 @@ type Args = {
|
||||
params: Promise<{ slug?: string[] }>
|
||||
}
|
||||
|
||||
type RouteCollection = 'pages' | 'posts' | 'events' | 'preistraeger'
|
||||
type RouteCollection = Exclude<CmsRouteCollection, 'partners'>
|
||||
|
||||
function routeTarget(pathname: string): { collection: RouteCollection; slug: string } {
|
||||
const parts = pathname.split('/').filter(Boolean)
|
||||
@@ -57,7 +57,7 @@ async function findRouteDoc(payload: Awaited<ReturnType<typeof getPayload>>, pat
|
||||
return doc ? { collection: target.collection, doc } : undefined
|
||||
}
|
||||
|
||||
async function findList(payload: Awaited<ReturnType<typeof getPayload>>, collection: RouteCollection, draft: boolean) {
|
||||
async function findList(payload: Awaited<ReturnType<typeof getPayload>>, collection: CmsRouteCollection, draft: boolean) {
|
||||
const result = await payload.find({
|
||||
collection,
|
||||
depth: 1,
|
||||
@@ -65,25 +65,33 @@ async function findList(payload: Awaited<ReturnType<typeof getPayload>>, collect
|
||||
overrideAccess: draft,
|
||||
limit: 300,
|
||||
pagination: false,
|
||||
...(collection === 'partners' ? { sort: 'sortOrder' } : {}),
|
||||
})
|
||||
|
||||
return result.docs
|
||||
}
|
||||
|
||||
async function findHomePage(payload: Awaited<ReturnType<typeof getPayload>>, draft: boolean) {
|
||||
async function findSupportPages(payload: Awaited<ReturnType<typeof getPayload>>, draft: boolean) {
|
||||
const result = await payload.find({
|
||||
collection: 'pages',
|
||||
depth: 1,
|
||||
draft,
|
||||
overrideAccess: draft,
|
||||
limit: 1,
|
||||
limit: 10,
|
||||
pagination: false,
|
||||
where: {
|
||||
or: [{ spaPath: { equals: '/' } }, { slug: { equals: 'startseite' } }, { slug: { equals: 'home' } }],
|
||||
or: [
|
||||
{ spaPath: { equals: '/' } },
|
||||
{ slug: { equals: 'startseite' } },
|
||||
{ slug: { equals: 'home' } },
|
||||
{ spaPath: { equals: '/netzwerk' } },
|
||||
{ slug: { equals: 'netzwerk' } },
|
||||
{ slug: { equals: 'network' } },
|
||||
],
|
||||
},
|
||||
})
|
||||
|
||||
return result.docs[0]
|
||||
return result.docs
|
||||
}
|
||||
|
||||
export default async function Page({ params }: Args) {
|
||||
@@ -91,16 +99,17 @@ export default async function Page({ params }: Args) {
|
||||
const pathname = `/${slug.join('/')}`.replace(/\/$/, '') || '/'
|
||||
const payload = await getPayload({ config: configPromise })
|
||||
const { isEnabled: draft } = await draftMode()
|
||||
const [header, footer, siteSettings, applicationPhase, route, homePage, preistraeger, events, posts] = await Promise.all([
|
||||
const [header, footer, siteSettings, applicationPhase, route, supportPages, preistraeger, events, posts, partners] = await Promise.all([
|
||||
payload.findGlobal({ slug: 'header', depth: 1 }).catch(() => undefined),
|
||||
payload.findGlobal({ slug: 'footer', depth: 1 }).catch(() => undefined),
|
||||
payload.findGlobal({ slug: 'site-settings', depth: 1 }).catch(() => undefined),
|
||||
payload.findGlobal({ slug: 'application-phase', depth: 0 }).catch(() => undefined),
|
||||
findRouteDoc(payload, pathname, draft),
|
||||
findHomePage(payload, draft).catch(() => undefined),
|
||||
findSupportPages(payload, draft).catch(() => []),
|
||||
findList(payload, 'preistraeger', draft).catch(() => []),
|
||||
findList(payload, 'events', draft).catch(() => []),
|
||||
findList(payload, 'posts', draft).catch(() => []),
|
||||
findList(payload, 'partners', draft).catch(() => []),
|
||||
])
|
||||
|
||||
if (!route) notFound()
|
||||
@@ -116,10 +125,11 @@ export default async function Page({ params }: Args) {
|
||||
collection: route.collection,
|
||||
doc: route.doc as unknown as CmsRouteDoc,
|
||||
lists: {
|
||||
pages: homePage ? [homePage as unknown as CmsRouteDoc] : [],
|
||||
pages: supportPages as unknown as CmsRouteDoc[],
|
||||
preistraeger: preistraeger as unknown as CmsRouteDoc[],
|
||||
events: events as unknown as CmsRouteDoc[],
|
||||
posts: posts as unknown as CmsRouteDoc[],
|
||||
partners: partners as unknown as CmsRouteDoc[],
|
||||
},
|
||||
}}
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user