###############################################################
# Media Library
###############################################################

# Name/URL-Anteil der Kollektion
name: navigation
uploadPath: ../media/navigation

# Metaangaben zur Kollektion welche in der Admin-UI verwendet werden können
meta:
    # Navigationseintrag in der Admin-UI
    label: { de: "Navigation", en: "Navigation" }
    # Icon (Material UI) für den Navigationseintrag
    muiIcon: file-tree
    # Identifizierung eines Eintrags für z.B. Select-Boxen in der Admin-UI
    rowIdentTpl: { twig: "{{ path }}" }
    # Standardsortierung der Liste
    defaultSort: { field: "id", order: "ASC" }
    # Admin-Backend Ansichten
    defaultImageFilter: s
    views:
        - type: simpleList
          mediaQuery: "(max-width:599px)"
          primaryText: ident
          secondaryText: locale
        - type: table
          mediaQuery: "(min-width:600px)"
          columns:
              - ident
              - { source: locale, type: flag }

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

permissions:
    public:
        methods:
            get: true
            post: false
            put: false
            delete: false
    user:
        methods:
            get: true
            post: false
            put: false
            delete: false
    # token als Zusatzsicherung gegen Spam, mehr siehe Hook
    "token:${PUBLIC_TOKEN}":
        methods:
            get: false
            post: false
            put: false
            delete: false

# Field References

x-title: &title
    name: title
    type: string
    meta:
        label: { de: "Titel", en: "Title" }
        helperText:
            {
                de: "Der Titel des Navigationspunkts wird auf der Webseite angezeigt.",
                en: "The title of the navigation point is displayed on the page.",
            }

x-settings: &settings
    name: settings
    type: object
    meta:
        widget: tabs
        activeTab: 0

x-page: &page
    name: page
    type: object
    meta:
        widget: select
        label: { de: Seite, en: "Page" }
        choices:
            endpoint: "content"
            mapping:
                id: "path"
                name: "path"
            params:
                count: 1
                sort: "ASC"
                query: ""

x-url: &url
    name: url
    type: object
    meta:
        label: { de: "Link", en: "Link" }
    subFields:
        - name: url
          type: string
          meta:
              label: { de: "Ziel-URL", en: "Target URL" }
              helperText:
                  {
                      de: "Definiert eine interne oder externe URL, zu dieser bei Klick auf den Navigationspunkt, gesprungen wird.",
                      en: "Defines an internal or external URL to which a jump is made when the navigation point is clicked.",
                  }
              inputProps:
                  type: "url"

        - name: target
          type: string
          meta:
              widget: select
              label: { de: Zielfenster, en: Target }
              defaultValue: "default"
              choices:
                  - { id: "default", name: "Gleicher Tab oder Seite (ohne Refresh)" }
                  - { id: "_self", name: "Gleicher Tab oder Seite (Standardwert)" }
                  - { id: "_blank", name: "Neuer Tab oder Fenster" }
                  - { id: "_parent", name: "Elternfenster" }

        - name: hidden
          type: boolean
          meta:
              label: { de: "Ausgeblendet", en: "Hidden" }
              helperText:
                  {
                      de: "Definiert, ob der Navigationspunkt in der Navigation angezeigt werden soll oder nicht.",
                      en: "Defines whether the navigation point should be displayed in the navigation or not.",
                  }

x-items: &items
    name: items
    type: object[]
    meta:
        collapse: { titleFieldName: "settings.title" }
        label: { de: "Navigationspunkte", en: "Navigation Points" }
        helperText:
            {
                de: "Definition aller Navigationspunkte für diese Navigation",
                en: "Definition of all navigation points for this navigation",
            }

# Feldliste der Kollektion
fields:
    - name: ident
      type: string
      meta:
          widget: select
          choices:
              - id: main
                name:
                    de: Hauptnavigation
                    en: Main Navigation
              - id: footer
                name:
                    de: Fußzeile
                    en: Footer Navigation

    - !include fields/_locale.yml

    - <<: *items
      subFields:
          - <<: *settings
            subFields:
                - *title
                - *page
                - *url
                - <<: *items
                  subFields:
                      - <<: *settings
                        subFields:
                            - *title
                            - *page
                            - *url
                            - <<: *items
                              subFields:
                                  - <<: *settings
                                    subFields:
                                        - *title
                                        - *page
                                        - *url

indexes:
    - unique: true
      key:
          - ident
          - locale
          - path
