Wasserzeichen fuer den kostenlosen Tarif
Mandanten im Tarif "free" (bis 10 Teilnehmer) zeigen unten rechts eine kleine Marke mit Logo und Adresse der Kaffeeliste; zahlende Mandanten behalten ihre Oberflaeche ohne fremdes Logo. Die Sichtbarkeit haengt allein an tenant_billing.plan_code und wird als reine Leseabfrage geprueft - billing_fetch_or_init() waere ein Schreibzugriff im Seitenaufbau. Laesst sich der Tarif nicht lesen, bleibt die Marke aus. Das Logo ist ein Inline-SVG, das Linkziel kommt aus APP_MARKETING_URL bzw. aus APP_HOST ohne App-Subdomain. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -327,3 +327,37 @@ mandant-einstellungen.php (vollständige Tarif-Vergleichstabelle mit Bestell-But
|
||||
Zugriff wurden hier durchgeführt. Vor Go-Live einmal im Stripe-Testmodus
|
||||
gegen einen echten Test-Mandanten durchspielen (Upgrade, Downgrade
|
||||
zwischen zwei bezahlten Stufen, Downgrade auf `free`).
|
||||
|
||||
## Wasserzeichen im kostenlosen Tarif (umgesetzt)
|
||||
|
||||
Stand: 2026-08-21. Mandanten im Tarif `free` (bis 10 Teilnehmer) zeigen
|
||||
unten rechts eine kleine Marke mit Logo und Adresse der Kaffeeliste.
|
||||
Zahlende Mandanten sehen die Oberfläche ohne fremdes Logo.
|
||||
|
||||
Umgesetzte Dateien:
|
||||
|
||||
```text
|
||||
app/plan-watermark.php (Sichtbarkeit + Markup)
|
||||
app/bootstrap.php (app_marketing_url())
|
||||
footer.php (Einbindung vor den Skripten)
|
||||
assets/css/app.css (.plan-watermark)
|
||||
scripts/http-smoke.php (Dashboard-Check)
|
||||
```
|
||||
|
||||
- **Nur der Tarif entscheidet.** `plan_watermark_visible()` blendet die
|
||||
Marke ein, wenn `tenant_billing.plan_code` `free` ist – fehlt der
|
||||
Datensatz, gilt wie beim Anlegen `free`. Lässt sich der Tarif nicht
|
||||
lesen, bleibt die Oberfläche sauber: ein Wasserzeichen bei einem
|
||||
zahlenden Kunden wäre der schlimmere Fehler.
|
||||
- **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.
|
||||
- **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.
|
||||
- **Ziel der Verlinkung** ist die Marketing-Domain: `APP_MARKETING_URL`,
|
||||
ersatzweise `APP_HOST` ohne die App-Subdomain
|
||||
(`app.kaffeeliste.de` → `kaffeeliste.de`).
|
||||
- Getrennt von `app/branding.php`: dort geht es um das Logo *des Mandanten*
|
||||
(Kopfzeile), hier um das *des Anbieters*. Beides kann gleichzeitig
|
||||
sichtbar sein.
|
||||
|
||||
Reference in New Issue
Block a user