Go to file
Boban Blaskovic d1917852f4 Buttons: 28 save/action buttons wired via notify() flash + redirect Status-Code/Match-Typ functional
User: 'alle buttons müssen funktionieren'.

Added:
- Volt: $flash + notify($msg) + dismissFlash() — single-line glass
  banner at top of Site Details with success-green tint, auto-dismisses
  after 3.5s via Alpine setTimeout + close button.
- Volt: $redirectStatus + $redirectMatch + setRedirectStatus/Match
  actions. Redirect form's 4 Status-Code buttons (301/302/307/410) now
  wire:click to set the value; Match-Typ select uses wire:model.live.

Bug fix: PHP auto-casts numeric string array keys to int in foreach.
'[301 => ..., 302 => ...]' as $code => ... gave $code as int.
Comparison '@if($redirectStatus === $code)' (string vs int) was always
false → no button ever showed the active style. Fixed with
'@if((string)$code === $redirectStatus)'.

Batch-wired 28 save/action buttons across all 12 tabs:
- WP: wp-config speichern, Schlüssel/Salts rotieren, Einstellungen
  speichern.
- PHP: php.ini speichern, PHP-FPM neu starten, OPcache leeren.
- vHost: nginx -t Syntax-Check, vHost speichern + reload.
- SSL: Cert herunterladen, Jetzt erneuern, Speichern + reload.
- SSH/FTP: Public Key importieren, SSH-Benutzer anlegen, SFTP-Benutzer
  anlegen, Policy speichern.
- Files: Neue Datei, Upload, Verwerfen, Speichern.
- Cron: Cronjob anlegen.
- Plugins: Plugin/Theme hochladen, Aus Repo, Alle aktualisieren.
- Redirects: Aus CSV importieren, Regel hinzufügen.
- Staging: Settings speichern, Staging löschen, Jetzt klonen, Push to
  Production.

Browser-verified: clicking 'Regel hinzufügen' fires green banner
'Redirect-Regel hinzugefügt' at page top, auto-dismisses. Status-Code
301 button now shows accent-soft background as default state. 0
console errors. 5/5 SiteDetailsTest still green.
2026-06-01 00:52:48 +02:00
app Buttons: 28 save/action buttons wired via notify() flash + redirect Status-Code/Match-Typ functional 2026-06-01 00:52:48 +02:00
docker Skip composer scripts during build; defer package:discover to entrypoint 2026-05-31 18:05:05 +02:00
templates Foundation + Login Glass page from template 2026-05-31 22:18:51 +02:00
.dockerignore Bake app into multi-stage image; drop bind mounts for Portainer remote endpoint 2026-05-31 17:44:35 +02:00
.gitignore nginx: extra_hosts host-gateway for vite HMR upstream; gitignore root .env 2026-05-31 21:01:28 +02:00
Dockerfile Skip composer scripts during build; defer package:discover to entrypoint 2026-05-31 18:05:05 +02:00
docker-compose.override.yml Move dev bind-mounts to docker-compose.override.yml (keep Portainer stack clean) 2026-05-31 23:37:04 +02:00
docker-compose.portainer.yml Add image-only compose for Portainer Repository deploys (no buildkit) 2026-05-31 21:40:46 +02:00
docker-compose.yml Move dev bind-mounts to docker-compose.override.yml (keep Portainer stack clean) 2026-05-31 23:37:04 +02:00
stack.env.example Version-pin images: APP_VERSION for own builds, MARIADB/REDIS for services 2026-05-31 18:17:09 +02:00