###############################################################
# Content Blöcke
###############################################################

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

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

    tablist:
        meta:
            expand: assignments
        tabs:
            - name: general
              meta:
                  label: { de: "Allgemein", en: "General" }
              subFields:
                  - source: path
                  - source: locale
                  - source: tags
                  - source: priority
            - name: meta
              meta:
                  label: { de: "Meta", en: "Meta" }
                  source: meta
              subFields:
                  - source: meta
            - name: assignments
              meta:
                  label: { de: "Verknüpfungen", en: "Assignments" }
                  source: meta
              subFields:
                  - source: pages
                  - source: linkedArticleEntries

imageFilter:
    xs:
        - fit: true
          height: 90
          width: 90
          resampling: "lancos"
          quality: 60
    s:
        - fit: true
          height: 300
          width: 300
          resampling: "lancos"
          quality: 60
    m:
        - fit: true
          height: 600
          width: 600
          resampling: "lancos"
          quality: 60
    l:
        - fit: true
          height: 1200
          width: 1200
          resampling: "lancos"
          quality: 60
    xl:
        - fit: true
          height: 2000
          width: 2000
          resampling: "lancos"
          quality: 60

# Zugriff auf diese Kollektion
permissions:
    # öffentlicher Zugriff
    public:
        methods:
            # Liste und Einzeleinträge lesen
            get: true
            # neuen Eintrag anlegen
            post: false
            # Eintrag editieren
            put: false
            # Eintrag löschen
            delete: false
    # zum Projekt zugeordneter Benutzer ohne Zusatzberechtigungen
    user:
        methods:
            get: true
            post: true
            put: true
            delete: true

hooks:
    post:
        return:
            type: javascript
            file: hooks/content/post_return.js
    put:
        return:
            type: javascript
            file: hooks/content/put_return.js
    delete:
        return:
            type: javascript
            file: hooks/content/delete_return.js

