23-01-2026
This commit is contained in:
parent
07959c0ba2
commit
854ce02bf6
166 changed files with 32909 additions and 1262 deletions
319
dev/DISPLAY_CMS_README.md
Normal file
319
dev/DISPLAY_CMS_README.md
Normal file
|
|
@ -0,0 +1,319 @@
|
|||
# Cabinet Display CMS - Dokumentation
|
||||
|
||||
## Übersicht
|
||||
|
||||
Das Display CMS ermöglicht die zentrale Verwaltung der Inhalte für die Digital Signage Display-Seite im Cabinet Showroom Bielefeld.
|
||||
|
||||
**Einheitlicher Pfad:** Das System nutzt `public/_cabinet/` für Testserver und Live-Server.
|
||||
|
||||
## Zugriff
|
||||
|
||||
### Testserver
|
||||
- **Display:** `http://portal.b2in.test/_cabinet/`
|
||||
- **CMS:** `http://portal.b2in.test/admin/cms/cabinet`
|
||||
- **API:** `http://portal.b2in.test/api/display/config`
|
||||
|
||||
### Live-Server
|
||||
- **Display:** `https://cabinet.b2in.eu/` (Subdomain zeigt auf `/_cabinet/`)
|
||||
- **CMS:** `https://b2in.eu/admin/cms/cabinet`
|
||||
- **API:** `https://b2in.eu/api/display/config`
|
||||
|
||||
## Funktionen
|
||||
|
||||
### 1. Video-Verwaltung
|
||||
- ✅ Videos aus dem `public/_cabinet/assets/` Ordner verwalten
|
||||
- ✅ Reihenfolge per Pfeiltasten ändern
|
||||
- ✅ Video-Position (0-100%) für optimalen Bildausschnitt einstellen
|
||||
- ✅ Videos aktivieren/deaktivieren
|
||||
- ✅ Titel für bessere Übersicht vergeben
|
||||
|
||||
### 2. Footer-Content-Verwaltung mit Tracking
|
||||
- ✅ Überschrift, Unterzeile und **optional** Ziel-URL eingeben
|
||||
- ✅ **Automatische Short-Link-Generierung** (nur wenn URL angegeben)
|
||||
- ✅ **Echtzeit-Klick-Tracking** über Short-Links
|
||||
- ✅ **Klick-Statistiken** direkt im CMS
|
||||
- ✅ **Ohne URL:** Nur Text wird angezeigt, kein QR-Code
|
||||
- ✅ **Mit URL:** QR-Code mit Short-Link wird automatisch generiert
|
||||
- ✅ Reihenfolge ändern (werden alle 30 Sekunden rotiert)
|
||||
- ✅ Inhalte aktivieren/deaktivieren
|
||||
- ✅ Short-Code neu generieren
|
||||
- ✅ Klick-Zähler zurücksetzen
|
||||
|
||||
### 3. Short-Link-System
|
||||
|
||||
#### Wie funktioniert es?
|
||||
|
||||
**Mit URL (QR-Code wird angezeigt):**
|
||||
1. **Beim Erstellen** mit URL wird automatisch ein 6-stelliger Short-Code generiert (z.B. `c59kjb`)
|
||||
2. **Short-URL** wird automatisch erstellt:
|
||||
- Testserver: `http://portal.b2in.test/_cabinet/go.php?z=c59kjb`
|
||||
- Live-Server: `https://cabinet.b2in.eu/go.php?z=c59kjb`
|
||||
3. **QR-Code** auf dem Display zeigt die Short-URL
|
||||
4. **Bei Klick** wird der User zur Original-URL weitergeleitet
|
||||
5. **Klicks werden gezählt** und im CMS angezeigt
|
||||
|
||||
**Ohne URL (nur Text):**
|
||||
1. **Beim Erstellen** ohne URL wird kein Short-Code generiert
|
||||
2. **Nur Text** wird im Footer angezeigt (Überschrift + Unterzeile)
|
||||
3. **Kein QR-Code** wird angezeigt
|
||||
4. **Text-Bereich** nutzt die volle Breite des Footers
|
||||
|
||||
#### Vorteile
|
||||
|
||||
- ✅ Kürzere URLs für bessere QR-Codes
|
||||
- ✅ Automatisches Tracking aller Scans
|
||||
- ✅ Zentrale Verwaltung aller Links
|
||||
- ✅ Statistiken direkt im CMS
|
||||
- ✅ Links können geändert werden ohne QR-Code neu zu generieren
|
||||
- ✅ Funktioniert identisch auf Test- und Live-Server
|
||||
|
||||
## CMS-Interface
|
||||
|
||||
### Video-Playlist
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────┐
|
||||
│ Video-Playlist [+] │
|
||||
├─────────────────────────────────────────────┤
|
||||
│ ↑↓ [Aktiv] Herbst 2025 │
|
||||
│ 📁 herbst_2025.mp4 📍 Position: 25% │
|
||||
│ [👁] [✏] [🗑] │
|
||||
├─────────────────────────────────────────────┤
|
||||
│ ↑↓ [Aktiv] Frühjahr 2025 │
|
||||
│ 📁 fruehjahr_2025.mp4 📍 Position: 10% │
|
||||
│ [👁] [✏] [🗑] │
|
||||
└─────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### Footer-Inhalte
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────┐
|
||||
│ Footer-Inhalte [+] │
|
||||
│ 📊 Gesamt-Klicks: 47 │
|
||||
├─────────────────────────────────────────────┤
|
||||
│ ↑↓ [Aktiv] Beratung & Termin [🔵 23 Klicks]│
|
||||
│ Jetzt Termin vereinbaren. │
|
||||
│ 🔗 c59kjb [📋 Short-Link] │
|
||||
│ 🔗 https://www.cabinet.de/bielefeld... │
|
||||
│ [👁] [⋮] │
|
||||
│ ├─ Bearbeiten │
|
||||
│ ├─ Short-Code neu generieren │
|
||||
│ ├─ Klicks zurücksetzen │
|
||||
│ └─ Löschen │
|
||||
└─────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## Technische Details
|
||||
|
||||
### Ordnerstruktur
|
||||
|
||||
```
|
||||
public/_cabinet/
|
||||
├── index.html # Display-Seite (lädt dynamisch via API)
|
||||
├── go.php # Short-Link-Handler mit Tracking
|
||||
├── assets/ # Video-Dateien
|
||||
│ ├── herbst_2025.mp4
|
||||
│ ├── fruehjahr_2025.mp4
|
||||
│ └── ...
|
||||
└── clicks.log # Tracking-Log (wird automatisch erstellt)
|
||||
```
|
||||
|
||||
### Datenbank-Tabellen
|
||||
|
||||
#### `display_videos`
|
||||
```sql
|
||||
- id (PK)
|
||||
- filename -- Dateiname des Videos
|
||||
- title -- Optionaler Titel
|
||||
- position -- Vertikale Position (0-100%)
|
||||
- sort_order -- Reihenfolge der Wiedergabe
|
||||
- is_active -- Aktiv/Inaktiv
|
||||
- created_at, updated_at
|
||||
```
|
||||
|
||||
#### `display_footer_contents`
|
||||
```sql
|
||||
- id (PK)
|
||||
- headline -- Überschrift
|
||||
- subline -- Unterzeile
|
||||
- url -- Original-Ziel-URL
|
||||
- short_code -- 6-stelliger eindeutiger Code
|
||||
- clicks -- Anzahl der Klicks
|
||||
- sort_order -- Reihenfolge der Anzeige
|
||||
- is_active -- Aktiv/Inaktiv
|
||||
- created_at, updated_at
|
||||
```
|
||||
|
||||
### Konfiguration
|
||||
|
||||
**Datei:** `config/display.php`
|
||||
|
||||
```php
|
||||
'base_path' => env('DISPLAY_BASE_PATH', '_cabinet'),
|
||||
'subdomain' => env('DISPLAY_SUBDOMAIN', null),
|
||||
'domain' => env('DISPLAY_DOMAIN', 'b2in.eu'),
|
||||
```
|
||||
|
||||
**Umgebungsvariablen (.env):**
|
||||
|
||||
```env
|
||||
# Testserver
|
||||
DISPLAY_BASE_PATH=_cabinet
|
||||
DISPLAY_SUBDOMAIN=
|
||||
DISPLAY_DOMAIN=b2in.test
|
||||
|
||||
# Live-Server
|
||||
DISPLAY_BASE_PATH=_cabinet
|
||||
DISPLAY_SUBDOMAIN=cabinet
|
||||
DISPLAY_DOMAIN=b2in.eu
|
||||
APP_ENV=production
|
||||
```
|
||||
|
||||
### API-Response-Format
|
||||
|
||||
**Endpunkt:** `/api/display/config`
|
||||
|
||||
```json
|
||||
{
|
||||
"videoPlaylist": [
|
||||
{
|
||||
"src": "assets/herbst_2025.mp4",
|
||||
"position": 25
|
||||
}
|
||||
],
|
||||
"footerContent": [
|
||||
{
|
||||
"headline": "Beratung & Termin",
|
||||
"subline": "Jetzt Termin vereinbaren.",
|
||||
"url": "https://cabinet.b2in.eu/go.php?z=c59kjb"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Workflow-Beispiele
|
||||
|
||||
### Neuen Footer-Inhalt hinzufügen
|
||||
|
||||
1. Im CMS auf **"Inhalt hinzufügen"** klicken
|
||||
2. Formular ausfüllen:
|
||||
- Überschrift: "Beratung & Termin"
|
||||
- Unterzeile: "Jetzt Termin vereinbaren."
|
||||
- URL: `https://www.cabinet.de/bielefeld?utm_source=...`
|
||||
3. **Speichern**
|
||||
4. ✅ Short-Code wird automatisch generiert (z.B. `c59kjb`)
|
||||
5. ✅ Short-URL wird erstellt: `https://cabinet.b2in.eu/go.php?z=c59kjb`
|
||||
6. ✅ Display lädt neue Konfiguration (max. 5 Minuten)
|
||||
7. ✅ QR-Code zeigt automatisch den Short-Link
|
||||
8. ✅ Klicks werden gezählt und angezeigt
|
||||
|
||||
### Video hinzufügen
|
||||
|
||||
1. Video-Datei in `public/_cabinet/assets/` hochladen
|
||||
2. Im CMS auf **"Video hinzufügen"** klicken
|
||||
3. Video aus Dropdown auswählen
|
||||
4. Titel vergeben (optional)
|
||||
5. Position einstellen (0-100%)
|
||||
6. **Speichern**
|
||||
7. ✅ Video wird zur Playlist hinzugefügt
|
||||
8. ✅ Display spielt Video ab
|
||||
|
||||
### Klick-Statistiken ansehen
|
||||
|
||||
1. Im CMS unter **"Footer-Inhalte"** öffnen
|
||||
2. Bei jedem Inhalt wird die Anzahl der Klicks angezeigt
|
||||
3. **Gesamt-Klicks** werden oben summiert angezeigt
|
||||
4. Zum Zurücksetzen: **⋮ → Klicks zurücksetzen**
|
||||
|
||||
### Short-Code neu generieren
|
||||
|
||||
1. Bei gewünschtem Footer-Inhalt auf **⋮** klicken
|
||||
2. **"Short-Code neu generieren"** wählen
|
||||
3. ✅ Neuer Code wird erstellt
|
||||
4. ⚠️ Alter Code funktioniert nicht mehr
|
||||
5. ✅ QR-Code aktualisiert sich automatisch beim nächsten Reload
|
||||
|
||||
## Logging
|
||||
|
||||
### Datenbank-Tracking (Primär)
|
||||
- Alle Klicks werden in der Datenbank gezählt
|
||||
- Echtzeit-Statistiken im CMS
|
||||
- Auswertungen nach Inhalt möglich
|
||||
|
||||
### Datei-Logging (Backup)
|
||||
- Zusätzliches Log: `public/_cabinet/clicks.log`
|
||||
- Format: `YYYY-MM-DD HH:MM:SS - Code: c59kjb - Headline: ... - URL: ...`
|
||||
- Nützlich für detaillierte Analysen
|
||||
|
||||
**Log ansehen:**
|
||||
```bash
|
||||
tail -f public/_cabinet/clicks.log
|
||||
```
|
||||
|
||||
## Wartung & Backup
|
||||
|
||||
### Wichtige Daten für Backup
|
||||
- **Datenbank:** `display_videos`, `display_footer_contents`
|
||||
- **Video-Dateien:** `public/_cabinet/assets/`
|
||||
- **Tracking-Log:** `public/_cabinet/clicks.log`
|
||||
|
||||
### Videos hinzufügen
|
||||
```bash
|
||||
# Upload via SCP
|
||||
scp video.mp4 user@server:/var/www/html/public/_cabinet/assets/
|
||||
|
||||
# Oder via FTP/SFTP
|
||||
# Dann im CMS hinzufügen
|
||||
```
|
||||
|
||||
### Cache leeren
|
||||
```bash
|
||||
php artisan config:clear
|
||||
php artisan cache:clear
|
||||
php artisan route:clear
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Display zeigt "LADEN..."
|
||||
**Problem:** API nicht erreichbar
|
||||
**Lösung:** Browser-Console (F12) prüfen, API-URL testen
|
||||
|
||||
### Short-Links funktionieren nicht
|
||||
**Problem:** Datenbankverbindung oder Berechtigungen
|
||||
**Lösung:** `go.php` Berechtigungen prüfen, Logs prüfen
|
||||
|
||||
### Klicks werden nicht gezählt
|
||||
**Problem:** Datenbankupdate fehlgeschlagen
|
||||
**Lösung:** `clicks.log` prüfen, Datenbank-Logs prüfen
|
||||
|
||||
### Videos werden nicht abgespielt
|
||||
**Problem:** Falsches Format oder Pfad
|
||||
**Lösung:** Browser-Console prüfen, `.mp4` mit H.264 verwenden
|
||||
|
||||
## Performance-Tipps
|
||||
|
||||
### Video-Optimierung
|
||||
```bash
|
||||
# FFmpeg für kleinere Dateien
|
||||
ffmpeg -i input.mp4 -c:v libx264 -crf 23 \
|
||||
-preset medium -c:a aac -b:a 128k output.mp4
|
||||
```
|
||||
|
||||
### Auto-Reload
|
||||
- Display lädt alle 5 Minuten neue Konfiguration
|
||||
- Für sofortiges Update: Display-Seite neu laden
|
||||
|
||||
## Support & Dokumentation
|
||||
|
||||
- **Setup-Guide:** `DISPLAY_SETUP_LIVE.md`
|
||||
- **ENV-Variablen:** `ENV_VARIABLES_DISPLAY.md`
|
||||
- **Laravel-Logs:** `storage/logs/laravel.log`
|
||||
- **Tracking-Log:** `public/_cabinet/clicks.log`
|
||||
|
||||
Bei Problemen:
|
||||
1. Logs prüfen
|
||||
2. Browser-Console prüfen
|
||||
3. API manuell testen
|
||||
4. Cache leeren
|
||||
Loading…
Add table
Add a link
Reference in a new issue