Update and rework project structure with new pagebuilder concept. (based on RK Architekten and SFU Politik configs and sources)
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
########################################################################
|
||||
# contact_form
|
||||
# Kontakt Formular
|
||||
########################################################################
|
||||
|
||||
name: contact_form
|
||||
@@ -20,20 +20,27 @@ meta:
|
||||
- email
|
||||
- subject
|
||||
|
||||
# Zugriff auf diese Kollektion
|
||||
permissions:
|
||||
# öffentlicher Zugriff
|
||||
public:
|
||||
methods:
|
||||
# Liste und Einzeleinträge lesen
|
||||
# checked via hook
|
||||
get: false
|
||||
# neuen Eintrag anlegen
|
||||
post: true
|
||||
# Eintrag editieren
|
||||
put: false
|
||||
# Eintrag löschen
|
||||
delete: false
|
||||
# zum Projekt zugeordneter Benutzer ohne Zusatzberechtigungen
|
||||
user:
|
||||
methods:
|
||||
get: false
|
||||
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:
|
||||
@@ -47,45 +54,22 @@ hooks:
|
||||
create:
|
||||
type: javascript
|
||||
file: hooks/contact_form/post_create.js
|
||||
return:
|
||||
type: javascript
|
||||
file: hooks/contact_form/post_return.js
|
||||
|
||||
fields:
|
||||
- name: firstname
|
||||
- name: name
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Vorname", en: "firstname" }
|
||||
- name: lastname
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Nachname", en: "lastname" }
|
||||
label: { de: "Name", en: "Name" }
|
||||
- name: email
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Email", en: "email" }
|
||||
- name: postcode
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Postleitzahl", en: "postcode" }
|
||||
label: { de: "Email", en: "Email" }
|
||||
- name: subject
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Betreff", en: "subject" }
|
||||
label: { de: "Betreff", en: "Subject" }
|
||||
- name: message
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Nachricht", en: "message" }
|
||||
- name: files
|
||||
type: object[]
|
||||
meta:
|
||||
label: { de: "Dateien", en: "files" }
|
||||
subFields:
|
||||
- name: file
|
||||
type: file
|
||||
meta:
|
||||
label: { de: "", en: "" }
|
||||
- name: title
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Dateititel", en: "file title" }
|
||||
widget: richtext
|
||||
label: { de: "Nachricht", en: "Message" }
|
||||
|
||||
@@ -9,7 +9,7 @@ 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" }
|
||||
label: { de: "Seiten / Inhalte", en: "Pages / Content" }
|
||||
# Icon (Material UI) für den Navigationseintrag
|
||||
muiIcon: web
|
||||
# Identifizierung eines Eintrags für z.B. Select-Boxen in der Admin-UI
|
||||
@@ -24,75 +24,113 @@ meta:
|
||||
mediaQuery: "(max-width:599px)"
|
||||
primaryText: path
|
||||
columns:
|
||||
- source: path
|
||||
twig: "{{path}}"
|
||||
- source: public
|
||||
- source: locale
|
||||
type: flag
|
||||
- source: path
|
||||
# Desktop
|
||||
- type: table
|
||||
mediaQuery: "(min-width:600px)"
|
||||
columns:
|
||||
- source: path
|
||||
twig: "{{path}}"
|
||||
- source: public
|
||||
- source: type
|
||||
- source: locale
|
||||
type: flag
|
||||
- source: path
|
||||
- source: project.general.title
|
||||
|
||||
subNavigation:
|
||||
- name: page
|
||||
label:
|
||||
de: Standardseiten
|
||||
en: Default Pages
|
||||
muiIcon: book-open-page-variant
|
||||
defaultSort:
|
||||
field: "path"
|
||||
order: "ASC"
|
||||
views:
|
||||
- type: simpleList
|
||||
mediaQuery: "(max-width:599px)"
|
||||
primaryText: titel
|
||||
secondaryText: path
|
||||
tertiaryText: public
|
||||
columns:
|
||||
- source: public
|
||||
filter: true
|
||||
- source: locale
|
||||
type: flag
|
||||
- source: path
|
||||
- type: table
|
||||
mediaQuery: "(min-width:600px)"
|
||||
columns:
|
||||
- source: public
|
||||
filter: true
|
||||
- source: locale
|
||||
type: flag
|
||||
- source: path
|
||||
- source: updateTime
|
||||
label: { de: "letzte Aktualisierung", en: "last update" }
|
||||
type: date
|
||||
filter:
|
||||
type: page
|
||||
|
||||
tablist:
|
||||
meta:
|
||||
expand: assignments
|
||||
# meta:
|
||||
# expand: contentTab
|
||||
tabs:
|
||||
- name: general
|
||||
meta:
|
||||
label: { de: "Allgemein", en: "General" }
|
||||
label: { de: "Allgemein", en: "General" }
|
||||
subFields:
|
||||
- source: public
|
||||
- source: path
|
||||
- source: locale
|
||||
- source: type
|
||||
- source: tags
|
||||
- source: priority
|
||||
- name: meta
|
||||
meta:
|
||||
label: { de: "Meta", en: "Meta" }
|
||||
source: meta
|
||||
label: { de: "Meta", en: "Meta" }
|
||||
subFields:
|
||||
- source: meta
|
||||
- name: assignments
|
||||
meta:
|
||||
label: { de: "Verknüpfungen", en: "Assignments" }
|
||||
source: meta
|
||||
- name: contentTab
|
||||
label: { de: "Seiteninhalt", en: "Page Content" }
|
||||
subFields:
|
||||
- source: pages
|
||||
- source: linkedArticleEntries
|
||||
- source: pageBuilder
|
||||
- name: project
|
||||
label: { de: "Projektdetails", en: "Project Details" }
|
||||
dependsOn:
|
||||
eval: $.type?.includes("project")
|
||||
subFields:
|
||||
- source: project
|
||||
|
||||
imageFilter:
|
||||
xs:
|
||||
- fit: true
|
||||
height: 90
|
||||
width: 90
|
||||
resampling: "lancos"
|
||||
resampling: "lanczos"
|
||||
quality: 60
|
||||
s:
|
||||
- fit: true
|
||||
height: 300
|
||||
width: 300
|
||||
resampling: "lancos"
|
||||
resampling: "lanczos"
|
||||
quality: 60
|
||||
m:
|
||||
- fit: true
|
||||
height: 600
|
||||
width: 600
|
||||
resampling: "lancos"
|
||||
resampling: "lanczos"
|
||||
quality: 60
|
||||
l:
|
||||
- fit: true
|
||||
height: 1200
|
||||
width: 1200
|
||||
resampling: "lancos"
|
||||
resampling: "lanczos"
|
||||
quality: 60
|
||||
xl:
|
||||
- fit: true
|
||||
height: 2000
|
||||
width: 2000
|
||||
resampling: "lancos"
|
||||
resampling: "lanczos"
|
||||
quality: 60
|
||||
|
||||
# Zugriff auf diese Kollektion
|
||||
@@ -111,87 +149,92 @@ permissions:
|
||||
# zum Projekt zugeordneter Benutzer ohne Zusatzberechtigungen
|
||||
user:
|
||||
methods:
|
||||
# Liste und Einzeleinträge lesen
|
||||
get: true
|
||||
# neuen Eintrag anlegen
|
||||
post: true
|
||||
# Eintrag editieren
|
||||
put: true
|
||||
# Eintrag löschen
|
||||
delete: true
|
||||
# token als Zusatzsicherung gegen Spam, mehr siehe Hook
|
||||
"token:${PUBLIC_TOKEN}":
|
||||
methods:
|
||||
# Liste und Einzeleinträge lesen
|
||||
get: false
|
||||
# neuen Eintrag anlegen
|
||||
post: false
|
||||
# Eintrag editieren
|
||||
put: false
|
||||
# Eintrag löschen
|
||||
delete: false
|
||||
|
||||
hooks:
|
||||
post:
|
||||
return:
|
||||
create:
|
||||
type: javascript
|
||||
file: hooks/content/post_return.js
|
||||
file: hooks/content/post_create.js
|
||||
put:
|
||||
return:
|
||||
update:
|
||||
type: javascript
|
||||
file: hooks/content/put_return.js
|
||||
delete:
|
||||
return:
|
||||
type: javascript
|
||||
file: hooks/content/delete_return.js
|
||||
file: hooks/content/put_update.js
|
||||
|
||||
# Feldliste der Kollektion
|
||||
fields:
|
||||
# Allgemeine Felder
|
||||
- name: public
|
||||
type: boolean
|
||||
meta:
|
||||
filter: true
|
||||
label:
|
||||
de: Veröffentlicht
|
||||
en: Public
|
||||
helperText:
|
||||
de: Der Inhalt wird auf der Seite angezeigt.
|
||||
en: This content is displayed on the page.
|
||||
- name: path
|
||||
type: string
|
||||
index: [single, unique]
|
||||
meta:
|
||||
hideInRoot: true
|
||||
filter: true
|
||||
label: { de: "Pfad", en: "Path" }
|
||||
helperText:
|
||||
de: "Der Pfad muss eindeutig sein und ohne ein Slash (/) beginnen und enden."
|
||||
de: "Der Pfad muss eindeutig sein, und zwingend ohne einen Slash (/) beginnen und enden."
|
||||
en: "The path must be unique and must start and end without a slash (/)."
|
||||
- !include fields/_locale.yml
|
||||
- name: pages
|
||||
- name: type
|
||||
type: string[]
|
||||
index: [single]
|
||||
meta:
|
||||
hideInRoot: true
|
||||
helperText:
|
||||
de: "Verknüpft Seiten mit beliebigen anderen Seiten."
|
||||
en: "Links the page to any other page."
|
||||
widget: chipArray
|
||||
filter: true
|
||||
defaultValue:
|
||||
eval: |
|
||||
$navigation?.name ? [$navigation.name] : []
|
||||
label:
|
||||
de: Verknüpfung zu Seiten
|
||||
en: Assignment to pages
|
||||
defaultValue: []
|
||||
de: Inhaltstyp
|
||||
en: type of content
|
||||
autocomplete: true
|
||||
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: "<td>{{ article.content.title }}</td><td>{{ article.general.locale }}</td>" }
|
||||
fieldviews:
|
||||
- { source: article.general.public, type: boolean }
|
||||
- { source: article.content.title, widget: text }
|
||||
- { source: article.general.type, widget: select }
|
||||
- { source: article.general.locale, widget: flag }
|
||||
- id: page
|
||||
name:
|
||||
de: Seite (Standard)
|
||||
en: Page (Standard)
|
||||
- id: PageProjects
|
||||
name:
|
||||
de: Seite (Projekte)
|
||||
en: Page (Projects)
|
||||
- id: project
|
||||
name:
|
||||
de: Projekt
|
||||
en: Project
|
||||
- name: tags
|
||||
type: string[]
|
||||
meta:
|
||||
hideInRoot: true
|
||||
widget: chipArray
|
||||
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
|
||||
@@ -203,27 +246,10 @@ fields:
|
||||
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
|
||||
|
||||
# Felder für Meta-Informationen der Seite (Meta-Tags) im Tab "Meta"
|
||||
- name: meta
|
||||
type: object
|
||||
meta:
|
||||
hideInRoot: true
|
||||
subFields:
|
||||
- name: metaTitle
|
||||
type: string
|
||||
@@ -263,3 +289,6 @@ fields:
|
||||
helperText:
|
||||
de: "Beispiel: Stichwort1, Stichwort2, Stichwort3"
|
||||
en: "Example: keyword1, keyword2, keyword3"
|
||||
|
||||
# Page Builder im Tab "Seiteninhalt"
|
||||
- !include fields/pageBuilder.yml
|
||||
|
||||
@@ -1,75 +0,0 @@
|
||||
########################################################################
|
||||
# email
|
||||
########################################################################
|
||||
|
||||
name: email
|
||||
uploadPath: ../media/email
|
||||
meta:
|
||||
label: { de: "Kontaktformular", en: "Contact Form" }
|
||||
muiIcon: email
|
||||
rowIdentTpl: { twig: "{{ email }} - {{ subject }}" }
|
||||
views:
|
||||
- type: simpleList
|
||||
mediaQuery: "(max-width: 600px)"
|
||||
primaryText: email
|
||||
secondaryText: subject
|
||||
tertiaryText: insertTime
|
||||
- type: table
|
||||
columns:
|
||||
- insertTime
|
||||
- email
|
||||
- subject
|
||||
|
||||
# Zugriff auf diese Kollektion
|
||||
permissions:
|
||||
# öffentlicher Zugriff
|
||||
public:
|
||||
methods:
|
||||
# Liste und Einzeleinträge lesen
|
||||
# checked via hook
|
||||
get: false
|
||||
# neuen Eintrag anlegen
|
||||
post: true
|
||||
# Eintrag editieren
|
||||
put: false
|
||||
# Eintrag löschen
|
||||
delete: false
|
||||
# zum Projekt zugeordneter Benutzer ohne Zusatzberechtigungen
|
||||
user:
|
||||
methods:
|
||||
get: false
|
||||
post: false
|
||||
put: false
|
||||
delete: false
|
||||
# token als Zusatzsicherung gegen Spam, mehr siehe Hook
|
||||
"token:${PUBLIC_TOKEN}":
|
||||
methods:
|
||||
get: false
|
||||
post: true
|
||||
put: false
|
||||
delete: false
|
||||
|
||||
hooks:
|
||||
post:
|
||||
create:
|
||||
type: javascript
|
||||
file: hooks/email/post_create.js
|
||||
|
||||
fields:
|
||||
- name: name
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Name", en: "Name" }
|
||||
- name: email
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Email", en: "Email" }
|
||||
- name: subject
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Betreff", en: "Subject" }
|
||||
- name: message
|
||||
type: string
|
||||
meta:
|
||||
widget: richtext
|
||||
label: { de: "Nachricht", en: "Message" }
|
||||
59
api/collections/fields/_company.yml
Normal file
59
api/collections/fields/_company.yml
Normal file
@@ -0,0 +1,59 @@
|
||||
name: company
|
||||
type: object
|
||||
subFields:
|
||||
- name: companyName
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Name des Unternehmens", en: "Company Name" }
|
||||
- name: companyWebUrl
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "URL zur Webseite", en: "Website URL" }
|
||||
- name: facebookUrl
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Facebook URL", en: "Facebook URL" }
|
||||
- name: instagramUrl
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Instagram URL", en: "Instagram URL" }
|
||||
- name: twitterUrl
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Twitter URL", en: "Twitter URL" }
|
||||
- name: companyAddresses
|
||||
type: object[]
|
||||
meta:
|
||||
label:
|
||||
de: Adresse
|
||||
en: Adresse
|
||||
css:
|
||||
subFields:
|
||||
- name: street
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Straße", en: "Street" }
|
||||
- name: houseNumber
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Hausnummer", en: "House number" }
|
||||
- name: postcode
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "PLZ", en: "ZIP" }
|
||||
- name: city
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Ort", en: "City" }
|
||||
- name: tel
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Telefon", en: "Phone number" }
|
||||
- name: fax
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Fax", en: "Fax" }
|
||||
- name: email
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "E-Mail", en: "E-Mail" }
|
||||
@@ -1,7 +1,6 @@
|
||||
name: locale
|
||||
type: string
|
||||
meta:
|
||||
hideInRoot: true
|
||||
widget: select
|
||||
label: { de: "Sprache", en: "Language" }
|
||||
helperText:
|
||||
@@ -12,231 +11,231 @@ meta:
|
||||
filter: true
|
||||
defaultValue: de
|
||||
choices:
|
||||
- { id: af, name: { key: "labels.locales.af" } }
|
||||
- { id: af-ZA, name: { key: "labels.locales.af-ZA" } }
|
||||
- { id: ar, name: { key: "labels.locales.ar" } }
|
||||
- { id: ar-AE, name: { key: "labels.locales.ar-AE" } }
|
||||
- { id: ar-BH, name: { key: "labels.locales.ar-BH" } }
|
||||
- { id: ar-DZ, name: { key: "labels.locales.ar-DZ" } }
|
||||
- { id: ar-EG, name: { key: "labels.locales.ar-EG" } }
|
||||
- { id: ar-IQ, name: { key: "labels.locales.ar-IQ" } }
|
||||
- { id: ar-JO, name: { key: "labels.locales.ar-JO" } }
|
||||
- { id: ar-KW, name: { key: "labels.locales.ar-KW" } }
|
||||
- { id: ar-LB, name: { key: "labels.locales.ar-LB" } }
|
||||
- { id: ar-LY, name: { key: "labels.locales.ar-LY" } }
|
||||
- { id: ar-MA, name: { key: "labels.locales.ar-MA" } }
|
||||
- { id: ar-OM, name: { key: "labels.locales.ar-OM" } }
|
||||
- { id: ar-QA, name: { key: "labels.locales.ar-QA" } }
|
||||
- { id: ar-SA, name: { key: "labels.locales.ar-SA" } }
|
||||
- { id: ar-SY, name: { key: "labels.locales.ar-SY" } }
|
||||
- { id: ar-TN, name: { key: "labels.locales.ar-TN" } }
|
||||
- { id: ar-YE, name: { key: "labels.locales.ar-YE" } }
|
||||
- { id: az, name: { key: "labels.locales.az" } }
|
||||
- { id: az-AZ, name: { key: "labels.locales.az-AZ" } }
|
||||
- { id: be, name: { key: "labels.locales.be" } }
|
||||
- { id: be-BY, name: { key: "labels.locales.be-BY" } }
|
||||
- { id: bg, name: { key: "labels.locales.bg" } }
|
||||
- { id: bg-BG, name: { key: "labels.locales.bg-BG" } }
|
||||
- { id: bs-BA, name: { key: "labels.locales.bs-BA" } }
|
||||
- { id: ca, name: { key: "labels.locales.ca" } }
|
||||
- { id: ca-ES, name: { key: "labels.locales.ca-ES" } }
|
||||
- { id: cs, name: { key: "labels.locales.cs" } }
|
||||
- { id: cs-CZ, name: { key: "labels.locales.cs-CZ" } }
|
||||
- { id: cy, name: { key: "labels.locales.cy" } }
|
||||
- { id: cy-GB, name: { key: "labels.locales.cy-GB" } }
|
||||
- { id: da, name: { key: "labels.locales.da" } }
|
||||
- { id: da-DK, name: { key: "labels.locales.da-DK" } }
|
||||
# - { id: af, name: { key: "labels.locales.af" } }
|
||||
# - { id: af-ZA, name: { key: "labels.locales.af-ZA" } }
|
||||
# - { id: ar, name: { key: "labels.locales.ar" } }
|
||||
# - { id: ar-AE, name: { key: "labels.locales.ar-AE" } }
|
||||
# - { id: ar-BH, name: { key: "labels.locales.ar-BH" } }
|
||||
# - { id: ar-DZ, name: { key: "labels.locales.ar-DZ" } }
|
||||
# - { id: ar-EG, name: { key: "labels.locales.ar-EG" } }
|
||||
# - { id: ar-IQ, name: { key: "labels.locales.ar-IQ" } }
|
||||
# - { id: ar-JO, name: { key: "labels.locales.ar-JO" } }
|
||||
# - { id: ar-KW, name: { key: "labels.locales.ar-KW" } }
|
||||
# - { id: ar-LB, name: { key: "labels.locales.ar-LB" } }
|
||||
# - { id: ar-LY, name: { key: "labels.locales.ar-LY" } }
|
||||
# - { id: ar-MA, name: { key: "labels.locales.ar-MA" } }
|
||||
# - { id: ar-OM, name: { key: "labels.locales.ar-OM" } }
|
||||
# - { id: ar-QA, name: { key: "labels.locales.ar-QA" } }
|
||||
# - { id: ar-SA, name: { key: "labels.locales.ar-SA" } }
|
||||
# - { id: ar-SY, name: { key: "labels.locales.ar-SY" } }
|
||||
# - { id: ar-TN, name: { key: "labels.locales.ar-TN" } }
|
||||
# - { id: ar-YE, name: { key: "labels.locales.ar-YE" } }
|
||||
# - { id: az, name: { key: "labels.locales.az" } }
|
||||
# - { id: az-AZ, name: { key: "labels.locales.az-AZ" } }
|
||||
# - { id: be, name: { key: "labels.locales.be" } }
|
||||
# - { id: be-BY, name: { key: "labels.locales.be-BY" } }
|
||||
# - { id: bg, name: { key: "labels.locales.bg" } }
|
||||
# - { id: bg-BG, name: { key: "labels.locales.bg-BG" } }
|
||||
# - { id: bs-BA, name: { key: "labels.locales.bs-BA" } }
|
||||
# - { id: ca, name: { key: "labels.locales.ca" } }
|
||||
# - { id: ca-ES, name: { key: "labels.locales.ca-ES" } }
|
||||
# - { id: cs, name: { key: "labels.locales.cs" } }
|
||||
# - { id: cs-CZ, name: { key: "labels.locales.cs-CZ" } }
|
||||
# - { id: cy, name: { key: "labels.locales.cy" } }
|
||||
# - { id: cy-GB, name: { key: "labels.locales.cy-GB" } }
|
||||
# - { id: da, name: { key: "labels.locales.da" } }
|
||||
# - { id: da-DK, name: { key: "labels.locales.da-DK" } }
|
||||
- { id: de, name: { key: "labels.locales.de" } }
|
||||
- { id: de-AT, name: { key: "labels.locales.de-AT" } }
|
||||
- { id: de-CH, name: { key: "labels.locales.de-CH" } }
|
||||
- { id: de-DE, name: { key: "labels.locales.de-DE" } }
|
||||
- { id: de-LI, name: { key: "labels.locales.de-LI" } }
|
||||
- { id: de-LU, name: { key: "labels.locales.de-LU" } }
|
||||
- { id: dv, name: { key: "labels.locales.dv" } }
|
||||
- { id: dv-MV, name: { key: "labels.locales.dv-MV" } }
|
||||
- { id: el, name: { key: "labels.locales.el" } }
|
||||
- { id: el-GR, name: { key: "labels.locales.el-GR" } }
|
||||
# - { id: de-AT, name: { key: "labels.locales.de-AT" } }
|
||||
# - { id: de-CH, name: { key: "labels.locales.de-CH" } }
|
||||
# - { id: de-DE, name: { key: "labels.locales.de-DE" } }
|
||||
# - { id: de-LI, name: { key: "labels.locales.de-LI" } }
|
||||
# - { id: de-LU, name: { key: "labels.locales.de-LU" } }
|
||||
# - { id: dv, name: { key: "labels.locales.dv" } }
|
||||
# - { id: dv-MV, name: { key: "labels.locales.dv-MV" } }
|
||||
# - { id: el, name: { key: "labels.locales.el" } }
|
||||
# - { id: el-GR, name: { key: "labels.locales.el-GR" } }
|
||||
- { id: en, name: { key: "labels.locales.en" } }
|
||||
- { id: en-AU, name: { key: "labels.locales.en-AU" } }
|
||||
- { id: en-BZ, name: { key: "labels.locales.en-BZ" } }
|
||||
- { id: en-CA, name: { key: "labels.locales.en-CA" } }
|
||||
- { id: en-CB, name: { key: "labels.locales.en-CB" } }
|
||||
- { id: en-GB, name: { key: "labels.locales.en-GB" } }
|
||||
- { id: en-IE, name: { key: "labels.locales.en-IE" } }
|
||||
- { id: en-JM, name: { key: "labels.locales.en-JM" } }
|
||||
- { id: en-NZ, name: { key: "labels.locales.en-NZ" } }
|
||||
- { id: en-PH, name: { key: "labels.locales.en-PH" } }
|
||||
- { id: en-TT, name: { key: "labels.locales.en-TT" } }
|
||||
- { id: en-US, name: { key: "labels.locales.en-US" } }
|
||||
- { id: en-ZA, name: { key: "labels.locales.en-ZA" } }
|
||||
- { id: en-ZW, name: { key: "labels.locales.en-ZW" } }
|
||||
- { id: eo, name: { key: "labels.locales.eo" } }
|
||||
- { id: es, name: { key: "labels.locales.es" } }
|
||||
- { id: es-AR, name: { key: "labels.locales.es-AR" } }
|
||||
- { id: es-BO, name: { key: "labels.locales.es-BO" } }
|
||||
- { id: es-CL, name: { key: "labels.locales.es-CL" } }
|
||||
- { id: es-CO, name: { key: "labels.locales.es-CO" } }
|
||||
- { id: es-CR, name: { key: "labels.locales.es-CR" } }
|
||||
- { id: es-DO, name: { key: "labels.locales.es-DO" } }
|
||||
- { id: es-EC, name: { key: "labels.locales.es-EC" } }
|
||||
- { id: es-ES, name: { key: "labels.locales.es-ES" } }
|
||||
- { id: es-GT, name: { key: "labels.locales.es-GT" } }
|
||||
- { id: es-HN, name: { key: "labels.locales.es-HN" } }
|
||||
- { id: es-MX, name: { key: "labels.locales.es-MX" } }
|
||||
- { id: es-NI, name: { key: "labels.locales.es-NI" } }
|
||||
- { id: es-PA, name: { key: "labels.locales.es-PA" } }
|
||||
- { id: es-PE, name: { key: "labels.locales.es-PE" } }
|
||||
- { id: es-PR, name: { key: "labels.locales.es-PR" } }
|
||||
- { id: es-PY, name: { key: "labels.locales.es-PY" } }
|
||||
- { id: es-SV, name: { key: "labels.locales.es-SV" } }
|
||||
- { id: es-UY, name: { key: "labels.locales.es-UY" } }
|
||||
- { id: es-VE, name: { key: "labels.locales.es-VE" } }
|
||||
- { id: et, name: { key: "labels.locales.et" } }
|
||||
- { id: et-EE, name: { key: "labels.locales.et-EE" } }
|
||||
- { id: eu, name: { key: "labels.locales.eu" } }
|
||||
- { id: eu-ES, name: { key: "labels.locales.eu-ES" } }
|
||||
- { id: fa, name: { key: "labels.locales.fa" } }
|
||||
- { id: fa-IR, name: { key: "labels.locales.fa-IR" } }
|
||||
- { id: fi, name: { key: "labels.locales.fi" } }
|
||||
- { id: fi-FI, name: { key: "labels.locales.fi-FI" } }
|
||||
- { id: fo, name: { key: "labels.locales.fo" } }
|
||||
- { id: fo-FO, name: { key: "labels.locales.fo-FO" } }
|
||||
- { id: fr, name: { key: "labels.locales.fr" } }
|
||||
- { id: fr-BE, name: { key: "labels.locales.fr-BE" } }
|
||||
- { id: fr-CA, name: { key: "labels.locales.fr-CA" } }
|
||||
- { id: fr-CH, name: { key: "labels.locales.fr-CH" } }
|
||||
- { id: fr-FR, name: { key: "labels.locales.fr-FR" } }
|
||||
- { id: fr-LU, name: { key: "labels.locales.fr-LU" } }
|
||||
- { id: fr-MC, name: { key: "labels.locales.fr-MC" } }
|
||||
- { id: gl, name: { key: "labels.locales.gl" } }
|
||||
- { id: gl-ES, name: { key: "labels.locales.gl-ES" } }
|
||||
- { id: gu, name: { key: "labels.locales.gu" } }
|
||||
- { id: gu-IN, name: { key: "labels.locales.gu-IN" } }
|
||||
- { id: he, name: { key: "labels.locales.he" } }
|
||||
- { id: he-IL, name: { key: "labels.locales.he-IL" } }
|
||||
- { id: hi, name: { key: "labels.locales.hi" } }
|
||||
- { id: hi-IN, name: { key: "labels.locales.hi-IN" } }
|
||||
- { id: hr, name: { key: "labels.locales.hr" } }
|
||||
- { id: hr-BA, name: { key: "labels.locales.hr-BA" } }
|
||||
- { id: hr-HR, name: { key: "labels.locales.hr-HR" } }
|
||||
- { id: hu, name: { key: "labels.locales.hu" } }
|
||||
- { id: hu-HU, name: { key: "labels.locales.hu-HU" } }
|
||||
- { id: hy, name: { key: "labels.locales.hy" } }
|
||||
- { id: hy-AM, name: { key: "labels.locales.hy-AM" } }
|
||||
- { id: id, name: { key: "labels.locales.id" } }
|
||||
- { id: id-ID, name: { key: "labels.locales.id-ID" } }
|
||||
- { id: is, name: { key: "labels.locales.is" } }
|
||||
- { id: is-IS, name: { key: "labels.locales.is-IS" } }
|
||||
- { id: it, name: { key: "labels.locales.it" } }
|
||||
- { id: it-CH, name: { key: "labels.locales.it-CH" } }
|
||||
- { id: it-IT, name: { key: "labels.locales.it-IT" } }
|
||||
- { id: ja, name: { key: "labels.locales.ja" } }
|
||||
- { id: ja-JP, name: { key: "labels.locales.ja-JP" } }
|
||||
- { id: ka, name: { key: "labels.locales.ka" } }
|
||||
- { id: ka-GE, name: { key: "labels.locales.ka-GE" } }
|
||||
- { id: kk, name: { key: "labels.locales.kk" } }
|
||||
- { id: kk-KZ, name: { key: "labels.locales.kk-KZ" } }
|
||||
- { id: kn, name: { key: "labels.locales.kn" } }
|
||||
- { id: kn-IN, name: { key: "labels.locales.kn-IN" } }
|
||||
- { id: ko, name: { key: "labels.locales.ko" } }
|
||||
- { id: ko-KR, name: { key: "labels.locales.ko-KR" } }
|
||||
- { id: kok, name: { key: "labels.locales.kok" } }
|
||||
- { id: kok-IN, name: { key: "labels.locales.kok-IN" } }
|
||||
- { id: ky, name: { key: "labels.locales.ky" } }
|
||||
- { id: ky-KG, name: { key: "labels.locales.ky-KG" } }
|
||||
- { id: lt, name: { key: "labels.locales.lt" } }
|
||||
- { id: lt-LT, name: { key: "labels.locales.lt-LT" } }
|
||||
- { id: lv, name: { key: "labels.locales.lv" } }
|
||||
- { id: lv-LV, name: { key: "labels.locales.lv-LV" } }
|
||||
- { id: mi, name: { key: "labels.locales.mi" } }
|
||||
- { id: mi-NZ, name: { key: "labels.locales.mi-NZ" } }
|
||||
- { id: mk, name: { key: "labels.locales.mk" } }
|
||||
- { id: mk-MK, name: { key: "labels.locales.mk-MK" } }
|
||||
- { id: mn, name: { key: "labels.locales.mn" } }
|
||||
- { id: mn-MN, name: { key: "labels.locales.mn-MN" } }
|
||||
- { id: mr, name: { key: "labels.locales.mr" } }
|
||||
- { id: mr-IN, name: { key: "labels.locales.mr-IN" } }
|
||||
- { id: ms, name: { key: "labels.locales.ms" } }
|
||||
- { id: ms-BN, name: { key: "labels.locales.ms-BN" } }
|
||||
- { id: ms-MY, name: { key: "labels.locales.ms-MY" } }
|
||||
- { id: mt, name: { key: "labels.locales.mt" } }
|
||||
- { id: mt-MT, name: { key: "labels.locales.mt-MT" } }
|
||||
- { id: nb, name: { key: "labels.locales.nb" } }
|
||||
- { id: nb-NO, name: { key: "labels.locales.nb-NO" } }
|
||||
- { id: nl, name: { key: "labels.locales.nl" } }
|
||||
- { id: nl-BE, name: { key: "labels.locales.nl-BE" } }
|
||||
- { id: nl-NL, name: { key: "labels.locales.nl-NL" } }
|
||||
- { id: nn-NO, name: { key: "labels.locales.nn-NO" } }
|
||||
- { id: ns, name: { key: "labels.locales.ns" } }
|
||||
- { id: ns-ZA, name: { key: "labels.locales.ns-ZA" } }
|
||||
- { id: pa, name: { key: "labels.locales.pa" } }
|
||||
- { id: pa-IN, name: { key: "labels.locales.pa-IN" } }
|
||||
- { id: pl, name: { key: "labels.locales.pl" } }
|
||||
- { id: pl-PL, name: { key: "labels.locales.pl-PL" } }
|
||||
- { id: ps, name: { key: "labels.locales.ps" } }
|
||||
- { id: ps-AR, name: { key: "labels.locales.ps-AR" } }
|
||||
- { id: pt, name: { key: "labels.locales.pt" } }
|
||||
- { id: pt-BR, name: { key: "labels.locales.pt-BR" } }
|
||||
- { id: pt-PT, name: { key: "labels.locales.pt-PT" } }
|
||||
- { id: qu, name: { key: "labels.locales.qu" } }
|
||||
- { id: qu-BO, name: { key: "labels.locales.qu-BO" } }
|
||||
- { id: qu-EC, name: { key: "labels.locales.qu-EC" } }
|
||||
- { id: qu-PE, name: { key: "labels.locales.qu-PE" } }
|
||||
- { id: ro, name: { key: "labels.locales.ro" } }
|
||||
- { id: ro-RO, name: { key: "labels.locales.ro-RO" } }
|
||||
- { id: ru, name: { key: "labels.locales.ru" } }
|
||||
- { id: ru-RU, name: { key: "labels.locales.ru-RU" } }
|
||||
- { id: sa, name: { key: "labels.locales.sa" } }
|
||||
- { id: sa-IN, name: { key: "labels.locales.sa-IN" } }
|
||||
- { id: se, name: { key: "labels.locales.se" } }
|
||||
- { id: se-FI, name: { key: "labels.locales.se-FI" } }
|
||||
- { id: se-NO, name: { key: "labels.locales.se-NO" } }
|
||||
- { id: se-SE, name: { key: "labels.locales.se-SE" } }
|
||||
- { id: sk, name: { key: "labels.locales.sk" } }
|
||||
- { id: sk-SK, name: { key: "labels.locales.sk-SK" } }
|
||||
- { id: sl, name: { key: "labels.locales.sl" } }
|
||||
- { id: sl-SI, name: { key: "labels.locales.sl-SI" } }
|
||||
- { id: sq, name: { key: "labels.locales.sq" } }
|
||||
- { id: sq-AL, name: { key: "labels.locales.sq-AL" } }
|
||||
- { id: sr-BA, name: { key: "labels.locales.sr-BA" } }
|
||||
- { id: sr-SP, name: { key: "labels.locales.sr-SP" } }
|
||||
- { id: sv, name: { key: "labels.locales.sv" } }
|
||||
- { id: sv-FI, name: { key: "labels.locales.sv-FI" } }
|
||||
- { id: sv-SE, name: { key: "labels.locales.sv-SE" } }
|
||||
- { id: sw, name: { key: "labels.locales.sw" } }
|
||||
- { id: sw-KE, name: { key: "labels.locales.sw-KE" } }
|
||||
- { id: syr, name: { key: "labels.locales.syr" } }
|
||||
- { id: syr-SY, name: { key: "labels.locales.syr-SY" } }
|
||||
- { id: ta, name: { key: "labels.locales.ta" } }
|
||||
- { id: ta-IN, name: { key: "labels.locales.ta-IN" } }
|
||||
- { id: te, name: { key: "labels.locales.te" } }
|
||||
- { id: te-IN, name: { key: "labels.locales.te-IN" } }
|
||||
- { id: th, name: { key: "labels.locales.th" } }
|
||||
- { id: th-TH, name: { key: "labels.locales.th-TH" } }
|
||||
- { id: tl, name: { key: "labels.locales.tl" } }
|
||||
- { id: tl-PH, name: { key: "labels.locales.tl-PH" } }
|
||||
- { id: tn, name: { key: "labels.locales.tn" } }
|
||||
- { id: tn-ZA, name: { key: "labels.locales.tn-ZA" } }
|
||||
- { id: tr, name: { key: "labels.locales.tr" } }
|
||||
- { id: tr-TR, name: { key: "labels.locales.tr-TR" } }
|
||||
- { id: tt, name: { key: "labels.locales.tt" } }
|
||||
- { id: tt-RU, name: { key: "labels.locales.tt-RU" } }
|
||||
- { id: ts, name: { key: "labels.locales.ts" } }
|
||||
- { id: uk, name: { key: "labels.locales.uk" } }
|
||||
- { id: uk-UA, name: { key: "labels.locales.uk-UA" } }
|
||||
- { id: ur, name: { key: "labels.locales.ur" } }
|
||||
- { id: ur-PK, name: { key: "labels.locales.ur-PK" } }
|
||||
- { id: uz, name: { key: "labels.locales.uz" } }
|
||||
- { id: uz-UZ, name: { key: "labels.locales.uz-UZ" } }
|
||||
- { id: vi, name: { key: "labels.locales.vi" } }
|
||||
- { id: vi-VN, name: { key: "labels.locales.vi-VN" } }
|
||||
- { id: xh, name: { key: "labels.locales.xh" } }
|
||||
- { id: xh-ZA, name: { key: "labels.locales.xh-ZA" } }
|
||||
- { id: zh, name: { key: "labels.locales.zh" } }
|
||||
- { id: zh-CN, name: { key: "labels.locales.zh-CN" } }
|
||||
- { id: zh-HK, name: { key: "labels.locales.zh-HK" } }
|
||||
- { id: zh-MO, name: { key: "labels.locales.zh-MO" } }
|
||||
- { id: zh-SG, name: { key: "labels.locales.zh-SG" } }
|
||||
- { id: zh-TW, name: { key: "labels.locales.zh-TW" } }
|
||||
- { id: zu, name: { key: "labels.locales.zu" } }
|
||||
- { id: zu-ZA, name: { key: "labels.locales.zu-ZA" } }
|
||||
# - { id: en-AU, name: { key: "labels.locales.en-AU" } }
|
||||
# - { id: en-BZ, name: { key: "labels.locales.en-BZ" } }
|
||||
# - { id: en-CA, name: { key: "labels.locales.en-CA" } }
|
||||
# - { id: en-CB, name: { key: "labels.locales.en-CB" } }
|
||||
# - { id: en-GB, name: { key: "labels.locales.en-GB" } }
|
||||
# - { id: en-IE, name: { key: "labels.locales.en-IE" } }
|
||||
# - { id: en-JM, name: { key: "labels.locales.en-JM" } }
|
||||
# - { id: en-NZ, name: { key: "labels.locales.en-NZ" } }
|
||||
# - { id: en-PH, name: { key: "labels.locales.en-PH" } }
|
||||
# - { id: en-TT, name: { key: "labels.locales.en-TT" } }
|
||||
# - { id: en-US, name: { key: "labels.locales.en-US" } }
|
||||
# - { id: en-ZA, name: { key: "labels.locales.en-ZA" } }
|
||||
# - { id: en-ZW, name: { key: "labels.locales.en-ZW" } }
|
||||
# - { id: eo, name: { key: "labels.locales.eo" } }
|
||||
# - { id: es, name: { key: "labels.locales.es" } }
|
||||
# - { id: es-AR, name: { key: "labels.locales.es-AR" } }
|
||||
# - { id: es-BO, name: { key: "labels.locales.es-BO" } }
|
||||
# - { id: es-CL, name: { key: "labels.locales.es-CL" } }
|
||||
# - { id: es-CO, name: { key: "labels.locales.es-CO" } }
|
||||
# - { id: es-CR, name: { key: "labels.locales.es-CR" } }
|
||||
# - { id: es-DO, name: { key: "labels.locales.es-DO" } }
|
||||
# - { id: es-EC, name: { key: "labels.locales.es-EC" } }
|
||||
# - { id: es-ES, name: { key: "labels.locales.es-ES" } }
|
||||
# - { id: es-GT, name: { key: "labels.locales.es-GT" } }
|
||||
# - { id: es-HN, name: { key: "labels.locales.es-HN" } }
|
||||
# - { id: es-MX, name: { key: "labels.locales.es-MX" } }
|
||||
# - { id: es-NI, name: { key: "labels.locales.es-NI" } }
|
||||
# - { id: es-PA, name: { key: "labels.locales.es-PA" } }
|
||||
# - { id: es-PE, name: { key: "labels.locales.es-PE" } }
|
||||
# - { id: es-PR, name: { key: "labels.locales.es-PR" } }
|
||||
# - { id: es-PY, name: { key: "labels.locales.es-PY" } }
|
||||
# - { id: es-SV, name: { key: "labels.locales.es-SV" } }
|
||||
# - { id: es-UY, name: { key: "labels.locales.es-UY" } }
|
||||
# - { id: es-VE, name: { key: "labels.locales.es-VE" } }
|
||||
# - { id: et, name: { key: "labels.locales.et" } }
|
||||
# - { id: et-EE, name: { key: "labels.locales.et-EE" } }
|
||||
# - { id: eu, name: { key: "labels.locales.eu" } }
|
||||
# - { id: eu-ES, name: { key: "labels.locales.eu-ES" } }
|
||||
# - { id: fa, name: { key: "labels.locales.fa" } }
|
||||
# - { id: fa-IR, name: { key: "labels.locales.fa-IR" } }
|
||||
# - { id: fi, name: { key: "labels.locales.fi" } }
|
||||
# - { id: fi-FI, name: { key: "labels.locales.fi-FI" } }
|
||||
# - { id: fo, name: { key: "labels.locales.fo" } }
|
||||
# - { id: fo-FO, name: { key: "labels.locales.fo-FO" } }
|
||||
# - { id: fr, name: { key: "labels.locales.fr" } }
|
||||
# - { id: fr-BE, name: { key: "labels.locales.fr-BE" } }
|
||||
# - { id: fr-CA, name: { key: "labels.locales.fr-CA" } }
|
||||
# - { id: fr-CH, name: { key: "labels.locales.fr-CH" } }
|
||||
# - { id: fr-FR, name: { key: "labels.locales.fr-FR" } }
|
||||
# - { id: fr-LU, name: { key: "labels.locales.fr-LU" } }
|
||||
# - { id: fr-MC, name: { key: "labels.locales.fr-MC" } }
|
||||
# - { id: gl, name: { key: "labels.locales.gl" } }
|
||||
# - { id: gl-ES, name: { key: "labels.locales.gl-ES" } }
|
||||
# - { id: gu, name: { key: "labels.locales.gu" } }
|
||||
# - { id: gu-IN, name: { key: "labels.locales.gu-IN" } }
|
||||
# - { id: he, name: { key: "labels.locales.he" } }
|
||||
# - { id: he-IL, name: { key: "labels.locales.he-IL" } }
|
||||
# - { id: hi, name: { key: "labels.locales.hi" } }
|
||||
# - { id: hi-IN, name: { key: "labels.locales.hi-IN" } }
|
||||
# - { id: hr, name: { key: "labels.locales.hr" } }
|
||||
# - { id: hr-BA, name: { key: "labels.locales.hr-BA" } }
|
||||
# - { id: hr-HR, name: { key: "labels.locales.hr-HR" } }
|
||||
# - { id: hu, name: { key: "labels.locales.hu" } }
|
||||
# - { id: hu-HU, name: { key: "labels.locales.hu-HU" } }
|
||||
# - { id: hy, name: { key: "labels.locales.hy" } }
|
||||
# - { id: hy-AM, name: { key: "labels.locales.hy-AM" } }
|
||||
# - { id: id, name: { key: "labels.locales.id" } }
|
||||
# - { id: id-ID, name: { key: "labels.locales.id-ID" } }
|
||||
# - { id: is, name: { key: "labels.locales.is" } }
|
||||
# - { id: is-IS, name: { key: "labels.locales.is-IS" } }
|
||||
# - { id: it, name: { key: "labels.locales.it" } }
|
||||
# - { id: it-CH, name: { key: "labels.locales.it-CH" } }
|
||||
# - { id: it-IT, name: { key: "labels.locales.it-IT" } }
|
||||
# - { id: ja, name: { key: "labels.locales.ja" } }
|
||||
# - { id: ja-JP, name: { key: "labels.locales.ja-JP" } }
|
||||
# - { id: ka, name: { key: "labels.locales.ka" } }
|
||||
# - { id: ka-GE, name: { key: "labels.locales.ka-GE" } }
|
||||
# - { id: kk, name: { key: "labels.locales.kk" } }
|
||||
# - { id: kk-KZ, name: { key: "labels.locales.kk-KZ" } }
|
||||
# - { id: kn, name: { key: "labels.locales.kn" } }
|
||||
# - { id: kn-IN, name: { key: "labels.locales.kn-IN" } }
|
||||
# - { id: ko, name: { key: "labels.locales.ko" } }
|
||||
# - { id: ko-KR, name: { key: "labels.locales.ko-KR" } }
|
||||
# - { id: kok, name: { key: "labels.locales.kok" } }
|
||||
# - { id: kok-IN, name: { key: "labels.locales.kok-IN" } }
|
||||
# - { id: ky, name: { key: "labels.locales.ky" } }
|
||||
# - { id: ky-KG, name: { key: "labels.locales.ky-KG" } }
|
||||
# - { id: lt, name: { key: "labels.locales.lt" } }
|
||||
# - { id: lt-LT, name: { key: "labels.locales.lt-LT" } }
|
||||
# - { id: lv, name: { key: "labels.locales.lv" } }
|
||||
# - { id: lv-LV, name: { key: "labels.locales.lv-LV" } }
|
||||
# - { id: mi, name: { key: "labels.locales.mi" } }
|
||||
# - { id: mi-NZ, name: { key: "labels.locales.mi-NZ" } }
|
||||
# - { id: mk, name: { key: "labels.locales.mk" } }
|
||||
# - { id: mk-MK, name: { key: "labels.locales.mk-MK" } }
|
||||
# - { id: mn, name: { key: "labels.locales.mn" } }
|
||||
# - { id: mn-MN, name: { key: "labels.locales.mn-MN" } }
|
||||
# - { id: mr, name: { key: "labels.locales.mr" } }
|
||||
# - { id: mr-IN, name: { key: "labels.locales.mr-IN" } }
|
||||
# - { id: ms, name: { key: "labels.locales.ms" } }
|
||||
# - { id: ms-BN, name: { key: "labels.locales.ms-BN" } }
|
||||
# - { id: ms-MY, name: { key: "labels.locales.ms-MY" } }
|
||||
# - { id: mt, name: { key: "labels.locales.mt" } }
|
||||
# - { id: mt-MT, name: { key: "labels.locales.mt-MT" } }
|
||||
# - { id: nb, name: { key: "labels.locales.nb" } }
|
||||
# - { id: nb-NO, name: { key: "labels.locales.nb-NO" } }
|
||||
# - { id: nl, name: { key: "labels.locales.nl" } }
|
||||
# - { id: nl-BE, name: { key: "labels.locales.nl-BE" } }
|
||||
# - { id: nl-NL, name: { key: "labels.locales.nl-NL" } }
|
||||
# - { id: nn-NO, name: { key: "labels.locales.nn-NO" } }
|
||||
# - { id: ns, name: { key: "labels.locales.ns" } }
|
||||
# - { id: ns-ZA, name: { key: "labels.locales.ns-ZA" } }
|
||||
# - { id: pa, name: { key: "labels.locales.pa" } }
|
||||
# - { id: pa-IN, name: { key: "labels.locales.pa-IN" } }
|
||||
# - { id: pl, name: { key: "labels.locales.pl" } }
|
||||
# - { id: pl-PL, name: { key: "labels.locales.pl-PL" } }
|
||||
# - { id: ps, name: { key: "labels.locales.ps" } }
|
||||
# - { id: ps-AR, name: { key: "labels.locales.ps-AR" } }
|
||||
# - { id: pt, name: { key: "labels.locales.pt" } }
|
||||
# - { id: pt-BR, name: { key: "labels.locales.pt-BR" } }
|
||||
# - { id: pt-PT, name: { key: "labels.locales.pt-PT" } }
|
||||
# - { id: qu, name: { key: "labels.locales.qu" } }
|
||||
# - { id: qu-BO, name: { key: "labels.locales.qu-BO" } }
|
||||
# - { id: qu-EC, name: { key: "labels.locales.qu-EC" } }
|
||||
# - { id: qu-PE, name: { key: "labels.locales.qu-PE" } }
|
||||
# - { id: ro, name: { key: "labels.locales.ro" } }
|
||||
# - { id: ro-RO, name: { key: "labels.locales.ro-RO" } }
|
||||
# - { id: ru, name: { key: "labels.locales.ru" } }
|
||||
# - { id: ru-RU, name: { key: "labels.locales.ru-RU" } }
|
||||
# - { id: sa, name: { key: "labels.locales.sa" } }
|
||||
# - { id: sa-IN, name: { key: "labels.locales.sa-IN" } }
|
||||
# - { id: se, name: { key: "labels.locales.se" } }
|
||||
# - { id: se-FI, name: { key: "labels.locales.se-FI" } }
|
||||
# - { id: se-NO, name: { key: "labels.locales.se-NO" } }
|
||||
# - { id: se-SE, name: { key: "labels.locales.se-SE" } }
|
||||
# - { id: sk, name: { key: "labels.locales.sk" } }
|
||||
# - { id: sk-SK, name: { key: "labels.locales.sk-SK" } }
|
||||
# - { id: sl, name: { key: "labels.locales.sl" } }
|
||||
# - { id: sl-SI, name: { key: "labels.locales.sl-SI" } }
|
||||
# - { id: sq, name: { key: "labels.locales.sq" } }
|
||||
# - { id: sq-AL, name: { key: "labels.locales.sq-AL" } }
|
||||
# - { id: sr-BA, name: { key: "labels.locales.sr-BA" } }
|
||||
# - { id: sr-SP, name: { key: "labels.locales.sr-SP" } }
|
||||
# - { id: sv, name: { key: "labels.locales.sv" } }
|
||||
# - { id: sv-FI, name: { key: "labels.locales.sv-FI" } }
|
||||
# - { id: sv-SE, name: { key: "labels.locales.sv-SE" } }
|
||||
# - { id: sw, name: { key: "labels.locales.sw" } }
|
||||
# - { id: sw-KE, name: { key: "labels.locales.sw-KE" } }
|
||||
# - { id: syr, name: { key: "labels.locales.syr" } }
|
||||
# - { id: syr-SY, name: { key: "labels.locales.syr-SY" } }
|
||||
# - { id: ta, name: { key: "labels.locales.ta" } }
|
||||
# - { id: ta-IN, name: { key: "labels.locales.ta-IN" } }
|
||||
# - { id: te, name: { key: "labels.locales.te" } }
|
||||
# - { id: te-IN, name: { key: "labels.locales.te-IN" } }
|
||||
# - { id: th, name: { key: "labels.locales.th" } }
|
||||
# - { id: th-TH, name: { key: "labels.locales.th-TH" } }
|
||||
# - { id: tl, name: { key: "labels.locales.tl" } }
|
||||
# - { id: tl-PH, name: { key: "labels.locales.tl-PH" } }
|
||||
# - { id: tn, name: { key: "labels.locales.tn" } }
|
||||
# - { id: tn-ZA, name: { key: "labels.locales.tn-ZA" } }
|
||||
# - { id: tr, name: { key: "labels.locales.tr" } }
|
||||
# - { id: tr-TR, name: { key: "labels.locales.tr-TR" } }
|
||||
# - { id: tt, name: { key: "labels.locales.tt" } }
|
||||
# - { id: tt-RU, name: { key: "labels.locales.tt-RU" } }
|
||||
# - { id: ts, name: { key: "labels.locales.ts" } }
|
||||
# - { id: uk, name: { key: "labels.locales.uk" } }
|
||||
# - { id: uk-UA, name: { key: "labels.locales.uk-UA" } }
|
||||
# - { id: ur, name: { key: "labels.locales.ur" } }
|
||||
# - { id: ur-PK, name: { key: "labels.locales.ur-PK" } }
|
||||
# - { id: uz, name: { key: "labels.locales.uz" } }
|
||||
# - { id: uz-UZ, name: { key: "labels.locales.uz-UZ" } }
|
||||
# - { id: vi, name: { key: "labels.locales.vi" } }
|
||||
# - { id: vi-VN, name: { key: "labels.locales.vi-VN" } }
|
||||
# - { id: xh, name: { key: "labels.locales.xh" } }
|
||||
# - { id: xh-ZA, name: { key: "labels.locales.xh-ZA" } }
|
||||
# - { id: zh, name: { key: "labels.locales.zh" } }
|
||||
# - { id: zh-CN, name: { key: "labels.locales.zh-CN" } }
|
||||
# - { id: zh-HK, name: { key: "labels.locales.zh-HK" } }
|
||||
# - { id: zh-MO, name: { key: "labels.locales.zh-MO" } }
|
||||
# - { id: zh-SG, name: { key: "labels.locales.zh-SG" } }
|
||||
# - { id: zh-TW, name: { key: "labels.locales.zh-TW" } }
|
||||
# - { id: zu, name: { key: "labels.locales.zu" } }
|
||||
# - { id: zu-ZA, name: { key: "labels.locales.zu-ZA" } }
|
||||
|
||||
56
api/collections/fields/_media.yml
Normal file
56
api/collections/fields/_media.yml
Normal file
@@ -0,0 +1,56 @@
|
||||
name: media
|
||||
type: object
|
||||
subFields:
|
||||
- name: favicon
|
||||
type: file
|
||||
meta:
|
||||
label: { de: "Favicon", en: "Favicon" }
|
||||
helperText:
|
||||
de: "Ein Favicon ist ein kleines Icon, Symbol oder Logo, das von Webbrowsern verwendet wird, um eine Website auf wiedererkennbare Weise zu kennzeichnen."
|
||||
en: "A favicon is a small icon, symbol, or logo used by web browsers to identify a website in a recognizable way."
|
||||
- name: brand
|
||||
type: file
|
||||
meta:
|
||||
label: { de: "Logo / Brand", en: "Logo / Brand" }
|
||||
helperText:
|
||||
de: "Logo der Seite"
|
||||
en: "Page Logo"
|
||||
- name: additionalBrandInformation1
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Zusätzliche Infos 1", en: "Additional brand information 1" }
|
||||
helperText:
|
||||
de: "Text, welcher neben dem Logo platziert wird"
|
||||
en: "Text placed next to the logo"
|
||||
- name: additionalBrandInformation2
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Zusätzliche Infos 2", en: "Additional brand information 2" }
|
||||
helperText:
|
||||
de: "Text, welcher neben dem Logo platziert wird"
|
||||
en: "Text placed next to the logo"
|
||||
- name: mediaFiles
|
||||
type: object[]
|
||||
meta:
|
||||
label: { de: "Dateien", en: "Files" }
|
||||
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:
|
||||
editableWhileCreating: true
|
||||
label: { de: "Technischer Name / ID", en: "Technical name / ID" }
|
||||
helperText:
|
||||
de: "Achtung: Eine technische ID ist meist fest im Code der Seite verknüpft und darf, wenn sie einmal gesetzt wurde, nicht verändert werden!"
|
||||
en: "Attention: A technical ID is usually permanently linked in the code of the page and, once it has been set, must not be changed!"
|
||||
- name: file
|
||||
type: file
|
||||
meta:
|
||||
label: { de: "Datei", en: "File" }
|
||||
47
api/collections/fields/_person.yml
Normal file
47
api/collections/fields/_person.yml
Normal file
@@ -0,0 +1,47 @@
|
||||
name: person
|
||||
type: object
|
||||
subFields:
|
||||
- name: salutation
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Anrede", en: "Salutation" }
|
||||
- name: firstname
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Vorname", en: "Firstname" }
|
||||
- name: lastname
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Nachname", en: "Lastname" }
|
||||
- name: additional
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Zusatz", en: "Additional" }
|
||||
- name: street
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Straße", en: "Street" }
|
||||
- name: postcode
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Postleitzahl", en: "Postcode" }
|
||||
- name: city
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Ort", en: "City" }
|
||||
- name: tel
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Telefonnummer", en: "Phone number" }
|
||||
- name: fax
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Faxnummer", en: "Fax number" }
|
||||
- name: mobile
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Handynummer", en: "Mobile number" }
|
||||
- name: email
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "E-Mail", en: "E-Mail" }
|
||||
130
api/collections/fields/pageBuilder.yml
Normal file
130
api/collections/fields/pageBuilder.yml
Normal file
@@ -0,0 +1,130 @@
|
||||
name: pageBuilder
|
||||
type: object[]
|
||||
meta:
|
||||
label:
|
||||
de: Pagebuilder Light
|
||||
en: pagebuilder light
|
||||
folding:
|
||||
unfolded: false
|
||||
previewFolded:
|
||||
raw: false
|
||||
eval: |
|
||||
(() => {
|
||||
let text = $this?.columns?.column1?.html?.replace(/<\/?[^>]+(>|$)/g, " ");
|
||||
if (text?.length > 30) {
|
||||
return text.substr(0, 30) + "...";
|
||||
}
|
||||
return text?.trimStart() || "";
|
||||
})()
|
||||
previewUnfolded:
|
||||
raw: false
|
||||
eval: |
|
||||
(() => {
|
||||
return "";
|
||||
})()
|
||||
subFields:
|
||||
- name: publish
|
||||
type: boolean
|
||||
meta:
|
||||
label:
|
||||
de: Inhaltszeile ist veröffentlicht
|
||||
en: Content row is published
|
||||
|
||||
- name: columns
|
||||
type: object
|
||||
meta:
|
||||
widget: tabs
|
||||
label:
|
||||
de: Spalten
|
||||
en: Columns
|
||||
helperText:
|
||||
de: Spalten ohne Inhalt werden nicht angezeigt.
|
||||
en: Columns with no content are not displayed.
|
||||
subFields:
|
||||
- name: column1
|
||||
type: object
|
||||
meta:
|
||||
label:
|
||||
de: Spalte 1
|
||||
en: Column 1
|
||||
subFields: &columnSubFields
|
||||
- name: width
|
||||
type: string
|
||||
meta:
|
||||
widget: select
|
||||
label:
|
||||
de: Spaltenbreite
|
||||
en: Column width
|
||||
defaultValue: "auto"
|
||||
choices: &widthSelections
|
||||
- id: "auto"
|
||||
name:
|
||||
de: automatisch
|
||||
en: auto
|
||||
- id: "25"
|
||||
name:
|
||||
de: 25%
|
||||
en: 25%
|
||||
- id: "33"
|
||||
name:
|
||||
de: 33%
|
||||
en: 33%
|
||||
- id: "50"
|
||||
name:
|
||||
de: 50%
|
||||
en: 50%
|
||||
- id: "66"
|
||||
name:
|
||||
de: 66%
|
||||
en: 66%
|
||||
- id: "75"
|
||||
name:
|
||||
de: 75%
|
||||
en: 75%
|
||||
- name: html
|
||||
type: string
|
||||
meta:
|
||||
widget: richtext
|
||||
label:
|
||||
de: Text
|
||||
en: Text
|
||||
- name: module
|
||||
type: string
|
||||
meta:
|
||||
label:
|
||||
de: Modul
|
||||
en: Module
|
||||
helperText:
|
||||
de: Ein Modul ist ein vorgefertigter Baustein und wird an der Position des Textelements eingebettet.
|
||||
en: A module is a ready-made building block and is embedded at the position of the text element.
|
||||
widget: select
|
||||
allowEmpty: true
|
||||
choices:
|
||||
- id: ContactForm
|
||||
name: { de: "Kontakt Formular", en: "Contact Form" }
|
||||
- id: Addresses
|
||||
name: { de: "Adressen", en: "Adresses" }
|
||||
|
||||
- name: column2
|
||||
type: object
|
||||
meta:
|
||||
label:
|
||||
de: Spalte 2
|
||||
en: Column 2
|
||||
subFields: *columnSubFields
|
||||
|
||||
- name: column3
|
||||
type: object
|
||||
meta:
|
||||
label:
|
||||
de: Spalte 3
|
||||
en: Column 3
|
||||
subFields: *columnSubFields
|
||||
|
||||
- name: column4
|
||||
type: object
|
||||
meta:
|
||||
label:
|
||||
de: Spalte 4
|
||||
en: Column 4
|
||||
subFields: *columnSubFields
|
||||
@@ -124,7 +124,6 @@ fields:
|
||||
- name: public
|
||||
type: boolean
|
||||
meta:
|
||||
hideInRoot: true
|
||||
defaultValue: true
|
||||
label:
|
||||
de: Veröffentlicht
|
||||
@@ -136,7 +135,7 @@ fields:
|
||||
- name: meta
|
||||
type: object
|
||||
meta:
|
||||
hideInRoot: true
|
||||
|
||||
subFields:
|
||||
- name: metaTitle
|
||||
type: string
|
||||
@@ -177,153 +176,11 @@ fields:
|
||||
de: "Beispiel: Stichwort1, Stichwort2, Stichwort3"
|
||||
en: "Example: keyword1, keyword2, keyword3"
|
||||
|
||||
- name: person
|
||||
type: object
|
||||
meta:
|
||||
hideInRoot: true
|
||||
subFields:
|
||||
- name: salutation
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Anrede", en: "Salutation" }
|
||||
- name: firstname
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Vorname", en: "Firstname" }
|
||||
- name: lastname
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Nachname", en: "Lastname" }
|
||||
- name: additional
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Zusatz", en: "Additional" }
|
||||
- name: street
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Straße", en: "Street" }
|
||||
- name: postcode
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Postleitzahl", en: "Postcode" }
|
||||
- name: city
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Ort", en: "City" }
|
||||
- name: tel
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Telefonnummer", en: "Phone number" }
|
||||
- name: fax
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Faxnummer", en: "Fax number" }
|
||||
- name: mobile
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Handynummer", en: "Mobile number" }
|
||||
- name: email
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "E-Mail", en: "E-Mail" }
|
||||
|
||||
- name: company
|
||||
type: object
|
||||
meta:
|
||||
hideInRoot: true
|
||||
subFields:
|
||||
- name: companyName
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Name des Unternehmens", en: "Company Name" }
|
||||
- name: companyWebUrl
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "URL zur Webseite", en: "Website URL" }
|
||||
- name: companyAddresses
|
||||
type: object[]
|
||||
meta:
|
||||
label:
|
||||
de: Adresse
|
||||
en: Adresse
|
||||
css:
|
||||
subFields:
|
||||
- name: street
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Straße", en: "Street" }
|
||||
- name: houseNr
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Hausnummer", en: "House number" }
|
||||
- name: postcode
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "PLZ", en: "ZIP" }
|
||||
- name: city
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Ort", en: "City" }
|
||||
- name: tel
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Telefon", en: "Phone number" }
|
||||
- name: fax
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Fax", en: "Fax" }
|
||||
- name: email
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "E-Mail", en: "E-Mail" }
|
||||
|
||||
- name: media
|
||||
type: object
|
||||
meta:
|
||||
hideInRoot: true
|
||||
subFields:
|
||||
- name: favicon
|
||||
type: file
|
||||
meta:
|
||||
label: { de: "Favicon", en: "Favicon" }
|
||||
helperText:
|
||||
de: "Ein Favicon ist ein kleines Icon, Symbol oder Logo, das von Webbrowsern verwendet wird, um eine Website auf wiedererkennbare Weise zu kennzeichnen."
|
||||
en: "A favicon is a small icon, symbol, or logo used by web browsers to identify a website in a recognizable way."
|
||||
- name: brand
|
||||
type: file
|
||||
meta:
|
||||
label: { de: "Logo / Brand", en: "Logo / Brand" }
|
||||
helperText:
|
||||
de: "Logo der Seite"
|
||||
en: "Page Logo"
|
||||
- name: mediaFiles
|
||||
type: object[]
|
||||
meta:
|
||||
label: { de: "Dateien", en: "Files" }
|
||||
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:
|
||||
editableWhileCreating: true
|
||||
label: { de: "Technischer Name / ID", en: "Technical name / ID" }
|
||||
helperText:
|
||||
de: "Achtung: Eine technische ID ist meist fest im Code der Seite verknüpft und darf, wenn sie einmal gesetzt wurde, nicht verändert werden!"
|
||||
en: "Attention: A technical ID is usually permanently linked in the code of the page and, once it has been set, must not be changed!"
|
||||
- name: file
|
||||
type: file
|
||||
meta:
|
||||
label: { de: "Datei", en: "File" }
|
||||
- !include "fields/_person.yml"
|
||||
- !include "fields/_company.yml"
|
||||
- !include "fields/_media.yml"
|
||||
|
||||
- name: copyrightText
|
||||
type: string
|
||||
meta:
|
||||
hideInRoot: true
|
||||
label: { de: "Copyright Text", en: "Copyright Text" }
|
||||
|
||||
@@ -1,135 +0,0 @@
|
||||
###############################################################
|
||||
# Media Library
|
||||
###############################################################
|
||||
|
||||
# Name/URL-Anteil der Kollektion
|
||||
name: media-library
|
||||
uploadPath: ../media/media-library
|
||||
|
||||
# Metaangaben zur Kollektion welche in der Admin-UI verwendet werden können
|
||||
meta:
|
||||
# Navigationseintrag in der Admin-UI
|
||||
label: { de: "Medien", en: "Media Library" }
|
||||
# Icon (Material UI) für den Navigationseintrag
|
||||
muiIcon: file-document-multiple
|
||||
# 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:
|
||||
- type: simpleList
|
||||
mediaQuery: "(max-width:479px)"
|
||||
columns:
|
||||
- file
|
||||
- source: title
|
||||
filter: true
|
||||
- source: tags
|
||||
filter: true
|
||||
- source: tags2
|
||||
filter: true
|
||||
- type: mediaLibrary
|
||||
mediaQuery: "(min-width:480px)"
|
||||
columns:
|
||||
- file
|
||||
- source: title
|
||||
filter: true
|
||||
- source: tags
|
||||
filter: true
|
||||
- source: tags2
|
||||
filter: true
|
||||
# list:
|
||||
# columns:
|
||||
# - file
|
||||
# - title
|
||||
# tile:
|
||||
# width: 200px
|
||||
# height: auto
|
||||
# grid:
|
||||
# - { source: file }
|
||||
# - { source: title, width: 50%, label: "Titel" }
|
||||
|
||||
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
|
||||
|
||||
# Feldliste der Kollektion
|
||||
fields:
|
||||
- name: title
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Titel des Dokuments/Bild", en: "Document/Image Title" }
|
||||
- name: tags
|
||||
type: string[]
|
||||
meta:
|
||||
widget: chipArray
|
||||
label:
|
||||
de: Tags / Labels
|
||||
en: Tags / Labels
|
||||
# allowedAddEntry:
|
||||
# collection: "tags"
|
||||
autocomplete: true
|
||||
choices:
|
||||
endpoint: "tags"
|
||||
mapping:
|
||||
id: "id"
|
||||
name: "name"
|
||||
params:
|
||||
count: 1
|
||||
sort: "ASC"
|
||||
query: ""
|
||||
- name: file
|
||||
type: file
|
||||
meta:
|
||||
widget: mediaFile
|
||||
label: { de: "Datei", en: "File" }
|
||||
@@ -104,7 +104,7 @@ x-settings: &settings
|
||||
|
||||
x-page: &page
|
||||
name: page
|
||||
type: object
|
||||
type: string
|
||||
meta:
|
||||
widget: select
|
||||
label: { de: Seite, en: "Page" }
|
||||
|
||||
@@ -9,9 +9,7 @@ meta:
|
||||
collections:
|
||||
- !include collections/general.yml
|
||||
- !include collections/navigation.yml
|
||||
- !include collections/articles.yml
|
||||
- !include collections/content.yml
|
||||
- !include collections/external.yml
|
||||
- !include collections/contact_form.yml
|
||||
- !include collections/tags.yml
|
||||
- !include collections/contact_form.yml
|
||||
- !include collections/ssr.yml
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
// @ts-check
|
||||
const { generateArticleSlugUrlString: generateSlugUrlStringByArticle } = require("../lib/helper")
|
||||
|
||||
;(function () {
|
||||
/** @type {import("tibi-types").HookResponse} */
|
||||
let hookResponse
|
||||
|
||||
context.data.article.content.slug = generateSlugUrlStringByArticle(context.data.article)
|
||||
|
||||
return hookResponse
|
||||
})()
|
||||
@@ -1,11 +0,0 @@
|
||||
// @ts-check
|
||||
const { generateArticleSlugUrlString: generateSlugUrlStringByArticle } = require("../lib/helper")
|
||||
|
||||
;(function () {
|
||||
/** @type {import("tibi-types").HookResponse} */
|
||||
let hookResponse
|
||||
|
||||
context.data.article.content.slug = generateSlugUrlStringByArticle(context.data.article)
|
||||
|
||||
return hookResponse
|
||||
})()
|
||||
@@ -1,22 +1,68 @@
|
||||
// @ts-check
|
||||
let utils = require("../lib/utils")
|
||||
const config = require("../config")
|
||||
|
||||
var utils = require("../lib/utils")
|
||||
const { operatorEmail } = config
|
||||
// const { objectToText } = require("../lib/helper")
|
||||
|
||||
;(function () {
|
||||
if (utils.isPublicToken(context)) {
|
||||
// js captcha
|
||||
var checksum = context.request().query("cs")
|
||||
var email = context.data.email
|
||||
if (!email || (email.length * 1000).toString(16) + "x" !== checksum) {
|
||||
throw {
|
||||
status: 403,
|
||||
error: "forbidden data",
|
||||
}
|
||||
/** @type {import("tibi-types").HookResponse} */
|
||||
let hookResponse
|
||||
|
||||
const type = context.request().query("type")
|
||||
if (!type) {
|
||||
throw {
|
||||
status: 403,
|
||||
error: "invalid data",
|
||||
}
|
||||
}
|
||||
if (typeof context.data != "object") {
|
||||
throw {
|
||||
status: 400,
|
||||
error: "invalid body data",
|
||||
}
|
||||
}
|
||||
|
||||
/** @type {import('tibi-types').HookResponse} */
|
||||
// @ts-ignore
|
||||
var response = null
|
||||
return response
|
||||
let to = ""
|
||||
let from = ""
|
||||
let fromName = ""
|
||||
let replyTo = ""
|
||||
let subject
|
||||
let plainText
|
||||
let html
|
||||
|
||||
if (utils.isPublicToken(context)) {
|
||||
to = operatorEmail
|
||||
from = context.data.email
|
||||
fromName = context.data.name
|
||||
replyTo = context.data.email
|
||||
|
||||
if (type === "contactForm") {
|
||||
subject = utils.tpl(context, "templates/operator_contact_form_subject.de.txt")
|
||||
html = utils.tpl(context, "templates/operator_contact_form_body.de.html")
|
||||
}
|
||||
}
|
||||
|
||||
if ((!plainText && !html) || !subject) {
|
||||
throw {
|
||||
status: 403,
|
||||
error: "invalid mail data",
|
||||
}
|
||||
}
|
||||
|
||||
context.smtp.sendMail({
|
||||
to,
|
||||
from,
|
||||
fromName,
|
||||
subject,
|
||||
html,
|
||||
// attach: ["attachments/AGB.pdf"],
|
||||
})
|
||||
|
||||
throw {
|
||||
status: 200,
|
||||
message: "ok",
|
||||
}
|
||||
|
||||
return hookResponse
|
||||
})()
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
// @ts-check
|
||||
|
||||
var config = require("../config")
|
||||
var utils = require("../lib/utils")
|
||||
|
||||
;(function () {
|
||||
if (utils.isPublicToken(context)) {
|
||||
var emailFrom = context.data.email
|
||||
var emailFromName =
|
||||
(context.data.firstname || "") +
|
||||
(context.data.firstname && context.data.lastname && " ") +
|
||||
(context.data.lastname || "")
|
||||
|
||||
context.smtp.sendMail({
|
||||
to: config.operatorEmail,
|
||||
from: emailFrom,
|
||||
fromName: emailFromName,
|
||||
subject: utils.tpl(
|
||||
context,
|
||||
"templates/operator_contact_form_subject.de.txt"
|
||||
),
|
||||
html: utils.tpl(
|
||||
context,
|
||||
"templates/operator_contact_form_body.de.html"
|
||||
),
|
||||
// attach: ["attachments/AGB.pdf"],
|
||||
})
|
||||
}
|
||||
|
||||
/** @type {import('tibi-types').HookResponse} */
|
||||
// @ts-ignore
|
||||
var response = null
|
||||
return response
|
||||
})()
|
||||
@@ -1,7 +0,0 @@
|
||||
// @ts-check
|
||||
|
||||
var utils = require("../lib/utils")
|
||||
|
||||
;(function () {
|
||||
utils.clearSSRCache()
|
||||
})()
|
||||
11
api/hooks/content/post_create.js
Normal file
11
api/hooks/content/post_create.js
Normal file
@@ -0,0 +1,11 @@
|
||||
// @ts-check
|
||||
const { generateUrlString } = require("../lib/helper")
|
||||
|
||||
;(function () {
|
||||
/** @type {import("tibi-types").HookResponse} */
|
||||
let hookResponse
|
||||
|
||||
context.data.path = generateUrlString(context.data.path)
|
||||
|
||||
return hookResponse
|
||||
})()
|
||||
@@ -1,7 +0,0 @@
|
||||
// @ts-check
|
||||
|
||||
var utils = require("../lib/utils")
|
||||
|
||||
;(function () {
|
||||
utils.clearSSRCache()
|
||||
})()
|
||||
@@ -1,7 +0,0 @@
|
||||
// @ts-check
|
||||
|
||||
var utils = require("../lib/utils")
|
||||
|
||||
;(function () {
|
||||
utils.clearSSRCache()
|
||||
})()
|
||||
11
api/hooks/content/put_update.js
Normal file
11
api/hooks/content/put_update.js
Normal file
@@ -0,0 +1,11 @@
|
||||
// @ts-check
|
||||
const { generateUrlString } = require("../lib/helper")
|
||||
|
||||
;(function () {
|
||||
/** @type {import("tibi-types").HookResponse} */
|
||||
let hookResponse
|
||||
|
||||
context.data.path = generateUrlString(context.data.path)
|
||||
|
||||
return hookResponse
|
||||
})()
|
||||
@@ -1,17 +1,14 @@
|
||||
const generateArticleSlugUrlString = (article) => {
|
||||
let slug = article.content.slug
|
||||
let title = article.content.title
|
||||
|
||||
if (!slug || slug === "") {
|
||||
slug = title
|
||||
.replace(/[^a-zA-Z0-9 ]/g, "")
|
||||
const generateUrlString = (text) => {
|
||||
if (text) {
|
||||
return text
|
||||
.replace(/[^a-zA-Z0-9 \/]/g, "")
|
||||
.replace(/\s/g, "-")
|
||||
.toLowerCase()
|
||||
}
|
||||
|
||||
return slug
|
||||
return ""
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
generateArticleSlugUrlString,
|
||||
generateUrlString,
|
||||
}
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
<html>
|
||||
<body>
|
||||
<h1>Kontaktformular</h1>
|
||||
<label>Vorname:</label> {{context.data.firstname}}<br />
|
||||
<label>Nachname:</label> {{context.data.lastname}}<br />
|
||||
<label>Name:</label> {{context.data.name}}<br />
|
||||
<label>Email:</label> {{context.data.email}}<br />
|
||||
<label>PLZ:</label> {{context.data.postcode}}<br />
|
||||
<label>Betreff:</label> {{context.data.subject}}<br />
|
||||
|
||||
<h3>Nachricht</h3>
|
||||
<div style="white-space: pre-wrap">{{context.data.message}}</div>
|
||||
@@ -13,8 +12,7 @@
|
||||
<ul>
|
||||
{% for f in context.data.files %}
|
||||
<li>
|
||||
<a
|
||||
href="{{config.apiBase}}contact_form/{{context.data.id}}/{{f.file.src}}"
|
||||
<a href="{{config.apiBase}}contact_form/{{context.data.id}}/{{f.file.src}}"
|
||||
>{{config.apiBase}}contact_form/{{context.data.id}}/{{f.file.src}}</a
|
||||
>
|
||||
</li>
|
||||
|
||||
Reference in New Issue
Block a user