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
            - tags
    defaultImageFilter: xs
    multiupload:
        fields:
            - source: category
        prefilledFields:
            - source: title
              defaultValue:
                  eval: |
                      (function(){
                        return  $file.name.split(".")[0]
                      })()
            - source: alt
              defaultValue:
                  eval: |
                      (function(){
                        return  $file.name.split(".")[0]
                      })()
    views: &views
        - !include fields/medialibSimpleList.yml
        - !include fields/medialibTable.yml
        - !include fields/medialibCardList.yml

    subNavigation:
        - name: modalForeign
          defaultSort:
              field: "path"
              order: "ASC"
          views: *views
          defaultCallback:
              eval: |
                  //js
                  (entry) => {
                      parent.selectEntry(entry)  
                  }
                  //!js

        - name: websiteContent
          label: Inhalt
          muiIcon: accountGroup
          setDefault:
              field: type
              value: websiteContent
          defaultSort:
              field: "sort"
              order: "MANUALLY"
          views: *views
          filter:
              "type": "websiteContent"

        - name: other
          label: Andere
          muiIcon: accountGroup
          defaultSort:
              field: "sort"
              order: "MANUALLY"
          views: *views
          filter:
              "type": { $ne: "websiteContent" }

permissions:
    public:
        methods:
            get: true
            post: true
            put: false
            delete: true
        validProjections:
            - list
            - details
    user:
        methods:
            get: true
            post: true
            put: true
            delete: true
    token:${TOKEN}:
        methods:
            get: true
            post: true
            put: true
            delete: true
    pages:
        methods:
            get: true
            post: true
            put: true
            delete: true

projections:
    dashboard:
        select:
    details:
        select:
            file: 0
    list:
        select:
            file: 1
            alt: 1
hooks:
    put:
        return:
            type: javascript
            file: hooks/clear_cache.js
    delete:
        delete:
            type: javascript
            file: hooks/medialib/delete_delete.js

imageFilter: !include lib/imageFilter.yml

fields:
    - !include fields/file.yml
    - name: type
      type: string
      meta:
          label:
              de: Typ
              en: Type
          widget: select
          choices:
              - name: websiteContent
                id: websiteContent
              - name: returnOrderFoto
                id: returnOrderFoto

    - 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

    - name: tags
      type: string[]
      meta:
          label:
              de: Tags
              en: Tags
          widget: foreignKey
          filter:
              type: foreignKey
          foreign:
              collection: tag
              id: id
              sort: name
              subNavigation: 0
              render:
                  raw: true
                  eval: |
                      //js
                      $foreignEntry?.name
                      //!js
    - name: comment
      type: string
      meta:
          label:
              de: Kommentar
              en: Comment
          inputProps:
              multiline: true

    - !include fields/manualSort.yml
indexes:
    - name: fulltext #  Ein eindeutiger Name für den Index. Es ist optional, wird jedoch empfohlen, um den Index später leicht identifizieren zu können.
      key: # Bestimmt, auf welche Felder der Index angewendet werden soll. Dies kann ein einfacher String sein, wenn der Index nur ein Feld umfasst, oder ein Array von Strings, wenn der Index mehrere Felder umfasst.
          - $text:$**
