This commit is contained in:
2025-10-06 13:48:21 +00:00
parent 23f8bc2491
commit 9af63ab5a3
70 changed files with 37 additions and 6451 deletions

View File

@@ -1,51 +0,0 @@
name: action
# Metaangaben zur Kollektion welche in der Admin-UI verwendet werden können
meta:
openapi:
disabled: true
# Navigationseintrag in der Admin-UI
label: { de: "Action", en: "Action" }
# Icon (Material UI) für den Navigationseintrag
muiIcon: web
views:
# Mobile Darstellung
- type: simpleList
mediaQuery: "(max-width:599px)"
primaryText: id
# Desktop
- type: table
mediaQuery: "(min-width:600px)"
columns:
- id
permissions:
# öffentlicher Zugriff
public:
methods:
# Liste und Einzeleinträge lesen
# checked via hook
get: false
# neuen Eintrag anlegen
post: true
# Eintrag editieren
put: false
# Eintrag löschen
delete: false
# zum Projekt zugeordneter Benutzer ohne Zusatzberechtigungen
user:
methods:
get: false
post: false
put: false
delete: false
hooks:
post:
create:
type: javascript
file: hooks/action/post_create.js
# Feldliste der Kollektion
fields: []

View File

@@ -29,42 +29,35 @@ hooks:
create:
type: javascript
file: hooks/backups/post_create.js
return:
type: javascript
file: hooks/clear_cache.js
put:
return:
type: javascript
file: hooks/clear_cache.js
fields:
- name: collectionName
type: string
meta:
label:
de: Collection Name
en: Collection Name
label:
de: Collection Name
en: Collection Name
- name: entryId
type: string
meta:
label:
de: Entry ID
en: Entry ID
de: Entry ID
en: Entry ID
- name: versionNr
type: number
meta:
label:
de: Version Nr
en: Version Nr
de: Version Nr
en: Version Nr
- name: manipulatedBy
type: string
meta:
label:
de: Manipulated By
en: Manipulated By
de: Manipulated By
en: Manipulated By
- name: eventDescription
type: string
@@ -73,59 +66,58 @@ fields:
widget: select
choices:
- id: create
name:
de: Erstellt
en: Create
name:
de: Erstellt
en: Create
- id: update
name:
de: Update
en: Update
name:
de: Update
en: Update
- id: delete
name:
de: Gelöscht
en: Delete
name:
de: Gelöscht
en: Delete
- id: recreate
name:
de: Wiederhergestellt
en: Recreate
de: Wiederhergestellt
en: Recreate
- id: activate
name:
de: Aktiviert
en: Activate
name:
de: Aktiviert
en: Activate
- name: updateLogs
type: object[]
meta:
label:
de: Veränderungen
en: Update Logs
label:
de: Veränderungen
en: Update Logs
subFields:
- name: field
type: string
meta:
label:
de: Feldname
en: Fieldname
label:
de: Feldname
en: Fieldname
- name: previous
type: string
meta:
label:
de: Vorheriger Wert
en: Previous Value
label:
de: Vorheriger Wert
en: Previous Value
- name: current
type: string
meta:
label:
de: Aktueller Wert
en: Current Value
label:
de: Aktueller Wert
en: Current Value
- name: entry
type: object
meta:
label:
de: Eintrag
en: Entry
de: Eintrag
en: Entry

View File

@@ -1,42 +0,0 @@
name: bannerSlide
meta:
allowExportAll: true
label:
de: Banner
en: Banner
muiIcon: label
backup:
active: true
collectionName: backups
defaultSort:
field: name
order: ASC
views: &views
- type: table
columns:
- source: text
filter: true
permissions:
public:
methods:
get: true
post: false
put: false
delete: false
user:
methods:
get: true
post: true
put: true
delete: true
fields:
- name: text
type: string
meta:
label:
de: Inhalt
en: Content

View File

@@ -1,221 +0,0 @@
name: content
meta:
label: Inhalt
muiIcon: tableOfContents
allowExportAll: true
backup:
active: true
collectionName: backups
defaultSort:
field: insertTime
order: DESC
views:
- type: simpleList
selectionPriority: 0
primaryText: name
secondaryText: path
mediaQuery: "(min-width: 0px)"
tertiaryText: type
- type: table
selectionPriority: 1
mediaQuery: "(min-width: 700px)"
columns:
- source: active
name: Aktiv
filter: true
- source: type
name: Typ
filter: true
- source: name
name: Name
filter: true
- source: path
name: Pfad
filter: true
tablist:
activeTab: general
tabs:
- name: general
label:
de: Allgemein
en: General
subFields:
- source: active
- source: type
- source: name
- source: question
- source: path
- source: alternativePaths
- source: products
- name: block
label:
de: Inhalt
en: Content
subFields:
- source: blocks
- name: meta
label:
de: Meta
en: Meta
subFields:
- source: meta
subNavigation:
- name: modalForeign
defaultSort:
field: name
order: ASC
views:
- type: table
columns:
- source: active
name: Aktiv
filter: true
- source: name
name: Name
filter: true
setDefault:
field: type
value: block
defaultCallback:
eval: |
(entry) => {
parent.selectEntry(entry)
}
- name: page
label:
de: Seiten
en: pages
muiIcon: book-open-page-variant
defaultSort:
field: insertTime
order: DESC
setDefault:
field: type
value: page
views:
- type: table
columns:
- source: active
name: Aktiv
filter: true
- source: name
name: Name
filter: true
- source: path
name: Pfad
filter: true
filter:
type: page
- name: block
label:
de: Blöcke
en: blocks
muiIcon: view-grid
defaultSort:
# field: "sort"
# order: "MANUALLY"
field: insertTime
order: DESC
setDefault:
field: type
value: block
views:
- type: table
columns:
- source: active
name: Aktiv
filter: true
- source: name
name: Name
filter: true
filter:
type: block
permissions:
public:
methods:
get: true
post: false
put: false
delete: false
user:
methods:
get: true
post: true
put: true
delete: true
projections:
navigation:
select:
path: 1
fields:
- !include fields/active.yml
- !include fields/contentType.yml
- name: products
type: number[]
meta:
label:
de: Produkte
en: Products
widget: foreignKey
dependsOn:
eval: $.type == "product"
foreign:
collection: bigCommerceProduct
id: bigCommerceId
subNavigation: 0
render:
defaultCollectionViews: true
- name: name
type: string
meta:
label:
de: Name
en: Name
helperText:
de: "Der Name wird nur intern verwendet."
en: "The name is only used internally."
containerProps:
layout:
breakAfter: true
size:
default: "col-6"
small: "col-12"
large: "col-6"
- type: string
name: path
index: [single]
meta:
label:
de: Pfad
en: Path
helperText:
de: "Ein Pfad sollte mit einem / starten und ohne enden."
en: "A path should start with a / and end without one."
dependsOn:
eval: $.type == "page"
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- !include fields/contentBlocks.yml
- !include fields/contentMeta.yml
indexes:
- name: fulltext # Ein eindeutiger Name für den Index. Es ist optional, wird jedoch empfohlen, um den Index später leicht identifizieren zu können.
key: # Bestimmt, auf welche Felder der Index angewendet werden soll. Dies kann ein einfacher String sein, wenn der Index nur ein Feld umfasst, oder ein Array von Strings, wenn der Index mehrere Felder umfasst.
- $text:$**

