Der Reiter Aufmass stand auf jeder Kundenkarte, auch ohne einen einzigen
Auftrag — der Reiter listet Auftraege und fuehrt je Auftrag per Link in
die externe Aufmass-PWA, ohne Auftrag ist er also leer. Auf Prod haben
25 von 99 Kunden einen Auftrag. Er erscheint jetzt nur bei Bestand, mit
Anzahl. Am AUFTRAG bleibt er unveraendert fest.
Als Hook (class/actions_eplan.class.php, completeTabsHead) statt festem
Tab, Muster wie bei den anderen Modulen dieser Reihe.
⚠ Nur per Code-Review und SQL-Gegenprobe verifiziert, nicht per Browser-
Klick: das lokale Testmodul war nie vollstaendig aktiviert (keine
Rechte-Zeilen), und ein Rechte-Nachtrag mitten in der Sitzung greift
wegen des Dolibarr-Sitzungs-Caches nicht sofort. Nach dem Deploy einmal
an einem Kunden mit Auftrag gegenpruefen.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Statt aller ElektroPlan-Projekte wird über die Backend-Verknüpfung
(Auftrag→Projekt, /api/dolibarr/auftraege/{id}/projekt) nur das zu diesem
Auftrag gehörende Aufmaß geladen — inkl. Räume-Anzahl, Gesamtfläche und
Quelle (Baustelle/Editor). Behebt den TODO-Platzhalter, der projektfremde
Aufmaße anzeigte.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Aus /dolibarr audit Report:
- en_US: 5 fehlende Tab-/Placeholder-Keys ergänzt (Parity 100%)
- LIKE-Wildcard-Escape: %, _ und \\ im User-Input werden maskiert bevor
in LIKE '%..%'-Pattern eingebaut (sonst matched "100%" zu viel)
Betrifft auftraege_listen (Z.75-77) und kunden_suchen (Z.124)
- Rate-Limit: File-basiert nach KB #354 — max. 10 fehlgeschlagene Token-
Checks pro IP in 15 Minuten, dann 429. Bei Erfolg wird Zähler resettet.
Zähler liegen unter DOL_DATA_ROOT/eplan/loginattempts/<sha1(ip)>.json
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
DOL_MAIN_URL_ROOT ist in Docker-Setups oft die interne Container-URL
(z.B. 192.168.155.1:8090), die externe Clients nicht erreichen. Stattdessen
Scheme + Host aus dem aktuellen Request verwenden — genau die URL die der
User gerade im Browser hat, die garantiert auch von außen erreichbar ist.
Zusätzlich Hinweistext unter dem Endpoint wie die URL in der PWA einzutragen
ist (ohne den /custom/…-Suffix).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Das ElektroPlan-Backend spricht nicht mehr die Dolibarr-REST-API an
(API-Key-Flow kaputt, REST-Modul nicht zuverlässig), sondern einen
eigenen NOLOGIN-Endpoint im Eplan-Modul.
- ajax/pwa_api.php: NOLOGIN-Endpoint, Auth via X-Eplan-Token-Header
gegen EPLAN_PWA_SECRET (hash_equals, timing-safe)
Actions: ping, auftraege_listen, auftrag_details, kunden_suchen,
dokument_upload (multipart POST)
- lib/eplan_token.lib.php: Lazy-init Token, Rotation, Verifikation
- admin/setup.php: Token-Feld (readonly, anklickbar zum Markieren),
Endpoint-URL zum Kopieren, Button "Neuen Token erzeugen"
- de/en-Sprachdateien: EplanApiToken* Keys
Muster aus KB #354 (Bericht/Baustelle-PWA).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Module500037Desc/DescLong aus eplan.lang statt hardcodierter deutscher
Strings im Modul-Descriptor
- Rechte-Labels via EplanRightRead/Write/Admin übersetzbar
- QR-Code-Block auf Auftragstab (aus vorheriger Sitzung)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Tab "Aufmaß" auf Auftragskarte: PWA-Link mit Auftrags-Kontext,
Grundriss-Liste (Platzhalter für Backend-Anbindung)
- Tab "Aufmaß" auf Kundenkarte: Aufträge des Kunden mit Aufmaß-Button
- Neue Rechte: read, write, admin
- Konstanten: EPLAN_TAB_ON_ORDER, EPLAN_TAB_ON_THIRDPARTY
- Standard Dolibarr Include-Pattern für Container-Kompatibilität
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
require main.inc.php funktioniert nicht bei Volume-Mounts.
Jetzt Standard-Pattern mit CONTEXT_DOCUMENT_ROOT + Fallbacks.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>