Nachrichten (Notifications)¶
Anton verfügt über ein internes Nachrichten-System, mit dem Admins Mitteilungen an die Benutzer:innen einer Installation senden können. Nachrichten erscheinen als Badge (Glocke mit Zähler) in der Navigationsleiste und können von den Benutzer:innen eingesehen und als gelesen markiert werden.
Übersicht¶
- Admins können Nachrichten über die Web-Oberfläche verfassen und versenden
- k & r kann Nachrichten über die CLI an alle Installationen verteilen (via Ansible)
- Benutzer:innen sehen ungelesene Nachrichten als Badge in der Navigation
- Nachrichten können an alle User, nur an Editors & Admins oder nur an Admins gerichtet werden
- Titel und Text sind mehrsprachig (pro konfigurierter Locale)
Nachrichten verfassen (Admin)¶
Unter Admin > Info > Notifications (oder direkt /admin/notifications) sehen Admins eine Liste aller Nachrichten der Installation.
Mit Neue Nachricht (/admin/notifications/create) kann eine Nachricht verfasst werden:
- Titel (Pflichtfeld, pro Sprache): Kurzer Betreff, der in der Liste und im Badge-Kontext angezeigt wird
- Text (optional, pro Sprache): Ausführlicher Inhalt, unterstützt Markdown
- Adressaten: Wer die Nachricht sehen kann:
- Alle User — alle angemeldeten Benutzer:innen
- Editors & Admins — nur Editors und Admins
- Nur Admins — nur Admins
Hat die Installation mehrere Sprachen konfiguriert (locales), erscheint pro Sprache ein Titel- und ein Textfeld.
Nachrichten lesen (User)¶
Alle angemeldeten Benutzer:innen sehen in der Navigation ein Glocken-Symbol. Gibt es ungelesene Nachrichten, erscheint ein roter Badge mit der Anzahl.
Unter /notifications werden alle Nachrichten aufgelistet (neueste zuerst). Ungelesene Nachrichten sind visuell hervorgehoben (fetter Titel, farbiger Rand). Einzelne Nachrichten können als gelesen markiert werden, oder alle auf einmal mit Alle als gelesen markieren.
Beim Öffnen einer Nachricht wird sie automatisch als gelesen markiert. Der Text wird als Markdown gerendert.
Nachrichten über die CLI verteilen¶
Für die Verteilung von Nachrichten an mehrere Installationen (z.B. Update-Hinweise, Wartungsankündigungen) steht der Befehl notification:send zur Verfügung:
Einzelne Installation¶
php artisan notification:send --title="Wartung am 20.4." --body="Details folgen." --env=besenval
Alle Installationen¶
php artisan notification:send --title="Update v0.54" --body="Neue Features." --all
Mehrsprachig¶
Titel und Text können als JSON übergeben werden:
php artisan notification:send \
--title='{"de":"Update v0.54","fr":"Mise à jour v0.54"}' \
--body='{"de":"Neue Features verfügbar.","fr":"Nouvelles fonctions disponibles."}' \
--all
Text aus Datei¶
php artisan notification:send --title="Wartungsarbeiten" --file=notification.md --env=besenval
Adressaten einschränken¶
php artisan notification:send --title="Intern" --audience=editors --env=besenval
Mögliche Werte für --audience: all (Default), editors, admins.
Optionen¶
| Option | Beschreibung |
|---|---|
--title= |
Titel (Pflicht). String oder JSON für mehrsprachig |
--body= |
Text (optional). String oder JSON |
--file= |
Text aus Markdown-Datei lesen |
--audience= |
Adressaten: all, editors, admins (Default: all) |
--env= |
Ziel-Installation (Slug) |
--all |
An alle Installationen senden |
Integration mit Ansible¶
Der Befehl kann in Ansible-Playbooks oder als Schritt in anton:update eingebunden werden, um Nachrichten beim Deployment automatisch zu verteilen.
Datenmodell¶
- Tabelle
notifications: id, title (JSON), body (JSON), sender_id, source (local/system), audience (all/editors/admins) - Tabelle
notification_user: Pivot für Gelesen-Status pro User (notification_id, user_id, read_at) - Nachrichten ohne Pivot-Eintrag für einen User gelten als ungelesen (lazy tracking)