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

fields:
    - !include fields/title.yml

    # Ein Feld vom Typ "file" wird für die Mediathek natürlich
    # benötigt.
    - name: file
      type: file
      meta:
          label:
              de: Datei
              en: File

permissions:
    public:
        methods:
            get: true
            post: false
            put: false
            delete: false
    user:
        methods:
            get: true
            post: true
            put: true
            delete: true

meta:
    label:
        de: Medienbibliothek
        en: Media Library
    muiIcon: multimedia
    defaultSort:
        field: title
        order: ASC

    # "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

    # Wird unter "image-/file-/videoSelect" im ContentBuilder Feld kein
    # "subNavigation" Index definiert, werden auch folgende "views"
    # verwendet.
    views:
        - type: table
          mediaQuery: "(min-width: 0px)"
          columns:
              - source: updateTime
                label: letztes Update
                type: datetime
              - source: title
                filter: true
              - source: file

    # 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: table
                mediaQuery: "(min-width: 0px)"
                columns:
                    - source: title
                      filter: true
                    - source: file

          # 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

    openapi:
        disabled: true