Initial commit

This commit is contained in:
Grit-Grenzdoerfer
2023-09-17 13:24:39 +02:00
commit 5f27fe0c5b
753 changed files with 15517 additions and 0 deletions

View File

@@ -0,0 +1,30 @@
name: banner
uploadPath: ../media/banner
meta:
label: Banner
muiIcon: web
views:
- type: table
columns:
- source: banner
permissions:
public:
methods:
get: true
post: false
put: false
delete: false
user:
methods:
get: true
post: true
put: true
delete: true
fields:
- name: banner
type: string
meta:
label: Banner

122
api/collections/content.yml Normal file
View File

@@ -0,0 +1,122 @@
name: content
uploadPath: ../media/content
meta:
label: Inhalt
muiIcon: web
views:
- type: table
columns:
- source: path
tablist:
activeTab: site
tabs:
- name: general
label: Allgemein
subFields:
- source: path
- name: teaser
label: Teaser
subFields:
- source: showTeaser
- source: teaserTitle
- source: teaserDescription
- source: teaserImages
- name: site
label: content
subFields:
- source: row
imageFilter:
xs:
- fit: true
height: 90
width: 90
resampling: lanczos
quality: 60
s:
- fit: true
height: 300
width: 300
resampling: lanczos
quality: 60
m:
- fit: true
height: 600
width: 600
resampling: lanczos
quality: 60
l:
- fit: true
height: 1240
width: 1240
resampling: lanczos
quality: 60
xl:
- fit: true
height: 2000
width: 2000
resampling: lanczos
quality: 60
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:
- type: string
name: path
meta:
label: Pfad
helperText: "Ein Pfad sollte mit einem / starten und ohne eins enden."
- name: showTeaser
type: boolean
meta:
label: Anzeigen
helperText: "Ist dies aktiviert, so wird der Teaser in der Startseite angezeigt."
- type: object[]
name: teaserImages
meta:
label: Bider
addElementLabel: Bild Hinzufügen
helperText: "Bei mehreren Bildern wird ein Slider eingefügt."
dependsOn:
eval: $parent.showTeaser
subFields:
- name: image
type: file
meta:
label: Bild
- type: string
name: teaserTitle
meta:
label: Titel
dependsOn:
eval: $parent.showTeaser
- type: string
name: teaserDescription
meta:
label: Beschreibung
dependsOn:
eval: $parent.showTeaser
- !include fields/pagebuilder.yml

View File

