generated from cms/tibi-docs
zwischenstand
This commit is contained in:
12
api/assets/dist.yml
Normal file
12
api/assets/dist.yml
Normal file
@@ -0,0 +1,12 @@
|
||||
# Ordnerpfade, die über den tibi-server direkt erreichbar seien sollen,
|
||||
# können über den "path" relativ zur "config.yml" definiert werden.
|
||||
# Durch die "name"-Definition werden diese Pfade eindeutig unterschieden.
|
||||
# Für folgende Beispielangaben bildet sich folgende URL:
|
||||
#
|
||||
# TIBI-SERVER-URL/api/v1/_/NAMESPACE/_/assets/_dist_/
|
||||
#
|
||||
# Jeder Zugriff wird intern umgeleitet auf ../frontend/_dist_/
|
||||
# (relativ zur "config.yml").
|
||||
# Es ist ausschließlich ein unbeschränkter Lesezugriff (GET-Methode) möglich.
|
||||
name: _dist_
|
||||
path: ../frontend/dist
|
||||
@@ -41,22 +41,30 @@ fields:
|
||||
- name: collectionName
|
||||
type: string
|
||||
meta:
|
||||
label: Collection Name
|
||||
label:
|
||||
de: Collection Name
|
||||
en: Collection Name
|
||||
|
||||
- name: entryId
|
||||
type: string
|
||||
meta:
|
||||
label: Entry ID
|
||||
label:
|
||||
de: Entry ID
|
||||
en: Entry ID
|
||||
|
||||
- name: versionNr
|
||||
type: number
|
||||
meta:
|
||||
label: Version Nr
|
||||
label:
|
||||
de: Version Nr
|
||||
en: Version Nr
|
||||
|
||||
- name: manipulatedBy
|
||||
type: string
|
||||
meta:
|
||||
label: Manipulated By
|
||||
label:
|
||||
de: Manipulated By
|
||||
en: Manipulated By
|
||||
|
||||
- name: eventDescription
|
||||
type: string
|
||||
@@ -65,38 +73,59 @@ fields:
|
||||
widget: select
|
||||
choices:
|
||||
- id: create
|
||||
name: Create
|
||||
name:
|
||||
de: Erstellt
|
||||
en: Create
|
||||
- id: update
|
||||
name: Update
|
||||
name:
|
||||
de: Update
|
||||
en: Update
|
||||
- id: delete
|
||||
name: Delete
|
||||
name:
|
||||
de: Gelöscht
|
||||
en: Delete
|
||||
- id: recreate
|
||||
name: Recreate
|
||||
name:
|
||||
de: Wiederhergestellt
|
||||
en: Recreate
|
||||
- id: activate
|
||||
name: Activate
|
||||
name:
|
||||
de: Aktiviert
|
||||
en: Activate
|
||||
|
||||
- name: updateLogs
|
||||
type: object[]
|
||||
meta:
|
||||
label: Veränderungen
|
||||
label:
|
||||
de: Veränderungen
|
||||
en: Update Logs
|
||||
|
||||
subFields:
|
||||
- name: field
|
||||
type: string
|
||||
meta:
|
||||
label: Feldname
|
||||
label:
|
||||
de: Feldname
|
||||
en: Fieldname
|
||||
|
||||
- name: previous
|
||||
type: string
|
||||
meta:
|
||||
label: Vorheriger Wert
|
||||
label:
|
||||
de: Vorheriger Wert
|
||||
en: Previous Value
|
||||
|
||||
- name: current
|
||||
type: string
|
||||
meta:
|
||||
label: Aktueller Wert
|
||||
label:
|
||||
|
||||
de: Aktueller Wert
|
||||
en: Current Value
|
||||
|
||||
- name: entry
|
||||
type: object
|
||||
meta:
|
||||
label: Entry
|
||||
label:
|
||||
de: Eintrag
|
||||
en: Entry
|
||||
|
||||
@@ -37,7 +37,6 @@ meta:
|
||||
|
||||
tablist:
|
||||
activeTab: general
|
||||
|
||||
tabs:
|
||||
- name: general
|
||||
label: Allgemein
|
||||
@@ -124,8 +123,12 @@ fields:
|
||||
- type: string
|
||||
name: path
|
||||
meta:
|
||||
label: Pfad
|
||||
helperText: "Ein Pfad sollte mit einem / starten und ohne eins enden."
|
||||
label:
|
||||
de: Pfad
|
||||
en: Path
|
||||
helperText:
|
||||
de: "Ein Pfad sollte mit einem / starten und ohne eins enden."
|
||||
en: "A path should start with a / and end without one."
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
@@ -133,73 +136,20 @@ fields:
|
||||
small: "col-12"
|
||||
large: "col-6"
|
||||
|
||||
- type: boolean
|
||||
name: active
|
||||
meta:
|
||||
label: Aktiv
|
||||
helperText: Ist dies Aktiviert, so wird der Inhalt verfügbar.
|
||||
defaultValue: true
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-6"
|
||||
- !include fields/active.yml
|
||||
- !include fields/contentType.yml
|
||||
|
||||
- type: string
|
||||
name: type
|
||||
meta:
|
||||
label: Inhaltstyp
|
||||
widget: select
|
||||
defaultValue: page
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-6"
|
||||
choices:
|
||||
- name: Seite
|
||||
id: page
|
||||
|
||||
- name: pageTitle
|
||||
type: string
|
||||
meta:
|
||||
label: Titel der Seite
|
||||
helperText: "Dieser Titel wird in der Seite als h1 angezeigt."
|
||||
dependsOn:
|
||||
eval: $.type == "page"
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-6"
|
||||
|
||||
- name: rows
|
||||
type: object[]
|
||||
meta:
|
||||
label: Zeilen
|
||||
widget: grid
|
||||
metaElements: []
|
||||
subFields: !include fieldLists/row.yml
|
||||
- !include fields/pageTitle.yml
|
||||
- !include fields/rows.yml
|
||||
|
||||
- name: meta
|
||||
type: object
|
||||
meta:
|
||||
label: Meta Agaben
|
||||
label:
|
||||
de: Meta Agaben
|
||||
en: Meta Data
|
||||
dependsOn:
|
||||
eval: $.type == "page"
|
||||
subFields: !include fieldLists/meta.yml
|
||||
|
||||
- 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.
|
||||
- !include fields/manualSort.yml
|
||||
|
||||
@@ -1,16 +1,49 @@
|
||||
# attribute auf column ebene
|
||||
|
||||
- name: contentType
|
||||
type: string
|
||||
meta:
|
||||
label: ""
|
||||
label:
|
||||
de: Inhaltstyp
|
||||
en: Content Type
|
||||
widget: select
|
||||
choices:
|
||||
- name: Bild
|
||||
id: image
|
||||
- name:
|
||||
de: Bilder
|
||||
en: Images
|
||||
id: images
|
||||
|
||||
- name: Modul Import
|
||||
- name:
|
||||
de: Modul Import
|
||||
en: Module Import
|
||||
id: moduleImport
|
||||
- name:
|
||||
de: Formular
|
||||
en: form
|
||||
id: form
|
||||
|
||||
- name: Text
|
||||
- name:
|
||||
de: Text
|
||||
en: Text
|
||||
id: text
|
||||
- name:
|
||||
de: Google Maps
|
||||
en: Google Maps
|
||||
id: googleMaps
|
||||
- !include ../fields/images.yml
|
||||
|
||||
- name: moduleImport
|
||||
type: string
|
||||
meta:
|
||||
label:
|
||||
de: Modul Import
|
||||
en: Module Import
|
||||
dependsOn:
|
||||
eval: $parent.contentType == 'moduleImport' || $parent.contentType == 'form'
|
||||
widget: foreignKey
|
||||
foreign:
|
||||
collection: module
|
||||
id: id
|
||||
subNavigation: 0
|
||||
render:
|
||||
defaultCollectionViews: true
|
||||
|
||||
- !include ../fields/text.yml
|
||||
|
||||
@@ -13,12 +13,17 @@ subFields:
|
||||
- name: groupTitle
|
||||
type: string
|
||||
meta:
|
||||
label: Checkbox Gruppe Titel
|
||||
label:
|
||||
de: Gruppe Titel
|
||||
en: Group title
|
||||
|
||||
- name: checkboxes
|
||||
type: object[]
|
||||
meta:
|
||||
label: Checkbox Gruppe
|
||||
label:
|
||||
|
||||
de: Checkbox Gruppe
|
||||
en: Checkbox Group
|
||||
direction: row
|
||||
widget: containerLessObjectArray
|
||||
subFields:
|
||||
|
||||
@@ -11,6 +11,7 @@ meta:
|
||||
eval: $parent?.inputWidgets?.includes('defaultCalendar')
|
||||
subFields:
|
||||
- name: standardInputProperties
|
||||
type: object
|
||||
meta:
|
||||
widget: containerLessObject
|
||||
subFields: !include standardInputProperties.yml
|
||||
|
||||
@@ -10,29 +10,25 @@ subFields:
|
||||
- name: props
|
||||
type: object
|
||||
meta:
|
||||
label: Datumauswahl Eigenschaften
|
||||
label:
|
||||
de: Datumauswahl Eigenschaften
|
||||
en: Date selection properties
|
||||
subFields:
|
||||
- name: allowedDateRanges
|
||||
type: object[]
|
||||
meta:
|
||||
label: Erlaubte Datumsbereiche
|
||||
label:
|
||||
de: Erlaubte Datumsbereiche
|
||||
en: Allowed date ranges
|
||||
widget: containerLessObjectArray
|
||||
subFields:
|
||||
- name: from
|
||||
type: date
|
||||
meta:
|
||||
label: Von
|
||||
widget: date
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-6"
|
||||
- !include ../../fields/from.yml
|
||||
- name: to
|
||||
type: date
|
||||
meta:
|
||||
label: Bis
|
||||
label:
|
||||
de: Bis
|
||||
en: To
|
||||
widget: date
|
||||
containerProps:
|
||||
layout:
|
||||
@@ -41,34 +37,10 @@ subFields:
|
||||
small: "col-12"
|
||||
large: "col-6"
|
||||
|
||||
- name: excludeDays
|
||||
type: string[]
|
||||
meta:
|
||||
label: Auszuschließende Wochentage
|
||||
widget: selectArray
|
||||
choices:
|
||||
- id: monday
|
||||
name: Montag
|
||||
|
||||
- id: tuesday
|
||||
name: Dienstag
|
||||
|
||||
- id: wednesday
|
||||
name: Mittwoch
|
||||
|
||||
- id: thursday
|
||||
name: Donnerstag
|
||||
|
||||
- id: friday
|
||||
name: Freitag
|
||||
|
||||
- id: saturday
|
||||
name: Samstag
|
||||
|
||||
- id: sunday
|
||||
name: Sonntag
|
||||
- !include ../../fields/excludedDays.yml
|
||||
|
||||
- name: standardInputProperties
|
||||
type: object
|
||||
meta:
|
||||
widget: containerLessObject
|
||||
subFields: !include standardInputProperties.yml
|
||||
|
||||
@@ -27,17 +27,7 @@
|
||||
small: "col-12"
|
||||
large: "col-6"
|
||||
|
||||
- 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"
|
||||
- !include ../../fields/emailCC.yml
|
||||
|
||||
- name: emailIntroduction
|
||||
type: string
|
||||
@@ -49,10 +39,22 @@
|
||||
de: "Bsp: Hallo xyz, sie haben eine neue Kaufanfrage erhalten!"
|
||||
en: "E.g.: Hello xyz, you have received a new purchase request!"
|
||||
|
||||
- name: sendFormBtnText
|
||||
type: string
|
||||
meta:
|
||||
label:
|
||||
de: Formular Absenden Button Text
|
||||
en: Form Submit Button Text
|
||||
helperText:
|
||||
de: "Bsp: Absenden"
|
||||
en: "E.g.: Submit"
|
||||
|
||||
- name: rows
|
||||
type: object[]
|
||||
meta:
|
||||
label: Zeile
|
||||
label:
|
||||
de: Zeile
|
||||
en: Row
|
||||
widget: grid
|
||||
addElementLabel: Zeile Hinzufügen
|
||||
|
||||
@@ -60,7 +62,9 @@
|
||||
- name: title
|
||||
type: string
|
||||
meta:
|
||||
label: Zeilenname
|
||||
label:
|
||||
de: Zeilenname
|
||||
en: Row name
|
||||
helperText:
|
||||
de: "Sollte der Titel keinen Wert enthalten, wird kein Zeilenname angezeigt!"
|
||||
en: "If the title does not contain a value, no row name will be displayed!"
|
||||
@@ -68,7 +72,9 @@
|
||||
- name: emailTitle
|
||||
type: string
|
||||
meta:
|
||||
label: Email Abschnitt Titel
|
||||
label:
|
||||
de: Email Abschnitt Titel
|
||||
en: Email section title
|
||||
helperText:
|
||||
de: "Sollte der Titel keinen Wert enthalten, wird kein Abschnitt Titel angezeigt!"
|
||||
en: "If the title does not contain a value, no section title will be displayed!"
|
||||
@@ -77,16 +83,38 @@
|
||||
type: object[]
|
||||
|
||||
meta:
|
||||
label: Spalte
|
||||
addElementLabel: Spalte hinzufügen
|
||||
label:
|
||||
de: Spalte
|
||||
en: Column
|
||||
addElementLabel:
|
||||
de: Spalte hinzufügen
|
||||
en: Add column
|
||||
widget: grid
|
||||
direction: horizontal
|
||||
subFields:
|
||||
- name: title
|
||||
type: string
|
||||
meta:
|
||||
label: Überschrift
|
||||
helperText: Optional
|
||||
label:
|
||||
de: Überschrift
|
||||
en: Headline
|
||||
helperText:
|
||||
de: Optional
|
||||
en: Optional
|
||||
|
||||
- name: emailTitle
|
||||
type: string
|
||||
meta:
|
||||
label:
|
||||
de: Email Abschnitt Titel
|
||||
en: Email section title
|
||||
|
||||
- name: annotation
|
||||
type: string
|
||||
meta:
|
||||
label:
|
||||
de: Zusatzinformation
|
||||
en: Additional information
|
||||
|
||||
- name: inputWidgets
|
||||
type: string[]
|
||||
@@ -96,33 +124,63 @@
|
||||
en: Displayed input fields
|
||||
widget: selectArray
|
||||
choices:
|
||||
- name: Nummernblock
|
||||
- name:
|
||||
de: Nummernblock
|
||||
en: Number block
|
||||
id: labelNumber
|
||||
|
||||
- name: Zeitenauswahlfeld
|
||||
- name:
|
||||
de: Zeitenauswahlfeld
|
||||
en: Time selection field
|
||||
id: times
|
||||
|
||||
- name: Auswahlfeld
|
||||
- name:
|
||||
de: Auswahlfeld
|
||||
en: Selection field
|
||||
id: select
|
||||
|
||||
- name: Datumsauswahl - Standard Kalender
|
||||
- name:
|
||||
de: Datumsauswahl - Standard Kalender
|
||||
en: Date selection - Standard calendar
|
||||
id: defaultCalendar
|
||||
|
||||
- name: Datumauswahl - Custom Kalender
|
||||
- name:
|
||||
de: Datumauswahl - Custom Kalender
|
||||
en: Date selection - Custom calendar
|
||||
id: customCalendar
|
||||
|
||||
- name: Nummerfeld
|
||||
- name:
|
||||
de: Nummerfeld
|
||||
en: Number field
|
||||
id: number
|
||||
|
||||
- name: Checkbox Gruppe
|
||||
- name:
|
||||
de: Checkbox Gruppe
|
||||
en: Checkbox group
|
||||
id: checkboxGroup
|
||||
|
||||
- name: Mehrfachauswahl
|
||||
- name:
|
||||
de: Mehrfachauswahl
|
||||
en: Multiple selection
|
||||
id: multiSelect
|
||||
|
||||
- name: Textfeld
|
||||
- name:
|
||||
de: Textfeld
|
||||
en: Text field
|
||||
id: text
|
||||
|
||||
- name:
|
||||
de: Zeitenauswahl
|
||||
en: Time selection
|
||||
id: timeSelect
|
||||
|
||||
- name:
|
||||
de: Standardauswahl
|
||||
en: Standard selection
|
||||
id: standardSelect
|
||||
|
||||
- !include standardSelect.yml
|
||||
|
||||
- !include labelNumberInput.yml
|
||||
- !include timesInput.yml
|
||||
- !include dateInput.yml
|
||||
@@ -131,3 +189,4 @@
|
||||
- !include datePicker.yml
|
||||
- !include multiSelectInput.yml
|
||||
- !include textInputs.yml
|
||||
- !include timeSelect.yml
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
name: labelNumberInput
|
||||
type: object[]
|
||||
meta:
|
||||
label: Nummer block
|
||||
label:
|
||||
de: Nummer block
|
||||
en: Number block
|
||||
dependsOn:
|
||||
eval: $parent?.inputWidgets?.includes('labelNumber')
|
||||
helperText:
|
||||
@@ -12,7 +14,9 @@ subFields:
|
||||
- name: group
|
||||
type: number
|
||||
meta:
|
||||
label: Gruppe
|
||||
label:
|
||||
de: Gruppe
|
||||
en: Group
|
||||
helpterText:
|
||||
de: Pflichtfeld seperierung. Aus einem Nummernblock muss mindestens eine Gruppe input haben.
|
||||
en: Mandatory field separation. A number block must have at least one group input.
|
||||
@@ -34,7 +38,9 @@ subFields:
|
||||
- name: emailName
|
||||
type: string
|
||||
meta:
|
||||
label: Email Name
|
||||
label:
|
||||
de: Email Name
|
||||
en: Email name
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
@@ -62,7 +68,9 @@ subFields:
|
||||
- name: emailName
|
||||
type: string
|
||||
meta:
|
||||
label: Email Name
|
||||
label:
|
||||
de: Email Name
|
||||
en: Email name
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
|
||||
@@ -8,6 +8,7 @@ meta:
|
||||
eval: $parent?.inputWidgets?.includes('multiSelect')
|
||||
subFields:
|
||||
- name: standardInputProperties
|
||||
type: object
|
||||
meta:
|
||||
widget: containerLessObject
|
||||
subFields: !include standardInputProperties.yml
|
||||
@@ -15,24 +16,32 @@ subFields:
|
||||
- name: options
|
||||
type: object[]
|
||||
meta:
|
||||
label: Mehrfachauswahl Optionen
|
||||
label:
|
||||
de: Mehrfachauswahl Optionen
|
||||
en: Multi Select Options
|
||||
direction: row
|
||||
widget: containerLessObjectArray
|
||||
subFields:
|
||||
- name: name
|
||||
type: string
|
||||
meta:
|
||||
label: Name
|
||||
label:
|
||||
de: Name
|
||||
en: Name
|
||||
|
||||
- name: props
|
||||
type: object
|
||||
meta:
|
||||
label: Mehrfachauswahl Eigenschaften
|
||||
label:
|
||||
de: Mehrfachauswahl Eigenschaften
|
||||
en: Multi Select Properties
|
||||
subFields:
|
||||
- name: additionalAddableValues
|
||||
type: boolean
|
||||
meta:
|
||||
label: Zusätzliche hinzufügbare Werte
|
||||
label:
|
||||
de: Zusätzliche hinzufügbare Werte
|
||||
en: Additional addable values
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
|
||||
@@ -8,6 +8,7 @@ meta:
|
||||
eval: $parent?.inputWidgets?.includes('number')
|
||||
subFields:
|
||||
- name: standardInputProperties
|
||||
type: object
|
||||
meta:
|
||||
widget: containerLessObject
|
||||
subFields: !include standardInputProperties.yml
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
- name: emailTitle
|
||||
type: string
|
||||
meta:
|
||||
label: Email Titel
|
||||
label:
|
||||
de: Email Titel
|
||||
en: Email title
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
@@ -12,7 +14,9 @@
|
||||
- name: placeholder
|
||||
type: string
|
||||
meta:
|
||||
label: Platzhalter
|
||||
label:
|
||||
de: Platzhalter
|
||||
en: Placeholder
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
@@ -23,7 +27,9 @@
|
||||
- name: notRequired
|
||||
type: boolean
|
||||
meta:
|
||||
label: nicht Notwendig
|
||||
label:
|
||||
de: nicht Notwendig
|
||||
en: not required
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
@@ -34,7 +40,9 @@
|
||||
- name: fieldOrder
|
||||
type: number
|
||||
meta:
|
||||
label: Reihenfolge
|
||||
label:
|
||||
de: Reihenfolge
|
||||
en: Order
|
||||
helperText:
|
||||
de: Die kleinste angegebene Zahl wird am weitesten oben in der Formularspalte stehen
|
||||
en: The smallest specified number will be at the top of the form column.
|
||||
@@ -44,8 +52,20 @@
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-6"
|
||||
|
||||
- name: textTitle
|
||||
type: string
|
||||
meta:
|
||||
label: Text Titel
|
||||
helperText: Alternative zu textPlaceholder
|
||||
label:
|
||||
de: Text Titel
|
||||
en: Text title
|
||||
helperText:
|
||||
de: Alternative zu textPlaceholder, steht dann über dem Inputfeld
|
||||
en: Alternative to textPlaceholder, then stands above the input field
|
||||
|
||||
- name: groupTitle
|
||||
type: string
|
||||
meta:
|
||||
label:
|
||||
de: Gruppe Titel
|
||||
en: Group title
|
||||
|
||||
58
api/collections/fieldLists/formular/standardSelect.yml
Normal file
58
api/collections/fieldLists/formular/standardSelect.yml
Normal file
@@ -0,0 +1,58 @@
|
||||
name: standardSelect
|
||||
type: object
|
||||
meta:
|
||||
label: Standardauswahl
|
||||
dependsOn:
|
||||
eval: $parent?.inputWidgets?.includes('standardSelect')
|
||||
subFields:
|
||||
- name: standardInputProperties
|
||||
type: object
|
||||
meta:
|
||||
widget: containerLessObject
|
||||
subFields: !include standardInputProperties.yml
|
||||
|
||||
- name: selectEntries
|
||||
type: object[]
|
||||
meta:
|
||||
label:
|
||||
de: Auswahleingabe Möglichkeiten
|
||||
en: Selection input options
|
||||
widget: containerLessObjectArray
|
||||
addElementLabel: Auswahleingabe hinzufügen
|
||||
direction: horizontal
|
||||
subFields:
|
||||
- name: shownValue
|
||||
type: string
|
||||
meta:
|
||||
label:
|
||||
de: Angezeigter Wert
|
||||
en: Displayed value
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-6"
|
||||
|
||||
- name: value
|
||||
type: string
|
||||
meta:
|
||||
label:
|
||||
de: per Email gesendeter Wert
|
||||
en: Value sent by email
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-6"
|
||||
|
||||
- name: defaultValue
|
||||
type: boolean
|
||||
meta:
|
||||
label:
|
||||
de: Standardwert
|
||||
en: Default value
|
||||
helperText:
|
||||
de: "Wird dieser Wert ausgewählt, wird er als Standardwert gesetzt"
|
||||
en: "If this value is selected, it will be set as the default value"
|
||||
@@ -7,6 +7,7 @@ meta:
|
||||
eval: $parent?.inputWidgets?.includes('text')
|
||||
subFields:
|
||||
- name: standardInputProperties
|
||||
type: object
|
||||
meta:
|
||||
widget: containerLessObject
|
||||
subFields: !include standardInputProperties.yml
|
||||
@@ -14,7 +15,9 @@ subFields:
|
||||
- name: textArea
|
||||
type: boolean
|
||||
meta:
|
||||
label: Großes Textfeld
|
||||
label:
|
||||
de: Großes Textfeld
|
||||
en: Large text field
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
@@ -25,7 +28,9 @@ subFields:
|
||||
- name: emailValidation
|
||||
type: boolean
|
||||
meta:
|
||||
label: E-Mail-Validierung
|
||||
label:
|
||||
de: E-Mail-Validierung
|
||||
en: E-mail validation
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
@@ -36,7 +41,9 @@ subFields:
|
||||
- name: telValidation
|
||||
type: boolean
|
||||
meta:
|
||||
label: Telefon-Validierung
|
||||
label:
|
||||
de: Telefon-Validierung
|
||||
en: Phone validation
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
|
||||
45
api/collections/fieldLists/formular/timeSelect.yml
Normal file
45
api/collections/fieldLists/formular/timeSelect.yml
Normal file
@@ -0,0 +1,45 @@
|
||||
name: timeSelect
|
||||
type: object
|
||||
meta:
|
||||
label: Zeitenwahl
|
||||
dependsOn:
|
||||
eval: $parent?.inputWidgets?.includes('timeSelect')
|
||||
subFields:
|
||||
- name: standardInputProperties
|
||||
type: object
|
||||
meta:
|
||||
widget: containerLessObject
|
||||
subFields: !include standardInputProperties.yml
|
||||
|
||||
- name: selectEntries
|
||||
type: object[]
|
||||
meta:
|
||||
label: Auswahleingabe
|
||||
widget: containerLessObjectArray
|
||||
helperText: "Die Angaben werden in folgendes Übersetzt: Anfangspunkt - Endpunkt"
|
||||
direction: horizontal
|
||||
|
||||
subFields:
|
||||
- name: leftSide
|
||||
type: string
|
||||
meta:
|
||||
label: Anfangspunkt
|
||||
helperText: Bspw. 14:30
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-6"
|
||||
|
||||
- name: rightSide
|
||||
type: string
|
||||
meta:
|
||||
label: Endpunkt
|
||||
helperText: Bspw. 15:30
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-6"
|
||||
@@ -14,8 +14,12 @@ subFields:
|
||||
- name: times
|
||||
type: object[]
|
||||
meta:
|
||||
label: Zeitenangabe
|
||||
helperText: "Die Angaben werden in folgendes Übersetzt: Anfangspunkt - Endpunkt"
|
||||
label:
|
||||
de: Zeitenauswahl Möglichkeiten
|
||||
en: Time selection options
|
||||
helperText:
|
||||
de: "Die Angaben werden in folgendes Übersetzt: Anfangspunkt - Endpunkt"
|
||||
en: "The information is translated into the following: starting point - end point"
|
||||
direction: horizontal
|
||||
widget: containerLessObjectArray
|
||||
|
||||
@@ -23,8 +27,12 @@ subFields:
|
||||
- name: from
|
||||
type: string
|
||||
meta:
|
||||
label: Anfangspunkt
|
||||
helperText: Bspw. 14:30
|
||||
label:
|
||||
de: Anfangspunkt
|
||||
en: Starting point
|
||||
helperText:
|
||||
de: Bspw. 14:30
|
||||
en: E.g. 14:30
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
@@ -36,7 +44,9 @@ subFields:
|
||||
type: string
|
||||
meta:
|
||||
label: Endpunkt
|
||||
helperText: Bspw. 15:30
|
||||
helperText:
|
||||
de: Bspw. 15:30
|
||||
en: E.g. 15:30
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
@@ -44,6 +54,7 @@ subFields:
|
||||
small: "col-12"
|
||||
large: "col-6"
|
||||
- name: standardInputProperties
|
||||
type: object
|
||||
meta:
|
||||
widget: containerLessObject
|
||||
subFields: !include standardInputProperties.yml
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
- name: title
|
||||
type: string
|
||||
meta:
|
||||
label: Titel
|
||||
label:
|
||||
de: Titel
|
||||
en: Title
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
@@ -12,7 +14,11 @@
|
||||
- name: description
|
||||
type: string
|
||||
meta:
|
||||
label: Beschreibung
|
||||
label:
|
||||
de: Beschreibung
|
||||
en: Description
|
||||
inputProps:
|
||||
multiline: true
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
@@ -22,4 +28,8 @@
|
||||
- name: keywords
|
||||
type: string
|
||||
meta:
|
||||
label: Schlüsselwörter
|
||||
inputProps:
|
||||
multiline: true
|
||||
label:
|
||||
de: Schlüsselwörter
|
||||
en: Keywords
|
||||
|
||||
@@ -1,9 +1,30 @@
|
||||
# attribute auf row ebene
|
||||
- name: title
|
||||
type: string
|
||||
meta:
|
||||
label:
|
||||
de: Titel
|
||||
en: Title
|
||||
|
||||
- name: backgroundImage
|
||||
type: string
|
||||
meta:
|
||||
label:
|
||||
de: Hintergrundbild
|
||||
en: Background Image
|
||||
widget: foreignKey
|
||||
foreign:
|
||||
collection: medialib
|
||||
id: id
|
||||
subNavigation: 0
|
||||
render:
|
||||
defaultCollectionViews: true
|
||||
|
||||
- name: columns
|
||||
type: object[]
|
||||
meta:
|
||||
label: Spalten
|
||||
label:
|
||||
de: Spalten
|
||||
en: Columns
|
||||
direction: row
|
||||
widget: grid
|
||||
subFields: !include ../fieldLists/column.yml
|
||||
subFields: !include ./column.yml
|
||||
|
||||
16
api/collections/fields/active.yml
Normal file
16
api/collections/fields/active.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
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"
|
||||
3
api/collections/fields/backup.yml
Normal file
3
api/collections/fields/backup.yml
Normal file
@@ -0,0 +1,3 @@
|
||||
backup:
|
||||
active: true # sollen backups beim verändern erstellt werden
|
||||
collectionName: backups # in welcher collection es gespeichert werden soll
|
||||
19
api/collections/fields/contentType.yml
Normal file
19
api/collections/fields/contentType.yml
Normal file
@@ -0,0 +1,19 @@
|
||||
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: # name der im admin angezeigt wird
|
||||
de: Seite
|
||||
en: Page
|
||||
id: page # wert der in der datenbank gespeichert wird
|
||||
11
api/collections/fields/emailCC.yml
Normal file
11
api/collections/fields/emailCC.yml
Normal file
@@ -0,0 +1,11 @@
|
||||
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"
|
||||
40
api/collections/fields/excludedDays.yml
Normal file
40
api/collections/fields/excludedDays.yml
Normal file
@@ -0,0 +1,40 @@
|
||||
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
|
||||
6
api/collections/fields/file.yml
Normal file
6
api/collections/fields/file.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
name: file
|
||||
type: file
|
||||
meta:
|
||||
label:
|
||||
de: Datei
|
||||
en: File
|
||||
7
api/collections/fields/form.yml
Normal file
7
api/collections/fields/form.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
type: object
|
||||
name: formular
|
||||
meta:
|
||||
label:
|
||||
de: Formular
|
||||
en: Form
|
||||
widget: jsonField
|
||||
13
api/collections/fields/from.yml
Normal file
13
api/collections/fields/from.yml
Normal file
@@ -0,0 +1,13 @@
|
||||
name: from
|
||||
type: date
|
||||
meta:
|
||||
label:
|
||||
de: Von
|
||||
en: From
|
||||
widget: date
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-6"
|
||||
37
api/collections/fields/imageFilter.yml
Normal file
37
api/collections/fields/imageFilter.yml
Normal file
@@ -0,0 +1,37 @@
|
||||
# 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: 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: 1200
|
||||
width: 1200
|
||||
resampling: lanczos
|
||||
quality: 60
|
||||
xl:
|
||||
- fit: true
|
||||
height: 2000
|
||||
width: 2000
|
||||
resampling: lanczos
|
||||
quality: 60
|
||||
0
api/collections/fields/imageTitle.yml
Normal file
0
api/collections/fields/imageTitle.yml
Normal file
25
api/collections/fields/images.yml
Normal file
25
api/collections/fields/images.yml
Normal file
@@ -0,0 +1,25 @@
|
||||
name: images
|
||||
type: string[]
|
||||
meta:
|
||||
label:
|
||||
de: Bild
|
||||
en: Image
|
||||
dependsOn:
|
||||
eval: $parent.contentType == 'images'
|
||||
widget: foreignKey # Verwendetes Widget.
|
||||
foreign:
|
||||
collection: medialib # Name der Sammlung, in der die ausgewählten Daten gespeichert sind.
|
||||
id: id # Feldname, das als eindeutige Kennung für die ausgewählten Daten verwendet wird.
|
||||
subNavigation: 0 # Bestimmt, welche Navigation für die Auswahl der ausgewählten Daten angezeigt wird.
|
||||
#projection: xyz
|
||||
#sort: "title"
|
||||
render:
|
||||
defaultCollectionViews: true
|
||||
# alternativ könnte auch folgendes verwendet werden:
|
||||
#raw: true
|
||||
#eval: |
|
||||
# (function() {
|
||||
# var out = "";
|
||||
# out += "<div style=\"color: #999;\">" + $foreignEntry.title + "</div>";
|
||||
# return out;
|
||||
# })()
|
||||
11
api/collections/fields/manualSort.yml
Normal file
11
api/collections/fields/manualSort.yml
Normal file
@@ -0,0 +1,11 @@
|
||||
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.
|
||||
27
api/collections/fields/medialibCardList.yml
Normal file
27
api/collections/fields/medialibCardList.yml
Normal file
@@ -0,0 +1,27 @@
|
||||
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: Datei
|
||||
- source: category
|
||||
name:
|
||||
de: Kategorie
|
||||
en: Category
|
||||
filter: true
|
||||
- source: updateTime
|
||||
type: datetime
|
||||
filter: true
|
||||
label:
|
||||
de: letztes Update
|
||||
en: last update
|
||||
25
api/collections/fields/medialibSimpleList.yml
Normal file
25
api/collections/fields/medialibSimpleList.yml
Normal file
@@ -0,0 +1,25 @@
|
||||
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
|
||||
30
api/collections/fields/medialibTable.yml
Normal file
30
api/collections/fields/medialibTable.yml
Normal file
@@ -0,0 +1,30 @@
|
||||
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: updateTime
|
||||
type: datetime
|
||||
label:
|
||||
de: letztes Update
|
||||
en: last update
|
||||
filter: true
|
||||
10
api/collections/fields/mutliupload.yml
Normal file
10
api/collections/fields/mutliupload.yml
Normal file
@@ -0,0 +1,10 @@
|
||||
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
|
||||
})()
|
||||
23
api/collections/fields/pageTitle.yml
Normal file
23
api/collections/fields/pageTitle.yml
Normal file
@@ -0,0 +1,23 @@
|
||||
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"
|
||||
inputProps:
|
||||
#multiline: true
|
||||
#placeholder: Seitentitel
|
||||
#...
|
||||
#openapi:
|
||||
# example: Demo Titel
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-6"
|
||||
6
api/collections/fields/quickEditMedialib.yml
Normal file
6
api/collections/fields/quickEditMedialib.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
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
|
||||
9
api/collections/fields/rows.yml
Normal file
9
api/collections/fields/rows.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
name: rows
|
||||
type: object[]
|
||||
meta:
|
||||
label:
|
||||
de: Zeilen
|
||||
en: Rows
|
||||
widget: grid
|
||||
metaElements: []
|
||||
subFields: !include ../fieldLists/row.yml
|
||||
9
api/collections/fields/text.yml
Normal file
9
api/collections/fields/text.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
name: text
|
||||
type: string
|
||||
meta:
|
||||
widget: richtext
|
||||
label:
|
||||
de: Text
|
||||
en: text
|
||||
dependsOn:
|
||||
eval: $parent.contentType == 'text'
|
||||
6
api/collections/fields/textIndex.yml
Normal file
6
api/collections/fields/textIndex.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
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.
|
||||
@@ -35,8 +35,4 @@ hooks:
|
||||
file: hooks/forms/post_return.js
|
||||
|
||||
fields:
|
||||
- type: object
|
||||
name: formular
|
||||
meta:
|
||||
label: Formular
|
||||
widget: jsonField
|
||||
- !include fields/form.yml
|
||||
|
||||
@@ -46,11 +46,16 @@ hooks:
|
||||
type: javascript
|
||||
file: hooks/lighthouse/post_create.js
|
||||
|
||||
indexes:
|
||||
- !include fields/textIndex.yml
|
||||
|
||||
fields:
|
||||
- name: analyzedPaths
|
||||
type: string[]
|
||||
meta:
|
||||
label: Analyzed Paths
|
||||
label:
|
||||
de: Analysierten Pfade
|
||||
en: Analyzed Paths
|
||||
- name: performance
|
||||
type: number
|
||||
meta:
|
||||
@@ -58,15 +63,21 @@ fields:
|
||||
- name: accessibility
|
||||
type: number
|
||||
meta:
|
||||
label: Accessibility
|
||||
label:
|
||||
en: Accessibility
|
||||
de: Zugänglichkeit
|
||||
- name: bestPractices
|
||||
type: number
|
||||
meta:
|
||||
label: Best Practices
|
||||
label:
|
||||
en: Best Practices
|
||||
de: Beste Praktiken
|
||||
- name: seo
|
||||
type: number
|
||||
meta:
|
||||
label: SEO
|
||||
label:
|
||||
en: SEO
|
||||
de: SEO
|
||||
- name: lighthouseMetrics
|
||||
type: object
|
||||
meta:
|
||||
@@ -75,45 +86,67 @@ fields:
|
||||
- name: FCPS
|
||||
type: number
|
||||
meta:
|
||||
label: First Contentful Paint Score
|
||||
label:
|
||||
en: First Contentful Paint Score
|
||||
de: Erster Inhaltlicher Anstrich Score
|
||||
- name: FCPV
|
||||
type: number
|
||||
meta:
|
||||
label: First Contentful Paint Value
|
||||
label:
|
||||
en: First Contentful Paint Value
|
||||
de: Erster Inhaltlicher Anstrich Wert
|
||||
- name: FMPV
|
||||
type: number
|
||||
meta:
|
||||
label: First Meaningful Paint Value
|
||||
label:
|
||||
de: Erster Bedeutungsvoller Anstrich Wert
|
||||
en: First Meaningful Paint Value
|
||||
|
||||
- name: FMPS
|
||||
type: number
|
||||
meta:
|
||||
label: First Meaningful Paint Score
|
||||
label:
|
||||
en: First Meaningful Paint Score
|
||||
de: Erster Bedeutungsvoller Anstrich Score
|
||||
|
||||
- name: SIS
|
||||
type: number
|
||||
meta:
|
||||
label: Speed Index Score
|
||||
label:
|
||||
en: Speed Index Score
|
||||
de: Geschwindigkeitsindex Score
|
||||
|
||||
- name: SIV
|
||||
type: number
|
||||
meta:
|
||||
label: Speed Index Value
|
||||
label:
|
||||
en: Speed Index Value
|
||||
de: Geschwindigkeitsindex Wert
|
||||
|
||||
- name: TTIS
|
||||
type: number
|
||||
meta:
|
||||
label: Time to Interactive Score
|
||||
label:
|
||||
en: Time to Interactive Score
|
||||
de: Zeit bis zur Interaktion Score
|
||||
|
||||
- name: TTIV
|
||||
type: number
|
||||
meta:
|
||||
label: Time to Interactive Value
|
||||
label:
|
||||
en: Time to Interactive Value
|
||||
de: Zeit bis zur Interaktion Wert
|
||||
|
||||
- name: FPIDS
|
||||
type: number
|
||||
meta:
|
||||
label: First Potential Input Delay Score
|
||||
label:
|
||||
de: Erste potenzielle Eingabe Verzögerung Score
|
||||
en: First Potential Input Delay Score
|
||||
|
||||
- name: FPIDV
|
||||
type: number
|
||||
meta:
|
||||
label: First Potential Input Delay Value
|
||||
label:
|
||||
en: First Potential Input Delay Value
|
||||
de: Erste potenzielle Eingabe Verzögerung Wert
|
||||
|
||||
@@ -26,4 +26,6 @@ fields:
|
||||
- type: string
|
||||
name: lighthouseSubpath
|
||||
meta:
|
||||
label: PagespeedPaths
|
||||
label:
|
||||
de: Zu analysierenden Pfad
|
||||
en: Path to analyze
|
||||
|
||||
@@ -1,25 +1,29 @@
|
||||
# Der Name der Kollektion ist beliebig, aber wird in unserem
|
||||
# Beispiel vom ContentBuilder als "medialib" referenziert.
|
||||
# Der Name der Kollektion wird in der Rest-API-URL verwendet, z.B.
|
||||
# /_/tibi_starter/medialib
|
||||
name: medialib
|
||||
|
||||
# Enthält die Kollektion Felder vom Typ "file", so werden die
|
||||
# hochgeladenen Dateien unter dem Ordner abgelegt, der mit
|
||||
# "uploadPath" bestimmt wird.
|
||||
uploadPath: ../media/medialib
|
||||
|
||||
meta:
|
||||
allowExportAll: true
|
||||
label:
|
||||
allowExportAll: true # Erlaubt das Exportieren aller Einträge in dieser Sammlung - Nur für Admins
|
||||
label: # label der Collection in der Sidebar
|
||||
de: Medienbibliothek
|
||||
en: Media Library
|
||||
muiIcon: multimedia
|
||||
muiIcon: multimedia # icon in navigation
|
||||
defaultSort:
|
||||
field: sort
|
||||
order: MANUALLY
|
||||
order: MANUALLY #alternativ auch ASC und DESC möglich
|
||||
|
||||
backup:
|
||||
active: true
|
||||
collectionName: backups
|
||||
active: true # sollen backups beim verändern erstellt werden
|
||||
collectionName: backups # in welcher collection es gespeichert werden soll
|
||||
|
||||
quickEdit:
|
||||
quickEdit: # Erlaubt das Bearbeiten von Einträgen in der Listenansicht, ohne dass eine neue Seite geöffnet wird
|
||||
enabled: true
|
||||
fields:
|
||||
fields: # felder, die in dieser Ansicht bearbeitet werden können
|
||||
- title
|
||||
- alt
|
||||
- file
|
||||
@@ -31,48 +35,20 @@ meta:
|
||||
defaultImageFilter: xs
|
||||
|
||||
multiupload:
|
||||
fields: []
|
||||
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
|
||||
})()
|
||||
|
||||
views:
|
||||
- type: table
|
||||
mediaQuery: "(min-width: 0px)"
|
||||
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: Datei
|
||||
- source: updateTime
|
||||
type: datetime
|
||||
label: letztes Update
|
||||
|
||||
- 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: Datei
|
||||
- source: updateTime
|
||||
type: datetime
|
||||
label: letztes Update
|
||||
- !include fields/medialibSimpleList.yml
|
||||
- !include fields/medialibTable.yml
|
||||
- !include fields/medialibCardList.yml
|
||||
|
||||
subNavigation:
|
||||
- name: modalForeign # Name des Eingabefelds oder der Ansicht.
|
||||
@@ -93,71 +69,168 @@ meta:
|
||||
}
|
||||
//!js
|
||||
|
||||
# Allgeine Zugriffsregeln auf Kollektions-Ebene werden mit dem
|
||||
# "permissions" Objekt festgelegt.
|
||||
permissions:
|
||||
# Unter "public" werden die Zugriffsrechte für die Öffentlichkeit
|
||||
# definiert.
|
||||
public:
|
||||
# "methods" führt die HTTP-Methoden auf, die erlaubt sind
|
||||
methods:
|
||||
# "get: true" bedeutet hier, dass jeder die Daten lesen darf
|
||||
get: true
|
||||
# "post", also Einträge erstellen, "put" = Bearbeiten und
|
||||
# "delete" = löschen darf die Öffentlichkeit nicht.
|
||||
post: false
|
||||
put: false
|
||||
delete: false
|
||||
# Ist "validProjections" definiert, sind auch nur genau die
|
||||
# aufgelisteten Projektionen erlaubt, welche zwingend mit dem
|
||||
# GET-Parameter "projection=..." ausgewählt werden müssen.
|
||||
validProjections:
|
||||
- list
|
||||
- details
|
||||
|
||||
# Der Key "user" steht für ALLE Benutzer die dem Projekt
|
||||
# zugeordnet sind.
|
||||
# D.h. eine feinere Abstufung auf Benutzerebene ist mit dem
|
||||
# Key "user" allein nicht möglich.
|
||||
# Für eine feinere Abstufung können nachgelagerte Hooks
|
||||
# dienen oder die Verwendung von zugeordneten benutzerdefinierten
|
||||
# "permissions" (siehe meta Objekt).
|
||||
user:
|
||||
methods:
|
||||
get: true
|
||||
post: true
|
||||
put: true
|
||||
delete: true
|
||||
# Fehlt "validProjections", sind automatisch alle Projektionen
|
||||
# erlaubt, wobei hier auch der GET-Parameter "projection="
|
||||
# weggelassen werden darf und somit alle Felder in der Ausgabe
|
||||
# zu finden sind.
|
||||
|
||||
# Folgende Brechtigung wird angewandt, wenn der Zugriff über
|
||||
# den GET-Parameter "token=" oder die Header-Anweisung "token: "
|
||||
# angefragt wird.
|
||||
# "token" ist dabei die Markierung, dass es sich um einen Token
|
||||
# handelt und "${TOKEN}" ist der benutzerdefinierte Token selbst.
|
||||
# Dieser wird hier über eine Umgebungsvariable "TOKEN" injiziert,
|
||||
# die in "config.yml.env" definiert werden kann mit "TOKEN=...".
|
||||
token:${TOKEN}:
|
||||
methods:
|
||||
get: true
|
||||
post: true
|
||||
put: true
|
||||
delete: true
|
||||
|
||||
# Alle Berechtigungs-Namen, die nicht "public", "user" oder "token:..."
|
||||
# heißen, sind benutzerdefinierte Berechtigungen, die Benutzern
|
||||
# zugeordnet werden können.
|
||||
# Eine mögliche Auflistung um Vorschläge im tibi-admin anzubieten,
|
||||
# werden im Top-Level meta-Objekt der "config.yml" unter "permissions"
|
||||
# definiert.
|
||||
pages:
|
||||
methods:
|
||||
get: true
|
||||
post: true
|
||||
put: true
|
||||
delete: true
|
||||
|
||||
# Projektionen der Daten werden via GET-Parameter "projection=..."
|
||||
# referenziert.
|
||||
# "projections" is ein Objekt, dass die Namen der Projektionen
|
||||
# als Key führt.
|
||||
projections:
|
||||
# dashboard = name der Projektion
|
||||
|
||||
dashboard:
|
||||
# "select" definiert als Keys die Felder, die beim Abruf
|
||||
# dieser Projektion in den Ausgabe-Daten enthalten sind.
|
||||
# Felder werden über die Punkt-Notation referenziert.
|
||||
select:
|
||||
# keine auflistung von feldern, da alle felder ausgewählt werden
|
||||
details:
|
||||
# Alternativ kann "select" auch Auschlussregeln definieren.
|
||||
# Eine Mischung von Inkludieren und Auschluss ist NICHT
|
||||
# möglich.
|
||||
select:
|
||||
file: 0
|
||||
list:
|
||||
select:
|
||||
file: 1
|
||||
alt: 1
|
||||
hooks:
|
||||
# Hooks für die Methode "get"
|
||||
#get:
|
||||
# "read"-Schritt wird ausgeführt, bevor die Daten von der Datenbank
|
||||
# gelesen werden.
|
||||
#read:
|
||||
#"type" ist derzeit immer "javascript"
|
||||
# type: javascript
|
||||
#"file" zeigt auf die Datei mit dem Javascript-Code relativ zum
|
||||
#Ordner der "config.yml" Datei.
|
||||
# file: hooks/democol/get_read.js
|
||||
#"return"-Schritt wird ausgeführt, bevor die gelesenen Daten über
|
||||
#HTTP übertragen werden.
|
||||
#return:
|
||||
# type: javascript
|
||||
# file: hooks/democol/get_return.js
|
||||
# Hooks für die Methode "post"
|
||||
post:
|
||||
# "bind" wird ausgeführt, bevor die übertragenen Daten in eine
|
||||
# Objekt-Struktur umgewandelt werden.
|
||||
# Der tibi-server erwarten nach diesem Schritt gültige JSON-Daten,
|
||||
# d.h. sollte es möglich gemacht werden, dass andere Daten übertragen
|
||||
# werden, sind diese in diesem Hook abzufangen und zu verarbeiten.
|
||||
|
||||
#bind:
|
||||
# type: javascript
|
||||
# file: hooks/democol/post_bind.js
|
||||
# "validate" wird ausgeführt, bevor die Daten validiert werden.
|
||||
#validate:
|
||||
# type: javascript
|
||||
# file: hooks/democol/post_validate.js
|
||||
# "create" wird ausgeführt, bevor das Objekt/Dokument in der Datenbank
|
||||
# angelegt wird.
|
||||
#create:
|
||||
# type: javascript
|
||||
# file: hooks/democol/post_create.js
|
||||
# "return" wird ausgeführt, bevor die Serverantwort über HTTP
|
||||
# übertragen wird.
|
||||
return:
|
||||
type: javascript
|
||||
file: hooks/clear_cache.js
|
||||
put:
|
||||
#bind:
|
||||
# type: javascript
|
||||
# file: hooks/democol/put_bind.js
|
||||
#validate:
|
||||
# type: javascript
|
||||
# file: hooks/democol/put_validate.js
|
||||
# "bind" und "validate" habe die gleiche Bedeutung wie Hooks der
|
||||
# Methode "post".
|
||||
# "update" wird ausgeführt bevor das Objekt in der Datenbank
|
||||
# aktualisiert wird.
|
||||
#update:
|
||||
# type: javascript
|
||||
# file: hooks/democol/put_update.js
|
||||
# "return" wird auch hier vor der Serverantwort ausgeführt.
|
||||
return:
|
||||
type: javascript
|
||||
file: hooks/clear_cache.js
|
||||
|
||||
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: 1200
|
||||
width: 1200
|
||||
resampling: lanczos
|
||||
quality: 60
|
||||
xl:
|
||||
- fit: true
|
||||
height: 2000
|
||||
width: 2000
|
||||
resampling: lanczos
|
||||
quality: 60
|
||||
imageFilter: !include fields/imageFilter.yml
|
||||
|
||||
# "fields" stellen die Eigentliche Struktur der Kollektion dar.
|
||||
# "fields" ist als Array angelegt um eine Standard-Sortierung
|
||||
# im tibi-admin vorzugeben.
|
||||
fields:
|
||||
- name: file
|
||||
type: file
|
||||
meta:
|
||||
label:
|
||||
de: Datei
|
||||
en: File
|
||||
# Das Einbinden von Feldern über extra Dateien bietet sich nur
|
||||
# an, wenn das jeweilige Feld mehrfach von dieser oder anderen
|
||||
# Kollektionen verwendet wird.
|
||||
# Auf die möglichen Definitionen wird im Kapitel "fields"
|
||||
# eingegangen.
|
||||
- !include fields/file.yml
|
||||
|
||||
- name: alt
|
||||
type: string
|
||||
@@ -179,14 +252,11 @@ fields:
|
||||
de: Der Titel wird angezeigt, wenn die Datei geladen wird.
|
||||
en: The title is displayed when the file is loaded.
|
||||
|
||||
- name: sort
|
||||
type: number
|
||||
- name: category
|
||||
type: string
|
||||
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.
|
||||
de: Kategorie
|
||||
en: Category
|
||||
|
||||
- !include fields/manualSort.yml
|
||||
|
||||
@@ -87,8 +87,12 @@ fields:
|
||||
- name: type
|
||||
type: string
|
||||
meta:
|
||||
label: Modultyp
|
||||
helperText: "Wählen Sie den Typ des Moduls aus."
|
||||
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: { de: "Formular", en: "Form" }
|
||||
|
||||
@@ -4,10 +4,6 @@ uploadPath: ../media/navigation
|
||||
meta:
|
||||
label: "Navigation"
|
||||
muiIcon: navigation
|
||||
allowExportAll: true
|
||||
backup:
|
||||
active: true
|
||||
collectionName: backups
|
||||
views:
|
||||
- type: simpleList
|
||||
mediaQuery: "(max-width:599px)"
|
||||
@@ -17,7 +13,6 @@ meta:
|
||||
mediaQuery: "(min-width:600px)"
|
||||
columns:
|
||||
- source: tree
|
||||
name: Navigationsbaum
|
||||
|
||||
permissions:
|
||||
public:
|
||||
@@ -32,15 +27,60 @@ permissions:
|
||||
post: false
|
||||
put: true
|
||||
delete: false
|
||||
hooks:
|
||||
post:
|
||||
return:
|
||||
type: javascript
|
||||
file: hooks/clear_cache.js
|
||||
put:
|
||||
return:
|
||||
type: javascript
|
||||
file: hooks/clear_cache.js
|
||||
|
||||
x-endpoint: &endpoint
|
||||
name: endpoint
|
||||
type: boolean
|
||||
meta:
|
||||
defaultValue:
|
||||
eval: 1 == 1
|
||||
label: Endpunkt
|
||||
|
||||
x-elemente: &elemente
|
||||
name: elements
|
||||
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:
|
||||
de: Dieser Name wird zur Anzeige in der Navigation verwendet.
|
||||
en: This name is used for display in the navigation.
|
||||
|
||||
x-page: &seite
|
||||
name: page
|
||||
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
|
||||
@@ -48,7 +88,9 @@ fields:
|
||||
meta:
|
||||
label: Baum
|
||||
widget: select
|
||||
helperText: Die Servicenavigation sollte Seiten wie bspw. die Datneschutzerklärung oder das Impressum umfassen.
|
||||
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.
|
||||
choices:
|
||||
- id: 0
|
||||
name:
|
||||
@@ -59,38 +101,37 @@ fields:
|
||||
de: Servicenavigation
|
||||
en: service navigation
|
||||
|
||||
- name: pages
|
||||
type: object[]
|
||||
meta:
|
||||
label:
|
||||
de: Seiten
|
||||
en: pages
|
||||
folding:
|
||||
previewUnfolded: name
|
||||
previewFolded: name
|
||||
|
||||
widget: containerLessObjectArray
|
||||
- <<: *elemente
|
||||
subFields:
|
||||
- name: name
|
||||
type: string
|
||||
- *endpoint
|
||||
- *name
|
||||
- *seite
|
||||
- name: image
|
||||
type: file
|
||||
meta:
|
||||
label:
|
||||
de: Name
|
||||
en: name
|
||||
helperText: Dieser Name wird zur Anzeige in der Navigation verwendet.
|
||||
label: Bild
|
||||
dependsOn:
|
||||
eval: |
|
||||
(function(){
|
||||
if($parent.endpoint == undefined) return false;
|
||||
return !$parent.endpoint
|
||||
})()
|
||||
|
||||
- name: page
|
||||
type: string
|
||||
- name: elements
|
||||
type: object[]
|
||||
meta:
|
||||
label:
|
||||
de: Seite
|
||||
en: page
|
||||
widget: select
|
||||
choices:
|
||||
endpoint: page
|
||||
params:
|
||||
sort: path
|
||||
projection: navigation
|
||||
mapping:
|
||||
id: id
|
||||
name: path
|
||||
de: Elemente
|
||||
en: elements
|
||||
dependsOn:
|
||||
eval: |
|
||||
(function(){
|
||||
if($parent.endpoint == undefined) return false;
|
||||
return !$parent.endpoint
|
||||
})()
|
||||
folding:
|
||||
previewUnfolded: name
|
||||
previewFolded: name
|
||||
subFields:
|
||||
- *name
|
||||
- *seite
|
||||
|
||||
@@ -8,6 +8,12 @@ meta:
|
||||
|
||||
dashboard: helper/dashboard.yml
|
||||
|
||||
# Liste möglicher Berechtigungen, die Benutzern zugeordnet werden können
|
||||
permissions:
|
||||
- name: pages
|
||||
label:
|
||||
de: Seiten
|
||||
en: Pages
|
||||
collections:
|
||||
- !include collections/backups.yml
|
||||
- !include collections/content.yml
|
||||
@@ -20,6 +26,7 @@ collections:
|
||||
- !include collections/ssr.yml
|
||||
|
||||
jobs:
|
||||
- cron: "0 0 * * 1"
|
||||
type: javascript
|
||||
file: jobs/lighthouse.js
|
||||
- !include jobs/lighthouse.yml
|
||||
|
||||
assets:
|
||||
- !include assets/dist.yml
|
||||
|
||||
@@ -4,6 +4,13 @@
|
||||
backup.updateLogs = updateLogs
|
||||
return { data: backup }
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {Object} entry
|
||||
* @param {string} collectionName
|
||||
* @param {number} versionNr
|
||||
* @returns
|
||||
*/
|
||||
function compareAndUpdateEntry(entry, collectionName, versionNr) {
|
||||
let updateLogs
|
||||
if (versionNr == 0) {
|
||||
@@ -25,6 +32,11 @@
|
||||
return updateLogs
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {any[]} array
|
||||
* @returns {any[]}
|
||||
*/
|
||||
function filterValidObjects(array) {
|
||||
return array.filter((object) => {
|
||||
for (let key in object) {
|
||||
@@ -35,6 +47,14 @@
|
||||
return true
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {Object} oldObj
|
||||
* @param {Object} newObj
|
||||
* @param {string} path
|
||||
* @returns {any[]}
|
||||
*/
|
||||
function getUpdateLogs(oldObj = {}, newObj = {}, path = "") {
|
||||
let updateLogs = []
|
||||
const ignoredKeys = ["id", "insertTime", "updateTime"]
|
||||
|
||||
@@ -8,7 +8,6 @@ var { setUpQuery, calculateAverageDynamically, run } = require("../hooks/lib/uti
|
||||
}
|
||||
let dbObjs = []
|
||||
urls.forEach((url) => {
|
||||
console.log("URL:", url)
|
||||
dbObjs.push(run(url))
|
||||
})
|
||||
let dbObject = calculateAverageDynamically(dbObjs)
|
||||
|
||||
14
api/jobs/lighthouse.yml
Normal file
14
api/jobs/lighthouse.yml
Normal file
@@ -0,0 +1,14 @@
|
||||
# Jedem Job muss ein "cron" Eintrag zugeordnet werden, der die
|
||||
# Ausführungszeitpunkte definiert.
|
||||
# Das cron-Schema ist dem üblichen Linux cron-Schema nachempfunden.
|
||||
cron: "0 0 * * 1"
|
||||
|
||||
# "type" des Jobs ist derzeit immer "javascript" mit der "file"-Referenz
|
||||
# relativ zur "config.yml".
|
||||
type: javascript
|
||||
file: jobs/lighthouse.js
|
||||
# Es können beliebige "meta"-Daten hinterlegt werden, die im Javascript
|
||||
# des Jobs über "context.job.meta" abgerufen werden können.
|
||||
|
||||
meta:
|
||||
name: Lighthouse job
|
||||
@@ -16,6 +16,15 @@
|
||||
<div id="appContainer"><!--HTML--></div>
|
||||
<script type="module" src="/dist/index.mjs?t=__TIMESTAMP__"></script>
|
||||
<script nomodule src="/dist/index.es5.js?t=__TIMESTAMP__"></script>
|
||||
<script
|
||||
src="//cc.webmakers.de/cc.js"
|
||||
defer
|
||||
id="ccScript"
|
||||
data-cc-tags="googleMaps"
|
||||
data-cc-privacy-policy-url="/datenschutz"
|
||||
data-cc-secondary-color="#c4253e"
|
||||
data-cc-necessary-cookies="likecmsSession"
|
||||
></script>
|
||||
</body>
|
||||
|
||||
<!--SSR.ERROR-->
|
||||
|
||||
Reference in New Issue
Block a user