# Feldliste der Kollektion
fields:
    - name: path
      type: string
      index: [single, unique]
      meta:
          hideInRoot: true
          label: { de: "Pfad", en: "Path" }
          helperText:
              de: "Der Pfad muss eindeutig sein und ohne ein Slash (/) beginnen und enden."
              en: "The path must be unique and must start and end without a slash (/)."
    - !include fields/_locale.yml
    - name: pages
      type: string[]
      meta:
          hideInRoot: true
          helperText:
              de: "Verknüpft Seiten mit beliebigen anderen Seiten."
              en: "Links the page to any other page."
          widget: chipArray
          label:
              de: Verknüpfung zu Seiten
              en: Assignment to pages
          defaultValue: []
          choices:
              endpoint: "content"
              mapping:
                  id: "id"
                  name: "path"
              params:
                  sort: "path"
    - name: linkedArticleEntries
      type: string[]
      meta:
          hideInRoot: true
          widget: linkedEntries
          helperText:
              de: "Verknüpfte Artikel dieser Seite."
              en: "Linked articles to this page."
          label:
              de: Verknüpfte Artikel
              en: Linked articles
          defaultValue: []
          choices:
              endpoint: "articles"
              params:
                  sort: "article.general.publish_date.from"
                  filter: { "article.assignments.pages": { source: "path" } }
              template: { twig: "<div>{{ article.content.title }}</div><div>{{ article.general.locale }}</div>" }
    - name: tags
      type: string[]
      meta:
          hideInRoot: true
          helperText:
              de: "Über die Zuweisung von Schlagworten, können Seiten noch einmal genauer kategorisiert werden."
              en: "Pages can be categorized more precisely by assigning keywords."
          widget: chipArray
          label:
              de: Schlagwort / Tag / Label
              en: Kayword / Tag / Label
          addAllowed: true
          choices:
              endpoint: "tags"
              mapping:
                  id: "name"
                  name: "name"
              params:
                  sort: "name"
    - name: priority
      type: number
      meta:
          hideInRoot: true
          defaultValue: [0]
          label: { de: "Priorität", en: "Priority" }
          helperText:
              de: "Sind mehr als ein Stichwort mit einer Seite verknüpft, führt die Priorität (z.B.: eine Zahl von 0..10..x) der gefundenen Seiten zu einer automatischen Vorauswahl aus den gefundenen Seiten."
              en: "If more than one keyword is linked to a page, the priority (e.g. a number 0..10..x) of the pages found leads to an automatic preselection from the pages found."
    # - name: blocks
    #   type: object[]
    #   meta:
    #       label: { de: "Artikel dieser Seite", en: "Page Articles" }
    #       collapse: { titleFieldName: "article.content.title" }
    #   subFields:
    #       - !include fields/_article.yml

    - name: meta
      type: object
      meta:
          hideInRoot: true
      subFields:
          - name: metaTitle
            type: string
            meta:
                label: { de: "Titel der Webseite", en: "Page Title" }
          - name: metaDescription
            type: string
            meta:
                label: { de: "Beschreibung der Webseite", en: "Page Description" }
          - name: metaTagRobots
            type: string[]
            meta:
                widget: chipArray
                label:
                    de: Robots
                    en: Robots
                defaultValue: []
                autocomplete: true
                choices:
                    - { id: "noindex", name: "noindex" }
                    - { id: "index", name: "index" }
                    - { id: "follow", name: "follow" }
                    - { id: "nofollow", name: "nofollow" }
                    - { id: "noimageindex", name: "noimageindex" }
                    - { id: "none", name: "none" }
                    - { id: "noarchive", name: "noarchive" }
                    - { id: "nocache", name: "nocache" }
                    - { id: "nosnippet", name: "nosnippet" }
                    - { id: "nnavailable_after", name: "nnavailable_after" }
                helperText:
                    de: "<strong>Noindex</strong>: Weist eine Suchmaschine an, eine Seite nicht zu indizieren.<br/><strong>index</strong>: Weist eine Suchmaschine an, eine Seite zu indizieren. Beachten Sie, dass Sie dieses Meta-Tag nicht hinzufügen müssen; es ist die Voreinstellung.<br/><strong>follow</strong>: Auch wenn die Seite nicht indexiert ist, sollte der Crawler allen Links auf einer Seite folgen und Eigenkapital an die verlinkten Seiten weitergeben.<br/><strong>nofollow</strong>: Weist einen Crawler an, keinen Links auf einer Seite zu folgen oder Link-Equity weiterzugeben.<br/><strong>noimageindex</strong>: Weist einen Crawler an, keine Bilder auf einer Seite zu indizieren.<br/><strong>none</strong>: Entspricht der gleichzeitigen Verwendung der noindex- und nofollow-Tags.<br/><strong>noarchive</strong>: Suchmaschinen sollten keinen zwischengespeicherten Link zu dieser Seite auf einem SERP anzeigen.<br/><strong>nocache</strong>: Wie noarchive, aber nur von Internet Explorer und Firefox verwendet.<br/><strong>nosnippet</strong>: Weist eine Suchmaschine an, kein Snippet dieser Seite (d. h. Meta-Beschreibung) dieser Seite auf einem SERP anzuzeigen.<br/><strong>nnavailable_after</strong>: Suchmaschinen sollen diese Seite nach einem bestimmten Datum nicht mehr indexieren.<br/>"
                    en: "<strong>Noindex</strong>: Tells a search engine not to index a page.<br/><strong>index</strong>: Tells a search engine to index a page. Note that you don’t need to add this meta tag; it’s the default.<br/><strong>follow</strong>: Even if the page isn’t indexed, the crawler should follow all the links on a page and pass equity to the linked pages.<br/><strong>nofollow</strong>: Tells a crawler not to follow any links on a page or pass along any link equity.<br/><strong>noimageindex</strong>: Tells a crawler not to index any images on a page.<br/><strong>none</strong>: Equivalent to using both the noindex and nofollow tags simultaneously.<br/><strong>noarchive</strong>: Search engines should not show a cached link to this page on a SERP.<br/><strong>nocache</strong>: Same as noarchive, but only used by Internet Explorer and Firefox.<br/><strong>nosnippet</strong>: Tells a search engine not to show a snippet of this page (i.e. meta description) of this page on a SERP.<br/><strong>nnavailable_after</strong>: Search engines should no longer index this page after a particular date.<br/>"
          - name: metaKeywords
            type: string
            meta:
                label: { de: "SEO / Schlüsselwörter", en: "SEO / Keywords" }
                helperText:
                    de: "Beispiel: Stichwort1, Stichwort2, Stichwort3"
                    en: "Example: keyword1, keyword2, keyword3"