@@ -0,0 +1,731 @@
type: object[]
name: row
meta:
label: Zeile
addElementLabel: Zeile hinzufügen
folding:
previewFolded: titleForWork
previewUnfolded: titleForWork
subFields:
- name: title
type: string
meta:
label: Titel
- !include titleForWork.yml
- name: maxWidth
type: boolean
meta:
label: Maximale Breite
- name: iconBackgroundImage
type: boolean
meta:
label: Hintergrund Wellen
- name: iconBackgroundTitle
type: boolean
meta:
label: Titel Highlights des Sees hinzufügen.
- name: noGap
type: boolean
meta:
label: Keine Lücken
- name: column
type: object[]
meta:
label: Spalte
addElementLabel: weitere Spalte
folding:
previewFolded: contentType
previewUnfolded: contentType
css: &cols
input:
wrapper: |
& > div > div {
display: flex;
flex-direction: row;
align-items: baseline;
flex-wrap: wrap;
padding-right: 40px;
}
& .add-element {
width: 30px;
min-height: 200px;
& > button {
transform-origin: 0 0;
transform: rotate(90deg) translateY(-100%);
justify-content: left;
width: 200px;
}
}
element:
eval: |
`
flex: 1;
flex-grow: ${{"": 1, narrow: 0.5, medium: 1, wide: 2}[$element?.width]};
min-width: 350px;
height: 100%;
`
subFields:
- name: contentType
type: string
meta:
label: ""
widget: select
choices:
- name: Hauptbild
id: mainPicture
- name: Bild
id: image
- name: Tabelle
id: table
- name: Informatiosübersicht
id: infoBoard
- name: Iconübersicht
id: iconBoard
- name: Formular
id: form
- name: Vieoswitch
id: videos
- name: Textfeld
id: text
- name: GoogleMaps
id: googleMaps
- name: Video
id: video
- name: imageSlider
type: object[]
meta:
label: Bild
helperText: Wird nur ein Bild angegeben, so wird kein Slider verwendet.
dependsOn:
eval: $parent.contentType == "image"
subFields:
- name: image
type: file
meta:
label: Bild
widget: image
- name: mainPicture
type: file
meta:
widget: image
label: Hauptbild
dependsOn:
eval: $parent.contentType == "mainPicture"
- name: showGoogleMaps
type: boolean
meta:
label: Anzeigen
dependsOn:
eval: $parent.contentType == "googleMaps"
- name: inscription
type: string
meta:
widget: text
label: Aufschrift
dependsOn:
eval: $parent.contentType == "mainPicture"
- name: textFieldHeading
type: string
meta:
label: Überschrift
dependsOn:
eval: $parent.contentType == "text"
- name: textContent
type: string
meta:
label: Text
widget: richtext
dependsOn:
eval: $parent.contentType == "text"
- name: siteReference
type: boolean
meta:
label: Zeilenreferenzen
helperText: Für die zweite Spalte neben Hauptbild empfohlen, refereziert alle Reihen auf der folgenden Seite.
dependsOn:
eval: $parent.contentType == "text"
- name: tableFieldHeading
type: string
meta:
label: Überschrift
dependsOn:
eval: $parent.contentType == "table"
- name: annotation
type: string
meta:
label: Anmerkung
dependsOn:
eval: $parent.contentType == "table" || $parent.contentType == "form"
- name: table
type: object[]
meta:
label: Tabelle
addElementLabel: Tabelle Hinzufügen
folding:
previewFolded: titleForWork
previewUnfolded: titleForWork
dependsOn:
eval: $parent.contentType == "table"
css:
input:
wrapper: |
& .object-array-input-content{
& .add-element {
height: 30px;
min-height: 0px;
width: 100%;
& > button {
transform-origin: 0 0;
transform: rotate(0deg) translateY(0);
}
}
}
subFields:
- !include titleForWork.yml
- !include title.yml
- name: hintsTable
type: string
meta:
label: Hinweise
widget: richtext
- name: tableRow
type: object[]
meta:
label: Zeile
addElementLabel: Zeile hinzufügen
css:
input:
wrapper: |
& .object-array-input-content{
& .add-element {
height: 30px;
min-height: 0px;
width: 100%;
& > button {
transform-origin: 0 0;
transform: rotate(0deg) translateY(0);
}
}
}
subFields:
- name: bold
type: boolean
meta:
label: Dick
- name: left
type: string
meta:
label: Linke Seite
- name: center
type: string
meta:
label: Mitte
- name: right
type: string
meta:
label: Rechte Seite
- name: hintsTable
type: string
meta:
label: Hinweise
widget: richtext
dependsOn:
eval: $parent.contentType == "table"
- name: siteRefs
type: boolean
meta:
dependsOn:
eval: $parent.contentType == "table"
label: Zeilenreferenzen
helperText: Für die zweite Spalte neben Hauptbild empfohlen, refereziert alle Reihen auf der folgenden Seite.
- name: image
type: file
meta:
label: Bild
widget: image
dependsOn:
eval: $parent.contentType == "infoBoard"
- name: title
type: string
meta:
label: Titel
dependsOn:
eval: $parent.contentType == "infoBoard"
- name: text
type: string
meta:
label: description
widget: richtext
dependsOn:
eval: $parent.contentType == "infoBoard"
- name: links
type: object[]
meta:
label: Links
dependsOn:
eval: $parent.contentType == "infoBoard"
subFields:
- name: name
type: string
meta:
label: Name
- name: site
type: string
meta:
label: Seite
widget: select
choices:
endpoint: content
mapping:
id: path
name: path
- name: iconBoard
type: object[]
meta:
label: Icons
css:
input:
wrapper: |
& .object-array-input-content{
display: flex;
flex-wrap: wrap;
}
element: |
& {
flex-grow: 1;
min-width: 33%;
marin-top: 0px !important;
height: 100%;
}
dependsOn:
eval: $parent.contentType == "iconBoard"
subFields:
- name: icon
type: file
meta:
widget: image
label: Icon
- name: subText
type: string
meta:
label: Text
- name: video
type: file
meta:
widget: file
dependsOn:
eval: $parent.contentType == "video"
- name: titleVideo
type: string
meta:
label: Titel
dependsOn:
eval: $parent.contentType == "video"
- name: descriptionVideo
type: string
meta:
label: Beschreibung
widget: richtext
dependsOn:
eval: $parent.contentType == "video"
- name: videoSwitch
type: object[]
validator:
eval: |
(function(){
if($parent.contentType != "videos") return true;
return $parent.videoSwitch.length == 2;
})()
meta:
label: Videoswitch
helperText: Hier sind 2 Angaben notwendig!
dependsOn:
eval: $parent.contentType == "videos"
folding:
previewFolded: titleForWork
previewUnfolded: titleForWork
css:
input:
wrapper: |
& .object-array-input-content{
display: flex;
width: 100%;
}
element: |
& {
flex-grow: 1;
margin-top: 0px !important;
height: 100%;
}
subFields:
- name: video
type: file
meta:
widget: file
- !include titleForWork.yml
- name: title
type: string
meta:
label: Titel
- name: description
type: string
meta:
widget: richtext
label: Beschreibung
- name: link
type: string
meta:
label: link
widget: select
choices:
endpoint: content
mapping:
id: path
name: path
- name: formEmailTitle
type: string
meta:
label: Formular Email Titel
dependsOn:
eval: $parent.contentType == "form"
- name: formRows
type: object[]
meta:
label: Zeile
addElementLabel: Zeile Hinzufügen
dependsOn:
eval: $parent.contentType == "form"
subFields:
- name: rowName
type: string
meta:
label: Zeilenname
- name: columns
type: object[]
meta:
label: Spalte
addElementLabel: Spalte hinzufügen
folding:
previewFolded: titleForWork
previewUnfolded: titleForWork
css: *cols
subFields:
- !include titleForWork.yml
- name: title
type: string
meta:
label: Überschrift
helperText: Optional
- name: showLabelNumber
type: boolean
meta:
label: Label Nummerinput Anzeigen
- name: labelNumber
type: object[]
meta:
label: Nummber block
dependsOn:
eval: $parent?.showLabelNumber
subFields:
- name: group
type: number
meta:
label: Gruppe
- name: title
type: string
meta:
label: Titel
- name: emailName
type: string
meta:
label: Email Name
- name: block
type: object[]
meta:
label: Block
subFields:
- name: label
type: string
meta:
label: Label
- name: emailName
type: string
meta:
label: Email Name
- name: showTimes
type: boolean
meta:
label: Zeitenauswahlfeld Anzeigen
- name: times
type: object[]
meta:
label: Zeitenangabe
helperText: "Die Angaben werden in folgendes Übersetzt: Anfangspunkt - Endpunkt"
dependsOn:
eval: $parent?.showTimes
css: &timesCss
input:
wrapper: |
& .object-array-input-content {
.add-element{
transform-origin: right;
margin-left: 80px;
transform: rotate(-90deg);
}
.object .sliceFields{
display: flex;
.field-input-wrapper{
width: 50%;
}
}
}
subFields:
- name: timeFrom
type: string
meta:
label: Anfangspunkt
helperText: Bspw. 14:30
- name: timeTo
type: string
meta:
label: Endpunkt
helperText: Bspw. 15:30
- name: timesPlaceholder
type: string
meta:
label: Platzhalter im leeren Eingabefeld
dependsOn:
eval: $parent?.showTimes
- name: timesfieldOrder
type: number
meta:
label: Reihenfolge
helperText: Die kleinste angegebene Zahl wird am weitesten oben in der Formularspalte stehen
dependsOn:
eval: $parent?.showTimes
- name: dateSelectNotRequired
type: boolean
meta:
label: nicht Notwendig
dependsOn:
eval: $parent?.showTimes
- name: emailNameTimes
type: string
meta:
label: Email Name
dependsOn:
eval: $parent?.showTimes
- name: showSelect
type: boolean
meta:
label: Auswahlfeld anzeigen
- name: selectTitle
type: string
meta:
label: Select Placeholdertext
dependsOn:
eval: $parent.showSelect
- name: selectEntries
type: object[]
meta:
label: Auswahleingabe
helperText: "Die Angaben werden in folgendes Übersetzt: Anfangspunkt - Endpunkt"
dependsOn:
eval: $parent.showSelect
css: *timesCss
subFields:
- name: leftSide
type: string
meta:
label: Anfangspunkt
helperText: Bspw. 14:30
- name: rightSide
type: string
meta:
label: Endpunkt
helperText: Bspw. 15:30
- name: timeNotRequired
type: boolean
meta:
label: nicht Notwendig
dependsOn:
eval: $parent?.showSelect
- name: selectPlaceholder
type: string
meta:
label: Platzhalter im leeren Eingabefeld
dependsOn:
eval: $parent?.showSelect
- name: emailNameTime
type: string
meta:
label: Email Name
dependsOn:
eval: $parent?.showSelect
- name: showDate
type: boolean
meta:
label: Datumsauswahl
- name: datePlaceholder
type: string
meta:
label: Datum Platzhalter für das leere Eingabefeld
dependsOn:
eval: $parent?.showDate
- name: datefieldOrder
type: number
meta:
label: Reihenfolge
helperText: Die kleinste angegebene Zahl wird am weitesten oben in der Formularspalte stehen
dependsOn:
eval: $parent?.showDate
- name: dateNotRequired
type: boolean
meta:
label: nicht Notwendig
dependsOn:
eval: $parent?.showDate
- name: emailNameDate
type: string
meta:
label: Email Name
dependsOn:
eval: $parent?.showDate
- name: showNumber
type: boolean
meta:
label: Nummerfeld
- name: numberPlaceholder
type: string
meta:
label: Nummer Platzhalter
dependsOn:
eval: $parent?.showNumber
- name: numberfieldOrder
type: number
meta:
label: Reihenfolge
helperText: Die kleinste angegebene Zahl wird am weitesten oben in der Formularspalte stehen
dependsOn:
eval: $parent?.showNumber
- name: numberNotRequired
type: boolean
meta:
label: nicht Notwendig
dependsOn:
eval: $parent?.showNumber
- name: emailNameNumber
type: string
meta:
label: Email Name
dependsOn:
eval: $parent?.showNumber
- name: text
type: object[]
meta:
label: Textfeld
addElementLabel: Textfeld hinzufügen
folding:
previewFolded: titleForWork
previewUnfolded: titleForWork
subFields:
- !include titleForWork.yml
- name: textPlaceholder
type: string
meta:
label: Platzhalter für das leere Eingabefeld
- name: textArea
type: boolean
meta:
label: Großes Textfeld
- name: emailValidation
type: boolean
meta:
label: E-Mail-Validierung
- name: telValidation
type: boolean
meta:
label: Telefon-Validierung
- name: notRequired
type: boolean
meta:
label: nicht Notwendig
- name: emailName
type: string
meta:
label: Email Name
- name: textfieldOrder
type: number
meta:
label: Reihenfolge
helperText: Die kleinste angegebene Zahl wird am weitesten oben in der Formularspalte stehen

