Ein Skript was die Page-Listings im Wiki automatisch aktuell hält https://wiki.ctdo.de/
Go to file
neri 57d896eac7 document limit parameter bug in readme 2022-09-23 12:21:02 +02:00
.gitignore Initial commit 2022-09-23 12:05:34 +02:00
Dockerfile Initial commit 2022-09-23 12:05:34 +02:00
README.md document limit parameter bug in readme 2022-09-23 12:21:02 +02:00
index.js Initial commit 2022-09-23 12:05:34 +02:00
package.json Initial commit 2022-09-23 12:05:34 +02:00
yarn.lock Initial commit 2022-09-23 12:05:34 +02:00

README.md

WikiJs Metabot

Ein Skript was die Page-Listings auf https://wiki.ctdo.de automatisch aktuell hält

Verwendung

Um auf einer Wiki-Seite ein Page-Listing hinzuzufügen muss der Seite das metapage-Tag hinzugefügt werden und an der gewünschten Stelle ein Kommentar folgender Form eingefügt werden:

<!-- \pagelist QUERY -->

Dabei muss QUERY eine Parameterlist für die PageQuery::list-Methode der WikiJs-GraphQL-API sein. Folgende Parameter werden unterstützt:

limit: Int
orderBy: Enum CREATED | ID | PATH | TITLE | UPDATED
orderByDirection: Enum ASC | DESC
tags: [String]
locale: String
creatorId: Int
authorId: Int

Beispiele

Liste aller Seiten die mit den Tags top und new versehen sind:

<!-- \pagelist tags: ["top", "new"] -->

Liste der 10 zuletzt bearbeiteten Seiten:

<!-- \pagelist orderBy: UPDATED, orderByDirection: DESC, limit: 10 -->

Details

  • Mehrere Parameter müssen mit einem Komma getrennt werden
  • Mehrere Tags im tags-Parameter müssen ebenfalls mit Komma getrennt werden
  • Parameter vom Typ String müssen in doppelte Anführungszeichen " eingeschlossen werden
  • Parameter vom Typ Int und vom Typ Enum müssen ohne Anführungszeichen angegeben werden

Features und Einschränkungen

Zur Rekursionsvermeidung können leider die mit metapage getaggten Seiten nicht selbst in den Page-Listings auftauchen. Eine Seite welche die zuletzt aktualisierten Seiten enthält, kann also nur Seiten enthalten welche nicht mit metapage getaggt sind.

Seiten deren Pfad mit einem Unterstrich _ beginnt werden als versteckt interpretiert und nicht in Page-Listings angezeigt. Das wird beispielsweise auf der Topictreff-Seite verwendet damit das Topic-Template nicht unter den neuen Topics aufgelistet wird.

Bei gesetzten Limits kommt es vor, dass weniger Seiten als angegeben aufgelistet werden. Das liegt daran, dass das Filtern zur Rekursionsvermeidung und zum verstecken von Seiten erst nach dem Ausführen der GraphQL-Query passiert. Außerdem scheint auch das WikiJs einen ähnlichen Bug zu haben wodurch manche Seiten nicht in dem Ergebnis zurückgegeben aber trotzdem gezählt werden.

Ausführen des Bots

Damit der Bot Seiten bearbeiten darf muss die Umgebungsvariable CTDO_WIKIJS_API_KEY auf einen gültigen Api-Key gesetzt sein. Api-Keys für das WikiJs können hier generiert werden: https://wiki.ctdo.de/a/api.

Docker commands

Docker Container für den Bot bauen:

docker build -t wikijs-metabot .

Docker container ausführen:

docker run -it -e CTDO_WIKIJS_API_KEY wikijs-metabot