feat: Add preload script for header awards navigation and update nav items
This commit is contained in:
@@ -20,6 +20,7 @@
|
|||||||
"setup:fresh-db": "cross-env NODE_OPTIONS=--no-deprecation tsx src/scripts/setup-fresh-database.ts",
|
"setup:fresh-db": "cross-env NODE_OPTIONS=--no-deprecation tsx src/scripts/setup-fresh-database.ts",
|
||||||
"preload:blog-detail-cms": "cross-env NODE_OPTIONS=--no-deprecation tsx src/scripts/preload-blog-detail-cms.ts",
|
"preload:blog-detail-cms": "cross-env NODE_OPTIONS=--no-deprecation tsx src/scripts/preload-blog-detail-cms.ts",
|
||||||
"preload:globals-cms": "cross-env NODE_OPTIONS=--no-deprecation tsx src/scripts/preload-globals-cms.ts",
|
"preload:globals-cms": "cross-env NODE_OPTIONS=--no-deprecation tsx src/scripts/preload-globals-cms.ts",
|
||||||
|
"preload:header-awards-nav-cms": "cross-env NODE_OPTIONS=--no-deprecation tsx src/scripts/preload-header-awards-nav-cms.ts",
|
||||||
"preload:about-page-cms": "cross-env NODE_OPTIONS=--no-deprecation tsx src/scripts/preload-about-page-cms.ts",
|
"preload:about-page-cms": "cross-env NODE_OPTIONS=--no-deprecation tsx src/scripts/preload-about-page-cms.ts",
|
||||||
"preload:contact-page-cms": "cross-env NODE_OPTIONS=--no-deprecation tsx src/scripts/preload-contact-page-cms.ts",
|
"preload:contact-page-cms": "cross-env NODE_OPTIONS=--no-deprecation tsx src/scripts/preload-contact-page-cms.ts",
|
||||||
"preload:datenschutz-page-cms": "cross-env NODE_OPTIONS=--no-deprecation tsx src/scripts/preload-datenschutz-page-cms.ts",
|
"preload:datenschutz-page-cms": "cross-env NODE_OPTIONS=--no-deprecation tsx src/scripts/preload-datenschutz-page-cms.ts",
|
||||||
|
|||||||
66
src/scripts/preload-header-awards-nav-cms.ts
Normal file
66
src/scripts/preload-header-awards-nav-cms.ts
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
import 'dotenv/config'
|
||||||
|
|
||||||
|
process.env.PAYLOAD_MIGRATING ||= 'true'
|
||||||
|
|
||||||
|
import config from '@payload-config'
|
||||||
|
import { getPayload } from 'payload'
|
||||||
|
|
||||||
|
import { defaultHeaderData, type SpaHeaderNavItem } from '@/spa/cmsNavigation'
|
||||||
|
|
||||||
|
const awardsNavLink = {
|
||||||
|
label: 'Unsere Auszeichnungen',
|
||||||
|
path: '/teilnahme#auszeichnungen',
|
||||||
|
}
|
||||||
|
|
||||||
|
const isBmpNavItem = (item: Pick<SpaHeaderNavItem, 'key' | 'label'>) =>
|
||||||
|
item.key === 'bmp' || item.label === 'Der BMP'
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
const payload = await getPayload({ config })
|
||||||
|
const header = await payload.findGlobal({
|
||||||
|
slug: 'header',
|
||||||
|
depth: 0,
|
||||||
|
overrideAccess: true,
|
||||||
|
})
|
||||||
|
|
||||||
|
const navItems =
|
||||||
|
header.navItems?.length && Array.isArray(header.navItems)
|
||||||
|
? (header.navItems as SpaHeaderNavItem[])
|
||||||
|
: defaultHeaderData.navItems
|
||||||
|
|
||||||
|
const updatedNavItems = navItems.map((item) => {
|
||||||
|
if (!isBmpNavItem(item)) return item
|
||||||
|
|
||||||
|
const sub = item.sub ?? []
|
||||||
|
const hasAwardsLink = sub.some(
|
||||||
|
(subItem) =>
|
||||||
|
subItem.path === awardsNavLink.path ||
|
||||||
|
subItem.label.trim().toLowerCase() === awardsNavLink.label.toLowerCase(),
|
||||||
|
)
|
||||||
|
|
||||||
|
return hasAwardsLink
|
||||||
|
? item
|
||||||
|
: {
|
||||||
|
...item,
|
||||||
|
sub: [...sub, awardsNavLink],
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
await payload.updateGlobal({
|
||||||
|
slug: 'header',
|
||||||
|
overrideAccess: true,
|
||||||
|
context: { disableRevalidate: true },
|
||||||
|
data: {
|
||||||
|
navItems: updatedNavItems,
|
||||||
|
} as never,
|
||||||
|
})
|
||||||
|
|
||||||
|
payload.logger.info('Ensured Der BMP header nav includes Unsere Auszeichnungen.')
|
||||||
|
await payload.destroy()
|
||||||
|
process.exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
main().catch((error) => {
|
||||||
|
console.error(error)
|
||||||
|
process.exit(1)
|
||||||
|
})
|
||||||
@@ -89,6 +89,7 @@ export const defaultHeaderData: SpaHeaderData = {
|
|||||||
{ label: 'Was ist der Preis?', path: '/der-bmp#was-ist' },
|
{ label: 'Was ist der Preis?', path: '/der-bmp#was-ist' },
|
||||||
{ label: 'Geschichte & Werte', path: '/der-bmp#geschichte' },
|
{ label: 'Geschichte & Werte', path: '/der-bmp#geschichte' },
|
||||||
{ label: 'Vorteile der Auszeichnung', path: '/der-bmp#vorteile' },
|
{ label: 'Vorteile der Auszeichnung', path: '/der-bmp#vorteile' },
|
||||||
|
{ label: 'Unsere Auszeichnungen', path: '/teilnahme#auszeichnungen' },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user