diff --git a/api/collections/_article.yml b/api/collections/_article.yml deleted file mode 100644 index ce61e62..0000000 --- a/api/collections/_article.yml +++ /dev/null @@ -1,342 +0,0 @@ -name: article -type: tabs -meta: - label: - de: Einstellungen zum Artikel - en: Article Setings - activeTab: 0 -subFields: - - name: general - type: object - meta: - label: - de: Allgemein - en: General - css: - subFields: - - name: public - type: boolean - meta: - label: - de: Veröffentlicht - en: Public - helperText: - de: "Der Artikel wird auf der Seite angezeigt." - en: "This article is displayed on the page." - - name: publish_date - type: object - meta: - label: - de: Datum der Veröffentlichung - en: Release Date - css: "grid grid-50" - subFields: - - name: public_from - type: date - meta: - inputProps: - type: "datetime-local" - label: - de: Datum (ab) - en: Date (from) - - name: public_until - type: date - meta: - inputProps: - type: "datetime-local" - label: - de: Datum (bis) - en: Date (until) - - name: position - type: string - meta: - widget: select - label: - de: Position auf der Seite - en: Position on page - defaultValue: [] - choices: - - { id: "content", name: "Inhaltsbereich" } - - { id: "sidebar", name: "Sidebar" } - - name: sort - type: number - meta: - inputProps: - type: number - placeholder: 0 - label: { de: "Sortierung", en: "Sorting" } - helperText: - de: "1...5...10...100" - en: "1...5...10...100" - - name: content - type: object - meta: - label: - de: Inhalt - en: Content - css: - subFields: - - name: slug - type: string - meta: - label: { de: "Permalink", en: "Permalink" } - - name: title - type: string - meta: - label: { de: "Titel", en: "Title" } - - name: subtitle - type: string - meta: - label: { de: "Untertitel", en: "Subtitle" } - - name: types - type: tabs - meta: - label: - de: Inhalt dieses Artikel - en: Article Content - activeTab: 0 - subFields: - - name: teaser - type: string - meta: - widget: richtext - label: { de: "Teaser-Text des Artikel", en: "Article Teaser Text" } - - name: details - type: string - meta: - widget: richtext - label: { de: "Detail-Text des Artikel", en: "Article Detail Text" } - - name: contentMedia - type: object - meta: - label: - de: Medien - en: Media - css: - subFields: - - name: mediaFiles - type: object[] - meta: - label: { de: "Bilder", en: "Images" } - subFields: - - name: title - type: string - meta: - label: { de: "Datei-Titel", en: "File Title" } - - name: alternateText - type: string - meta: - label: { de: "Alternativer Text", en: "Alternate Text" } - - name: id - type: string - meta: - label: { de: "Technischer Name / ID", en: "Technical name / ID" } - - name: file - type: file - meta: - label: { de: "Datei", en: "File" } - - name: caption - type: string - meta: - label: { de: "Bildunterschrift", en: "Caption" } - - name: contentAttachments - type: object - meta: - label: - de: Anhänge / Downloads - en: Attachments / Downloads - css: - subFields: - - name: attachments - type: object[] - meta: - label: { de: "Anhänge", en: "Attachments" } - subFields: - - name: title - type: string - meta: - label: { de: "Datei-Titel", en: "File Title" } - - name: id - type: string - meta: - label: { de: "Technischer Name / ID", en: "Technical name / ID" } - - name: file - type: file - meta: - label: { de: "", en: "" } - - name: layout - type: tabs - meta: - label: - de: Layout - en: Layout - css: - subFields: - - name: variant - type: string - meta: - widget: select - label: - de: Erscheinungsbild - en: Appearance - defaultValue: ["_self"] - choices: - - { id: "top", name: { de: "Artikelbild oben (volle Breite)", en: "Article picture top (full width)" } } - - { id: "right", name: { de: "Artikelbild rechts (volle Höhe)", en: "Article picture right (full height)" } } - - { id: "bottom", name: { de: "Artikelbild unten (volle Breite)", en: "Article picture left (full width)" } } - - { id: "left", name: { de: "Artikelbild links (volle Höhe)", en: "Article picture left (full height)" } } - - { id: "after-teaser", name: { de: "Artikelbild unter Teaser (volle Breite)" , en: "Article picture under teaser (full width)" } } - - { id: "top-left", name: { de: "Artikelbild oben links", en: "Article picture above left" } } - - { id: "top-right", name: { de: "Artikelbild oben rechts", en: "Article picture above right" } } - - { id: "bottom-left", name: { de: "Artikelbild unten links", en: "Article picture below left" } } - - { id: "bottom-right", name: { de: "Artikelbild unten rechts", en: "Article picture below right" } } - - name: margin - type: object - meta: - label: { de: "Abstand nach außen (Margin)", en: "Distance to the outside (Margin)" } - subFields: - - name: top - type: string - meta: - widget: select - label: - de: Oben - en: Top - choices: - - { id: "", name: "Kein Abstand" } - - { id: "mt-xs", name: "Sehr kleiner Abstand" } - - { id: "mt-sm", name: "Kleiner Abstand" } - - { id: "mt-md", name: "Normal" } - - { id: "mt-lg", name: "Großer Abstand" } - - { id: "mt-xl", name: "Sehr großer Abstand" } - - name: right - type: string - meta: - widget: select - label: - de: Rechts - en: Right - choices: - - { id: "", name: "Kein Abstand" } - - { id: "mr-xs", name: "Sehr kleiner Abstand" } - - { id: "mr-sm", name: "Kleiner Abstand" } - - { id: "mr-md", name: "Normal" } - - { id: "mr-lg", name: "Großer Abstand" } - - { id: "mr-xl", name: "Sehr großer Abstand" } - - name: bottom - type: string - meta: - widget: select - label: - de: Unten - en: Bottom - choices: - - { id: "", name: "Kein Abstand" } - - { id: "mb-xs", name: "Sehr kleiner Abstand" } - - { id: "mb-sm", name: "Kleiner Abstand" } - - { id: "mb-md", name: "Normal" } - - { id: "mb-lg", name: "Großer Abstand" } - - { id: "mb-xl", name: "Sehr großer Abstand" } - - name: left - type: string - meta: - widget: select - label: - de: Links - en: Left - choices: - - { id: "", name: "Kein Abstand" } - - { id: "ml-xs", name: "Sehr kleiner Abstand" } - - { id: "ml-sm", name: "Kleiner Abstand" } - - { id: "ml-md", name: "Normal" } - - { id: "ml-lg", name: "Großer Abstand" } - - { id: "ml-xl", name: "Sehr großer Abstand" } - - name: padding - type: object - meta: - label: { de: "Abstand nach innen (Padding)", en: "Distance inside (Padding)" } - subFields: - - name: top - type: string - meta: - widget: select - label: - de: Oben - en: Top - choices: - - { id: "", name: "Kein Abstand" } - - { id: "pt-xs", name: "Sehr kleiner Abstand" } - - { id: "pt-sm", name: "Kleiner Abstand" } - - { id: "pt-md", name: "Normal" } - - { id: "pt-lg", name: "Großer Abstand" } - - { id: "pt-xl", name: "Sehr großer Abstand" } - - name: right - type: string - meta: - widget: select - label: - de: Rechts - en: Right - choices: - - { id: "", name: "Kein Abstand" } - - { id: "pr-xs", name: "Sehr kleiner Abstand" } - - { id: "pr-sm", name: "Kleiner Abstand" } - - { id: "pr-md", name: "Normal" } - - { id: "pr-lg", name: "Großer Abstand" } - - { id: "pr-xl", name: "Sehr großer Abstand" } - - name: bottom - type: string - meta: - widget: select - label: - de: Unten - en: Bottom - choices: - - { id: "", name: "Kein Abstand" } - - { id: "pb-xs", name: "Sehr kleiner Abstand" } - - { id: "pb-sm", name: "Kleiner Abstand" } - - { id: "pb-md", name: "Normal" } - - { id: "pb-lg", name: "Großer Abstand" } - - { id: "pb-xl", name: "Sehr großer Abstand" } - - name: left - type: string - meta: - widget: select - label: - de: Links - en: Left - choices: - - { id: "", name: "Kein Abstand" } - - { id: "pl-xs", name: "Sehr kleiner Abstand" } - - { id: "pl-sm", name: "Kleiner Abstand" } - - { id: "pl-md", name: "Normal" } - - { id: "pl-lg", name: "Großer Abstand" } - - { id: "pl-xl", name: "Sehr großer Abstand" } - - name: link - type: object - meta: - label: - de: Verlinkung - en: Link - css: - subFields: - - name: url - type: string - meta: - label: { de: "Ziel-URL", en: "Target URL" } - - name: text - type: string - meta: - label: { de: "Link-Beschriftung", en: "Link-Text" } - - name: target - type: string - meta: - widget: select - label: - de: Zielfenster - en: Target - defaultValue: ["_self"] - choices: - - { id: "_self", name: "(Standardwert) gleicher Tab oder Seite" } - - { id: "_blank", name: "Neuer Tab oder Fenster" } - - { id: "_parent", name: "Elternfenster" } diff --git a/api/collections/articles.yml b/api/collections/articles.yml index 7e8678b..3b4dafc 100644 --- a/api/collections/articles.yml +++ b/api/collections/articles.yml @@ -100,4 +100,4 @@ permissions: # file: hooks/article/delete_return.js fields: - - !include _article.yml + - !include "fields/_article.yml" diff --git a/api/collections/content.yml b/api/collections/content.yml index e09e2fa..907d947 100644 --- a/api/collections/content.yml +++ b/api/collections/content.yml @@ -102,7 +102,7 @@ hooks: fields: - name: path type: string - index: [ single, unique ] + index: [single, unique] meta: label: { de: "Pfad", en: "Path" } - name: blocks @@ -110,4 +110,4 @@ fields: meta: label: { de: "Artikel dieser Seite", en: "Page Articles" } subFields: - - !include _article.yml + - !include "fields/_article.yml" diff --git a/api/collections/fields/_article.yml b/api/collections/fields/_article.yml index d862918..9e61c7b 100644 --- a/api/collections/fields/_article.yml +++ b/api/collections/fields/_article.yml @@ -112,18 +112,28 @@ subFields: label: de: Inhalt dieses Artikel en: Article Content - activeTab: 0 + activeTab: 1 subFields: - name: teaser type: string meta: widget: richtext label: { de: "Teaser-Text des Artikel", en: "Article Teaser Text" } + - name: teaserContent + type: object + meta: + widget: contentBuilder + label: { de: "Teaser-Inhalt des Artikel", en: "Article Teaser Content" } - name: details type: string meta: widget: richtext label: { de: "Detail-Text des Artikel", en: "Article Detail Text" } + - name: detailsContent + type: object + meta: + widget: contentBuilder + label: { de: "Details des Artikel", en: "Article Details" } - name: contentMedia type: object meta: diff --git a/api/collections/prototype_articles.yml b/api/collections/prototype_articles.yml deleted file mode 100644 index b412841..0000000 --- a/api/collections/prototype_articles.yml +++ /dev/null @@ -1,103 +0,0 @@ -######################################################################## -# Articles -######################################################################## - -name: prototype_articles -uploadPath: ../media/prototype_articles -meta: - # Navigationseintrag in der Admin-UI - label: { de: "PROTOTYPE TEST - Artikel auf der Seite", en: "PROTOTYPE TEST -Page articles" } - # Icon (Material UI) für den Navigationseintrag - muiIcon: file-document-edit-outline - # Standardsortierung der Liste - defaultSort: { field: "article.general.sort", order: "ASC" } - # Admin-Backend Ansichten - defaultImageFilter: s - views: - # Mobile Darstellung - - type: simpleList - mediaQuery: "(max-width:599px)" - primaryText: path - columns: - - article.general.public - - article.content.title - - article.general.position - - article.general.sort - # Desktop - - type: table - mediaQuery: "(min-width:600px)" - columns: - - article.general.public - - article.content.title - - article.general.position - - article.general.sort - -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 - -permissions: - public: - methods: - get: true - post: false - put: false - delete: false - user: - methods: - get: true - post: true - put: true - delete: true - # token als Zusatzsicherung gegen Spam, mehr siehe Hook - "token:${PUBLIC_TOKEN}": - methods: - get: false - post: false - put: false - delete: false - -# hooks: -# post: -# create: -# type: javascript -# file: hooks/article/post_create.js -# put: -# update: -# type: javascript -# file: hooks/article/put_return.js -# delete: -# return: -# type: javascript -# file: hooks/article/delete_return.js - -fields: - - !include fields/_article.yml \ No newline at end of file