fix: resolve contact form placeholders, restore process block layout, and fix testimonials carousel scroll logic

This commit is contained in:
MichalC
2026-09-17 22:25:25 +02:00
parent 7cc68b9f36
commit ab4c5c83dd
91 changed files with 4790 additions and 319 deletions
+124
View File
@@ -0,0 +1,124 @@
import { getPayload } from 'payload'
import configPromise from '../src/payload.config'
async function run() {
const payload = await getPayload({ config: configPromise })
const servicesData: Record<string, { label: string, value: string }[]> = { pl: [], de: [] }
for (const locale of ['pl', 'de']) {
const pages = await payload.find({
collection: 'pages',
locale: locale as 'pl' | 'de',
where: { slug: { equals: locale === 'de' ? 'leistungen' : 'uslugi' } }
})
if (pages.docs.length > 0) {
const dbPage = pages.docs[0]
const servicesBlock = dbPage.layout?.find((b: any) => b.blockType === 'servicesDetailed') as any
if (servicesBlock && servicesBlock.services) {
servicesData[locale] = servicesBlock.services.map((s: any) => ({
label: s.title,
value: s.anchor || s.title.toLowerCase().replace(/[^a-z0-9]+/g, '-')
}))
}
}
}
const baseValues = servicesData['pl'].map(s => s.value);
// First pass: PL. This will create the options (or update them).
let form = await payload.findByID({
collection: 'forms',
id: 1,
locale: 'pl',
})
let updatedFieldsPL = form.fields?.map((f: any) => {
if (f.name === 'name') {
f.defaultValue = 'Jan Kowalski'
f.label = 'Imię i nazwisko'
}
if (f.name === 'email') {
f.defaultValue = '[email protected]'
f.label = 'Adres e-mail'
}
if (f.name === 'message') {
f.defaultValue = 'Opisz krótko swoją sytuację...'
f.label = 'Wiadomość'
}
if (f.name === 'consent') {
f.label = 'Wyrażam zgodę na przetwarzanie danych'
}
if (f.name === 'service' && f.blockType === 'select') {
f.label = 'Usługa'
f.options = servicesData['pl'].map((s: any, idx: number) => {
// preserve existing id if we have the exact same amount of options
const existingOption = f.options?.[idx];
return {
id: existingOption ? existingOption.id : undefined,
label: s.label,
value: baseValues[idx]
}
})
}
return f
})
await payload.update({
collection: 'forms',
id: 1,
locale: 'pl',
data: { fields: updatedFieldsPL }
})
console.log(`Updated form 1 for locale pl`)
// Refetch the form to get the assigned IDs of the options!
form = await payload.findByID({
collection: 'forms',
id: 1,
locale: 'all', // Get all locales to see the IDs
})
let updatedFieldsDE = form.fields?.map((f: any) => {
if (f.name === 'name') {
f.defaultValue = 'Max Mustermann'
f.label = 'Vor- und Nachname'
}
if (f.name === 'email') {
f.defaultValue = '[email protected]'
f.label = 'E-Mail Adresse'
}
if (f.name === 'message') {
f.defaultValue = 'Beschreiben Sie kurz Ihre Situation...'
f.label = 'Nachricht'
}
if (f.name === 'consent') {
f.label = 'Ich stimme der Datenverarbeitung zu'
}
if (f.name === 'service' && f.blockType === 'select') {
f.label = 'Dienstleistung'
f.options = servicesData['de'].map((s: any, idx: number) => {
// VERY IMPORTANT: Use the ID assigned during the PL update
const optionId = f.options?.[idx]?.id;
return {
id: optionId,
label: s.label,
value: baseValues[idx]
}
})
}
return f
})
await payload.update({
collection: 'forms',
id: 1,
locale: 'de',
data: { fields: updatedFieldsDE }
})
console.log(`Updated form 1 for locale de`)
process.exit(0)
}
run().catch(console.error)