View File

@@ -1,35 +0,0 @@
- name: title
type: string
meta:
label:
de: Titel
en: Title
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: description
type: string
meta:
label:
de: Beschreibung
en: Description
inputProps:
multiline: true
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: keywords
type: string
meta:
inputProps:
multiline: true
label:
de: Schlüsselwörter
en: Keywords

View File

@@ -1,16 +0,0 @@
type: boolean
name: active
meta:
label:
de: Aktiv
en: Active
helperText:
de: Ist dies Aktiviert, so wird der Inhalt verfügbar.
en: If this is activated, the content will be available.
defaultValue: true
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"

View File

@@ -1,3 +0,0 @@
backup:
active: true # sollen backups beim verändern erstellt werden
collectionName: backups # in welcher collection es gespeichert werden soll

View File

@@ -1,72 +0,0 @@
name: callToActionButtons
type: object[]
meta:
label:
de: Call to Action
en: Call to Action
subFields:
- name: buttonText
type: string
meta:
label:
de: Button-Text
en: Button Text
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: page
type: string
meta:
label:
de: Button-Link (URL)
en: Button link (URL)
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: ctaType
type: number
meta:
label: Button Farbe
widget: select
choices:
- id: 0
name: Primär
- id: 1
name: Sekundär
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: buttonTarget
type: string
meta:
label:
de: Button-Link (Ziel)
en: Button link (Target)
widget: select
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
choices:
- name:
de: im gleichen Fenster
en: in the same window
id: _self
- name:
de: in einem neuen Fenster
en: in a new window
id: _blank

View File

@@ -1,464 +0,0 @@
x-block-full-preview: &block-full-preview
eval: |
//js
(async () => {
const {ContentBlock, getRenderedElement} = await import($projectBase + "_/assets/dist/admin.mjs?t=" + $project?.updateTime)
const container = getRenderedElement(ContentBlock, {
props: {
block: Object.assign({}, $this, {
}),
apiBase: $projectBase,
},
addCss: [
$projectBase + "_/assets/dist/index.css",
$projectBase + "_/assets/dist/admin.css",
],
})
let style = "max-width: 1900px; background-color: white;"
// if (!$this?.aktiv) {
// style += "opacity: 0.5;"
// }
container.style = style
return container
})()
//!js
x-block-light-preview: &block-light-preview
eval: |
//js
"<div style=\"padding-left: 30px;\"><b>" +
($this.headline || "") + "</b>" +
($this.type ?
" &nbsp; &nbsp; <small>Blocktyp: " +
{
"columns": "Spalten",
"predefinedBlock": "Vordefinierter Block",
}[$this.type] +
"</small>" :
"") +
($this.anchorId ?
" &nbsp; &nbsp; <small>#" + $this.anchorId +
"</small>" :
"") +
"<br>" +
($this.subline || "") +
"</div>"
//!js
raw: true
name: blocks
type: object[]
meta:
label:
de: Inhalt
en: Content
#widget: containerLessObjectArray
widget: previewBasedObjectArray
pathStep:
title: Inhalt
preview: *block-full-preview
folding:
previewFolded: *block-full-preview
previewUnfolded: *block-light-preview
metaElements:
tablist:
tabs:
- name: allgemein
label: Allgemein
subFields:
- source: topline
- source: headline
- source: headlineH1
- source: doublyLined
- source: subline
- source: anchorId
- source: headlineLink
- source: headlineLinkText
- name: callToAction
label: Call to Action
subFields:
- source: callToActionButtons
- name: paddingBackground
label: Hintergrund und Abstand
subFields:
- source: background
- source: padding
- source: contentWidth
- source: crinkledSection
- source: additionalHeightBottom
subFields:
########################### globale Einstellungen ###########################
- name: headline
type: string
meta:
label:
de: Überschrift
en: Headline
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: headlineH1
type: boolean
meta:
label:
de: Überschrift als H1
en: Headline as H1
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: headlineLink
type: string
meta:
label:
de: Überschrift-Link
en: Headline-Link
foreign:
collection: content
id: path
subNavigation: 0
render:
defaultCollectionViews: true
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: headlineLinkText
type: string
meta:
label:
de: Überschrift-Link
en: Headline-Link
foreign:
collection: content
id: path
subNavigation: 0
render:
defaultCollectionViews: true
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- !include ./callToActionButton.yml
- name: doublyLined
type: boolean
meta:
label:
de: Doppelt unterstrichen
en: Doubly underlined
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: subline
type: string
meta:
label:
de: Unterzeile
en: Subline
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: topline
type: string
meta:
label:
de: Topline
en: Topline
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: anchorId
type: string
meta:
# dependsOn:
# eval: |
# (function() {
# return $parent?.type !== 'predefinedBlock'
# })()
label:
de: Anker-ID
en: Anchor ID
helperText:
de: Der Block kann über diese Anker-Id direkt über links mit URL#Anker-ID angesprungen werden.
en: The block can be jumped directly via links with URL#AnchorID.
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: crinkledSection
type: boolean
meta:
label:
de: Geknitterter Abschnitt
en: crinkled Section
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: background
type: object
meta:
label:
de: Hintergrund
en: Background
subFields:
- name: color
type: string
meta:
label:
de: Hintergrundfarbe
en: Background color
widget: select
choices:
- name:
de: weiß / transparent
en: white / transparent
id: white
- name:
de: schwarz
en: black
id: black
defaultValue: white
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: image
type: string
meta:
label:
de: Hintergrundbild
en: Background Image
widget: foreignKey
foreign:
collection: medialib
id: id
subNavigation: 0
render: !include ../lib/foreignMediaRender.yml
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: minHeight
type: string
meta:
label:
de: Mindesthöhe
en: Min height
widget: select
choices:
- name:
de: keine
en: none
id: "none"
- name:
de: Normale höhe
en: Normal height
id: normal
- name:
de: erweiterte Höhe
en: extended height
id: extended
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: headerHeightUp
type: boolean
meta:
label:
de: Um höhe des Header nach oben
en: Header up
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: overlay
type: boolean
meta:
label:
de: Overlay
en: Overlay
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: noVerticalPadding
type: boolean
meta:
label:
de: Kein vertikaler Innenabstand
en: No vertical padding
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
helperText:
de: Nur nötig, wenn man nicht mit den "geknittertem Abschnitt" arbeitet
en: Only not necessary if you work with the "crinkled section"
- name: noHorizontalMargin
type: boolean
meta:
label:
de: Kein horizontaler Außenabstand
en: No horizontal margin
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: contentWidth
type: number
meta:
widget: select
label:
de: Breite
en: Width
choices:
- id: 0
name:
de: 100%
en: 100%
- id: 1
name:
de: Schmal
en: Narrow
- id: 2
name:
de: normal
en: normal
- name: type
type: string
meta:
label:
de: Typ
en: Type
widget: select
containerProps:
layout:
breakBefore: true
breakAfter: true
size:
default: "col-6"
small: "col-12"
large: "col-6"
defaultValue: columns
choices:
- name:
de: keine Auswahl
en: no selection
id: ""
- name:
de: Text- und Bild-Spalten
en: Text and image columns
id: columns
- name:
de: Vordefinierter Block
en: Predefined Block
id: predefinedBlock
- name:
de: Produkt Slider
en: Product Slider
id: productSlider
- name:
de: Haupt Homepage
en: Main Homepage
id: homepage
- name:
de: Geteilte Homepage
en: Splitted Homepage
id: splittedHomepage
- name:
de: Verbessere Dich Spalte
en: Improve Yourself Column
id: improveYourselfDescription
- name:
de: Chapter Preview
en: Chapter Preview
id: selfImprovementChapterPreview
- name:
de: Bewertungsvorschau
en: Rating Preview
id: ratingPreview
- name: StepNr
id: stepNr
- name: additionalHeightBottom
type: boolean
meta:
label:
de: Zusätzliche Höhe unten
en: Additional height bottom
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
########################### Blöcke ############################
###############################################################
- !include ./contentBlocks/columns.yml
- !include ./contentBlocks/predefined.yml
- !include ./contentBlocks/productSlider.yml
- !include ./contentBlocks/MainHomepage.yml
- !include ./contentBlocks/SplittedHompage.yml
- !include ./contentBlocks/ImproveYourselfDescription.yml
- !include ./contentBlocks/selfImprovementChapter.yml
- !include ./contentBlocks/ratingsPreview.yml
- !include ./contentBlocks/stepNr.yml

