backend & types

This commit is contained in:
2024-01-27 18:58:35 +00:00
parent 91bfa0864d
commit 0b4a474180
219 changed files with 5211 additions and 12325 deletions

View File

@@ -4,70 +4,39 @@ name: medialib
uploadPath: ../media/medialib
meta:
allowExportAll: true
label:
de: Medienbibliothek
en: Media Library
muiIcon: multimedia
defaultSort:
field: sort
order: MANUALLY #alternativ auch ASC und DESC möglich
order: MANUALLY
backup:
active: true
collectionName: backups
quickEdit:
enabled: true
fields:
- title
- alt
- file
# "defaultImageFilter" dient auch hier nur zur Reduzierung der
# Bildgröße bei der Anzeige im tibi-admin (Listen).
# Die Bildgröße für die Einbindung ins erzeugte HTML des ContentBuilder
# hat hiermit nix zu tun.
defaultImageFilter: s
defaultImageFilter: xs
multiupload:
fields:
- source: description #specify wich fields should be editable in Modal, if property isnt set, then all fields will automatically be selected
prefilledFields: #specifies wich fields should have a default value, wont be visible to the user, just an informational text for wich fields will recieve an default value.
- source: title
defaultValue:
eval: |
(function(){
return "Title" + $file.name
})()
fields: []
# Wird unter "image-/file-/videoSelect" im ContentBuilder Feld kein
# "subNavigation" Index definiert, werden auch folgende "views"
# verwendet.
views:
- type: simpleList
mediaQuery: "(min-width: 0px)"
selectionPriority: 3 #gibt an, wenn mediaQuery passt, mit welcher priorität es default mäßig ausgewählt sein soll, je niedriger, desto wichtiger
primaryText:
source: path
filter: true
secondaryText:
source: title
filter: true
tertiaryText:
source: description
filter: true
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: true
columns:
- source: file
- source: updateTime
type: datetime
label: letztes Update
- source: title
filter: true
- source: description
filter: true
- type: table
mediaQuery: "(min-width: 768px)"
mediaQuery: "(min-width: 0px)"
defaultSelect: false
selectionPriority: 2
fileDropArea:
label:
@@ -77,16 +46,13 @@ meta:
}
helperText: { de: "Maximale Uploadgröße: 1,54 MB", en: "Maximum upload size: 1.54MB" }
targetField: file
pageAsDropArea: true
pageAsDropArea: false
columns:
- source: file
name: Datei
- source: updateTime
type: datetime
label: letztes Update
- source: title
filter: true
- source: description
filter: true
- type: cardList
mediaQuery: "(min-width: 1200px)"
@@ -103,73 +69,27 @@ meta:
fields:
- source: file
name: Datei
- source: updateTime
type: datetime
label: letztes Update
- source: title
filter: true
- source: description
filter: true
# Wird ein "subNavigation" Index für "image-/file-/videoSelect" definiert,
# wird die entsprechende Navigation aus folgender Liste angesprochen.
# "0" ist dabei der Index für das erste Element dieser Liste.
subNavigation:
- # Der "name" der Navigation ist für die Mediathek nicht von Bedeutung,
# kann aber für "eval"-Code interessant sein.
name: modal
# Auf "label" wurde hier verzichtet, damit dieses Element nicht in der
# Hauptnavigation des tibi-admin auftaucht.
# Folgende Ansicht wird für unsere Auswahl der Datei im ContentBuilder
# angeboten.
views:
- type: cards
mediaQuery: "(min-width: 0px)"
fields:
- source: file
- source: updateTime
type: datetime
label: letztes Update
- source: title
filter: true
- source: description
filter: true
# Damit der ContentBuilder weiß, welche Datei ausgewählt wurde, ist
# ist folgender "defaultCallback" notwendig.
# Die Funktion wird beim Klick auf die entsprechende Datei aufgerufen.
# Als Funktionsparameter steht der gesamte Datensatz der Auswahl zur
# Verfügung.
# Die Funktionen "parent.selectAsset" und "parent.focus" sind ContentBuilder
# spezifisch und schließen die Listenansicht direkt nach Übergabe der
# Datei-URL.
# Die URL setzt sich aus dem Pfad zur Datei und dem Filter "l" zusammen.
# Es wurde eine relative URL konstruiert, da das ContentBuilder-Widget
# mit "baseHref" zur Projekt-URL erstellt wird.
defaultCallback:
eval: |
//js
(entry) => {
parent.selectAsset("medialib/" + entry.id + "/" + entry.file?.src + "?filter=l")
parent.focus()
}
//!js
- name: modalForeign # Name des Eingabefelds oder der Ansicht.
defaultSort: # Standard-Sortierkriterien, die angewendet werden, wenn keine anderen Sortierkriterien spezifiziert sind.
field: "path" # Standardmäßig wird nach dem "path"-Feld sortiert.
order: "ASC" # Standardmäßig wird in aufsteigender Reihenfolge (ASC) sortiert.
views: # Liste der Ansichten, die in diesem Feld angezeigt werden können.
- type: table # Es wird eine Tabellenansicht verwendet.
mediaQuery: "(min-width: 0px)" # Die Tabellenansicht wird nur angezeigt, wenn die Bildschirmbreite mindestens 0px beträgt.
columns: # Liste der Spalten, die in der Tabelle angezeigt werden.
- path # Es wird nur die Spalte "path" angezeigt.
- source: file
defaultCallback: # Standard-Callback-Funktion, die ausgeführt wird, wenn keine andere spezifiziert ist.
eval: | # Der Code wird als JavaScript evaluiert.
//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.
(entry) => {
parent.selectEntry(entry)
}
//!js
@@ -191,37 +111,76 @@ projections:
dashboard:
select:
hooks:
delete:
post:
return:
type: javascript
file: hooks/medialib/delete_return.js
file: hooks/clear_cache.js
put:
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
fields:
# Ein Feld vom Typ "file" wird für die Mediathek natürlich
# benötigt.
- name: file
type: file
meta:
label:
de: Datei
en: File
- 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
- name: description
type: string
meta:
widget: richtext
label:
de: Kurzbeschreibung
en: Short Description
helperText:
de: Der Titel wird angezeigt, wenn die Datei geladen wird.
en: The title is displayed when the file is loaded.
- name: sort
type: number
meta:
label:
de: Manuelle Sortierung