Überarbeitete README (QuickMove, Schlagwörter, Web-Editor, Auto-Update, 7z-Build-Befehl) plus die neuen Features 2.4.0/2.5.0: erzwungene about:config-Einstellungen (mit Opt-out im Sync-Tab), Client-Versions- Übersicht im Web-Editor, _clients/-Ordner und experiments/prefs/. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015PZHd9vRsBiH8cKYdQo1Yv
197 lines
8.7 KiB
Markdown
197 lines
8.7 KiB
Markdown
# HPS Vorlagen & Signaturen
|
||
|
||
Thunderbird-MailExtension zur zentralen Verwaltung von E-Mail-Vorlagen und Signaturen für
|
||
Hotel Park Soltau. Vorlagen, Signaturen und Schlagwörter werden über ein Gitea/Forgejo-Repository
|
||
synchronisiert und stehen so allen Mitarbeitern zur Verfügung. (Aktuelle Version: siehe
|
||
`manifest.json`.)
|
||
|
||
## Features
|
||
|
||
- **E-Mail-Vorlagen** erstellen, bearbeiten und per Klick ins Compose-Fenster einfügen
|
||
- **3 Sichtbarkeitsstufen** pro Vorlage:
|
||
- **Persönlich** — nur für den eigenen Account, gesynct in `_benutzer/{email}/`
|
||
- **Abteilung** — für alle in der Abteilung, gesynct in den Abteilungsordner
|
||
- **Alle Abteilungen** — firmenweit, gesynct in `_gemeinsam/`
|
||
- **Signaturen-Verwaltung** mit persönlichem Kopfbereich + gemeinsamer Fußzeile pro Abteilung
|
||
- **QuickMove** — Button in der Nachrichtenansicht: markiert die E-Mail mit deinem Schlagwort
|
||
und verschiebt sie in einen festgelegten Ordner. Mehrere Aktionen → Auswahlmenü.
|
||
- **Schlagwörter-Sync** — Benutzer-Tags werden zentral über `_config/schlagwoerter.json`
|
||
verwaltet, in Thunderbird angelegt und nie gelöscht (dauerhaft nachvollziehbar)
|
||
- **Git-Sync** über Gitea/Forgejo API (Pull + Push, automatisch alle 15 Min.)
|
||
- **Auto-Erkennung** von Abteilung und Benutzer via `_config/abteilungen.json`
|
||
- **Abteilungsverwaltung** — neue Abteilungen direkt aus den Einstellungen anlegen
|
||
- **WYSIWYG-Editor** mit Schriftart, Farben, Listen, Bildern, Links
|
||
- **Sichtbarkeit direkt änderbar** per klickbarem Badge in der Vorlagenliste
|
||
- **Auto-Update** über Gitea (siehe unten) — installierte Clients aktualisieren sich selbst
|
||
- **Toolbar-Button** öffnet direkt die Einstellungen
|
||
- **Erzwungene Thunderbird-Einstellungen** — setzt bei jedem Start bestimmte `about:config`-Prefs
|
||
(z.B. Startseite aus, Kartenansicht, „nicht automatisch als gelesen", Signatur-/Antwort-Verhalten
|
||
pro Konto); pro Einstellung im Sync-Tab abschaltbar
|
||
- **Client-Versions-Übersicht** — jeder Client meldet Plugin- und Thunderbird-Version; im
|
||
Web-Editor unter *Verwaltung → User & Versionen* einsehbar (veraltete Clients markiert)
|
||
- **[Web-Editor](web-editor/)** als optionales Web-Gegenstück (gleiche Gitea-Quelle)
|
||
|
||
## Bedienoberfläche (Einstellungsseite)
|
||
|
||
Vier Tabs:
|
||
|
||
| Tab | Funktion |
|
||
|---|---|
|
||
| **Vorlagen** | Vorlagen anlegen/bearbeiten, Sichtbarkeit, manuelles Push/Pull |
|
||
| **Signaturen** | Persönlicher Kopfbereich + Fußzeile (gemeinsam / Abteilung) |
|
||
| **QuickMove** | Aktionen konfigurieren (Schlagwort + Zielordner) |
|
||
| **Sync** | Server-Verbindung, Benutzer & Abteilung, Sync auslösen, erzwungene Einstellungen (Opt-out) |
|
||
|
||
## Repository-Struktur (Gitea)
|
||
|
||
```
|
||
repo/
|
||
├── _gemeinsam/ # Vorlagen für alle Abteilungen
|
||
│ └── beispiel-vorlage.html
|
||
├── _benutzer/ # Persönliche Vorlagen pro User
|
||
│ ├── max@hotel-park-soltau.de/
|
||
│ └── anna@hotel-park-soltau.de/
|
||
├── _config/
|
||
│ ├── abteilungen.json # E-Mail → Abteilung Mapping
|
||
│ └── schlagwoerter.json # Benutzer-Schlagwörter (Name + Farbe)
|
||
├── _clients/ # Status-Meldungen: Plugin-/TB-Version pro User
|
||
│ └── max@hotel-park-soltau.de.json
|
||
├── Rezeption/ # Abteilungsvorlagen
|
||
├── IT/
|
||
├── signatures/
|
||
│ ├── headers/ # Persönliche Signatur-Köpfe
|
||
│ │ └── max@hotel.de.max-mustermann.html
|
||
│ └── footers/ # Fußbereiche
|
||
│ ├── _default.html # gemeinsame Standard-Fußzeile
|
||
│ └── Rezeption.html # Abteilungs-Fußzeile
|
||
```
|
||
|
||
### `_config/abteilungen.json`
|
||
|
||
Mapping von Abteilungs-E-Mail-Adressen zu Ordnernamen. Wird vom Plugin gelesen, um Abteilung und persönliche E-Mail automatisch zu erkennen:
|
||
|
||
```json
|
||
{
|
||
"info@hotel-park-soltau.de": "Rezeption",
|
||
"veranstaltungs@hotel-park-soltau.de": "Veranstaltungsbuero",
|
||
"it@hotel-park-soltau.de": "IT",
|
||
"haustechnik@hotel-park-soltau.de": "Haustechnik"
|
||
}
|
||
```
|
||
|
||
### `_config/schlagwoerter.json`
|
||
|
||
Liste der Benutzer-Schlagwörter (für QuickMove/Markierung). Wird beim Sync automatisch um neue
|
||
Benutzer ergänzt und nie geleert, damit Markierungen dauerhaft nachvollziehbar bleiben:
|
||
|
||
```json
|
||
[
|
||
{ "name": "Max Mustermann", "color": "#4a7c59" },
|
||
{ "name": "Anna Beispiel", "color": "#2874a6" }
|
||
]
|
||
```
|
||
|
||
## Plugin-Aufbau
|
||
|
||
| Datei | Funktion |
|
||
|---|---|
|
||
| `manifest.json` | Extension-Manifest (Thunderbird WebExtension v2) |
|
||
| `background.js` | Template-Insertion + QuickMove-Aktionen (Tag setzen, Nachricht verschieben) |
|
||
| `popup.html` / `popup.js` | Compose-Popup ("Vorlagen" beim Schreiben) |
|
||
| `message_popup.html` / `message_popup.js` | QuickMove-Popup in der Nachrichtenansicht |
|
||
| `toolbar_popup.html` | Toolbar-Button → öffnet die Einstellungen |
|
||
| `templates_options/` | Einstellungsseite (Tabs: Vorlagen, Signaturen, QuickMove, Sync) |
|
||
| `lib/gitea-sync.js` | Gitea-API-Client + Sync-Manager (inkl. Schlagwörter-Sync + Client-Status-Meldung) |
|
||
| `lib/forced-prefs-list.js` | Liste der erzwungenen `about:config`-Prefs (geteilt: Background + Optionsseite) |
|
||
| `experiments/prefs/` | Privilegierte Experiment-API zum Setzen von `about:config`-Prefs |
|
||
| `lib/mdi/` | Material Design Icons (Subset) für den Editor |
|
||
| `defaults.local.json` | Optionale vorkonfigurierte Verbindungsdaten (gitignored) |
|
||
| `updates.json` | Update-Manifest für Thunderbird-Auto-Update |
|
||
| `release.sh` | Release-Skript (Build hashen, Gitea-Release anlegen, updates.json pflegen) |
|
||
| `web-editor/` | Optionaler Node/Docker-Web-Editor (eigenständig, gleiche Gitea-Quelle) |
|
||
|
||
## Installation
|
||
|
||
### Lokal (Entwicklung)
|
||
|
||
1. Thunderbird öffnen
|
||
2. Extras → Add-ons und Themes
|
||
3. Zahnrad-Icon → Add-on aus Datei installieren
|
||
4. `templates-reply-hotel.xpi` auswählen
|
||
|
||
### XPI bauen
|
||
|
||
`zip` ist nicht zwingend vorhanden, `7z` reicht. Immer **ohne** `defaults.local.json` bauen —
|
||
die Datei enthält den Gitea-Token und darf nicht in eine veröffentlichte `.xpi`:
|
||
|
||
```bash
|
||
rm -f templates-reply-hotel.xpi
|
||
7z a -tzip templates-reply-hotel.xpi . \
|
||
-xr'!.git' -xr'!node_modules' -xr'!web-editor' -xr'!.claude' \
|
||
-xr'!defaults.local.json' -xr'!*.xpi' -xr'!release.sh' -xr'!*.md'
|
||
```
|
||
|
||
> Eine **vorkonfigurierte** `.xpi` (mit `defaults.local.json`) ist nur für die interne
|
||
> Erstinstallation auf einer neuen Maschine gedacht und darf **niemals** als öffentliches
|
||
> Release hochgeladen werden — sonst wäre der Token auslesbar.
|
||
|
||
### Vorkonfigurierte Verbindungsdaten (`defaults.local.json`)
|
||
|
||
Wenn eine `defaults.local.json` im Plugin-Root existiert und in die XPI eingebaut wird, werden
|
||
die Verbindungsdaten **beim allerersten Start** automatisch gesetzt. Updates brauchen die Datei
|
||
nicht — bestehende Installationen behalten ihre Konfiguration in `storage.local`.
|
||
|
||
```json
|
||
{
|
||
"baseUrl": "https://git.example.com",
|
||
"owner": "organisation",
|
||
"repo": "email-vorlagen",
|
||
"branch": "main",
|
||
"token": "dein-api-token"
|
||
}
|
||
```
|
||
|
||
Die Datei ist in `.gitignore` — Tokens landen nicht im Repository.
|
||
|
||
## Auto-Update (self-hosted über Gitea)
|
||
|
||
Installierte Add-ons aktualisieren sich automatisch über `updates.json` in diesem Repo
|
||
(`manifest.json` → `browser_specific_settings.gecko.update_url`).
|
||
|
||
> **⚠️ Dieses Repository muss public bleiben.**
|
||
> Der Thunderbird-Auto-Updater greift **anonym (ohne Token)** auf `updates.json` und die
|
||
> Release-`.xpi` zu. Ist das Repo privat, liefert Gitea `401` — die automatischen Updates
|
||
> funktionieren dann nicht mehr.
|
||
|
||
Neue Version veröffentlichen:
|
||
|
||
1. **`version` in `manifest.json` hochzählen** (gleiche Version = Clients updaten nicht!).
|
||
2. `.xpi` **ohne** `defaults.local.json` neu bauen (siehe oben).
|
||
3. `GITEA_TOKEN=… ./release.sh` — hasht die `.xpi`, aktualisiert `updates.json`, legt das
|
||
Gitea-Release an und lädt die `.xpi` als Asset hoch.
|
||
4. `updates.json` + `manifest.json` committen & pushen.
|
||
|
||
Bestehende Installationen ziehen das Update dann automatisch (Prüfung ~1×/Tag, oder manuell
|
||
über Add-ons → Zahnrad → „Auf Updates prüfen").
|
||
|
||
## Einrichtung
|
||
|
||
1. **Verbindung konfigurieren**: Sync-Tab → Server-URL, Repository, Token eingeben →
|
||
Verbindung speichern (entfällt bei vorkonfigurierter XPI)
|
||
2. **Abteilung wählen** (oder automatisch erkannt via `abteilungen.json`; neue Abteilungen
|
||
lassen sich per **+** direkt anlegen)
|
||
3. **Vorlagen erstellen**: Vorlagen-Tab → Neue Vorlage → Sichtbarkeit wählen → Speichern
|
||
4. **Signaturen einrichten**: Signaturen-Tab → Identität wählen → Kopfbereich bearbeiten → Speichern
|
||
5. **QuickMove einrichten** (optional): QuickMove-Tab → Aktion hinzufügen (Name + Zielordner) →
|
||
Speichern. Der Button erscheint dann in der Nachrichtenansicht.
|
||
|
||
## Voraussetzungen
|
||
|
||
- Mozilla Thunderbird >= 109.0
|
||
- Gitea/Forgejo-Server mit API-Zugang
|
||
- API-Token mit Repository-Schreibrechten
|
||
|
||
## Lizenz
|
||
|
||
MIT License
|