View File

@@ -1,70 +0,0 @@
name: cta
type: object
meta:
label: Call To Action Zeile
dependsOn:
eval: $parent.type == 'cta'
subFields:
- name: upperHeadline
type: string
meta:
label: Über Überschrift
containerProps:
layout:
size:
default: "col-6"
small: "col-6"
large: "col-6"
- name: description
type: string
meta:
label: Überschrift beschreibung
containerProps:
layout:
size:
default: "col-6"
small: "col-6"
large: "col-6"
- name: whiteHeadline
type: string
meta:
label: Weißer Teil Überschrift
containerProps:
layout:
size:
default: "col-6"
small: "col-6"
large: "col-6"
- name: redHeadline
type: string
meta:
label: Roter Teil Überschrift
containerProps:
layout:
size:
default: "col-6"
small: "col-6"
large: "col-6"
- name: headlineArrangement
type: string
meta:
label: Headline Anordnung
widget: select
containerProps:
layout:
size:
default: "col-12"
small: "col-12"
large: "col-12"
choices:
- id: row
name: in einer Zeile
- id: column
name: in einer Spalte
- !include ../callToActionButton.yml

View File

@@ -1,54 +0,0 @@
name: improveYourselfDescription
type: object
meta:
label:
de: Verbessere dich Beschreibung
en: Improve Yourself Description
dependsOn:
eval: $parent.type === 'improveYourselfDescription'
subFields:
- name: upperDescription
type: string
meta:
label:
de: Obere Beschreibung
en: Upper Description
widget: richtext
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: lowerDescription
type: string
meta:
label:
de: Untere Beschreibung
en: Lower Description
widget: richtext
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: image
type: string
meta:
label:
de: Bild
en: Image
widget: foreignKey
foreign:
collection: medialib
id: id
subNavigation: 0
render:
defaultCollectionViews: true
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"

View File

@@ -1,28 +0,0 @@
name: mainHomepage
type: object
meta:
label: Hauptseite
dependsOn:
eval: $parent.type == 'homepage'
subFields:
- name: type
type: string
meta:
label: Typ
widget: select
choices:
- id: cta
name: Call To Action
- !include CTACol.yml
- name: image
type: string
meta:
label: Bild
widget: foreignKey
foreign:
collection: medialib
id: id
subNavigation: 0
render:
defaultCollectionViews: true

View File

@@ -1,23 +0,0 @@
name: splittedHomepage
type: object
meta:
label:
de: Geteilte Homepage
en: Splitted Homepage Block
dependsOn:
eval: $parent.type === 'splittedHomepage'
subFields:
- name: chapters
type: string[]
meta:
label:
de: Kapitel
en: Chapters
widget: foreignKey
foreign:
collection: selfImprovementChapter
id: id
sort: name
subNavigation: 0
render:
defaultCollectionViews: true

View File

