# HPS Vorlagen & Signaturen

Thunderbird-Plugin (v2.2.0) zur zentralen Verwaltung von E-Mail-Vorlagen und Signaturen für Hotel Park Soltau. Vorlagen und Signaturen werden über ein Gitea/Forgejo-Repository synchronisiert und stehen so allen Mitarbeitern zur Verfügung.

## Features

- **E-Mail-Vorlagen** erstellen, bearbeiten und per Klick in 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
- **Git-Sync** über Gitea/Forgejo API (Pull + Push, automatisch alle 15 Min.)
- **Auto-Erkennung** von Abteilung und Benutzer via `_config/abteilungen.json`
- **WYSIWYG-Editor** mit Schriftart, Farben, Listen, Bildern, Links
- **Sichtbarkeit direkt änderbar** per klickbarem Badge in der Vorlagenliste

## 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
├── Rezeption/                   # Abteilungsvorlagen
├── IT/
├── signatures/
│   ├── headers/                 # Persönliche Signatur-Köpfe
│   │   └── max@hotel.de.max-mustermann.html
│   └── footers/                 # Gemeinsame Fußbereiche
│       └── Rezeption.html
```

### `_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"
}
```

## Plugin-Aufbau

| Datei | Funktion |
|---|---|
| `manifest.json` | Extension-Manifest (Thunderbird WebExtension v2) |
| `background.js` | Template-Insertion ins Compose-Fenster |
| `popup.html` / `popup.js` | Popup beim Klick auf "Vorlagen" im Compose |
| `lib/gitea-sync.js` | Gitea-API-Client + Sync-Manager |
| `lib/mdi/` | Material Design Icons (Subset) |
| `templates_options/` | Einstellungsseite (Vorlagen, Signaturen, Verbindung) |
| `defaults.local.json` | Optionale vorkonfigurierte Verbindungsdaten (gitignored) |

## 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

```bash
# Ohne vorkonfigurierte Verbindungsdaten:
7z a templates-reply-hotel.xpi manifest.json background.js popup.html popup.js lib/ templates_options/ icons/

# Mit vorkonfigurierten Verbindungsdaten (für Deployment):
7z a templates-reply-hotel.xpi manifest.json background.js popup.html popup.js lib/ templates_options/ icons/ defaults.local.json
```

### Vorkonfigurierte Verbindungsdaten (`defaults.local.json`)

Wenn eine `defaults.local.json` im Plugin-Root existiert und in die XPI eingebaut wird, werden die Verbindungsdaten beim ersten Start automatisch gesetzt. Der User muss dann nur noch "Verbindung speichern" klicken.

```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, `.xpi` **ohne** `defaults.local.json` neu bauen.
2. `GITEA_TOKEN=… ./release.sh` — hasht die `.xpi`, aktualisiert `updates.json`, legt das
   Gitea-Release an und lädt die `.xpi` als Asset hoch.
3. `updates.json` + `manifest.json` committen & pushen.

## Einrichtung

1. **Verbindung konfigurieren**: Einstellungen-Tab (⚙) → Server-URL, Repository, Token eingeben → Verbindung speichern (entfällt bei vorkonfigurierter XPI)
2. **Abteilung wählen** (oder automatisch erkannt via `abteilungen.json`)
3. **Vorlagen erstellen**: Vorlagen-Tab → Neue Vorlage → Sichtbarkeit wählen → Speichern
4. **Signaturen einrichten**: Signaturen-Tab → Identität wählen → Kopfbereich bearbeiten → Speichern

## Voraussetzungen

- Mozilla Thunderbird >= 109.0
- Gitea/Forgejo-Server mit API-Zugang
- API-Token mit Repository-Schreibrechten

## Lizenz

MIT License
