Files
christianandClaude Opus 5 09d9837dec feat: kundenspezifisches Logo unter Einstellungen
Bisher war das Logo fest im Repository verdrahtet. Damit hat ein Update
das Logo eines Kunden ueberschrieben - beim Sprung auf den modularen
Stand zum Beispiel von logo.svg auf die mitgelieferte logo.png.

Unter Einstellungen > Logo laesst sich jetzt ein eigenes Logo hochladen.
Es erscheint in der Seitenleiste, auf der Login-Seite und auf der
Zentrale-Seite, mit Vorschau auf hellem und dunklem Grund.

- Datei liegt unter static/custom/ und ist per .gitignore von der
  Versionierung ausgenommen, ein git pull ueberschreibt sie also nicht
- PNG, JPG, SVG, WEBP, GIF bis 2 MB; Format und Groesse werden geprueft
- es bleibt immer genau eine Datei liegen, alte Endungen werden entfernt
- fehlt die Datei, greift automatisch das mitgelieferte Logo
- Upload und Zuruecksetzen liegen hinter dem Admin-Login
- logo_url() ist als Jinja-Global registriert, damit auch die Seiten ohne
  _ctx() (Login, Zentrale) dasselbe Logo zeigen

.gitignore ergaenzt: static/custom/ sowie die bisher fehlenden
busylight.db-shm, busylight.db-wal und Status.csv - letztere lagen auf
dem Produktivsystem als untracked herum.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-21 08:55:16 +00:00

90 lines
4.2 KiB
HTML

<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% block title %}Busylight Manager{% endblock %}</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.2/font/bootstrap-icons.min.css" rel="stylesheet">
<link href="/static/style.css" rel="stylesheet">
{% block head %}{% endblock %}
</head>
<body>
<div class="d-flex">
<nav class="sidebar bg-dark text-white d-flex flex-column">
<div class="p-3 border-bottom border-secondary text-center">
<a href="/"><img src="{{ logo_url() }}" alt="Logo" style="height: 32px;"></a>
</div>
<ul class="nav flex-column mt-2 flex-grow-1">
<li class="nav-item">
<a class="nav-link text-white {% if page == 'dashboard' %}active{% endif %}" href="/">
<i class="bi bi-speedometer2"></i> Dashboard
</a>
</li>
{% if logged_in %}
<li class="nav-item">
<a class="nav-link text-white {% if page == 'users' %}active{% endif %}" href="/users">
<i class="bi bi-people"></i> Benutzer
</a>
</li>
<li class="nav-item">
<a class="nav-link text-white {% if page == 'devices' %}active{% endif %}" href="/devices">
<i class="bi bi-router"></i> Tuerschilder
</a>
</li>
<li class="nav-item">
<a class="nav-link text-white {% if page == 'assignments' %}active{% endif %}" href="/assignments">
<i class="bi bi-link-45deg"></i> Zuordnungen
</a>
</li>
<li class="nav-item">
<a class="nav-link text-white {% if page == 'colors' %}active{% endif %}" href="/colors">
<i class="bi bi-palette"></i> Farb-Regeln
</a>
</li>
<li class="nav-item">
<a class="nav-link text-white {% if page == 'backup' %}active{% endif %}" href="/backup">
<i class="bi bi-download"></i> Backup
</a>
</li>
<li class="nav-item">
<a class="nav-link text-white {% if page == 'settings' %}active{% endif %}" href="/settings">
<i class="bi bi-gear"></i> Einstellungen
</a>
</li>
<li class="nav-item">
<a class="nav-link text-white {% if page == 'log' %}active{% endif %}" href="/log">
<i class="bi bi-journal-text"></i> Protokoll
</a>
</li>
{% endif %}
</ul>
<div class="p-3 border-top border-secondary">
{% if authenticated %}
<small class="text-success"><i class="bi bi-check-circle"></i> Azure verbunden</small>
{% else %}
<small class="text-danger"><i class="bi bi-x-circle"></i> Azure getrennt</small>
{% endif %}
<div class="mt-2">
{% if logged_in %}
<a href="/logout" class="text-light small"><i class="bi bi-box-arrow-left"></i> Abmelden</a>
{% else %}
<a href="/login" class="text-light small"><i class="bi bi-box-arrow-in-right"></i> Anmelden</a>
{% endif %}
</div>
<div class="mt-2">
<small class="text-secondary" style="font-size:0.65rem">&copy; cynfo GmbH</small>
</div>
</div>
</nav>
<main class="main-content flex-grow-1">
{% block content %}{% endblock %}
</main>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
{% block scripts %}{% endblock %}
</body>
</html>