@@ -1,265 +0,0 @@
x-column-preview: &column-preview
eval: |
//js
(async () => {
const {ColumnsColumn, getRenderedElement} = await import($projectBase + "_/assets/dist/admin.mjs?t=" + $project?.updateTime)
let c = ColumnsColumn
const container = getRenderedElement(c, {
props: {
column: Object.assign({}, $this, {
}),
apiBase: $projectBase,
},
addCss: [
$projectBase + "_/assets/dist/index.css",
$projectBase + "_/assets/dist/admin.css",
],
})
let style = "background-color: white;"
style += "width: 600px;"
// if (!$this?.aktiv) {
// style += "opacity: 0.5;"
// }
container.style = style
return container
})()
//!js
name: columns
type: object[]
meta:
label:
de: Spalten
en: columns
dependsOn:
eval: $parent.type == 'columns'
pathStep:
title: Spalten
direction: horizontal
widget: previewBasedObjectArray
preview: *column-preview
folding:
previewFolded: *column-preview
previewUnfolded:
eval: |
"<div style=\"padding-left: 30px;\">" + ($this.type == "image" ? "Bild" : "Text") + "-Spalte (Breite: " + ($this.colWidth ? $this.colWidth + "/12" : "automatisch" ) + ")</div>"
raw: true
defaultValue:
eval: |
[{type: "text", colWidth: 0}]
metaElements:
- type
- colWidth
- verticalAlign
subFields:
- name: type
type: string
meta:
label:
de: Typ
en: Type
widget: select
defaultValue: text
choices:
- name:
de: Text
en: Text
id: text
- name:
de: Bild
en: Image
id: image
- name:
de: CTA
en: CTA
id: cta
containerProps:
layout:
size:
default: "col-4"
small: "col-12"
large: "col-4"
- name: colWidth
type: number
meta:
widget: select
label:
de: Spaltenbreite
en: Column width
choices:
- id: -1
name:
de: automatische Breite
en: auto
- id: 6
name:
de: 1/2
en: 1/2
- id: 4
name:
de: 1/3
en: 1/3
defaultValue: -1
containerProps:
layout:
size:
default: "col-4"
small: "col-12"
large: "col-4"
- name: verticalAlign
type: string
meta:
widget: select
label:
de: vertikale Ausrichtung
en: vertical alignment
choices:
- id: top
name:
de: oben
en: top
- id: middle
name:
de: mittig
en: middle
- id: bottom
name:
de: unten
en: bottom
defaultValue: top
containerProps:
layout:
size:
default: "col-4"
small: "col-12"
large: "col-4"
- name: text
type: string
meta:
label:
de: Text
en: text
widget: richtext
dependsOn:
eval: $parent.type == 'text'
- name: images
type: string[]
meta:
label:
de: Bild
en: Image
widget: foreignKey
foreign:
collection: medialib
id: id
subNavigation: 0
render: !include ../../lib/foreignMediaRender.yml
dependsOn:
eval: $parent.type == 'image'
- name: imageMobileBackground
type: boolean
meta:
label:
de: Bild auf Mobilgeräten in hintergrund
en: Image on mobile devices in background
dependsOn:
eval: $parent.type == 'image'
- name: forceFullHeight
type: boolean
meta:
label:
de: volle Bildhöhe erzwingen
en: full Force image height
dependsOn:
eval: $parent.type == 'image'
- name: imageHoverEffect
type: boolean
meta:
label:
de: Bild hover effekt
en: Image hover effect
dependsOn:
eval: $parent.type == 'image'
- name: links
type: object[]
meta:
label:
de: Links
en: Links
folding:
force: true
previewFolded:
eval: |
"<div style=\"padding-left: 30px;\">Link: <b>" + ($this.text || "") + "</b></div>"
raw: true
dependsOn:
eval: $parent.type == 'text'
subFields:
- name: text
type: string
meta:
label:
de: Text
en: Text
- name: url
type: string
meta:
label:
de: URL
en: URL
- name: target
type: string
meta:
label:
de: Ziel
en: Target
widget: select
choices:
- name:
de: im gleichen Fenster
en: in the same window
id: _self
- name:
de: in einem neuen Fenster
en: in a new window
id: _blank
- name: style
type: string
meta:
label:
de: Stil
en: Style
widget: select
defaultValue: primary
choices:
- name:
de: primär (roter Hintergrund)
en: primary (red background)
id: primary
- name:
de: sekundär (rote Schrift)
en: secondary (red text)
id: secondary
- id: tertiary
name:
de: normaler Link (graue Schrift)
en: normal link (grey text)
- name:
de: externer Link (Icon links)
en: external link (icon left)
id: external
- name:
de: Download Link (Icon links)
en: download link (icon left)
id: download
- !include ./CTACol.yml

View File

@@ -1,28 +0,0 @@
name: predefinedBlock
type: object
meta:
label:
de: Vordefinierter Block
en: Predefined Block
dependsOn:
eval: |
(function() {
return $parent?.type === 'predefinedBlock'
})()
subFields:
- name: id
type: string
meta:
label:
de: Inhalt
en: Include
widget: foreignKey
foreign:
collection: content
id: id
subNavigation: 0
render:
eval: |
(function() {
return $foreignEntry?.name || $foreignEntry?.id
})()

View File

@@ -1,85 +0,0 @@
name: productSlider
type: object
meta:
label:
de: Produktslider
en: Product Slider
dependsOn:
eval: $parent.type === 'productSlider'
subFields:
- name: productSource
type: string
meta:
label:
de: Produktdatenquelle
en: Product Data Source
widget: select
choices:
- name:
de: Manuelle Auswahl
en: Manual Selection
id: manual
- name:
de: Kategorie Id
en: Category id
id: category
- name:
de: Bestseller
en: Bestseller
id: bestseller
- name:
de: Neue Produkte
en: New Products
id: newProducts
- name:
de: Hervorgehoben
en: Featured
id: featured
- name:
de: Angebote
en: Discounted
id: discounted
- name: productIds
type: number[]
meta:
label:
de: Produkt IDs
en: Product IDs
dependsOn:
eval: $parent.productSource === 'manual' || $parent.productSource === "discounted"
widget: foreignKey
foreign:
collection: bigCommerceProduct
id: bigCommerceId
subNavigation: 0
render:
defaultCollectionViews: true
- name: categoryId
type: string
meta:
label:
de: Kategorie
en: Category
dependsOn:
eval: $parent.productSource === 'category'
- !include ../callToActionButton.yml
- name: headline
type: string
meta:
label:
de: Überschrift
en: Headline
- name: topLine
type: string
meta:
label:
de: Top Line
en: Top Line

View File

@@ -1,25 +0,0 @@
name: ratingsPreview
type: object
meta:
label:
de: Bewertungsvorschau
en: Ratings Preview
dependsOn:
eval: $parent.type === 'ratingPreview'
subFields:
- name: ratings
type: object[]
meta:
widget: containerLessObjectArray
subFields:
- name: rating
type: string
meta:
label: rating
widget: foreignKey
foreign:
collection: rating
id: id
subNavigation: 0
render:
defaultCollectionViews: true

View File

@@ -1,35 +0,0 @@
name: selfImprovementChapterPreview
type: object[]
meta:
label:
de: Vorschau
en: Preview
dependsOn:
eval: $parent.type === 'selfImprovementChapterPreview'
subFields:
- name: chapter
type: string
meta:
label:
de: Kapitel
en: Chapter
widget: foreignKey
foreign:
collection: selfImprovementChapter
id: id
subNavigation: 0
render:
defaultCollectionViews: true
- name: previewImage
type: string
meta:
label:
de: Vorschaubild
en: Preview Image
widget: foreignKey
foreign:
collection: medialib
id: id
subNavigation: 0
render:
defaultCollectionViews: true

View File

@@ -1,73 +0,0 @@
name: steps
type: object
meta:
label:
de: Stepp Nr
en: Step Nr
dependsOn:
eval: $parent.type === 'stepNr' || !$parent.type
subFields:
- name: horizontal
type: boolean
meta:
label:
de: Horizontal
en: Horizontal
- name: color
type: string
meta:
label:
de: Farbe
en: Color
widget: select
choices:
- name: red
id: red
- name: items
type: object[]
meta:
label:
de: Items
en: Items
widget: containerLessObjectArray
subFields:
- name: nr
type: number
meta:
label:
de: Nr
en: Nr
- name: title
type: string
meta:
label:
de: Titel
en: Title
- name: descriptions
type: string[]
meta:
widget: string
useDefaultArray: true
label:
de: Beschreibung
en: Description
inputProps:
multiline: true
- name: image
type: string
meta:
label:
de: Bild
en: Image
widget: foreignKey
foreign:
collection: medialib
id: id
subNavigation: 0
render:
defaultCollectionViews: true

