Payload Global configs mirroring proto/src/content/types.ts:
- src/globals/{Home,About,Services,Contact,Common}.ts
- src/globals/fields/stringArray.ts — shared helper: Payload has no
native string[] field, so every plain string array from the old
content types (trustBullets, paragraphs, features, spec items, …)
becomes an array of one-field { value } objects.
- home.partners is intentionally NOT included — that becomes its own
Partners collection (logo -> Media upload) in MITHOME-89, to avoid
two disagreeing sources for the same data.
- contact.form.fields.gdpr.label stays a plain textarea (not lexical
richText): the JSON source is a hand-written HTML string with an
<a> tag; richText's node-tree serialization would need its own
migration/render logic, out of scope for this bootstrap pass.
scripts/migrate-content-to-payload.ts: one-shot, idempotent Local API
migration reading the existing JSON files and calling updateGlobal —
does not touch or delete the JSON files. Run via the new
`npm run migrate:content` script.
Registered the five Globals in payload.config.ts.
Also included here (belongs with the previous "resolve double-root-
layout conflict" commit but didn't actually get staged there —
verified only now by diffing HEAD against the working tree):
(frontend)/layout.tsx's relative imports corrected to ../../ instead
of ../ (one directory deeper than the original src/app/layout.tsx).
Verified:
- npm run build / lint, tsc --noEmit, npm test (58 passed) all clean
- npm run migrate:content against the real dev MongoDB container,
then read back via payload.findGlobal() — hero.title, trustBullets,
services.items[0].features, footer.address, faq.items.length all
match the JSON source
- Real browser: logged into /admin, opened the Home global editor —
Hero/Trust bullets group renders and shows the migrated Hungarian
content correctly (see screenshot shared in chat)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
54 lines
1.6 KiB
TypeScript
54 lines
1.6 KiB
TypeScript
/**
|
|
* Payload CMS configuration (MITHOME-86 — alapinstalláció).
|
|
*
|
|
* WHY a saját MongoDB kapcsolatot használjuk: a projekt már MongoDB-t futtat
|
|
* (proto/src/lib/mongodb.ts) — Payload a `mongooseAdapter`-en keresztül
|
|
* ugyanabba az adatbázisba ír, nincs szükség külön DB-re/szerverre.
|
|
*
|
|
* MITHOME-87: Home/About/Services/Contact/Common Globals hozzáadva — ezek
|
|
* tükrözik a proto/src/content/pages/*.json + common.json struktúráját.
|
|
* A LegalPages/Partners/Media collectionök a MITHOME-88..89-ben kerülnek be.
|
|
*/
|
|
import path from 'path'
|
|
import { fileURLToPath } from 'url'
|
|
import { buildConfig } from 'payload'
|
|
import { mongooseAdapter } from '@payloadcms/db-mongodb'
|
|
import { lexicalEditor } from '@payloadcms/richtext-lexical'
|
|
import sharp from 'sharp'
|
|
|
|
import { Users } from './collections/Users'
|
|
import { Home } from './globals/Home'
|
|
import { About } from './globals/About'
|
|
import { Services } from './globals/Services'
|
|
import { Contact } from './globals/Contact'
|
|
import { Common } from './globals/Common'
|
|
|
|
const filename = fileURLToPath(import.meta.url)
|
|
const dirname = path.dirname(filename)
|
|
|
|
export default buildConfig({
|
|
// Admin felület — bejelentkezés az Users collection-nel (MITHOME-90-ben
|
|
// finomodik: access control, jelszó-politika stb.)
|
|
admin: {
|
|
user: Users.slug,
|
|
},
|
|
|
|
editor: lexicalEditor(),
|
|
|
|
collections: [Users],
|
|
|
|
globals: [Home, About, Services, Contact, Common],
|
|
|
|
secret: process.env.PAYLOAD_SECRET || '',
|
|
|
|
typescript: {
|
|
outputFile: path.resolve(dirname, 'payload-types.ts'),
|
|
},
|
|
|
|
db: mongooseAdapter({
|
|
url: process.env.MONGODB_URI || '',
|
|
}),
|
|
|
|
sharp,
|
|
})
|