zwischenstand

This commit is contained in:
2024-02-13 16:36:09 +00:00
parent 0b4a474180
commit 49e55a90f7
173 changed files with 15832 additions and 1359 deletions

View File

@@ -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