View File

@@ -1,103 +0,0 @@
name: meta
type: object
meta:
label:
de: Meta Agaben
en: Meta Data
helperText:
de: Diese Angaben werden für die Suchmaschinenoptimierung verwendet.
en: These data are used for search engine optimization.
dependsOn:
eval: $?.type != "block"
subFields:
- name: title
type: string
meta:
label:
de: Titel
en: Title
helperText:
de: Alternativ wird der Name verwendet.
en: Alternatively the name is used.
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: description
type: string
meta:
label:
de: Beschreibung
en: Description
inputProps:
multiline: true
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: keywords
type: string
meta:
inputProps:
multiline: true
label:
de: Schlüsselwörter
en: Keywords
- name: isArticle
type: boolean
meta:
label:
de: Ist Artikel
en: Is Article
helperText:
de: "Wenn aktiviert, wird der Inhalt als Artikel behandelt."
en: "If activated, the content is treated as an article."
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: hasFAQ
type: boolean
meta:
label:
de: Hat FAQ
en: Has FAQ
helperText:
de: "Wenn aktiviert, wird der Inhalt als FAQ behandelt."
en: "If activated, the content is treated as a FAQ."
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: FAQ
type: object[]
meta:
label:
de: FAQ
en: FAQ
subFields:
- name: question
type: string
meta:
label:
de: Frage
en: Question
- name: answer
type: string
meta:
label:
de: Antwort
en: Answer
inputProps:
multiline: true

View File

@@ -1,35 +0,0 @@
type: string
name: type
meta:
label:
de: Inhaltstyp
en: Content Type
widget: select
defaultValue: page
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
choices:
- name:
de: Seite
en: Page
id: page
- name:
de: Block
en: Block
id: block
- name:
de: Helpcenter Frage
en: Helpcenter Question
id: helpcenterQuestion
- name: Blog
id: blog
- name: product
id: product

View File

@@ -1,11 +0,0 @@
name: emailCC
type: string[]
meta:
label:
de: Email CC
en: Email CC
widget: string
useDefaultArray: true
helperText:
de: "Bsp: zyx@gmail.com"
en: "E.g.: zyx@gmail.com"

View File

@@ -1,40 +0,0 @@
name: excludeDays
type: string[]
meta:
label: Auszuschließende Wochentage
widget: checkboxArray
choices:
- id: monday
name:
de: Montag
en: Monday
- id: tuesday
name:
de: Dienstag
en: Tuesday
- id: wednesday
name:
de: Mittwoch
en: Wednesday
- id: thursday
name:
de: Donnerstag
en: Thursday
- id: friday
name:
de: Freitag
en: Friday
- id: saturday
name:
de: Samstag
en: Saturday
- id: sunday
name:
de: Sonntag
en: Sunday

View File

@@ -1,6 +0,0 @@
name: file
type: file
meta:
label:
de: Datei
en: File

View File

@@ -1,13 +0,0 @@
name: from
type: date
meta:
label:
de: Von
en: From
widget: date
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"

View File

@@ -1,11 +0,0 @@
name: sort
type: number
meta:
label:
de: Manuelle Sortierung
en: Manual Sorting
inputProps:
{ readonly: true, placeholder: { de: "Wert wird automatisch gesetzt", en: "Value is set automatically" } }
helperText:
de: Dieses Feld wird für die manuelle Sortierung benötigt. Sobald ein Eintrag per Drag&Drop verschoben wurde, wird die neue Position innerhalb der Liste eingetragen.
en: This field is required for manual sorting. As soon as an entry is moved using Drag&Drop, the new position is entered in the list.

View File

@@ -1,41 +0,0 @@
type: cardList
mediaQuery: "(min-width: 1200px)"
selectionPriority: 1
fileDropArea:
label:
{
de: "Ziehen Sie Dateien per Drag and Drop hierher oder klicken Sie, um Dateien auszuwählen.",
en: "Drag and drop some files here, or click to upload.",
}
helperText: { de: "Maximale Uploadgröße: 1,54 MB", en: "Maximum upload size: 1.54MB" }
targetField: file
pageAsDropArea: false
fields:
- source: file
name:
de: Datei
en: File
filter: true
- source: category
name:
de: Kategorie
en: Category
filter: true
- source: tags
name:
de: Tags
en: Tags
foreign: true
filter: true
- source: title
name:
de: Titel
en: Title
filter: true
- source: updateTime
type: datetime
label:
de: letztes Update
en: last update
filter: true

View File

@@ -1,25 +0,0 @@
type: simpleList
mediaQuery: "(min-width: 0px)"
defaultSelect: false
selectionPriority: 3 #gibt an, wenn mediaQuery passt, mit welcher priorität es default mäßig ausgewählt sein soll, je niedriger, desto wichtiger
fileDropArea:
label:
{
de: "Ziehen Sie Dateien per Drag and Drop hierher oder klicken Sie, um Dateien auszuwählen.",
en: "Drag and drop some files here, or click to upload.",
}
helperText: { de: "Maximale Uploadgröße: 1,54 MB", en: "Maximum upload size: 1.54MB" }
targetField: file # gibt an, in welches feld die datei hochgeladen werden soll
pageAsDropArea: false # wenn true, wird filedrop area garnicht erst angezeigt, da die ganze seite drag n drop funktionalität hat
primaryText:
source: file
filter: true
secondaryText:
source: alt
filter: true
tertiaryText:
source: category
filter: true

View File

@@ -1,41 +0,0 @@
type: table
mediaQuery: "(min-width: 800px)"
defaultSelect: false
selectionPriority: 2
fileDropArea:
label:
{
de: "Ziehen Sie Dateien per Drag and Drop hierher oder klicken Sie, um Dateien auszuwählen.",
en: "Drag and drop some files here, or click to upload.",
}
helperText: { de: "Maximale Uploadgröße: 1,54 MB", en: "Maximum upload size: 1.54MB" }
targetField: file
pageAsDropArea: false
columns:
- source: file
name:
de: Datei
en: File
filter: true
- source: category
name:
de: Kategorie
en: Category
filter: true
- source: tags
name:
de: Tags
en: Tags
foreign: true
filter: true
- source: title
name:
de: Titel
en: Title
filter: true
- source: updateTime
type: datetime
label:
de: letztes Update
en: last update
filter: true

View File

@@ -1,10 +0,0 @@
multiupload:
fields:
- source: category # gibt an, welche Felder in der Modalansicht bearbeitet werden können, wenn die Eigenschaft nicht festgelegt ist, werden automatisch alle Felder ausgewählt
prefilledFields: # gibt an, welche Felder in der Modalansicht vorbefüllt werden können, wenn die Eigenschaft nicht festgelegt ist, werden automatisch alle Felder ausgewählt
- source: title
defaultValue: # extrahiert den namen des files und fügt ihn in das feld "title" ein
eval: |
(function(){
return "Title" + $file.name
})()

