docs in sub package
This commit is contained in:
parent
010ee6baf1
commit
1841083039
18
.drone.yml
18
.drone.yml
@ -3,14 +3,6 @@ type: docker
|
||||
name: default
|
||||
|
||||
steps:
|
||||
- name: yarn install
|
||||
image: node:18
|
||||
pull: if-not-exists
|
||||
environment:
|
||||
FORCE_COLOR: "true"
|
||||
commands:
|
||||
- yarn install
|
||||
|
||||
##############################
|
||||
# Build and deploy docs
|
||||
##############################
|
||||
@ -20,6 +12,8 @@ steps:
|
||||
environment:
|
||||
FORCE_COLOR: "true"
|
||||
commands:
|
||||
- cd docs
|
||||
- yarn install
|
||||
- yarn docpress:build
|
||||
when:
|
||||
branch: [master]
|
||||
@ -48,6 +42,14 @@ steps:
|
||||
##############################
|
||||
# Demo project
|
||||
##############################
|
||||
- name: yarn install
|
||||
image: node:18
|
||||
pull: if-not-exists
|
||||
environment:
|
||||
FORCE_COLOR: "true"
|
||||
commands:
|
||||
- yarn install
|
||||
|
||||
- name: modify config
|
||||
image: alpine/git
|
||||
commands:
|
||||
|
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,11 +1,11 @@
|
||||
_docpress
|
||||
docs/_docpress
|
||||
docs/node_modules
|
||||
api/hooks/lib/app.server*
|
||||
node_modules
|
||||
media
|
||||
tmp
|
||||
_temp
|
||||
frontend/dist
|
||||
docs/node_modules
|
||||
yarn-error.log
|
||||
.yarn/*
|
||||
!.yarn/cache
|
||||
|
21
README.md
21
README.md
@ -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.
|
@ -10,7 +10,7 @@ services:
|
||||
- ./:/data
|
||||
- ./tmp:/tmp
|
||||
- ./tmp/nonexistent:/nonexistent
|
||||
working_dir: /data
|
||||
working_dir: /data/docs
|
||||
command: sh -c "yarn install && yarn docpress:serve"
|
||||
expose:
|
||||
- 3000
|
||||
|
@ -1,50 +1,21 @@
|
||||
- [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)
|
||||
# TibiCMS Dokumentation
|
||||
|
||||
![TibiCMS Aufbau](./md/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.
|
||||
|
@ -1,9 +1,9 @@
|
||||
{
|
||||
"docs": "./",
|
||||
"docs": "md",
|
||||
"markdown": {
|
||||
"plugins": {
|
||||
"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
50
docs/md/README.md
Normal 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)
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
@ -3,4 +3,4 @@
|
||||
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)!!!
|
@ -6,7 +6,7 @@ Die Konfiguration einer Kollektion sollte zur besseren Übersicht innerhalb eine
|
||||
|
||||
Eine solche Datei hat folgenden Aufbau:
|
||||
|
||||
!!!include(api/collections/democol.yml)!!!
|
||||
!!!include(../api/collections/democol.yml)!!!
|
||||
|
||||
### siehe
|
||||
|
@ -1,12 +1,12 @@
|
||||
# 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:
|
||||
|
||||
!!!include(api/collections/fields/date.yml)!!!
|
||||
!!!include(../api/collections/fields/date.yml)!!!
|
||||
|
||||
## 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.
|
||||
|
||||
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:
|
||||
|
||||
| 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 |
|
||||
@ -31,16 +31,16 @@ Attribute des Objektes:
|
||||
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. |
|
||||
|
||||
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
|
||||
|
||||
@ -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:
|
||||
|
||||
| Rückgabe | Bedeutung |
|
||||
| --- | --- |
|
||||
| -------- | -------------------------- |
|
||||
| `true` | Das Feld wird angezeigt |
|
||||
| `false` | Das Feld wird ausgeblendet |
|
||||
|
||||
|
||||
## 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.
|
@ -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:
|
||||
|
||||
!!!include(api/collections/fields/content.yml)!!!
|
||||
!!!include(../api/collections/fields/content.yml)!!!
|
||||
|
||||
## 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.
|
||||
|
||||
!!!include(api/collections/medialib.yml)!!!
|
||||
!!!include(../api/collections/medialib.yml)!!!
|
||||
|
||||
## Module (customTags)
|
||||
|
@ -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:
|
||||
|
||||
!!!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:
|
||||
|
@ -4,7 +4,7 @@ Wie bereits an anderer Stelle beschrieben, dient das `meta` Objekt zur Definitio
|
||||
|
||||
Folgende Angaben sind möglich:
|
||||
|
||||
!!!include(api/collections/democol/meta.yml)!!!
|
||||
!!!include(../api/collections/democol/meta.yml)!!!
|
||||
|
||||
## views Liste
|
||||
|
||||
@ -16,14 +16,14 @@ Folgende möglche Einträge für `views` gibt es derzeit:
|
||||
|
||||
### simpleList
|
||||
|
||||
!!!include(api/collections/democol/simpleList.yml)!!!
|
||||
!!!include(../api/collections/democol/simpleList.yml)!!!
|
||||
|
||||
### table
|
||||
|
||||
!!!include(api/collections/democol/table.yml)!!!
|
||||
!!!include(../api/collections/democol/table.yml)!!!
|
||||
|
||||
## 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.
|
||||
|
||||
!!!include(api/collections/democol/tablist.yml)!!!
|
||||
!!!include(../api/collections/democol/tablist.yml)!!!
|
@ -6,7 +6,7 @@ Es hat sich jedoch als günstig erwiesen bei Webprojekten die Datei und alle and
|
||||
|
||||
## Aufbau
|
||||
|
||||
!!!include(api/config.yml)!!!
|
||||
!!!include(../api/config.yml)!!!
|
||||
|
||||
### siehe
|
||||
|
@ -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:
|
||||
|
||||
!!!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.
|
Before Width: | Height: | Size: 291 KiB After Width: | Height: | Size: 291 KiB |
Loading…
Reference in New Issue
Block a user