Schalter fuer den Hinweis auf die Kaffeeliste
Der Hinweis unten rechts laesst sich ab einem bezahlten Tarif in den Mandant-Einstellungen abschalten (neue Spalte tenant_settings. watermark_enabled, Standard an). Im kostenlosen Tarif bleibt er fest eingeschaltet: das Kaestchen ist angehakt und disabled, daneben steht der Grund. Zusaetzlich erzwingt saas_update_tenant_settings() den Wert dort noch einmal, damit ein nachgebauter POST ihn nicht abschalten kann. Der Titel des Wasserzeichens spricht nicht mehr vom kostenlosen Tarif - zahlende Mandanten koennen es jetzt freiwillig zeigen. Der Smoke-Test prueft die Einstellungsseite jetzt auch angemeldet. Sein Muster fuer PHP-Meldungen verlangt dafuer einen Doppelpunkt, sonst haette das Feld "negative_warning" als Warnung gezaehlt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+18
-7
@@ -328,27 +328,38 @@ mandant-einstellungen.php (vollständige Tarif-Vergleichstabelle mit Bestell-But
|
||||
gegen einen echten Test-Mandanten durchspielen (Upgrade, Downgrade
|
||||
zwischen zwei bezahlten Stufen, Downgrade auf `free`).
|
||||
|
||||
## Wasserzeichen im kostenlosen Tarif (umgesetzt)
|
||||
## Hinweis auf die Kaffeeliste (Wasserzeichen, 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.
|
||||
Stand: 2026-08-21. Unten rechts steht eine kleine Marke mit Logo und
|
||||
Adresse der Kaffeeliste. Im Tarif `free` (bis 10 Teilnehmer) ist sie fest
|
||||
eingeschaltet; ab einem bezahlten Tarif entscheidet der Mandant selbst
|
||||
(Mandant-Einstellungen, Standard: an).
|
||||
|
||||
Umgesetzte Dateien:
|
||||
|
||||
```text
|
||||
app/plan-watermark.php (Sichtbarkeit + Markup)
|
||||
app/bootstrap.php (app_marketing_url())
|
||||
app/saas-auth.php (Speichern, Zwang im kostenlosen Tarif)
|
||||
mandant-einstellungen.php (Schalter + Hinweis)
|
||||
database/migrations/0027_watermark_setting.sql (Spalte watermark_enabled)
|
||||
footer.php (Einbindung vor den Skripten)
|
||||
assets/css/app.css (.plan-watermark)
|
||||
scripts/http-smoke.php (Dashboard-Check)
|
||||
scripts/http-smoke.php, scripts/check-m3-settings-flow.php (Regressionstests)
|
||||
```
|
||||
|
||||
- **Nur der Tarif entscheidet.** `plan_watermark_visible()` blendet die
|
||||
Marke ein, wenn `tenant_billing.plan_code` `free` ist – fehlt der
|
||||
- **Kostenlos heißt fest eingeschaltet.** `plan_watermark_visible()` zeigt
|
||||
die Marke immer, 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.
|
||||
- **Ab einem bezahlten Tarif entscheidet der Mandant.** Die Einstellung
|
||||
`tenant_settings.watermark_enabled` (Standard 1) steuert die Anzeige;
|
||||
der Schalter steht in den Mandant-Einstellungen. Im kostenlosen Tarif
|
||||
wird das Kästchen angehakt und `disabled` dargestellt, mit einem Hinweis
|
||||
daneben. Verlassen kann man sich darauf nicht – `saas_update_tenant_settings()`
|
||||
erzwingt den Wert im Tarif `free` noch einmal, damit auch ein
|
||||
nachgebauter POST ihn nicht abschalten kann.
|
||||
- **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.
|
||||
|
||||
Reference in New Issue
Block a user