View File

@@ -1,17 +0,0 @@
name: pageTitle
type: string
meta:
label:
de: Titel der Seite
en: Page Title
helperText:
de: "Dieser Titel wird in der Seite als h1 angezeigt."
en: "This title is displayed in the page as h1."
dependsOn:
eval: $.type == "page"
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"

View File

@@ -1,9 +0,0 @@
name: text
type: string
meta:
widget: richtext
label:
de: Text
en: text
dependsOn:
eval: $parent.contentType == 'text'

View File

@@ -1,13 +0,0 @@
raw: true
eval: |
//js
(function() {
let out = ""
if ($foreignEntry?.file?.src && $foreignEntry?.file?.type?.startsWith("image/")) {
out += "<img src='" + $projectBase + "medialib/" + $foreignEntry.id + "/" + $foreignEntry.file.src + "?filter=s' style='max-width: 100%;' /><br>"
}
out += $foreignEntry?.title || ""
return out
})()
//!js

View File

@@ -1,55 +0,0 @@
# Der Key des Objektes definiert den Namen des Filters.
# Jeder Filter ist eine Liste von Bildmanipulationen, die
# nacheinander angewandt werden.
# Die manipulierten Bilder werden gecachet. Ein nachträgliches
# Anpassen der Filter erfordert also das Löschen der gecachten
# Dateien welche sich jeweils neben den original Bilddateien
# im "uploadPath" der Kollektion befinden.
xs:
- fit: true
height: 90
width: 90
resampling: lanczos
quality: 90
skipLargerDimension: true
skipLargerFilesize: true
s:
- fit: true
height: 300
width: 300
resampling: lanczos
quality: 90
skipLargerDimension: true
skipLargerFilesize: true
m:
- fit: true
height: 600
width: 600
resampling: lanczos
quality: 90
skipLargerDimension: true
skipLargerFilesize: true
l:
- fit: true
height: 1200
width: 1200
resampling: lanczos
quality: 90
skipLargerDimension: true
skipLargerFilesize: true
xl:
- fit: true
height: 2000
width: 2000
resampling: lanczos
quality: 90
skipLargerDimension: true
skipLargerFilesize: true
xxl:
- fit: true
height: 4000
width: 4000
resampling: lanczos
quality: 90
skipLargerDimension: true
skipLargerFilesize: true

View File

@@ -1,38 +0,0 @@
type: cardList
mediaQuery: "(min-width: 1200px)"
selectionPriority: 1
fileDropArea:
label:
{
de: "Ziehen Sie Dateien per Drag and Drop hierher oder klicken Sie, um Dateien auszuwählen.",
en: "Drag and drop some files here, or click to upload.",
}
helperText: { de: "Maximale Uploadgröße: 1,54 MB", en: "Maximum upload size: 1.54MB" }
targetField: file
pageAsDropArea: false
fields:
- source: title
name:
de: Titel
en: Title
filter: true
- source: file
name: Datei
- source: tags
name:
de: Tags
en: Tags
filter:
type: foreignKey
- source: updateTime
type: datetime
filter: false
label:
de: letztes Update
en: last update
- source: file.type
name:
de: Dateityp
en: Filetype
filter: true

View File

@@ -1,26 +0,0 @@
type: simpleList
mediaQuery: "(min-width: 0px)"
defaultSelect: false
selectionPriority: 3 #gibt an, wenn mediaQuery passt, mit welcher priorität es default mäßig ausgewählt sein soll, je niedriger, desto wichtiger
fileDropArea:
label:
{
de: "Ziehen Sie Dateien per Drag and Drop hierher oder klicken Sie, um Dateien auszuwählen.",
en: "Drag and drop some files here, or click to upload.",
}
helperText: { de: "Maximale Uploadgröße: 1,54 MB", en: "Maximum upload size: 1.54MB" }
targetField: file # gibt an, in welches feld die datei hochgeladen werden soll
pageAsDropArea: false # wenn true, wird filedrop area garnicht erst angezeigt, da die ganze seite drag n drop funktionalität hat
primaryText:
source: file
# filter: true
secondaryText:
source: title
filter: true
tertiaryText:
source: tags
filter:
type: foreignKey

View File

@@ -1,35 +0,0 @@
type: table
mediaQuery: "(min-width: 800px)"
defaultSelect: false
selectionPriority: 2
fileDropArea:
label:
{
de: "Ziehen Sie Dateien per Drag and Drop hierher oder klicken Sie, um Dateien auszuwählen.",
en: "Drag and drop some files here, or click to upload.",
}
helperText: { de: "Maximale Uploadgröße: 1,54 MB", en: "Maximum upload size: 1.54MB" }
targetField: file
pageAsDropArea: false
columns:
- source: file
name:
de: Datei
en: File
filter: true
- source: tags
name:
de: Tags
en: Tags
filter:
type: foreignKey
- source: file.type
label:
de: Dateityp
en: Filetype
filter: true
- source: updateTime
type: datetime
label:
de: letztes Update
en: last update

View File

@@ -1,6 +0,0 @@
quickEdit: # Erlaubt das Bearbeiten von Einträgen in der Listenansicht, ohne dass eine neue Seite geöffnet wird
enabled: true
fields: # felder, die in dieser Ansicht bearbeitet werden können
- title
- alt
- file

View File

@@ -1,6 +0,0 @@
name: fulltextindex # Ein eindeutiger Name für den Index. Es ist optional, wird jedoch empfohlen, um den Index später leicht identifizieren zu können.
key: # Bestimmt, auf welche Felder der Index angewendet werden soll. Dies kann ein einfacher String sein, wenn der Index nur ein Feld umfasst, oder ein Array von Strings, wenn der Index mehrere Felder umfasst.
- $text:$** # definiert einen Volltextindex über alle Felder. Der spezielle Operator $text wird verwendet, um einen Volltextindex zu erstellen, und der Operator $\*\* bezeichnet alle Felder in der Sammlung.
background: true
unique: false # Wenn auf true gesetzt, erzwingt dies, dass der Index eindeutige Werte enthält. Wenn Sie versuchen, einen Eintrag mit einem bereits indizierten Wert hinzuzufügen, wird ein Fehler ausgelöst.
defaultLanguage: german # Wird verwendet, um die Sprache für Textindizes festzulegen. Dies ist wichtig für die Volltextsuche, da verschiedene Sprachen unterschiedliche Tokenisierungs- und Stemmungsregeln haben.

View File

