Hinweis auf die Kaffeeliste auch im PDF-Ausdruck

Die Marke stand bisher nur in der Web-Ansicht; auf dem Ausdruck, den die
Mitglieder taeglich vor sich haben, fehlte sie. Sie erscheint jetzt unten
rechts im Seitenfuss - nach derselben Regel wie im Web: im kostenlosen
Tarif fest, sonst nach Mandant-Einstellung.

Die Tasse wird mit TCPDFs Zeichenbefehlen gemalt statt als SVG oder Bild
eingebettet: ImageSVG braucht die XML-Extension, ein Rasterbild GD - beides
ist auf einem Webspace nicht garantiert.

Der Schriftzug sitzt in einer Cell() statt in Text(): dessen y-Bezug haengt
an Schriftmetriken und ergab in der Probe einen um Millimeter versetzten
Schriftzug. Steht die Marke, reserviert export_page_row_budget_mm() 6 mm am
Seitenfuss, damit die Tabelle nicht hineinlaeuft.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-21 00:46:52 +02:00
co-authored by Claude Opus 5
parent 7a52099a59
commit 9b309bb942
3 changed files with 100 additions and 9 deletions
+10 -1
View File
@@ -338,7 +338,8 @@ eingeschaltet; ab einem bezahlten Tarif entscheidet der Mandant selbst
Umgesetzte Dateien:
```text
app/plan-watermark.php (Sichtbarkeit + Markup)
app/plan-watermark.php (Sichtbarkeit, Markup, Beschriftung)
exportKaffeeliste.php (Marke im PDF-Fuss, gezeichnet statt eingebettet)
app/bootstrap.php (app_marketing_url())
app/saas-auth.php (Speichern, Zwang im kostenlosen Tarif)
mandant-einstellungen.php (Schalter + Hinweis)
@@ -363,6 +364,14 @@ scripts/http-smoke.php, scripts/check-m3-settings-flow.php (Regressionstests)
- **Keine Schreibzugriffe im Seitenaufbau.** Bewusst nicht
`billing_fetch_or_init()`, das eine fehlende Zeile anlegen würde; die
Prüfung ist eine reine Leseabfrage und wird pro Request zwischengespeichert.
- **Im PDF mitgezeichnet.** Der Ausdruck traegt dieselbe Marke unten
rechts (`MyCustomPDFWithWatermark::planWatermark()`), nach derselben
Regel wie die Web-Ansicht. Die Tasse wird dort mit TCPDFs Zeichen-
befehlen gemalt: `ImageSVG()` braucht die XML-Extension, ein Rasterbild
GD - beides ist auf einem Webspace nicht garantiert. Steht die Marke,
reserviert `export_page_row_budget_mm()` 6 mm am Seitenfuss, damit die
Tabelle nicht hineinlaeuft (bei gesetzter Fusszeile deckt deren Band sie
bereits ab).
- **Logo als Inline-SVG.** Spart einen Request, bleibt auf jedem Bildschirm
scharf und übernimmt die Farbe der Umgebung. Ein eigenes Bild lässt sich
in `plan_watermark_logo_svg()` durch ein `<img>` ersetzen.