# Der Name der Kollektion ist beliebig, aber wird in unserem
# Beispiel vom ContentBuilder als "medialib" referenziert.
name: medialib
uploadPath: ../media/medialib

meta:
    allowExportAll: true
    label:
        de: Medienbibliothek
        en: Media Library
    muiIcon: multimedia
    defaultSort:
        field: sort
        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: xs

    multiupload:
        fields: []

    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

    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

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:
    post:
        return:
            type: javascript
            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:
    - 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
          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
              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.