@@ -1,153 +0,0 @@
name: lighthouse
meta:
label: Lighthouse
hideInNavigation: true
muiIcon: web
views:
- type: table
mediaQuery: "(min-width: 600px)"
columns:
- source: insertTime
filter: true
- source: perfomance
filter: true
- source: accessibility
filter: true
- source: bestPractices
filter: true
- source: seo
filter: true
- type: simpleList
mediaQuery: "(max-width: 599px)"
primaryText: insertTime
secondaryText: performance
tertiaryText: accessibility
permissions:
public:
methods:
get: false
post: false
put: false
delete: false
user:
methods:
get: true
post: true
put: true
delete: true
projections:
dashboard:
hooks:
post:
create:
type: javascript
file: hooks/lighthouse/post_create.js
indexes:
- !include lib/textIndex.yml
fields:
- name: analyzedPaths
type: string[]
meta:
label:
de: Analysierten Pfade
en: Analyzed Paths
- name: performance
type: number
meta:
label: Performance
- name: accessibility
type: number
meta:
label:
en: Accessibility
de: Zugänglichkeit
- name: bestPractices
type: number
meta:
label:
en: Best Practices
de: Beste Praktiken
- name: seo
type: number
meta:
label:
en: SEO
de: SEO
- name: lighthouseMetrics
type: object
meta:
label: Lighthouse Metrics
subFields:
- name: FCPS
type: number
meta:
label:
en: First Contentful Paint Score
de: Erster Inhaltlicher Anstrich Score
- name: FCPV
type: number
meta:
label:
en: First Contentful Paint Value
de: Erster Inhaltlicher Anstrich Wert
- name: FMPV
type: number
meta:
label:
de: Erster Bedeutungsvoller Anstrich Wert
en: First Meaningful Paint Value
- name: FMPS
type: number
meta:
label:
en: First Meaningful Paint Score
de: Erster Bedeutungsvoller Anstrich Score
- name: SIS
type: number
meta:
label:
en: Speed Index Score
de: Geschwindigkeitsindex Score
- name: SIV
type: number
meta:
label:
en: Speed Index Value
de: Geschwindigkeitsindex Wert
- name: TTIS
type: number
meta:
label:
en: Time to Interactive Score
de: Zeit bis zur Interaktion Score
- name: TTIV
type: number
meta:
label:
en: Time to Interactive Value
de: Zeit bis zur Interaktion Wert
- name: FPIDS
type: number
meta:
label:
de: Erste potenzielle Eingabe Verzögerung Score
en: First Potential Input Delay Score
- name: FPIDV
type: number
meta:
label:
en: First Potential Input Delay Value
de: Erste potenzielle Eingabe Verzögerung Wert

View File

@@ -1,32 +0,0 @@
name: lighthouseSubpath
meta:
label: Lighthouse Subpaths
hideInNavigation: true
muiIcon: web
views:
- type: table
columns:
- source: lighthouseSubpath
permissions:
public:
methods:
get: false
post: false
put: false
delete: false
user:
methods:
get: true
post: true
put: true
delete: true
fields:
- type: string
name: lighthouseSubpath
meta:
label:
de: Zu analysierenden Pfad
en: Path to analyze

View File

@@ -1,210 +0,0 @@
name: medialib
uploadPath: ../media/medialib
meta:
allowExportAll: true
label:
de: Medienbibliothek
en: Media Library
muiIcon: multimedia
defaultSort:
field: sort
order: MANUALLY
backup:
active: true
collectionName: backups
quickEdit:
enabled: true
fields:
- title
- alt
- file
- tags
defaultImageFilter: xs
multiupload:
fields:
- source: category
prefilledFields:
- source: title
defaultValue:
eval: |
(function(){
return $file.name.split(".")[0]
})()
- source: alt
defaultValue:
eval: |
(function(){
return $file.name.split(".")[0]
})()
views: &views
- !include fields/medialibSimpleList.yml
- !include fields/medialibTable.yml
- !include fields/medialibCardList.yml
subNavigation:
- name: modalForeign
defaultSort:
field: "path"
order: "ASC"
views: *views
defaultCallback:
eval: |
//js
(entry) => {
parent.selectEntry(entry)
}
//!js
- name: websiteContent
label: Inhalt
muiIcon: accountGroup
setDefault:
field: type
value: websiteContent
defaultSort:
field: "sort"
order: "MANUALLY"
views: *views
filter:
"type": "websiteContent"
- name: other
label: Andere
muiIcon: accountGroup
defaultSort:
field: "sort"
order: "MANUALLY"
views: *views
filter:
"type": { $ne: "websiteContent" }
permissions:
public:
methods:
get: true
post: true
put: false
delete: true
validProjections:
- list
- details
user:
methods:
get: true
post: true
put: true
delete: true
token:${TOKEN}:
methods:
get: true
post: true
put: true
delete: true
pages:
methods:
get: true
post: true
put: true
delete: true
projections:
dashboard:
select:
details:
select:
file: 0
list:
select:
file: 1
alt: 1
hooks:
put:
return:
type: javascript
file: hooks/clear_cache.js
delete:
delete:
type: javascript
file: hooks/medialib/delete_delete.js
imageFilter: !include lib/imageFilter.yml
fields:
- !include fields/file.yml
- name: type
type: string
meta:
label:
de: Typ
en: Type
widget: select
choices:
- name: websiteContent
id: websiteContent
- name: returnOrderFoto
id: returnOrderFoto
- name: alt
type: string
meta:
label:
de: Alternativtext
en: Alternative text
helperText:
de: Der Alternativtext wird angezeigt, wenn die Datei nicht geladen werden kann.
en: The alternative text is displayed if the file cannot be loaded.
- name: title
type: string
meta:
label:
de: Titel
en: Title
helperText:
de: Der Titel wird angezeigt, wenn die Datei geladen wird.
en: The title is displayed when the file is loaded.
- name: category
type: string
meta:
label:
de: Kategorie
en: Category
- name: tags
type: string[]
meta:
label:
de: Tags
en: Tags
widget: foreignKey
filter:
type: foreignKey
foreign:
collection: tag
id: id
sort: name
subNavigation: 0
render:
raw: true
eval: |
//js
$foreignEntry?.name
//!js
- name: comment
type: string
meta:
label:
de: Kommentar
en: Comment
inputProps:
multiline: true
- !include fields/manualSort.yml
indexes:
- name: fulltext # Ein eindeutiger Name für den Index. Es ist optional, wird jedoch empfohlen, um den Index später leicht identifizieren zu können.
key: # Bestimmt, auf welche Felder der Index angewendet werden soll. Dies kann ein einfacher String sein, wenn der Index nur ein Feld umfasst, oder ein Array von Strings, wenn der Index mehrere Felder umfasst.
- $text:$**

View File

