feat: enhance validation rules and improve content structure across collections

This commit is contained in:
2026-05-17 12:25:28 +00:00
parent 4020ad62c5
commit 819147f518
8 changed files with 184 additions and 26 deletions
+50 -11
View File
@@ -12,7 +12,6 @@ meta:
label: name
secondary: path
tertiary: lang
badge: type
image: _pagebuilderThumbnail
pagebuilder:
screenshot:
@@ -25,11 +24,15 @@ meta:
sidebar:
- group: publishing
label: { de: "Veröffentlichung", en: "Publishing" }
- group: settings
label: { de: "Einstellungen", en: "Settings" }
- group: seo
label: { de: "SEO", en: "SEO" }
hooks:
get:
read:
type: javascript
file: hooks/filter_public.js
permissions:
public:
methods:
@@ -53,11 +56,30 @@ fields:
meta:
label: { de: "Aktiv", en: "Active" }
position: sidebar:publishing
- name: type
type: string
- name: publication
type: object
meta:
label: { de: "Typ", en: "Type" }
position: sidebar:settings
label: { de: "Veröffentlichungszeitraum", en: "Publication window" }
position: sidebar:publishing
drillDown: false
widget: containerLessObject
subFields:
- name: from
type: date
meta:
label: { de: "Von", en: "From" }
widget: datetime
containerProps:
layout:
size: col-6
- name: to
type: date
meta:
label: { de: "Bis", en: "Until" }
widget: datetime
containerProps:
layout:
size: col-6
- name: lang
type: string
meta:
@@ -70,23 +92,40 @@ fields:
position: sidebar:settings
- name: name
type: string
validator:
required: true
meta:
label: { de: "Name", en: "Name" }
helperText:
de: "Eindeutiger Name für diese Seite, z.B. 'Startseite'."
en: "Unique name for this page, e.g. 'Homepage'."
containerProps:
layout:
size: col-6
- name: path
type: string
validator:
pattern: ^\/[a-z0-9\-\/]*$
required: true
meta:
label: { de: "Pfad", en: "Path" }
helperText:
de: "URL-Pfad für diese Seite, z.B. '/ueber-uns'."
en: "URL path for this page, e.g. '/about-us'."
containerProps:
layout:
size: col-6
- name: alternativePaths
type: object[]
meta:
label: { de: "Alternative Pfade", en: "Alternative Paths" }
position: sidebar:seo
widget: containerLessObjectArray
subFields:
- name: path
type: string
- name: teaserText
type: string
meta:
label: { de: "Teasertext", en: "Teaser Text" }
validator:
pattern: ^\/[a-z0-9\-\/]*$
- name: _pagebuilderThumbnail
type: file
meta:
+11
View File
@@ -89,6 +89,9 @@ imageFilter:
fields:
- name: file
type: file
validator:
required: true
maxFileSize: "50MB"
meta:
label: { de: "Datei", en: "File" }
widget: file
@@ -97,6 +100,8 @@ fields:
maxHeight: 2048
- name: title
type: string
validator:
maxLength: 255
meta:
label: { de: "Titel", en: "Title" }
- name: alt
@@ -106,14 +111,20 @@ fields:
subFields:
- name: de
type: string
validator:
maxLength: 500
meta:
label: Deutsch
- name: en
type: string
validator:
maxLength: 500
meta:
label: English
- name: description
type: string
validator:
maxLength: 2000
meta:
label: { de: "Beschreibung", en: "Description" }
widget: text
+13
View File
@@ -60,6 +60,9 @@ permissions:
fields:
- name: language
type: string
validator:
in: ["de", "en"]
required: true
meta:
label: { de: "Sprache", en: "Language" }
position: sidebar:settings
@@ -71,6 +74,9 @@ fields:
name: { de: "Englisch", en: "English" }
- name: type
type: string
validator:
in: ["header", "footer"]
required: true
meta:
label: { de: "Typ", en: "Type" }
helperText: { de: "header oder footer", en: "header or footer" }
@@ -89,6 +95,9 @@ fields:
subFields:
- name: name
type: string
validator:
required: true
maxLength: 100
meta:
label: { de: "Bezeichnung", en: "Label" }
- name: page
@@ -105,10 +114,14 @@ fields:
label: { de: "Externer Link", en: "External Link" }
- name: externalUrl
type: string
validator:
maxLength: 1024
meta:
label: { de: "Externe URL", en: "External URL" }
- name: hash
type: string
validator:
pattern: ^[a-zA-Z0-9_-]+$
meta:
label: { de: "Anker", en: "Anchor" }
- name: elements