# 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 # 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 # icon in navigation defaultSort: field: sort order: MANUALLY #alternativ auch ASC und DESC möglich backup: active: true # sollen backups beim verändern erstellt werden collectionName: backups # in welcher collection es gespeichert werden soll 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 # "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: xs 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 })() views: - !include fields/medialibSimpleList.yml - !include fields/medialibTable.yml - !include fields/medialibCardList.yml subNavigation: - 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. - source: file defaultCallback: # Standard-Callback-Funktion, die ausgeführt wird, wenn keine andere spezifiziert ist. eval: | # Der Code wird als JavaScript evaluiert. //js (entry) => { parent.selectEntry(entry) } //!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: !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: # 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 meta: label: de: Alternativtext en: Alternative text helperText: de: Der Alternativtext wird angezeigt, wenn die Datei nicht geladen werden kann. en: The alternative text is displayed if the file cannot be loaded. - name: title type: string meta: label: de: Titel en: Title helperText: de: Der Titel wird angezeigt, wenn die Datei geladen wird. en: The title is displayed when the file is loaded. - name: category type: string meta: label: de: Kategorie en: Category - !include fields/manualSort.yml