@@ -1,93 +0,0 @@
name: module
meta:
label: Module
allowExportAll: true
backup:
active: true
collectionName: backups
views:
- type: table
columns:
- source: type
name: Typ
filter: true
- source: label
name: Label
filter: true
- source: germanLabelTranslation
name: Deutsche Übersetzung
filter: true
subNavigation:
- name: modal
views:
- type: table
columns:
- source: type
defaultCallback:
eval: |
//js
(entry) => { // Diese Funktion nimmt den Eintrag (entry) als Argument.
parent.selectEntry(entry) // Die Funktion selectEntry auf dem übergeordneten Objekt wird mit dem Eintrag als Argument aufgerufen.
}
//!js
hooks:
post:
return:
type: javascript
file: hooks/clear_cache.js
put:
return:
type: javascript
file: hooks/clear_cache.js
permissions:
public:
methods:
get: true
post: false
put: false
delete: false
user:
methods:
get: true
post: true
put: true
delete: true
fields:
- name: type
type: string
meta:
label:
de: Modultyp
en: Module Type
helperText:
de: "Wählen Sie den Typ des Moduls aus."
en: "Choose the type of the module."
widget: select
choices:
- name: Größen Label
id: sizeLabel
- name: label
type: string
index: [single, unique]
meta:
label:
de: Label
en: Label
- name: germanLabelTranslation
index: [single, unique]
type: string
meta:
label:
de: Deutsche Übersetzung
en: German Translation
indexes:
- name: fulltext # Ein eindeutiger Name für den Index. Es ist optional, wird jedoch empfohlen, um den Index später leicht identifizieren zu können.
key: # Bestimmt, auf welche Felder der Index angewendet werden soll. Dies kann ein einfacher String sein, wenn der Index nur ein Feld umfasst, oder ein Array von Strings, wenn der Index mehrere Felder umfasst.
- $text:$**

View File

@@ -1,165 +0,0 @@
name: navigation
uploadPath: ../media/navigation
meta:
label: "Navigation"
muiIcon: navigation
views:
- type: simpleList
mediaQuery: "(max-width:599px)"
primaryText: tree
- type: table
mediaQuery: "(min-width:600px)"
columns:
- source: tree
permissions:
public:
methods:
get: true
post: false
put: false
delete: false
user:
methods:
get: true
post: false
put: true
delete: false
x-folding: &folding
previewUnfolded:
eval: |
$this?.name + ' (Ziel: ' + ($this?.external ? $this?.externalUrl || '' : ($this?.page || '') + ($this?.hash ? '#' + $this.hash : '')) + ')' + ($this?.elements?.length ? ' <small>' + $this?.elements?.length + ' Sub-Navigationselement(e)</small>' : '')
raw: true
previewFolded:
eval: |
$this?.name + ' (Ziel: ' + ($this?.external ? $this?.externalUrl || '' : ($this?.page || '') + ($this?.hash ? '#' + $this.hash : '')) + ')' + ($this?.elements?.length ? ' <small>' + $this?.elements?.length + ' Sub-Navigationselement(e)</small>' : '')
raw: true
x-elemente: &elemente
name: elements
type: object[]
meta:
label:
de: Elemente
en: elements
folding: *folding
x-name: &name
name: name
type: string
meta:
label:
de: Name
en: name
helperText:
de: Dieser Name wird zur Anzeige in der Navigation verwendet.
en: This name is used for display in the navigation.
x-page: &page
name: page
type: string
meta:
label:
de: Seite pfad
en: page path
dependsOn:
eval: |
!$parent?.external
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
x-hash: &hash
name: hash
type: string
meta:
label:
de: Anker
en: anchor
dependsOn:
eval: |
!$parent?.external
helperText:
de: Geben Sie hier den Anker ein, zu dem der Link führen soll. (ohne '#' am Anfang)
en: Enter the anchor to which the link should lead. (without '#' at the beginning)
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
x-external: &external
name: external
type: boolean
meta:
label:
de: Externer Link
en: external link
helperText:
de: Wenn aktiviert, wird der Link in einem neuen Tab geöffnet.
en: If activated, the link will be opened in a new tab.
x-externalUrl: &externalUrl
name: externalUrl
type: string
meta:
label:
de: Externer Link
en: external link
dependsOn:
eval: |
$parent?.external
helperText:
de: Geben Sie hier die URL ein, zu der der Link führen soll.
en: Enter the URL to which the link should lead.
fields:
- name: tree
type: number
meta:
label: Baum
widget: select
helperText:
de: Die Servicenavigation sollte Seiten wie bspw. die Datneschutzerklärung oder das Impressum umfassen.
en: The service navigation should include pages such as the data protection declaration or the imprint.
defaultValue: 0
choices:
- id: 0
name:
de: Hauptnavigation
en: main navigation
- id: 1
name:
de: Service Navigation
en: Service Navigation
- id: 2
name:
de: Rechtliche Navigation
en: Legal Navigation
- <<: *elemente
subFields:
- *name
- *external
- *page
- *hash
- *externalUrl
- <<: *elemente
subFields:
- *name
- *external
- *page
- *hash
- *externalUrl
indexes:
- name: fulltext # Ein eindeutiger Name für den Index. Es ist optional, wird jedoch empfohlen, um den Index später leicht identifizieren zu können.
key: # Bestimmt, auf welche Felder der Index angewendet werden soll. Dies kann ein einfacher String sein, wenn der Index nur ein Feld umfasst, oder ein Array von Strings, wenn der Index mehrere Felder umfasst.
- $text:$**

View File

@@ -1,66 +0,0 @@
########################################################################
# SSR Dummy collections
########################################################################
name: ssr
meta:
label: { de: "SSR Dummy", en: "ssr dummy" }
muiIcon: server
rowIdentTpl: { twig: "{{ id }}" }
views:
- type: simpleList
mediaQuery: "(max-width: 600px)"
primaryText: id
secondaryText: insertTime
tertiaryText: path
- type: table
columns:
- id
- insertTime
- source: path
filter: true
- source: validUntil
permissions:
public:
methods:
get: true
post: true
put: false
delete: false
user:
methods:
get: true
post: false
put: false
delete: true
hooks:
get:
read:
type: javascript
file: hooks/ssr/get_read.js
post:
bind:
type: javascript
file: hooks/ssr/post_bind.js
fields:
- name: path
type: string
index: [single, unique]
- name: content
type: string
meta:
inputProps:
multiline: true
- name: validUntil
type: date
index: [single]
meta:
label:
de: Gültig bis
en: Valid until

View File

@@ -1,54 +0,0 @@
name: tag
uploadPath: ../media/tag
meta:
allowExportAll: true
label:
de: Tags
en: Tags
muiIcon: label
defaultSort:
field: name
order: ASC
views: &views
- type: table
columns:
- source: name
filter: true
subNavigation:
- name: modalForeign
defaultSort:
field: name
order: ASC
views: *views
defaultCallback:
eval: |
//js
(entry) => {
parent.selectEntry(entry)
}
//!js
permissions:
public:
methods:
get: false
post: false
put: false
delete: false
user:
methods:
get: true
post: true
put: true
delete: true
fields:
- name: name
type: string
meta:
label:
de: Name
en: Name