Go to file
sylyx f6c7761182 Feld-Zuordnung: Feldname wieder als Auswahl - und die Liste bleibt gefuellt
0.12.1 hatte den Feldnamen auf eine freie Texteingabe umgestellt. Das behob zwar
die Blockade, nahm aber die Auswahl weg - eigentlich war nur die Liste leer.

Jetzt wieder ein <select>, dessen Liste sich aus drei Quellen speist und damit
nie leer ist: Felder des gewaehlten Archivs, die Namen aus DEFAULT_FIELD_MAP und
alles im Formular bereits Vergebene. Ein Eintrag "Anderer Feldname" blendet eine
freie Eingabe ein, fuer Felder die in keiner Liste stehen. Ein gespeicherter Name,
den kein Archiv kennt, wird ins Dropdown aufgenommen statt verloren zu gehen.

Kern des Problems war die Herkunft der Liste: sie kam ausschliesslich vom Server
und setzte damit gecachte Schrankliste + Passwort dieser Sitzung + Archivwahl
voraus. Die Feldnamen werden nun je Archiv in storage.local unter
"fieldsByCabinet" gemerkt und beim Oeffnen VOR dem Aufbau der Zeilen gelesen -
die Auswahl steht also sofort und auch ohne Anmeldung. Ist ein Token da, wird im
Hintergrund aufgefrischt; schlaegt das fehl, bleibt die gemerkte Liste nutzbar.

Bei Server-Wechsel wird fieldsByCabinet mitgeloescht - die Feldlisten haengen an
Schrank-GUIDs des alten Servers (gleiche Logik wie fuer cabinets/defaultCabinetId).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 10:23:36 +02:00
background Ein Ablagefenster für Mehrfachauswahl + Sitzungs-/Retry-Fixes 2026-08-20 16:16:35 +02:00
dialog Feld-Zuordnung: Dateiname, Datum+Uhrzeit, Benutzer und weitere Werte 2026-08-20 16:55:32 +02:00
icons DocuWare Ablage – Thunderbird-Extension v0.8.0 2026-06-03 13:15:59 +02:00
lib Feld-Zuordnung: Dateiname, Datum+Uhrzeit, Benutzer und weitere Werte 2026-08-20 16:55:32 +02:00
options Feld-Zuordnung: Feldname wieder als Auswahl - und die Liste bleibt gefuellt 2026-08-21 10:23:36 +02:00
scripts Doku/Release: kein ATN-Signieren (Thunderbird braucht keine Signatur); release.sh baut sauberes XPI; Auto-Update verlangt anonymen Gitea-Zugriff 2026-06-16 10:50:31 +02:00
.gitignore Release-Skript: ATN-Signierung (unlisted) + Gitea-Release + Auto-Update 2026-06-03 15:14:15 +02:00
manifest.json Release 0.12.1 2026-08-21 10:08:13 +02:00
README.md Doku/Release: kein ATN-Signieren (Thunderbird braucht keine Signatur); release.sh baut sauberes XPI; Auto-Update verlangt anonymen Gitea-Zugriff 2026-06-16 10:50:31 +02:00
updates.json Release 0.12.1 2026-08-21 10:08:13 +02:00

DocuWare Ablage – Thunderbird-Extension

Legt eine markierte E-Mail aus Thunderbird in DocuWare ab. Nach Klick auf den Button erscheint ein Ablage-Dialog: Aktenschrank wählen, Indexfelder ausfüllen (aus der Mail vorbefüllt), ablegen. Hochgeladen werden – je nach Auswahl – die Mail als .eml, die Mail als PDF und die Anhänge als separate Dokumente.

Funktionsweise

  • Direkte Anbindung an die DocuWare Platform REST-API (kein eigener Server). Auth v1 per Cookie-Logon (/Account/Logon).
  • Dynamische Felder: Die Eingabemaske wird aus dem Store-Dialog des gewählten Schranks erzeugt (Felder, Pflichtfelder, Auswahllisten).
  • Vorbefüllung der EML_*-Felder aus der Mail (Absender, Empfänger, Betreff, Datum, Richtung, Größe, Body …).

Projektstruktur

manifest.json          MailExtension-Manifest (Manifest v2)
background/background.js  Button + Kontextmenü, öffnet den Dialog
dialog/                Ablage-Dialog (HTML/CSS/JS)
options/               Einstellungen (Server, Login, Defaults)
lib/
  store.js             Einstellungen (browser.storage.local)
  auth.js              Cookie-Logon (Auth-Abstraktion)
  docuware.js          Platform-REST-Client (Schränke, Dialoge, Felder, Upload)
  mail.js              Mail-Extraktion (eml, Metadaten, Anhänge)
  pdf.js               abhängigkeitsfreier Text-PDF-Generator
icons/

Installation (Entwicklung)

  1. Thunderbird → Menü → Add-ons und Themes → Zahnrad → Add-on aus Datei installieren … oder zum Testen:
  2. Adresszeile: about:debugging → Dieses Thunderbird → Temporäres Add-on laden … → manifest.json in diesem Ordner wählen.

Hinweis: Bei einem Self-Signed-Zertifikat des DocuWare-Servers muss dieses einmalig in Thunderbird akzeptiert werden, sonst schlagen die fetch-Aufrufe fehl.

