234 lines
8.8 KiB
YAML
234 lines
8.8 KiB
YAML
# Der Name der Kollektion ist beliebig, aber wird in unserem
|
|
# Beispiel vom ContentBuilder als "medialib" referenziert.
|
|
name: medialib
|
|
uploadPath: ../media/medialib
|
|
|
|
meta:
|
|
label:
|
|
de: Medienbibliothek
|
|
en: Media Library
|
|
muiIcon: multimedia
|
|
defaultSort:
|
|
field: sort
|
|
order: MANUALLY #alternativ auch ASC und DESC möglich
|
|
|
|
# "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
|
|
|
|
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
|
|
})()
|
|
|
|
# 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)"
|
|
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: true
|
|
columns:
|
|
- source: file
|
|
- source: updateTime
|
|
type: datetime
|
|
label: letztes Update
|
|
- source: title
|
|
filter: true
|
|
- source: description
|
|
filter: true
|
|
|
|
- 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
|
|
- 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.
|
|
columns: # Liste der Spalten, die in der Tabelle angezeigt werden.
|
|
- path # Es wird nur die Spalte "path" angezeigt.
|
|
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.
|
|
}
|
|
//!js
|
|
|
|
permissions:
|
|
public:
|
|
methods:
|
|
get: true
|
|
post: false
|
|
put: false
|
|
delete: false
|
|
user:
|
|
methods:
|
|
get: true
|
|
post: true
|
|
put: true
|
|
delete: true
|
|
|
|
projections:
|
|
dashboard:
|
|
select:
|
|
hooks:
|
|
delete:
|
|
return:
|
|
type: javascript
|
|
file: hooks/medialib/delete_return.js
|
|
|
|
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: title
|
|
type: string
|
|
meta:
|
|
label:
|
|
de: Titel
|
|
en: Title
|
|
- name: description
|
|
type: string
|
|
meta:
|
|
widget: richtext
|
|
label:
|
|
de: Kurzbeschreibung
|
|
en: Short Description
|
|
|
|
- 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.
|