View File

@@ -0,0 +1,4 @@
name: title
type: string
meta:
label: Titel

View File

@@ -0,0 +1,4 @@
name: titleForWork
type: string
meta:
label: Orientierungstitel

40
api/collections/forms.yml Normal file
View File

@@ -0,0 +1,40 @@
name: forms
uploadPath: ../media/forms
meta:
label: Formulare
muiIcon: web
views:
- type: table
columns:
- source: formular
permissions:
public:
methods:
get: true
post: true
put: false
delete: false
user:
methods:
get: true
post: true
put: true
delete: true
hooks:
post:
create:
type: javascript
file: hooks/forms/post_create.js
return:
type: javascript
file: hooks/forms/post_return.js
fields:
- type: object
name: formular
meta:
label: Formular
widget: jsonField

View File

@@ -0,0 +1,134 @@
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-endpoint: &endpoint
name: endpoint
type: boolean
meta:
defaultValue:
eval: 1 == 1
label: Endpunkt
x-elemente: &elemente
name: elemente
type: object[]
meta:
label:
de: Elemente
en: elements
folding:
previewUnfolded: name
previewFolded: name
x-name: &name
name: name
type: string
meta:
label:
de: Name
en: name
helperText: Dieser Name wird zur Anzeige in der Navigation verwendet.
x-seite: &seite
name: seite
type: string
meta:
label:
de: Seite
en: page
widget: select
dependsOn:
eval: |
(function(){
if($parent.endpoint == undefined) return true;
return $parent.endpoint
})()
choices:
endpoint: content
params:
sort: path
projection: navigation
mapping:
id: id
name: path
fields:
- name: tree
type: number
meta:
label: Baum
widget: select
helperText: Die Servicenavigation sollte Seiten wie bspw. die Datneschutzerklärung oder das Impressum umfassen.
choices:
- id: 0
name:
de: Hauptnavigation
en: main navigation
- id: 1
name:
de: Servicenavigation
en: service navigation
- <<: *elemente
subFields:
- *endpoint
- *name
- *seite
- name: image
type: file
meta:
label: Bild
dependsOn:
eval: |
(function(){
if($parent.endpoint == undefined) return false;
return !$parent.endpoint
})()
- name: elemente
type: object[]
meta:
label:
de: Elemente
en: elements
dependsOn:
eval: |
(function(){
if($parent.endpoint == undefined) return false;
return !$parent.endpoint
})()
folding:
previewUnfolded: name
previewFolded: name
subFields:
- *name
- *seite

62
api/collections/ssr.yml Normal file
View File

@@ -0,0 +1,62 @@
########################################################################
# 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
- path
permissions:
public:
methods:
get: false
post: false
put: false
delete: false
user:
methods:
get: false
post: false
put: false
delete: false
"token:${SSR_TOKEN}":
methods:
# only via url=
get: true
post: true
put: false
delete: false
hooks:
get:
read:
type: javascript
file: hooks/ssr/get_read.js
post:
bind:
type: javascript
file: hooks/ssr/post_bind.js
# we only need hooks
fields:
- name: path
type: string
index: [single, unique]
- name: content
type: string
meta:
inputProps:
multiline: true

View File

@@ -0,0 +1,30 @@
name: temperature
uploadPath: ../media/temperature
meta:
label: Temperatur
views:
- type: table
columns:
- source: temperature
permissions:
public:
methods:
get: true
post: false
put: false
delete: false
user:
methods:
get: true
post: false
put: false
delete: false
fields:
- name: temperature
type: number
meta:
label: Temperatur
helperText: do not modify, will be modified automatically hourly.