Einrichtung

Add-on-Einstellungen öffnen und ausfüllen:

  • Server-URL – Basis ohne /DocuWare/Platform, z.B. https://docuware.firma.de
  • Organisation, Benutzername, Passwort
  • Verbindung testen → lädt die Aktenschränke (Bestätigung, dass Login & URL passen)
  • optional Standard-Aktenschrank und Default-Optionen (eml/pdf/Anhänge)

🔒 Das Passwort wird nicht gespeichert. Es wird beim ersten Ablegen pro Thunderbird-Sitzung einmal abgefragt, daraus ein OAuth-Token geholt und sofort verworfen. Nur der Token bleibt im Speicher des Hintergrundskripts (überlebt keinen Neustart). In storage.local liegen ausschließlich Server, Organisation, Benutzer und Standardwerte – keine Zugangsdaten. Auch der Einstellungs-Export enthält kein Passwort.

Benutzung

  1. E-Mail öffnen → Button „In DocuWare ablegen" (oder Rechtsklick in der Nachrichtenliste → In DocuWare ablegen).
  2. Aktenschrank wählen → Felder prüfen/ergänzen (Pflichtfelder mit *).
  3. Auswählen, was abgelegt wird (eml / PDF / Anhänge).
  4. Ablegen. Bei Erfolg wird die Mail optional mit dem Tag DocuWare markiert.

Verifikation (End-to-End)

Gegen den Test-Schrank LL_TEST_BELEGE ablegen, dann per DocuWare-MCP gegenprüfen:

  • docuware_search (file_cabinet_name LL_TEST_BELEGE, query = Betreff) → Treffer?
  • docuware_get_document → Indexfelder (EML_SENDER, EML_SUBJECT, …) korrekt?
  • docuware_download_document → .eml/PDF herunterladen & prüfen
  • Anhänge erscheinen als eigene Dokumente
  • Aufräumen: docuware_delete_document (nur im Test-Schrank!)

Verteilung & automatische Updates (eigenes Gitea)

Das Add-on wird nicht auf addons.thunderbird.net gelistet, sondern als unsigniertes XPI über dein eigenes Gitea verteilt + aktualisiert.

Kein Signieren nötig. Thunderbird verlangt für self-distributed Add-ons keine Mozilla-Signatur, und addons.thunderbird.net (ATN) zeichnet Thunderbird-Add-ons ohnehin nicht gegen (jede hochgeladene Version bleibt signed=false, web-ext sign schlägt mit „no signed files were found" fehl). Wir bauen das XPI also lokal und verteilen es direkt.

Im XPI und in updates.json stehen keine Zugangsdaten. Das DocuWare-Passwort wird ohnehin nirgends gespeichert (nur Sitzungs-Token im Speicher) und nie mitverteilt.

Einmalige Einrichtung:

  1. In manifest.json → applications.gecko.update_url die Domain GITEA.EXAMPLE.DE durch deine (HTTPS-)Gitea-Adresse ersetzen. HTTPS ist Pflicht (TB lehnt HTTP ab).
  2. updates.json ebenfalls auf deine Gitea-URLs anpassen und in dein Repo committen.
  3. ⚠️ update_url und Release-Assets müssen ANONYM (ohne Login) erreichbar sein — sonst bekommt Thunderbird beim Update-Check nur die Login-Seite und aktualisiert nie. Bei Gitea: Repo öffentlich und instanzweit REQUIRE_SIGNIN_VIEW = false (in app.ini, Abschnitt [service]).

Bei jedem neuen Release – am einfachsten mit scripts/release.sh (baut sauberes XPI, patcht updates.json, committet/pusht, legt Gitea-Release an + lädt das Asset hoch):

scripts/release.sh 0.10.2     # Version setzen + alles erledigen

Manuell wären das die Schritte: version in manifest.json erhöhen → sauberes XPI bauen (manifest.json im Archiv-Wurzelverzeichnis; scripts/, docs/, .env nicht mit einpacken) → XPI als Release-Anhang in Gitea hochladen → Eintrag (version + update_link) in updates.json ergänzen, committen/pushen.

Thunderbird prüft die update_url periodisch und aktualisiert automatisch auf die neueste dort gelistete Version.

Nach dem Release verifizieren (anonym, genau wie Thunderbird):

curl -L .../raw/branch/main/updates.json            # muss JSON liefern, nicht die Login-Seite
curl -sI -L .../releases/download/vX/...xpi          # Content-Type: application/octet-stream

Bekannte Grenzen / nächste Schritte

  • PDF ist v1 ein einfaches Text-PDF (Kopf + Klartext-Body) ohne HTML-Layout/Bilder.
  • Auth: primär DocuWare Identity Service (OAuth, ROPC mit öffentlichem Client), Fallback Cookie-Logon für alte On-Prem-Server. Passwort wird nicht gespeichert (Token nur im RAM, 1× Abfrage pro Sitzung).
  • Upload-Multipart-Format ggf. je nach DocuWare-Version anpassen (docuware.js → uploadDocument).
  • Mehrfachauswahl von Mails: aktuell wird die erste markierte Mail abgelegt.