Ein Theme-Modul für BookStack, das einen einfachen Freigabe-Workflow für Seiten nachrüstet: Neue oder geänderte Seiten gelten als „ungeprüft“, bis eine Person mit Prüfer-Rolle sie als „geprüft“ markiert.
BookStack bringt keinen eingebauten Freigabe-Prozess mit – dieses Modul schließt die Lücke über das offizielle Theme-Modul-System, ohne Änderungen am BookStack-Code.
- Automatischer Status: Legt jemand ohne Prüfer-Rolle eine Seite an, bearbeitet sie oder stellt eine alte Revision wieder her, wird die Seite auf „ungeprüft“ gesetzt – auch wenn der Status zuvor „geprüft“ war.
- Hinweis-Box oben im Seiteninhalt:
- gelb: „Nicht geprüft – dieser Artikel wurde noch nicht von einer prüfenden Person freigegeben.“
- grün: „Geprüft von Name am Datum“
- Prüfer-Buttons direkt in der Box: „Als geprüft markieren“ bzw. „Prüfung zurücksetzen“.
- Vier-Augen-Prinzip (optional): Prüfer können Seiten, die sie selbst angelegt oder zuletzt bearbeitet haben, nicht freigeben.
- Manipulationsschutz: Setzt ein Nicht-Prüfer den Status-Tag von Hand auf „geprüft“, wird das beim Speichern überschrieben.
- Übersicht offener Seiten über die normale BookStack-Suche:
[Prüfstatus=ungeprüft](in der Box verlinkt). - Audit-Log: Freigaben und Zurücksetzungen erscheinen im Audit-Log von BookStack.
- Optional nur für bestimmte Bücher (über einen Buch-Tag, z. B.
Prüfpflicht). - Artisan-Befehl zum einmaligen Setzen des Status für bestehende Seiten.
Der Status wird als normale BookStack-Tags an der Seite gespeichert (Prüfstatus, Geprüft von, Geprüft am) und ist damit
durchsuchbar und über die API auslesbar.
- BookStack v26.03 oder neuer (Theme-Modul-System). Entwickelt und im Einsatz mit v26.05.5.
- Zugriff auf das Dateisystem der BookStack-Installation (bzw. auf das Docker-Volume).
php artisan bookstack:install-module https://github.com/stardado/bookstack-review-status/releases/latest/download/pruefstatus.zipDer Befehl legt bei Bedarf auch einen Theme-Ordner an und fragt vor der Installation nach. Unter Docker (linuxserver-Image) z. B.:
docker exec -it bookstack php /app/www/artisan bookstack:install-module https://github.com/stardado/bookstack-review-status/releases/latest/download/pruefstatus.zip-
Falls noch kein Theme aktiv ist, in der BookStack-
.envein Theme setzen:APP_THEME=custom -
Den Ordner
pruefstatus/aus diesem Repository nachthemes/<theme-name>/modules/pruefstatus/kopieren, sodass dortbookstack-module.jsonundfunctions.phpliegen.Installation Theme-Ordner Standard <bookstack>/themes/Docker, linuxserver-Image /config/www/themes/(im Volume, das auf/configgemountet ist);.envunter/config/www/.env -
BookStack bzw. den Container neu starten.
php artisan pruefstatus:init --helpWird der Befehl nicht gefunden, ist entweder APP_THEME nicht gesetzt oder das Modul liegt nicht im richtigen Ordner.
- Einstellungen → Rollen → Neue Rolle anlegen
- Name:
Prüfer(exakt so, siehe Konfiguration) - Rechte können leer bleiben, wenn die Rolle zusätzlich zu einer normalen Rolle (z. B. „Editor“) vergeben wird – in BookStack addieren sich die Rechte aller Rollen eines Benutzers. Soll jemand nur die Prüfer-Rolle haben, braucht die Rolle mindestens Leserechte auf die Inhalte.
- Den Prüfern unter Einstellungen → Benutzer die Rolle zusätzlich zuweisen.
Administratoren dürfen immer prüfen.
Seiten ohne Status zeigen keine Box, bis sie das nächste Mal gespeichert werden. Um allen bestehenden Seiten einmalig einen Status zu geben:
# alle bestehenden Seiten als ungeprüft markieren
php artisan pruefstatus:init
# oder: alle bestehenden Seiten als geprüft betrachten
php artisan pruefstatus:init --status=geprüftDer Befehl ändert nur Seiten, die noch keinen Status haben.
Oben in pruefstatus/functions.php:
| Konstante | Standard | Bedeutung |
|---|---|---|
PRUEFSTATUS_ROLLEN |
['Prüfer'] |
Anzeigenamen der Rollen, die prüfen dürfen (mehrere möglich) |
PRUEFSTATUS_NUR_BUCH_TAG |
'' |
Leer = alle Seiten. Sonst nur Seiten in Büchern mit diesem Tag (z. B. 'Prüfpflicht') |
PRUEFSTATUS_EIGENE_FREIGEBEN |
false |
false = Vier-Augen-Prinzip, true = Prüfer dürfen eigene Seiten freigeben |
PRUEFSTATUS_TAG, …_TAG_VON, …_TAG_AM |
Prüfstatus, Geprüft von, Geprüft am |
Namen der verwendeten Tags |
PRUEFSTATUS_OFFEN, PRUEFSTATUS_OK |
ungeprüft, geprüft |
Tag-Werte |
PRUEFSTATUS_ZEITZONE |
Europe/Berlin |
Zeitzone für „Geprüft am“ |
Nach Änderungen an Tag-Namen oder -Werten passen bestehende Tags nicht mehr – am besten vor dem ersten Einsatz festlegen.
| Wer | Aktion | Ergebnis |
|---|---|---|
| Autor | Seite anlegen / bearbeiten / Revision wiederherstellen | Status „ungeprüft“, gelbe Box |
| Prüfer | Seite öffnen → Als geprüft markieren | Status „geprüft“, grüne Box mit Name und Datum, Eintrag im Audit-Log |
| Autor | geprüfte Seite erneut bearbeiten | wieder „ungeprüft“ |
| Prüfer | Prüfung zurücksetzen | wieder „ungeprüft“, Eintrag im Audit-Log |
| Prüfer | Link Alle ungeprüften | Suchergebnis aller offenen Seiten |
Bearbeitet ein Prüfer selbst eine Seite, bleibt ihr Status unverändert (fehlt er, wird „ungeprüft“ gesetzt).
pruefstatus/
├── bookstack-module.json Modul-Metadaten
├── functions.php Logik: Event-Listener, Routen, Artisan-Befehl, Konfiguration
├── views/
│ └── pruefstatus-banner.blade.php Hinweis-Box (vor dem Seiteninhalt eingefügt)
└── lang/{de,de_informal,en}/
└── activities.php Texte für das Audit-Log
Verwendete Erweiterungspunkte des Logical Theme Systems: ACTIVITY_LOGGED, ROUTES_REGISTER_WEB_AUTH, THEME_REGISTER_VIEWS
sowie Theme::registerCommand.
Ordner themes/<theme-name>/modules/pruefstatus/ entfernen und BookStack neu starten.
Die gesetzten Tags bleiben an den Seiten erhalten und können bei Bedarf über Einstellungen → Tags eingesehen bzw. manuell entfernt werden.
- Das Logical Theme System ist laut BookStack nur „semi-stabil“. Nach BookStack-Updates kurz prüfen, ob das Modul noch wie erwartet arbeitet.
- Die Hinweis-Box erscheint nur in der normalen Seitenansicht, nicht in Exporten, Revisionsansichten oder auf einer als Startseite gesetzten Seite.
- Änderungen über die BookStack-API werden genauso behandelt wie Änderungen im Editor.
- Dies ist kein offizielles BookStack-Projekt.