styling
This commit is contained in:
@@ -2,23 +2,23 @@
|
||||
|
||||
## TibiCMS
|
||||
|
||||
Oberbegriff der den gesamten Stack, bestehend aus "tibi-server" mit "MongoDB" und "tibi-admin" beschreibt.
|
||||
Oberbegriff der den gesamten Stack, bestehend aus *tibi-server* mit *MongoDB** und *tibi-admin* beschreibt.
|
||||
|
||||
## tibi-server
|
||||
|
||||
REST-API Server des TibiCMS Stack
|
||||
Rest-API Server des *TibiCMS* Stack
|
||||
|
||||
## tibi-admin
|
||||
|
||||
Admin-UI/Backend zur Verwaltung der Inhalte im "tibi-server"
|
||||
Admin-UI/Backend zur Verwaltung der Inhalte im *tibi-server*
|
||||
|
||||
## API
|
||||
|
||||
Schnittstelle (hier Rest-API) des tibi-server (im Projektkontext ebenso für Projektspezifische Schnittstelle vrwendet)
|
||||
Schnittstelle (hier Rest-API) des *tibi-server* (im Projektkontext ebenso für Projektspezifische Schnittstelle vrwendet)
|
||||
|
||||
## project / Projekt
|
||||
|
||||
Projekt innerhalb des TibiCMS welches üblicherweise die Datengrundlage für eine Website im TibiCMS ist
|
||||
Projekt innerhalb des *TibiCMS* welches üblicherweise die Datengrundlage für eine Website im *TibiCMS* ist
|
||||
|
||||
## collection / Kollektion
|
||||
|
||||
@@ -46,7 +46,7 @@ Vorerst nur in Javascript geschriebene Algorithmen, die die sich in die API eink
|
||||
|
||||
## user / Benutzer
|
||||
|
||||
Ein Benutzer mit Login innerhalb des TibiCMS
|
||||
Ein Benutzer mit Login innerhalb des *TibiCMS*
|
||||
|
||||
## permission / Berechtigung
|
||||
|
||||
|
||||
@@ -23,4 +23,12 @@ ul.heading-list .hlink, ul.heading-list .hlink:visited {
|
||||
color: #3a0909!important;
|
||||
right: 0px;
|
||||
opacity: 1!important;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #7c2828!important;
|
||||
}
|
||||
|
||||
code {
|
||||
color:#3a0909!important;
|
||||
}
|
||||
@@ -8,7 +8,7 @@
|
||||
Colors taken from GitHub's CSS
|
||||
*/
|
||||
|
||||
.hljs, pre {
|
||||
.hljs, pre, pre code {
|
||||
color: #adbac7!important;
|
||||
background: #22272e!important;
|
||||
}
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
# collections
|
||||
|
||||
Die Konfiguration einer Kollektion sollte zur besseren Übersicht innerhalb einer gesonderten Datei im Unterorder "/api/collections/" erfolgen und via "!include" in die "config.yml" eingebunden werden.
|
||||
Die Konfiguration einer Kollektion sollte zur besseren Übersicht innerhalb einer gesonderten Datei im Unterorder **api/collections/** erfolgen und via `!include` in die [config.yml](./config.yml.md) eingebunden werden.
|
||||
|
||||
## Grundlegender Aufbau
|
||||
|
||||
Eine solche Datei (z.B. democol.yml) hat folgenden Aufbau:
|
||||
Eine solche Datei hat folgenden Aufbau:
|
||||
|
||||
!!!include(api/collections/democol.yml)!!!
|
||||
|
||||
## imageFilter Objekt
|
||||
|
||||
Die Bildmanipulation von hochgeladen Bildern zu einer Kollektion kann über das "imageFilter" Objekt definiert werden.
|
||||
Der Filter wird angewandt, wenn an die Bild-URL der Parameter "filter=..." angehangen wird.
|
||||
Die Bildmanipulation von hochgeladen Bildern zu einer Kollektion kann über das `imageFilter` Objekt definiert werden.
|
||||
Der Filter wird angewandt, wenn an die Bild-URL der Parameter `filter=...` angehangen wird.
|
||||
|
||||
Der Prozess selbst erfolgt beim ersten Abruf des Bildes und wird zwischengespeichert.
|
||||
|
||||
@@ -19,24 +19,24 @@ Eine beispielhafte Konfiguration, die die Bilder nur verkleinert sieht so aus:
|
||||
|
||||
!!!include(api/collections/democol/imageFilter.yml)!!!
|
||||
|
||||
Folgende Attribute können Filter-Eintrage haben, wobei "fit" und "fill" exklusiv sind:
|
||||
Folgende Attribute können Filter-Eintrage haben, wobei `fit` und `fill` exklusiv sind:
|
||||
|
||||
| Attribut | Typ | Beschreibung |
|
||||
| --- | --- | --- |
|
||||
| fit | boolean | passt das Bild in ein Rechteck ein |
|
||||
| fill | boolean | streckt/staucht das Bild, so dass es das Rechteck komplett ausfüllt |
|
||||
| height | number | Höhe des Rechtecks |
|
||||
| width | number | Breite des Rechtecks |
|
||||
| blur | number | Verwischungsgrad |
|
||||
| brightness | number | Helligkeit |
|
||||
| contrast | number | Konrast |
|
||||
| gamma | number | Gamma-Wert |
|
||||
| saturation | number | Sättigung |
|
||||
| sharpen | number | Schärfe |
|
||||
| invert | boolean | Farben invertieren |
|
||||
| grayscale | boolean | Schwarz-Weiß |
|
||||
| resampling | "lanczos"<br>"nearestNeighbor"<br>"linear"<br>"catmullRom" | Resampling-Algorithmus |
|
||||
| quality | number | Ausgabequalität 0..100 |
|
||||
| `fit` | boolean | passt das Bild in ein Rechteck ein |
|
||||
| `fill` | boolean | streckt/staucht das Bild, so dass es das Rechteck komplett ausfüllt |
|
||||
| `height` | number | Höhe des Rechtecks |
|
||||
| `width` | number | Breite des Rechtecks |
|
||||
| `blur` | number | Verwischungsgrad |
|
||||
| `brightness` | number | Helligkeit |
|
||||
| `contrast` | number | Konrast |
|
||||
| `gamma` | number | Gamma-Wert |
|
||||
| `saturation` | number | Sättigung |
|
||||
| `sharpen` | number | Schärfe |
|
||||
| `invert` | boolean | Farben invertieren |
|
||||
| `grayscale` | boolean | Schwarz-Weiß |
|
||||
| `resampling` | "lanczos"<br>"nearestNeighbor"<br>"linear"<br>"catmullRom" | Resampling-Algorithmus |
|
||||
| `quality` | number | Ausgabequalität 0..100 |
|
||||
|
||||
|
||||
## indexes Liste
|
||||
@@ -45,7 +45,7 @@ TODO
|
||||
|
||||
## meta Objekt
|
||||
|
||||
Wie bereits an anderer Stelle beschrieben, dient das meta-Objekt zur Definition von Merkmalen, die in der Admin-UI Verwendung finden. Zum Anlegen der Struktur in der Datenbank und Definition der API haben diese Angaben keine Relevanz.
|
||||
Wie bereits an anderer Stelle beschrieben, dient das `meta` Objekt zur Definition von Merkmalen, die im *tibi-admin* finden. Zum Anlegen der Struktur in der Datenbank und Definition der API haben diese Angaben keine Relevanz.
|
||||
|
||||
Folgende Angaben sind möglich:
|
||||
|
||||
@@ -53,11 +53,11 @@ Folgende Angaben sind möglich:
|
||||
|
||||
### views Liste
|
||||
|
||||
"views" werden für die Darstellung der Kollektion-Daten in der Admin-UI benötigt. Die Auswahl des passenden View erfolgt über CSS Media-Queries.
|
||||
`views` werden für die Darstellung der Kollektion-Daten im *tibi-admin* benötigt. Die Auswahl des passenden View erfolgt über CSS Media-Queries.
|
||||
|
||||
Optionale Unternavigationen können eigene "views" haben.
|
||||
Optionale Unternavigationen können eigene `views` haben.
|
||||
|
||||
Folgende Views gibt es derzeit:
|
||||
Folgende möglche Einträge für `views` gibt es derzeit:
|
||||
|
||||
#### simpleList
|
||||
|
||||
@@ -69,6 +69,6 @@ Folgende Views gibt es derzeit:
|
||||
|
||||
### tablist
|
||||
|
||||
Wird die "tablist" verwendet, ist sicher zu stellen, dass alle Felder in der Definition aufgenommen werden. Werden Felder nicht in die "tablist" aufgenommen, sind diese weiterhin in einer Gesamtliste unterhalb der Tabs und bringen das Layout durcheinander.
|
||||
Wird die `tablist` verwendet, ist sicher zu stellen, dass alle Felder in der Definition aufgenommen werden. Werden Felder nicht in die `tablist` aufgenommen, sind diese weiterhin in einer Gesamtliste unterhalb der Tabs und bringen das Layout durcheinander.
|
||||
|
||||
!!!include(api/collections/democol/tablist.yml)!!!
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# config.yml
|
||||
|
||||
Die Datei "config.yml" ist der Einstieg in die API-Konfiguration eines Projekts. Die Datei kann sich an einem beliebigen Ort befinden. Die einzige Bedingung ist, dass sie durch den tibi-server lesbar ist.
|
||||
Die Datei **config.yml** ist der Einstieg in die API-Konfiguration eines Projekts. Die Datei kann sich an einem beliebigen Ort befinden. Die einzige Bedingung ist, dass sie durch den tibi-server lesbar ist.
|
||||
|
||||
Es hat sich jedoch als günstig erwiesen bei Webprojekten die Datei und alle anderen Datein, die zur API-Konfiguration gehören, im ordner "/api/" unterhalb des eigentlichen Webprojektes anzuordnen. Die Quellen des Frontends und der API können somit in ein Mono-Repo eingecheckt werden.
|
||||
Es hat sich jedoch als günstig erwiesen bei Webprojekten die Datei und alle anderen Datein, die zur API-Konfiguration gehören, im ordner [api/](./ordnerstruktur.md) unterhalb des eigentlichen Webprojektes anzuordnen. Die Quellen des Frontends und der API können somit in ein Mono-Repo eingecheckt werden.
|
||||
|
||||
## Aufbau
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# fields
|
||||
|
||||
Felder im tibi-server müssen einen bestimmten Datentyp haben. Über die Admin-UI können die Felder über Widgets in unterschiedlichen Ausprägungen dargestellt werden (view-Widgets), bzw. dem Benutzer eine Eingabe abverlangen (input-Widgets).
|
||||
Felder im *tibi-server* müssen einen bestimmten Datentyp haben. Über den *tibi-admin* können die Felder über Widgets in unterschiedlichen Ausprägungen dargestellt werden (view-Widgets), bzw. dem Benutzer eine Eingabe abverlangen (input-Widgets).
|
||||
|
||||
Es gibt grundlegende Angaben, die jedes Feld haben muss um vom tibi-server akzeptiert zu werden. Darüber hinaus kann auch jedes Feld ein "meta" Objekt haben, was der Admin-UI mitteilt, wie es dieses Feld für Ausgabe und Eingabe behandel soll.
|
||||
Es gibt grundlegende Angaben, die jedes Feld haben muss um vom *tibi-server* akzeptiert zu werden. Darüber hinaus kann auch jedes Feld ein `meta` Objekt haben, was dem *tibi-admin* mitteilt, wie er dieses Feld für Ausgabe und Eingabe behandel soll.
|
||||
|
||||
Zunächst folgt der grundlegende Aufbau des Feld-Objektes:
|
||||
|
||||
@@ -10,15 +10,15 @@ Zunächst folgt der grundlegende Aufbau des Feld-Objektes:
|
||||
|
||||
## validator Objekt
|
||||
|
||||
Der Validator wird tibi-server seitig genutzt um die Daten zu validieren. Da das "validator" Objekt der Admin-UI ebenso zur Verfügung steht, kann vorab eine client-seitige Validierung zusaätzlich durchgeführt werden.
|
||||
Das `validator` Objekt wird *tibi-server* seitig genutzt um die Daten zu validieren. Da das `validator` Objekt dem *tibi-admin* ebenso zur Verfügung steht, kann vorab eine client-seitige Validierung zusätzlich durchgeführt werden.
|
||||
|
||||
Attribute des Objektes:
|
||||
|
||||
| Attribut | Datentyp | Beschreibung |
|
||||
| --- | --- | --- |
|
||||
| required | boolean | wenn "true", dann ist zwingend eine Eingabe zu diesem Feld nötig |
|
||||
| allowZero | boolean | in Kombination mit required=true, wenn "true", dann ist der jeweilige "Null"-Wert des Datentyps erlaubt<br><br>z.B. `type: string` erlaubt den leeren String und `type: number` erlaubt 0 |
|
||||
| eval | string | Javascript-Code der zu true evaluieren muss um den Wert des Feldes als gültig zu definieren |
|
||||
| `required` | boolean | wenn `true`, dann ist zwingend eine Eingabe zu diesem Feld nötig |
|
||||
| `allowZero` | boolean | in Kombination mit `required: true`, wenn `true`, dann ist der jeweilige "Null"-Wert des Datentyps erlaubt<br><br>z.B. `type: string` erlaubt den leeren String und `type: number` erlaubt `0` |
|
||||
| `eval` | string | Javascript-Code der zu true evaluieren muss um den Wert des Feldes als gültig zu definieren |
|
||||
|
||||
### eval-Attribut
|
||||
|
||||
@@ -26,11 +26,11 @@ Der Javascript-Code in diesem Attribut kann folgende Rückgabe-Werte haben:
|
||||
|
||||
| Wert | Bedeutung |
|
||||
| --- | --- |
|
||||
| true | Der Wert des Feldes ist gültig |
|
||||
| false | Der Wert des Feldes ist ungültig |
|
||||
| "Text" | Wird ein String zurückgegeben ist, wird der Wert es Feldes ebenso als ungültig erachtet und der String selbst ist eine benutzerdefinierte Fehlermeldung, die in der Serverantwort gelesen werden kann. |
|
||||
| `true` | Der Wert des Feldes ist gültig |
|
||||
| `false` | Der Wert des Feldes ist ungültig |
|
||||
| `"Text"` | Wird ein String zurückgegeben ist, wird der Wert es Feldes ebenso als ungültig erachtet und der String selbst ist eine benutzerdefinierte Fehlermeldung, die in der Serverantwort gelesen werden kann. |
|
||||
|
||||
Es ist ein Onliner wie `new Date($this) > new Date()` meist ausreichend. Für komplexere Prüfungen ist eine sich selbst ausführende Funktion aber oft geeigneter, wie z.B.
|
||||
Es ist ein Oneliner wie `new Date($this) > new Date()` meist ausreichend. Für komplexere Prüfungen ist eine sich selbst ausführende Funktion aber geeigneter, wie z.B.
|
||||
|
||||
```javascript
|
||||
(function() {
|
||||
@@ -53,20 +53,20 @@ eval: |
|
||||
})()
|
||||
```
|
||||
|
||||
Wie im obigen Beispiel zu sehen, gibt es spezielle Variablen die im Javascript zur Verfügung stehen. Nicht alle Variablen stehen server- und clientseitig (Admin-UI) zur Verfügung. Eine ensprechende Ausnahmebehandlung ist daher nötig.
|
||||
Wie im obigen Beispiel zu sehen, gibt es spezielle Variablen die im Javascript zur Verfügung stehen. Nicht alle Variablen stehen server- und clientseitig (*tibi-admin*) zur Verfügung. Eine ensprechende Ausnahmebehandlung ist daher nötig.
|
||||
|
||||
Folgende Variablen stehen zur Verfügung:
|
||||
|
||||
| Variable | Datentyp | serverseitig | Admin-UI | Bedeutung |
|
||||
| Variable | Datentyp | tibi-server | tibi-admin | Bedeutung |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| $this | | X | X | | Der Wert des Feldes in dem der Validator ausgeführt wird. |
|
||||
| $ (alias entry) | object | X | X | Das gesamte Objekt des Dokuments |
|
||||
| $parent | object/array | X | X | Der Wert des Elternknotens zum aktuellen Feld |
|
||||
| $stack | array | X | X | Der Stack bis zum Ursprung des gesamten Objekts |
|
||||
| $namespace | string | X | TODO | Die Bezeichnung des Namespace des aktuellen Projekts |
|
||||
| $method | "post"/"put" | X | TODO | Die HTTP-Methode (Kleinschreibung) |
|
||||
| $auth | object/null | X | TODO | Das aktuelle Auth-Objekt des eingeloggten Benutzers, siehe Hooks `context.user.auth()` |
|
||||
| context | object | X | - | Das serverseitige context-Objekt, siehe Hooks |
|
||||
| `$this` | | X | X | | Der Wert des Feldes in dem der Validator ausgeführt wird. |
|
||||
| `$` (alias `entry`) | object | X | X | Das gesamte Objekt des Dokuments |
|
||||
| `$parent` | object oder array | X | X | Der Wert des Elternknotens zum aktuellen Feld |
|
||||
| `$stack` | array | X | X | Der Stack bis zum Ursprung des gesamten Objekts |
|
||||
| `$namespace` | string | X | TODO | Die Bezeichnung des Namespace des aktuellen Projekts |
|
||||
| `$method` | `"post"`/`"put"` | X | TODO | Die HTTP-Methode (Kleinschreibung) |
|
||||
| `$auth` | object oder `null` | X | TODO | Das aktuelle Auth-Objekt des eingeloggten Benutzers, siehe Hooks `context.user.auth()` |
|
||||
| `context` | object | X | - | Das serverseitige context-Objekt, siehe Hooks |
|
||||
|
||||
Für die beispielhafte Übertragung von
|
||||
|
||||
@@ -159,60 +159,69 @@ plah
|
||||
|
||||
## dependsOn und defaultValue Kontext
|
||||
|
||||
TODO
|
||||
Der Javascript-Kontext ist für das `eval`-Attribut von `dependsOn` und `defaultValue` ebenso mit Variablen angereichert, wie es beim `validator.eval` der Fall ist. Da der entsprechende Code allerdings nur client-seitig ausgeführt wird (im Feld `meta` Objekt), sind nicht alle Variablen identisch.
|
||||
|
||||
Folgende Unterschiede gibt es zu den bereits beschriebenen Variablen von `validator.eval`:
|
||||
|
||||
| Variable | Unterschied |
|
||||
| --- | --- |
|
||||
| `context` | nicht vorhanden |
|
||||
| `$method` | `"put"` bedeuted, dass der Datensatz gerade in Bearbeitung ist, `"post"` = Datensatz soll angelegt werden |
|
||||
| `$navigation` | nur hier vorhanden, da der Server keine `subNavigation` Liste kennt,<br>enthält das aktuelle Objekt der aktiven Unternavigation, also den entprechenden Listeneintrag aus `meta.subNavigation` |
|
||||
|
||||
|
||||
## Datentypen
|
||||
|
||||
Via "type" wird der Datentyp des Feldes definiert. Folgende Datentypen sind möglich:
|
||||
Via `type` wird der Datentyp des Feldes definiert. Folgende Datentypen sind möglich:
|
||||
|
||||
### string
|
||||
|
||||
String wird für Zeichenketten verwendet. Das Standardwidget ohne weitere Angabe ist bei der Ausgabe die direkte Textausgabe und bei der Eingabe ein input-Element vom type="text".
|
||||
String wird für Zeichenketten verwendet. Das Standardwidget ohne weitere Angabe ist bei der Ausgabe die direkte Textausgabe und bei der Eingabe ein HTML `<input ...>` Element mit dem Attribut `type="text"`.
|
||||
|
||||
### number
|
||||
|
||||
Number wird sowohl für ganze Zahlen, wie auch für Gleitkommawerte definiert. Auch hier ist das Standard-Widget für die Eingabe ein input-Element, allerdings vom type="number".
|
||||
Number wird sowohl für ganze Zahlen, wie auch für Gleitkommawerte definiert. Auch hier ist das Standard-Widget für die Eingabe ein HTML `<input ...>` Element, allerdings mit dem Attribut `type="number"`.
|
||||
|
||||
### boolean
|
||||
|
||||
Ein boolcher Wert, also true/false, wird über den Typ "boolean" definiert und standardmäßig als Checkbox dargestellt.
|
||||
Ein boolcher Wert, also `true` oder `false`, wird über den Typ `"boolean"` definiert und standardmäßig als Checkbox dargestellt.
|
||||
|
||||
### date
|
||||
|
||||
date als Datentyp kann sowohl Datumsangabe mit, als auch ohne Uhrzeit aufnehmen. Das Standardwidget ist die einfache Datumseingabe ohne Uhrzeit.
|
||||
`"date"` als Datentyp kann sowohl Datumsangabe mit, als auch ohne Uhrzeit aufnehmen. Das Standardwidget ist die einfache Datumseingabe ohne Uhrzeit.
|
||||
|
||||
### file
|
||||
|
||||
Der Datentyp "file" ist für Dateiuploads vorgesehen. Es daher standardmäßig ein Datei-Auswahl-Dialog als Widget für die Eingabe angeboten.
|
||||
Der Datentyp `"file"` ist für Dateiuploads vorgesehen. Es daher standardmäßig ein Datei-Auswahl-Dialog als Widget für die Eingabe angeboten.
|
||||
|
||||
### string[]
|
||||
|
||||
Für string-Arrays ist die Angabe des Widgets zwingend notwendig.
|
||||
Für `"string[]` Arrays ist die Angabe des Widgets zwingend notwendig.
|
||||
|
||||
### number[]
|
||||
|
||||
Auch für number-Arrays wird die Widget-Angabe erwartet.
|
||||
Auch für `"number[]"` Arrays wird die Widget-Angabe erwartet.
|
||||
|
||||
### object
|
||||
|
||||
"object" ist ein spezieller Datentyp der zur Strukturierung der API und der Eingabe dient. Dieser Datentyp fasst "subFields" zusammen.
|
||||
`"object"` ist ein spezieller Datentyp der zur Strukturierung der API und der Eingabe dient. Dieser Datentyp fasst `subFields` zusammen.
|
||||
|
||||
### object[]
|
||||
|
||||
Wie "object" fasst auch das "object"-Array "subFields" zusammen. Diese allerdings als Liste von Objekten, anstatt als Einzelobjekt.
|
||||
Wie `"object"` fasst auch das `"object[]"` Array `subFields` zusammen. Diese allerdings als Liste von Objekten, anstatt als Einzelobjekt.
|
||||
|
||||
### any
|
||||
|
||||
Felder vom Typ "any" können beliebige Daten aufnehmen. Die Validierung schlägt auf Basis der Typ-Validierung hier nie fehl.
|
||||
Felder vom Typ `"any"` können beliebige Daten aufnehmen. Die Validierung schlägt auf Basis der Typ-Validierung hier nie fehl.
|
||||
|
||||
## Admin-UI Widgets
|
||||
## Widgets
|
||||
|
||||
TODO
|
||||
Das im *tibi-admin* für die Ein- und Ausgabe von Daten zu verwendente Widget wird über die Feldkonfiguration `meta.widget` festgelegt. Die Angabe erfolgt als String mit dem Widget-Namen.
|
||||
|
||||
Nicht jedes Widget kann mit jedem Datentyp umgehen, die möglichen Datentypen werden aber nachfolgend bei jedem Widget erwähnt. Außerdem wird auf individuelle Konfigurationsmöglichkeiten eingegangen.
|
||||
|
||||
### text
|
||||
|
||||
### richText
|
||||
|
||||
### number
|
||||
|
||||
### checkbox
|
||||
@@ -223,6 +232,8 @@ TODO
|
||||
|
||||
### datetime
|
||||
|
||||
### richText
|
||||
|
||||
### file
|
||||
|
||||
### image
|
||||
|
||||
@@ -4,13 +4,13 @@ Als Konvention für neue Projekte hat sich folgende Ordnerstruktur etabliert:
|
||||
|
||||

|
||||
|
||||
Die Aufteilung der YAML-Konfiguration ist durch den YAML-Tag "!include" möglich. Genaueres dazu wird auf den nachfolgenden Seiten beschrieben.
|
||||
Die Aufteilung der YAML-Konfiguration ist durch den YAML-Tag `!include` möglich. Genaueres dazu wird auf den nachfolgenden Seiten beschrieben.
|
||||
|
||||
## /api
|
||||
|
||||
Der Einstigesordner in die Konfiguration ist frei wählbar. "/api" innerhalb des Projektrepositories hat sich jedoch bewährt.
|
||||
Der Einstiegsordner in die Konfiguration ist frei wählbar. "/api" innerhalb des Projektrepositories hat sich jedoch bewährt.
|
||||
|
||||
Die Enstiegsdatei in die Gesamt-Konfiguration liegt hier und heißt `config.yml`. In dieser können Umgebungsvariablen erstetzt werden, welche in `config.yml.env` definiert sind.
|
||||
Die Einstiegsdatei in die Gesamt-Konfiguration liegt hier und heißt [config.yml](./config.yml.md). In dieser können Umgebungsvariablen erstetzt werden, welche in [config.yml.env](./config.yml.md) definiert sind.
|
||||
|
||||
Ebenso sind alle nachfolgenden Unterordner beliebig zu benennen. Da aber ein JSON-Schema und VSCode-Konfiguration zur Validierung der YAML Dateien existiert, ist folgende Struktur hilfreich.
|
||||
|
||||
@@ -41,7 +41,7 @@ Die im Projekt liegende VSCode-Konfig sollte dementsprechend ergänzt werden:
|
||||
...
|
||||
```
|
||||
|
||||
Sollte Yarn2 verwendet werden ist die Verlinkung von "node_modules" nötig. Dazu ist folgendes in der `.yarnrc.yml` einzutragen:
|
||||
Sollte Yarn2 verwendet werden ist die Verlinkung von **node_modules** nötig. Dazu ist folgendes in der **.yarnrc.yml** einzutragen:
|
||||
|
||||
```yaml
|
||||
...
|
||||
@@ -50,16 +50,16 @@ nodeLinker: node-modules
|
||||
|
||||
## /api/collections
|
||||
|
||||
Bei Aufteilung der Kollektionskonfigurationen in einzelne Dateien, sollten diese in diesem Ordner gespeichert werden. Für jede Kollektion sollte eine eigene Datei verwendet werden, hier im Beispiel `democol.yml`.
|
||||
Bei Aufteilung der Kollektionskonfigurationen in einzelne Dateien, sollten diese in diesem Ordner gespeichert werden. Für jede Kollektion sollte eine eigene Datei verwendet werden, hier im Beispiel [api/collections/democol.yml](./collections.md).
|
||||
|
||||
### /api/collections/fields
|
||||
|
||||
Sollten Feldkonfigurationen wieder verwendet werden, können diese im "fields" Unterordner gepeichert werden. Diese sind pro Feldkonfiguration als einzelne Datei aufzuführen.
|
||||
Sollten Feldkonfigurationen wieder verwendet werden, können diese im [api/collections/fields/](./fields.md) Unterordner gepeichert werden. Diese sind pro Feldkonfiguration als einzelne Datei aufzuführen.
|
||||
|
||||
### /api/hooks
|
||||
|
||||
Jede Javascript-Datei, die einen Hook bedient sollte im Unterordner benannt nach der Kollektion im Ordner "hooks" sein. Der Name der Datei sollte sich nach den Hook richten. Z.B. `get_return.js` ist zustängig für den GET-Hook nach dem Lesen der Daten, bevor diese zurück gegeben werden. Mehr dazu unter [Hooks](hooks.md).
|
||||
Jede Javascript-Datei, die einen Hook bedient sollte im Unterordner benannt nach der Kollektion im Ordner [api/hooks/](./hooks.md) sein. Der Name der Datei sollte sich nach den Hook richten. Z.B. **get_return.js** ist zustängig für den GET-Hook nach dem Lesen der Daten, bevor diese zurück gegeben werden. Mehr dazu unter [Hooks](./hooks.md).
|
||||
|
||||
### /api/templates
|
||||
|
||||
Ist es nötig im Projekt Templates zu rendern (z.B. für den Email-Versand), sind diese im Ordner "templates" gut aufgehoben.
|
||||
Ist es nötig im Projekt Templates zu rendern (z.B. für den Email-Versand), sind diese im Ordner **templates** gut aufgehoben.
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
## Projekt
|
||||
|
||||
Jedes Projekt hat eine eigene Konfig-Datei im YAML-Format (config.yml) deren Aufbau später beschrieben wird.
|
||||
Jedes Projekt hat eine eigene Konfig-Datei im YAML-Format [config.yml](../projektkonfig/config.yml.md) deren Aufbau später beschrieben wird.
|
||||
|
||||
Wird der Server als "root" ausgeführt, so werden die individuellen Projekt-Threads mit der Benutzer- und Gruppenberechtigung der config.yml Datei ausgeführt. Somit ist ein Multi-Mandanten-Server mit getrennten Dateisystem-Berechtigungen möglich.
|
||||
Wird der Server als "root" ausgeführt, so werden die individuellen Projekt-Threads mit der Benutzer- und Gruppenberechtigung der [config.yml](../projektkonfig/config.yml.md) Datei ausgeführt. Somit ist ein Multi-Mandanten-Server mit getrennten Dateisystem-Berechtigungen möglich.
|
||||
|
||||
Die Projektkonfiguration ist zwingend notwendig und wird beim Anlegen oder Bearbeiten von Projekten über die REST-API neu eingelesen.
|
||||
Die Projektkonfiguration ist zwingend notwendig und wird beim Anlegen oder Bearbeiten von Projekten über die Rest-API neu eingelesen.
|
||||
|
||||
## Benutzer
|
||||
|
||||
|
||||
Reference in New Issue
Block a user