package manage const loginTmpl = ` Anmelden – MORZ Infoboard
MORZ Infoboard
{{if .Error}} {{end}}
{{if .Next}}{{end}}
` const provisionTmpl = ` Einrichten – {{.Screen.Name}}
✓ Screen «{{.Screen.Name}}» ({{.Screen.Slug}}) wurde angelegt.
Führe die folgenden Schritte aus, um den Bildschirm zu provisionieren.
1

Host zur Ansible-Inventardatei hinzufügen

Öffne ansible/inventory.yml und füge ein:

        {{.Screen.Slug}}:
2

Host-Variablen anlegen

Erstelle ansible/host_vars/{{.Screen.Slug}}/vars.yml:

---
ansible_host: {{.IP}}
ansible_user: {{.SSHUser}}
screen_id: {{.Screen.Slug}}
screen_name: "{{.Screen.Name}}"
screen_orientation: {{.Orientation}}

Tipp: mkdir -p ansible/host_vars/{{.Screen.Slug}}

3

SSH-Zugang sicherstellen

ssh-copy-id {{.SSHUser}}@{{.IP}}
4

Ansible-Playbook ausführen

cd /path/to/morz-infoboard
ansible-playbook -i ansible/inventory.yml ansible/site.yml --limit {{.Screen.Slug}}

Mit Vault: --vault-password-file ansible/.vault_pass

5

Fertig — Playlist befüllen

Nach dem Ansible-Lauf meldet sich der Bildschirm automatisch an.

` const adminTmpl = ` Admin – MORZ Infoboard

Bildschirme

{{if .Screens}}
{{range .Screens}} {{$users := index $.ScreenUserMap .ID}}
{{if eq .Orientation "portrait"}}📱{{else}}🖥{{end}} {{.Name}}
{{.Slug}}
{{orientationLabel .Orientation}}
Playlist
{{end}}
{{else}}
Noch keine Bildschirme angelegt.
{{end}}

Neuen Bildschirm einrichten

Bildschirm anlegen und Ansible-Deployment-Anleitung generieren.

Als screen_id verwendet

Nur anlegen (ohne Deployment)

Screen-Benutzer

Können sich einloggen und nur ihre zugeordneten Bildschirme verwalten.

{{if .ScreenUsers}}
{{range .ScreenUsers}} {{end}}
Benutzername Erstellt
{{.Username}} {{.CreatedAt.Format "02.01.2006 15:04"}}
{{else}}
Noch keine Benutzer angelegt.
{{end}}

Neuen Benutzer anlegen

Mind. 8 Zeichen

` const manageTmpl = ` Playlist – {{.Screen.Name}}
Screenshot {{.Screen.Name}}
{{orientationLabel .Screen.Orientation}} {{.Screen.Slug}}

Playlist

{{if .Items}}
{{range .Items}}
{{typeIcon .Type}} {{.Type}}
s
{{if or .ValidFrom .ValidUntil}} {{else}} {{end}}
{{end}}

Per Drag & Drop sortieren oder Felder direkt bearbeiten.

{{else}}
Die Playlist ist leer. Füge Medien aus der Bibliothek hinzu.
{{end}}

Display

{{if eq .DisplayState "on"}}An{{else if eq .DisplayState "off"}}Aus{{else}}Unbekannt{{end}}

Zeitplan

✓ Gespeichert

Einschalten bis (Override)

{{if not_expired .Schedule.OverrideOnUntil}}

⏰ Aktiv bis {{.Schedule.OverrideOnUntil.Format "02.01.2006 15:04"}}

{{else}}

Überschreibt Zeitplan und Wochenend-Sperre — Monitor bleibt bis zum angegebenen Zeitpunkt eingeschaltet.

{{end}}

✓ Gespeichert

+ Medium hinzufügen

📂

Klicken oder Datei hierher ziehen

Medienbibliothek

{{if .Assets}}
{{range .Assets}}
{{if eq .Type "image"}} {{else if eq .Type "video"}}🎬 {{else if eq .Type "pdf"}}📄 {{else}}🌐{{end}}
{{.Title}}
{{typeIcon .Type}} {{.Type}}
{{if index $.AddedAssets .ID}} ✓ In Playlist {{else}}
{{end}}
{{end}}
{{else}}

Noch keine Medien. Lade oben eine Datei hoch.

{{end}}
` const screenOverviewTmpl = ` Meine Bildschirme – MORZ Infoboard

Meine Bildschirme

{{if .GlobalOverride}}
Alle Monitore {{if eq .GlobalOverride.Type "off"}}ausgeschaltet{{else}}eingeschaltet{{end}} bis {{.GlobalOverride.Until.Format "02.01.2006 15:04"}}
{{else}}
{{end}}
{{if gt (len .Cards) 1}}
Alle Displays:
{{end}}
{{range .Cards}}
{{.Screen.Name}}
{{if eq .Screen.Orientation "portrait"}}📱{{else}}🖥{{end}} {{.Screen.Name}}
{{orientationLabel .Screen.Orientation}} · {{.Screen.Slug}}
Verwalten →
{{if eq .DisplayState "on"}}An{{else if eq .DisplayState "off"}}Aus{{else}}?{{end}}
{{if .OverrideOnUntil}} ⏰ Ein bis {{.OverrideOnUntil.Format "02.01. 15:04"}} {{else}}
Einschalten bis…
{{end}}
{{end}}
`