general setup
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
de: Modul Import
|
||||
en: Module Import
|
||||
id: moduleImport
|
||||
|
||||
- name:
|
||||
de: Formular
|
||||
en: form
|
||||
@@ -24,10 +25,17 @@
|
||||
de: Text
|
||||
en: Text
|
||||
id: text
|
||||
|
||||
- name:
|
||||
de: Google Maps
|
||||
en: Google Maps
|
||||
id: googleMaps
|
||||
|
||||
- name:
|
||||
de: Produktslider
|
||||
en: Product Slider
|
||||
id: productSlider
|
||||
|
||||
- !include ../fields/images.yml
|
||||
|
||||
- name: moduleImport
|
||||
@@ -47,3 +55,5 @@
|
||||
defaultCollectionViews: true
|
||||
|
||||
- !include ../fields/text.yml
|
||||
|
||||
- !include ../fields/productSlider.yml
|
||||
|
||||
74
api/collections/fieldLists/completeYourLook.yml
Normal file
74
api/collections/fieldLists/completeYourLook.yml
Normal file
@@ -0,0 +1,74 @@
|
||||
- name: products
|
||||
type: object[]
|
||||
meta:
|
||||
label:
|
||||
de: Produkte
|
||||
en: Products
|
||||
subFields:
|
||||
- name: productImage
|
||||
type: string
|
||||
meta:
|
||||
label:
|
||||
de: Produktbild
|
||||
en: Product Image
|
||||
widget: foreignKey
|
||||
foreign:
|
||||
collection: medialib
|
||||
id: id
|
||||
subNavigation: 0
|
||||
render:
|
||||
defaultCollectionViews: true
|
||||
|
||||
- name: productReference
|
||||
type: string
|
||||
meta:
|
||||
label:
|
||||
de: Produktreferenz
|
||||
en: Product Reference
|
||||
widget: foreignKey
|
||||
foreign:
|
||||
collection: bigCommerceProducts
|
||||
id: id
|
||||
subNavigation: 0
|
||||
render:
|
||||
defaultCollectionViews: true
|
||||
|
||||
- name: imageWidth
|
||||
type: number
|
||||
meta:
|
||||
label:
|
||||
de: Bildbreite
|
||||
en: Image Width
|
||||
helperText:
|
||||
de: "Höhe des Bildes in Prozent."
|
||||
en: "Height of the image in percent."
|
||||
|
||||
- name: imageHeight
|
||||
type: number
|
||||
meta:
|
||||
label:
|
||||
de: Bildhöhe
|
||||
en: Image Height
|
||||
helperText:
|
||||
de: "Höhe des Bildes in Prozent."
|
||||
en: "Height of the image in percent."
|
||||
|
||||
- name: imageTop
|
||||
type: number
|
||||
meta:
|
||||
label:
|
||||
de: Bildabstand oben
|
||||
en: Image Top
|
||||
helperText:
|
||||
de: "Abstand des Bildes zum oberen Rand in Prozent."
|
||||
en: "Distance of the image to the top edge in percent."
|
||||
|
||||
- name: imageLeft
|
||||
type: number
|
||||
meta:
|
||||
label:
|
||||
de: Bildabstand links
|
||||
en: Image Left
|
||||
helperText:
|
||||
de: "Abstand des Bildes zum linken Rand in Prozent."
|
||||
en: "Distance of the image to the left edge in percent."
|
||||
@@ -19,6 +19,27 @@
|
||||
render:
|
||||
defaultCollectionViews: true
|
||||
|
||||
- name: contentWidth
|
||||
type: number
|
||||
meta:
|
||||
label:
|
||||
de: Inhaltsbreite
|
||||
en: Content Width
|
||||
widget: select
|
||||
choices:
|
||||
- id: 0
|
||||
name:
|
||||
de: Seitenbreite
|
||||
en: Page Width
|
||||
- id: 1
|
||||
name:
|
||||
de: Normale Breite
|
||||
en: Normal Width
|
||||
- id: 2
|
||||
name:
|
||||
de: Schmale Breite
|
||||
en: Narrow Width
|
||||
|
||||
- name: columns
|
||||
type: object[]
|
||||
meta:
|
||||
|
||||
65
api/collections/fields/productSlider.yml
Normal file
65
api/collections/fields/productSlider.yml
Normal file
@@ -0,0 +1,65 @@
|
||||
name: productSlider
|
||||
type: object
|
||||
meta:
|
||||
label:
|
||||
de: Produktslider
|
||||
en: Product Slider
|
||||
widget: containerLessObject
|
||||
subFields:
|
||||
- name: productSource
|
||||
type: string
|
||||
meta:
|
||||
label:
|
||||
de: Produktdatenquelle
|
||||
en: Product Data Source
|
||||
widget: select
|
||||
choices:
|
||||
- name:
|
||||
de: Manuelle Auswahl
|
||||
en: Manual Selection
|
||||
id: manual
|
||||
|
||||
- name:
|
||||
de: Kategorie
|
||||
en: Category
|
||||
id: category
|
||||
|
||||
- name:
|
||||
de: Bestseller
|
||||
en: Bestseller
|
||||
id: bestseller
|
||||
|
||||
- name:
|
||||
de: Neue Produkte
|
||||
en: New Products
|
||||
id: newProducts
|
||||
|
||||
- name:
|
||||
de: Angebote
|
||||
en: Offers
|
||||
id: offers
|
||||
|
||||
- name: productSKUs
|
||||
type: string[]
|
||||
meta:
|
||||
label:
|
||||
de: Produkt SKUs
|
||||
en: Product SKUs
|
||||
dependsOn:
|
||||
eval: $.productSource === 'manual'
|
||||
widget: foreignKey
|
||||
foreign:
|
||||
collection: bigCommerceProducts
|
||||
id: id
|
||||
subNavigation: 0
|
||||
render:
|
||||
defaultCollectionViews: true
|
||||
|
||||
- name: category
|
||||
type: string
|
||||
meta:
|
||||
label:
|
||||
de: Kategorie
|
||||
en: Category
|
||||
dependsOn:
|
||||
eval: $.productSource === 'category'
|
||||
@@ -88,17 +88,54 @@ fields:
|
||||
type: string
|
||||
meta:
|
||||
label:
|
||||
de: Modultyp
|
||||
en: Module Type
|
||||
de: Modultyp
|
||||
en: Module Type
|
||||
helperText:
|
||||
de: "Wählen Sie den Typ des Moduls aus."
|
||||
en: "Choose the type of the module."
|
||||
de: "Wählen Sie den Typ des Moduls aus."
|
||||
en: "Choose the type of the module."
|
||||
widget: select
|
||||
choices:
|
||||
- name: { de: "Formular", en: "Form" }
|
||||
id: form
|
||||
|
||||
- name:
|
||||
de: Verfollständige deinen Look
|
||||
en: Complete your look
|
||||
id: completeYourLook
|
||||
- name:
|
||||
de: Größengraph
|
||||
en: Size Chart
|
||||
id: sizeChart
|
||||
|
||||
- name: form
|
||||
type: object
|
||||
meta:
|
||||
widget: containerLessObject
|
||||
dependsOn:
|
||||
eval: $.type === 'form'
|
||||
subFields: !include fieldLists/formular/form.yml
|
||||
|
||||
- name: completeYourLook
|
||||
type: object
|
||||
meta:
|
||||
widget: containerLessObject
|
||||
dependsOn:
|
||||
eval: $.type === 'completeYourLook'
|
||||
subFields: !include fieldLists/completeYourLook.yml
|
||||
|
||||
- name: sizeChart
|
||||
type: object
|
||||
meta:
|
||||
widget: containerLessObject
|
||||
dependsOn:
|
||||
eval: $.type === 'sizeChart'
|
||||
subFields:
|
||||
- name: rows
|
||||
type: object[]
|
||||
meta:
|
||||
label:
|
||||
de: Zeilen
|
||||
en: Rows
|
||||
direction: row
|
||||
widget: grid
|
||||
subFields: !include fieldLists/row.yml
|
||||
|
||||
@@ -83,7 +83,7 @@ x-page: &seite
|
||||
name: path
|
||||
|
||||
fields:
|
||||
- name: tree
|
||||
- name: type
|
||||
type: number
|
||||
meta:
|
||||
label: Baum
|
||||
@@ -107,9 +107,18 @@ fields:
|
||||
- *name
|
||||
- *seite
|
||||
- name: image
|
||||
type: file
|
||||
type: string
|
||||
meta:
|
||||
label: Bild
|
||||
label:
|
||||
de: Hintergrundbild
|
||||
en: Background Image
|
||||
widget: foreignKey
|
||||
foreign:
|
||||
collection: medialib
|
||||
id: id
|
||||
subNavigation: 0
|
||||
render:
|
||||
defaultCollectionViews: true
|
||||
dependsOn:
|
||||
eval: |
|
||||
(function(){
|
||||
|
||||
140
api/collections/products.yml
Normal file
140
api/collections/products.yml
Normal file
@@ -0,0 +1,140 @@
|
||||
name: bigCommerceProducts
|
||||
# This is just so its easier to reference BigCommerce products,
|
||||
# its not intended to be used as a actual reference,
|
||||
# just so its easier to reference products in TibiCMS
|
||||
meta:
|
||||
views:
|
||||
- type: cardList
|
||||
mediaQuery: "(min-width: 1200px)"
|
||||
selectionPriority: 1
|
||||
fields:
|
||||
- source: previewImage
|
||||
name:
|
||||
de: Vorschaubild
|
||||
en: Preview Image
|
||||
- source: bigCommerceSKU
|
||||
name:
|
||||
de: BigCommerce SKU
|
||||
en: BigCommerce SKU
|
||||
|
||||
- type: table
|
||||
mediaQuery: "(min-width: 600px)"
|
||||
columns:
|
||||
- source: previewImage
|
||||
- source: bigCommerceSKU
|
||||
|
||||
- type: simpleList
|
||||
primaryText: previewImage
|
||||
secondaryText: bigCommerceSKU
|
||||
|
||||
subNavigation:
|
||||
- name: modal
|
||||
views:
|
||||
- type: table
|
||||
columns:
|
||||
- source: type
|
||||
defaultCallback: # Standard-Callback-Funktion, die ausgeführt wird, wenn keine andere spezifiziert ist.
|
||||
eval: | # Der Code wird als JavaScript evaluiert.
|
||||
//js
|
||||
(entry) => { // Diese Funktion nimmt den Eintrag (entry) als Argument.
|
||||
parent.selectEntry(entry) // Die Funktion selectEntry auf dem übergeordneten Objekt wird mit dem Eintrag als Argument aufgerufen.
|
||||
}
|
||||
//!js
|
||||
hooks:
|
||||
post:
|
||||
return:
|
||||
#webhook
|
||||
type: javascript
|
||||
file: hooks/products/post_validate.js
|
||||
|
||||
permissions:
|
||||
public:
|
||||
methods:
|
||||
get: false
|
||||
post: false
|
||||
put: false
|
||||
delete: false
|
||||
user:
|
||||
methods:
|
||||
get: true
|
||||
post: false
|
||||
put: false
|
||||
delete: false
|
||||
|
||||
token:${BIGCOMMERCE_WEBHOOK_TOKEN}:
|
||||
methods:
|
||||
get: true
|
||||
post: true
|
||||
put: true
|
||||
delete: true
|
||||
|
||||
fields:
|
||||
- name: bigCommerceSKU
|
||||
type: string
|
||||
meta:
|
||||
label:
|
||||
de: BigCommerce SKU
|
||||
en: BigCommerce SKU
|
||||
helperText:
|
||||
de: Die SKU des Produkts in BigCommerce
|
||||
en: The SKU of the product in BigCommerce
|
||||
|
||||
- name: previewImage
|
||||
type: file
|
||||
meta:
|
||||
label:
|
||||
de: Vorschaubild
|
||||
en: Preview Image
|
||||
widget: image
|
||||
|
||||
- name: isBestseller
|
||||
type: boolean
|
||||
meta:
|
||||
label:
|
||||
de: Bestseller
|
||||
en: Bestseller
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-6"
|
||||
|
||||
- name: isFeatured
|
||||
type: boolean
|
||||
meta:
|
||||
label:
|
||||
de: Empfohlen
|
||||
en: Featured
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-6"
|
||||
|
||||
- name: isOnSale
|
||||
type: boolean
|
||||
meta:
|
||||
label:
|
||||
de: Im Angebot
|
||||
en: On Sale
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-6"
|
||||
|
||||
- name: isNew
|
||||
type: boolean
|
||||
meta:
|
||||
label:
|
||||
de: Neu
|
||||
en: New
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-6"
|
||||
300
api/collections/rating.yml
Normal file
300
api/collections/rating.yml
Normal file
@@ -0,0 +1,300 @@
|
||||
name: rating
|
||||
|
||||
meta:
|
||||
label: { de: "Bewertungen", en: "Ratings" }
|
||||
muiIcon: reviews
|
||||
views:
|
||||
- type: simpleList
|
||||
mediaQuery: "max-width: 600px"
|
||||
primaryText: order
|
||||
- type: table
|
||||
columns:
|
||||
- source: orderId
|
||||
filter: true
|
||||
- source: productId
|
||||
filter: true
|
||||
- source: rating
|
||||
filter: true
|
||||
- source: status
|
||||
filter: true
|
||||
|
||||
permissions:
|
||||
public:
|
||||
methods:
|
||||
get: true
|
||||
post: true
|
||||
put: true
|
||||
delete: false
|
||||
user:
|
||||
methods:
|
||||
get: true
|
||||
post: true
|
||||
put: true
|
||||
delete: false
|
||||
|
||||
rating:
|
||||
methods:
|
||||
get: true
|
||||
post: true
|
||||
put: true
|
||||
delete: false
|
||||
|
||||
"token:${IMPORT_TOKEN}":
|
||||
methods:
|
||||
get: true
|
||||
post: true
|
||||
put: true
|
||||
delete: true
|
||||
|
||||
hooks:
|
||||
delete:
|
||||
delete:
|
||||
type: javascript
|
||||
file: hooks/rating/delete_delete.js
|
||||
|
||||
return:
|
||||
type: javascript
|
||||
file: hooks/rating/delete_return.js
|
||||
get:
|
||||
read:
|
||||
type: javascript
|
||||
file: hooks/rating/get_read.js
|
||||
|
||||
post:
|
||||
validate:
|
||||
type: javascript
|
||||
file: hooks/rating/post_validate.js
|
||||
create:
|
||||
type: javascript
|
||||
file: hooks/rating/post_create.js
|
||||
|
||||
return:
|
||||
file: hooks/rating/post_return.js
|
||||
type: javascript
|
||||
|
||||
put:
|
||||
validate:
|
||||
type: javascript
|
||||
file: hooks/rating/put_validate.js
|
||||
update:
|
||||
type: javascript
|
||||
file: hooks/rating/put_update.js
|
||||
return:
|
||||
file: hooks/rating/put_return.js
|
||||
type: javascript
|
||||
|
||||
fields:
|
||||
- name: bigCommerceOrderId
|
||||
index: [single]
|
||||
type: string
|
||||
meta:
|
||||
label: { de: Bestellung, en: "Order" }
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-4"
|
||||
|
||||
- name: bigCommerceProductRatingId
|
||||
index: [single]
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Produktbewertung - BigCommerce ID", en: "Product Rating - BigCommerce ID" }
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-4"
|
||||
|
||||
- name: productId
|
||||
index: [single]
|
||||
type: string
|
||||
meta:
|
||||
label: { de: "Produkt", en: "Product" }
|
||||
widget: foreignKey
|
||||
foreign:
|
||||
collection: bigCommerceProducts
|
||||
subNavigation: 0
|
||||
id: id
|
||||
render:
|
||||
defaultCollectionViews: true
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-4"
|
||||
validator:
|
||||
required: true
|
||||
|
||||
- name: author
|
||||
type: string
|
||||
validator:
|
||||
required: true
|
||||
meta:
|
||||
label: { de: "Autor", en: "Author" }
|
||||
defaultValue: Anonym
|
||||
|
||||
- name: rating
|
||||
index: [single]
|
||||
type: object
|
||||
meta:
|
||||
label: { de: "Bewertung", en: "Rating" }
|
||||
subFields:
|
||||
- name: length
|
||||
type: number
|
||||
meta:
|
||||
label: { de: "Länge", en: "Length" }
|
||||
helperText: { de: "1 - Besonders Kurz; 5 - Besonders Lang", en: "1 - Very Short; 5 - Very Long" }
|
||||
defaultValue: 5
|
||||
validator:
|
||||
eval: |
|
||||
(function () {
|
||||
return $this >= 0 && $this <= 5;
|
||||
})()
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-4"
|
||||
- name: fit
|
||||
type: number
|
||||
meta:
|
||||
label: { de: "Passform", en: "Fit" }
|
||||
helperText: { de: "1 - Sehr Eng; 5 - Sehr Weit", en: "1 - Very Tight; 5 - Very Wide" }
|
||||
defaultValue: 5
|
||||
validator:
|
||||
eval: |
|
||||
(function () {
|
||||
return $this >= 0 && $this <= 5;
|
||||
})()
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-4"
|
||||
|
||||
- name: quality
|
||||
type: number
|
||||
meta:
|
||||
label: { de: "Qualität", en: "Quality" }
|
||||
helperText: { de: "1 - Schlecht; 5 - Sehr Gut", en: "1 - Bad; 5 - Very Good" }
|
||||
defaultValue: 5
|
||||
validator:
|
||||
eval: |
|
||||
(function () {
|
||||
return $this >= 0 && $this <= 5;
|
||||
})()
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-4"
|
||||
|
||||
- name: priceQualityRatio
|
||||
type: number
|
||||
meta:
|
||||
label: { de: "Preis-Leistungs-Verhältnis", en: "Price-Quality Ratio" }
|
||||
helperText: { de: "1 - Schlecht; 5 - Sehr Gut", en: "1 - Bad; 5 - Very Good" }
|
||||
defaultValue: 5
|
||||
validator:
|
||||
eval: |
|
||||
(function () {
|
||||
return $this >= 0 && $this <= 5;
|
||||
})()
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-4"
|
||||
|
||||
- name: comfort
|
||||
type: number
|
||||
meta:
|
||||
label: { de: "Komfort", en: "Comfort" }
|
||||
helperText: { de: "1 - Unbequem; 5 - Sehr Bequem", en: "1 - Uncomfortable; 5 - Very Comfortable" }
|
||||
defaultValue: 5
|
||||
validator:
|
||||
eval: |
|
||||
(function () {
|
||||
return $this >= 0 && $this <= 5;
|
||||
})()
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-4"
|
||||
|
||||
- name: overall
|
||||
type: number
|
||||
meta:
|
||||
label: { de: "Gesamt", en: "Overall" }
|
||||
helperText: { de: "1 - Schlecht; 5 - Sehr Gut", en: "1 - Bad; 5 - Very Good" }
|
||||
defaultValue: 5
|
||||
validator:
|
||||
eval: |
|
||||
(function () {
|
||||
return $this >= 0 && $this <= 5;
|
||||
})()
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-4"
|
||||
|
||||
- name: comment
|
||||
type: string
|
||||
meta:
|
||||
widget: richtext
|
||||
label: { de: "Kommentar", en: "Comment" }
|
||||
inputProps:
|
||||
multiline: true
|
||||
|
||||
- name: review_date
|
||||
type: date
|
||||
validator:
|
||||
eval: |
|
||||
(function () {
|
||||
return (new Date($this) !== "Invalid Date") && !isNaN(new Date($this));
|
||||
})()
|
||||
meta:
|
||||
label: { de: "Erstellungsdatum", en: "Creation date" }
|
||||
defaultValue:
|
||||
eval: new Date()
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-6"
|
||||
|
||||
- name: status
|
||||
type: string
|
||||
index: [single]
|
||||
validator:
|
||||
eval: (["pending", "approved", "rejected"].includes($this))
|
||||
meta:
|
||||
label: Status
|
||||
widget: "select"
|
||||
defaultValue: pending
|
||||
choices:
|
||||
- name: { de: wartend, en: pending }
|
||||
id: pending
|
||||
- name: { de: bestätigt, en: approved }
|
||||
id: approved
|
||||
- name: { de: abgelehnt, en: rejected }
|
||||
id: rejected
|
||||
containerProps:
|
||||
layout:
|
||||
size:
|
||||
default: "col-6"
|
||||
small: "col-12"
|
||||
large: "col-6"
|
||||
Reference in New Issue
Block a user