docs in sub package

This commit is contained in:
Sebastian Frank 2023-02-21 14:59:14 +00:00
parent 010ee6baf1
commit 1841083039
58 changed files with 128 additions and 127 deletions

View File

@ -3,14 +3,6 @@ type: docker
name: default name: default
steps: steps:
- name: yarn install
image: node:18
pull: if-not-exists
environment:
FORCE_COLOR: "true"
commands:
- yarn install
############################## ##############################
# Build and deploy docs # Build and deploy docs
############################## ##############################
@ -20,6 +12,8 @@ steps:
environment: environment:
FORCE_COLOR: "true" FORCE_COLOR: "true"
commands: commands:
- cd docs
- yarn install
- yarn docpress:build - yarn docpress:build
when: when:
branch: [master] branch: [master]
@ -48,6 +42,14 @@ steps:
############################## ##############################
# Demo project # Demo project
############################## ##############################
- name: yarn install
image: node:18
pull: if-not-exists
environment:
FORCE_COLOR: "true"
commands:
- yarn install
- name: modify config - name: modify config
image: alpine/git image: alpine/git
commands: commands:

4
.gitignore vendored
View File

@ -1,11 +1,11 @@
_docpress docs/_docpress
docs/node_modules
api/hooks/lib/app.server* api/hooks/lib/app.server*
node_modules node_modules
media media
tmp tmp
_temp _temp
frontend/dist frontend/dist
docs/node_modules
yarn-error.log yarn-error.log
.yarn/* .yarn/*
!.yarn/cache !.yarn/cache

View File

@ -1,21 +0,0 @@
# TibiCMS Dokumentation
![TibiCMS Aufbau](./docs/tibi-aufbau.svg)
## Einleitung
*TibiCMS* ist der Sammelbegriff für die Komponenten *tibi-server* und *tibi-admin*, welche einen Rest-API Server und eine Administrationsoberfläche zur Verfügung stellen. Auf Basis dieser beiden Komponenten und der *MongoDB* als Abhängigkeit lassen sich WebCMS Anwendungen abbilden.
Das CMS ist multi-mandanten-fähig, d.h. es kann mehrer Projekte mit unterschiedlichen Zugriffsbeschränkungen verwalten.
### tibi-server
Der Server selbst kommt ohne grafische Oberfläche oder WebUI. Er ist ausschließlich nach außen über eine Rest-API erreichbar.
Als einzige Abhängigkeit ist eine *MongoDB* zu erwähnen. Da der Server in Go geschrieben ist, sind keine externen Bibliotheken notwendig. Er lässt sich daher prima via Docker-Container verteilen.
### tibi-admin
Die Administrationsoberfläche ist wie jeder andere Service, der die Rest-API des Servers nutzt, nur ein Frontend. *tibi-admin* läuft vollständig im Browser und benötigt nur einen Webserver, der statischen Content ausliefert.
Die Version des *tibi-admin* sollte synchron zur *tibi-server* Version gehalten werden, damit alle Datentypen bedient werden können.

View File

@ -10,7 +10,7 @@ services:
- ./:/data - ./:/data
- ./tmp:/tmp - ./tmp:/tmp
- ./tmp/nonexistent:/nonexistent - ./tmp/nonexistent:/nonexistent
working_dir: /data working_dir: /data/docs
command: sh -c "yarn install && yarn docpress:serve" command: sh -c "yarn install && yarn docpress:serve"
expose: expose:
- 3000 - 3000

View File

@ -1,50 +1,21 @@
- [TibiCMS](../README.md) # TibiCMS Dokumentation
- [Begriffe](begriffe.md)
- Servergrundlagen ![TibiCMS Aufbau](./md/tibi-aufbau.svg)
- [Konfiguration](servergrundlagen/konfiguration.md)
- [Entitäten](servergrundlagen/entitaeten.md) ## Einleitung
- RestAPI Endpunkte
- [/login](restapi/login.md) _TibiCMS_ ist der Sammelbegriff für die Komponenten _tibi-server_ und _tibi-admin_, welche einen Rest-API Server und eine Administrationsoberfläche zur Verfügung stellen. Auf Basis dieser beiden Komponenten und der _MongoDB_ als Abhängigkeit lassen sich WebCMS Anwendungen abbilden.
- [/user](restapi/user.md)
- [/project](restapi/project.md) Das CMS ist multi-mandanten-fähig, d.h. es kann mehrer Projekte mit unterschiedlichen Zugriffsbeschränkungen verwalten.
- [/_/NS/COLLECTION](restapi/collection.md)
- [/_/NS/_/assets/ASSETSNAME](restapi/assets.md) ### tibi-server
- Projekt Konfiguration
- [Ordnerstruktur](projektkonfig/ordnerstruktur.md) Der Server selbst kommt ohne grafische Oberfläche oder WebUI. Er ist ausschließlich nach außen über eine Rest-API erreichbar.
- [config.yml](projektkonfig/config.yml.md)
- [collections](projektkonfig/collections.md) Als einzige Abhängigkeit ist eine _MongoDB_ zu erwähnen. Da der Server in Go geschrieben ist, sind keine externen Bibliotheken notwendig. Er lässt sich daher prima via Docker-Container verteilen.
- [fields](projektkonfig/collections/fields.md)
- [Datentypen](projektkonfig/collections/fields/datentypen.md) ### tibi-admin
- [Admin Widgets](projektkonfig/collections/fields/widgets.md)
- [· ContentBuilder](projektkonfig/collections/fields/widgets/contentbuilder.md) Die Administrationsoberfläche ist wie jeder andere Service, der die Rest-API des Servers nutzt, nur ein Frontend. _tibi-admin_ läuft vollständig im Browser und benötigt nur einen Webserver, der statischen Content ausliefert.
- [indexes](projektkonfig/collections/indexes.md)
- [hooks](projektkonfig/collections/hooks.md) Die Version des _tibi-admin_ sollte synchron zur _tibi-server_ Version gehalten werden, damit alle Datentypen bedient werden können.
- [imageFilter](projektkonfig/collections/imageFilter.md)
- [meta](projektkonfig/collections/meta.md)
- [jobs](projektkonfig/jobs.md)
- [assets](projektkonfig/assets.md)
- Admin Javascript Kontext
- [Allgemeines](admin-javascript-kontext/allgemeines.md)
- [collection.meta..eval](admin-javascript-kontext/collection.meta..eval.md)
- [field.meta..eval](admin-javascript-kontext/field.meta..eval.md)
- Server Javascript Kontext
- [Allgmeines](server-javascript-kontext/allgemeines.md)
- [hook](server-javascript-kontext/hook.md)
- [job](server-javascript-kontext/job.md)
- [validator](server-javascript-kontext/validator.md)
- Packages
- [user](server-javascript-kontext/packages/user.md)
- [response](server-javascript-kontext/packages/response.md)
- [cookie](server-javascript-kontext/packages/cookie.md)
- [db](server-javascript-kontext/packages/db.md)
- [http](server-javascript-kontext/packages/http.md)
- [smtp](server-javascript-kontext/packages/smtp.md)
- [fs](server-javascript-kontext/packages/fs.md)
- [tpl](server-javascript-kontext/packages/tpl.md)
- [jwt](server-javascript-kontext/packages/jwt.md)
- [image](server-javascript-kontext/packages/image.md)
- [bcrypt](server-javascript-kontext/packages/bcrypt.md)
- [xml](server-javascript-kontext/packages/xml.md)
- [charset](server-javascript-kontext/packages/charset.md)
- [pdf](server-javascript-kontext/packages/pdf.md)
- [debug](server-javascript-kontext/packages/debug.md)

View File

@ -1,9 +1,9 @@
{ {
"docs": "./", "docs": "md",
"markdown": { "markdown": {
"plugins": { "plugins": {
"code-include": {} "code-include": {}
} }
}, },
"css": ["./docpress.css", "./github-dark-dimmed.css"] "css": ["md/docpress.css", "md/github-dark-dimmed.css"]
} }

50
docs/md/README.md Normal file
View File

@ -0,0 +1,50 @@
- [TibiCMS](../README.md)
- [Begriffe](begriffe.md)
- Servergrundlagen
- [Konfiguration](servergrundlagen/konfiguration.md)
- [Entitäten](servergrundlagen/entitaeten.md)
- RestAPI Endpunkte
- [/login](restapi/login.md)
- [/user](restapi/user.md)
- [/project](restapi/project.md)
- [/_/NS/COLLECTION](restapi/collection.md)
- [/_/NS/_/assets/ASSETSNAME](restapi/assets.md)
- Projekt Konfiguration
- [Ordnerstruktur](projektkonfig/ordnerstruktur.md)
- [config.yml](projektkonfig/config.yml.md)
- [collections](projektkonfig/collections.md)
- [fields](projektkonfig/collections/fields.md)
- [Datentypen](projektkonfig/collections/fields/datentypen.md)
- [Admin Widgets](projektkonfig/collections/fields/widgets.md)
- [· ContentBuilder](projektkonfig/collections/fields/widgets/contentbuilder.md)
- [indexes](projektkonfig/collections/indexes.md)
- [hooks](projektkonfig/collections/hooks.md)
- [imageFilter](projektkonfig/collections/imageFilter.md)
- [meta](projektkonfig/collections/meta.md)
- [jobs](projektkonfig/jobs.md)
- [assets](projektkonfig/assets.md)
- Admin Javascript Kontext
- [Allgemeines](admin-javascript-kontext/allgemeines.md)
- [collection.meta..eval](admin-javascript-kontext/collection.meta..eval.md)
- [field.meta..eval](admin-javascript-kontext/field.meta..eval.md)
- Server Javascript Kontext
- [Allgmeines](server-javascript-kontext/allgemeines.md)
- [hook](server-javascript-kontext/hook.md)
- [job](server-javascript-kontext/job.md)
- [validator](server-javascript-kontext/validator.md)
- Packages
- [user](server-javascript-kontext/packages/user.md)
- [response](server-javascript-kontext/packages/response.md)
- [cookie](server-javascript-kontext/packages/cookie.md)
- [db](server-javascript-kontext/packages/db.md)
- [http](server-javascript-kontext/packages/http.md)
- [smtp](server-javascript-kontext/packages/smtp.md)
- [fs](server-javascript-kontext/packages/fs.md)
- [tpl](server-javascript-kontext/packages/tpl.md)
- [jwt](server-javascript-kontext/packages/jwt.md)
- [image](server-javascript-kontext/packages/image.md)
- [bcrypt](server-javascript-kontext/packages/bcrypt.md)
- [xml](server-javascript-kontext/packages/xml.md)
- [charset](server-javascript-kontext/packages/charset.md)
- [pdf](server-javascript-kontext/packages/pdf.md)
- [debug](server-javascript-kontext/packages/debug.md)

View File

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 47 KiB

View File

@ -3,4 +3,4 @@
Folgende Angaben sind in der `assets`-Sektion der [config.yml](./config.yml.md) geführt als Liste möglich: Folgende Angaben sind in der `assets`-Sektion der [config.yml](./config.yml.md) geführt als Liste möglich:
!!!include(api/assets/demoassets.yml)!!! !!!include(../api/assets/demoassets.yml)!!!

View File

@ -6,7 +6,7 @@ Die Konfiguration einer Kollektion sollte zur besseren Übersicht innerhalb eine
Eine solche Datei hat folgenden Aufbau: Eine solche Datei hat folgenden Aufbau:
!!!include(api/collections/democol.yml)!!! !!!include(../api/collections/democol.yml)!!!
### siehe ### siehe

View File

@ -1,12 +1,12 @@
# fields # fields
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). 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 dem *tibi-admin* mitteilt, wie er 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: Zunächst folgt der grundlegende Aufbau des Feld-Objektes:
!!!include(api/collections/fields/date.yml)!!! !!!include(../api/collections/fields/date.yml)!!!
## validator Objekt ## validator Objekt
@ -16,12 +16,12 @@ Zunächst folgt der grundlegende Aufbau des Feld-Objektes:
Wie im Beispiel von **fields/date.yml** unter `validator` zu sehen ist, wird dort ein Datum nach dem aktuellen erwartet. Wie der Validator sich auf die UI auswirkt, ist im obigen Video zu sehen. Wie im Beispiel von **fields/date.yml** unter `validator` zu sehen ist, wird dort ein Datum nach dem aktuellen erwartet. Wie der Validator sich auf die UI auswirkt, ist im obigen Video zu sehen.
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. 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: Attribute des Objektes:
| Attribut | Datentyp | Beschreibung | | Attribut | Datentyp | Beschreibung |
| --- | --- | --- | | ----------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `required` | boolean | wenn `true`, dann ist zwingend eine Eingabe zu diesem Feld nötig | | `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` | | `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` | string | Javascript-Code der zu true evaluieren muss um den Wert des Feldes als gültig zu definieren |
@ -31,16 +31,16 @@ Attribute des Objektes:
Der Javascript-Code in diesem Attribut kann folgende Rückgabe-Werte haben: Der Javascript-Code in diesem Attribut kann folgende Rückgabe-Werte haben:
| Wert | Bedeutung | | Wert | Bedeutung |
| --- | --- | | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `true` | Der Wert des Feldes ist gültig | | `true` | Der Wert des Feldes ist gültig |
| `false` | Der Wert des Feldes ist ungü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. | | `"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. |
Da der `eval` Code serverseitig immer ausgeführt wird und ein Fehlschlag zwangsläufig zum Abbruch der Serveraktion führt, ist es wichtig, dass der [serverseitige Javascript-Kontext](./../../server-javascript-kontext/validator.md) berücksichtigt wird. Da der `eval` Code serverseitig immer ausgeführt wird und ein Fehlschlag zwangsläufig zum Abbruch der Serveraktion führt, ist es wichtig, dass der [serverseitige Javascript-Kontext](./../../server-javascript-kontext/validator.md) berücksichtigt wird.
Optional kann der Code auch zusätzlich über eine Lauffähigkeit ohne Fehler (z.B. keine Verwendung nicht vorhandender Kontext-Variablen oder Verwendung von `try ... catch`) im *tibi-admin* verfügen. Das hat den Vorteil, dass eine Vorab-Validierung stattfindet, bevor der Datensatz an der Server gesendet wird. Optional kann der Code auch zusätzlich über eine Lauffähigkeit ohne Fehler (z.B. keine Verwendung nicht vorhandender Kontext-Variablen oder Verwendung von `try ... catch`) im _tibi-admin_ verfügen. Das hat den Vorteil, dass eine Vorab-Validierung stattfindet, bevor der Datensatz an der Server gesendet wird.
Sollte der `eval` Code im *tibi-admin* nicht lauffähig sein (nicht abgefangene Exception), wird der Validator clientseitig ingoriert und nur die serverseitige Prüfung beeinflusst die Aktion. Sollte der `eval` Code im _tibi-admin_ nicht lauffähig sein (nicht abgefangene Exception), wird der Validator clientseitig ingoriert und nur die serverseitige Prüfung beeinflusst die Aktion.
#### siehe #### siehe
@ -109,11 +109,10 @@ Die `eval` Variante verwendet als Javascript-Kontext Variablen die auf folgenden
Die Rückgabe des Javascript-Codes beeinflusst die Einblendung des betroffenen Feldes in folgender Weise: Die Rückgabe des Javascript-Codes beeinflusst die Einblendung des betroffenen Feldes in folgender Weise:
| Rückgabe | Bedeutung | | Rückgabe | Bedeutung |
| --- | --- | | -------- | -------------------------- |
| `true` | Das Feld wird angezeigt | | `true` | Das Feld wird angezeigt |
| `false` | Das Feld wird ausgeblendet | | `false` | Das Feld wird ausgeblendet |
## defaultValue ## defaultValue
Für die Vorlegung neu anzulegender Datensätze kann in `field.meta.defaultValue` direkt der Standardwert hinterlegt werden, oder über `field.meta.defaultValue.eval` ein Javascript-Code angegeben werden, der den Wert ermittelt. Die Rückgabe des Javascript-Codes, sowie auch die direkte Vergabe des Wertes muss dem Datentyp des Feldes entsprechen. Für die Vorlegung neu anzulegender Datensätze kann in `field.meta.defaultValue` direkt der Standardwert hinterlegt werden, oder über `field.meta.defaultValue.eval` ein Javascript-Code angegeben werden, der den Wert ermittelt. Die Rückgabe des Javascript-Codes, sowie auch die direkte Vergabe des Wertes muss dem Datentyp des Feldes entsprechen.

View File

@ -6,7 +6,7 @@ Für die Gestaltung von HTML-Inhalten ist der ContentBuilder eine einfache und i
Wie der ContentBuilder an einem Feld konfiguriert wird verdeutlicht folgendes Beispiel: Wie der ContentBuilder an einem Feld konfiguriert wird verdeutlicht folgendes Beispiel:
!!!include(api/collections/fields/content.yml)!!! !!!include(../api/collections/fields/content.yml)!!!
## Mediathek Kollektion ## Mediathek Kollektion
@ -18,7 +18,7 @@ Wie aus der obigen Definition unterhalb von z.B. "imageSelect" zu lesen, bedarf
> Die Bedeutung der hier nicht beschriebenen Eigenschaften ist unter [collections](./../../../collections.md) zu finden. > Die Bedeutung der hier nicht beschriebenen Eigenschaften ist unter [collections](./../../../collections.md) zu finden.
!!!include(api/collections/medialib.yml)!!! !!!include(../api/collections/medialib.yml)!!!
## Module (customTags) ## Module (customTags)

View File

@ -7,7 +7,7 @@ Der Prozess selbst erfolgt beim ersten Abruf des Bildes und wird zwischengespeic
Eine beispielhafte Konfiguration, die die Bilder nur verkleinert sieht so aus: Eine beispielhafte Konfiguration, die die Bilder nur verkleinert sieht so aus:
!!!include(api/collections/democol/imageFilter.yml)!!! !!!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:

View File

@ -4,7 +4,7 @@ Wie bereits an anderer Stelle beschrieben, dient das `meta` Objekt zur Definitio
Folgende Angaben sind möglich: Folgende Angaben sind möglich:
!!!include(api/collections/democol/meta.yml)!!! !!!include(../api/collections/democol/meta.yml)!!!
## views Liste ## views Liste
@ -16,14 +16,14 @@ Folgende möglche Einträge für `views` gibt es derzeit:
### simpleList ### simpleList
!!!include(api/collections/democol/simpleList.yml)!!! !!!include(../api/collections/democol/simpleList.yml)!!!
### table ### table
!!!include(api/collections/democol/table.yml)!!! !!!include(../api/collections/democol/table.yml)!!!
## tablist ## 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)!!! !!!include(../api/collections/democol/tablist.yml)!!!

View File

@ -6,7 +6,7 @@ Es hat sich jedoch als günstig erwiesen bei Webprojekten die Datei und alle and
## Aufbau ## Aufbau
!!!include(api/config.yml)!!! !!!include(../api/config.yml)!!!
### siehe ### siehe

View File

@ -6,6 +6,6 @@ Wie in allen YAML-Definitionen können auch die Jobs via `!include` ausgelagert
Der Aufbau eines Jobs ausgelagert in einer Datei sieht beispielsweise folgendermaßen aus: Der Aufbau eines Jobs ausgelagert in einer Datei sieht beispielsweise folgendermaßen aus:
!!!include(api/jobs/demojob.yml)!!! !!!include(../api/jobs/demojob.yml)!!!
Die Möglichkeiten innerhalb der Javascript-Datei werden im Kapitel [Javascript Kontext](./../server-javascript-kontext/job.md) beschrieben. Die Möglichkeiten innerhalb der Javascript-Datei werden im Kapitel [Javascript Kontext](./../server-javascript-kontext/job.md) beschrieben.

View File

Before

Width:  |  Height:  |  Size: 291 KiB

After

Width:  |  Height:  |  Size: 291 KiB