From 6d58a652db7fc45390244b858140fc09d8485274 Mon Sep 17 00:00:00 2001 From: oberon Date: Thu, 19 Feb 2026 14:18:05 +0100 Subject: [PATCH] Standard-Theme sichtbar und Autoload repariert --- app/routes/admin.py | 8 ++++++-- templates/admin.html | 7 ++++++- templates/soundboard.html | 34 +++++++++++++++++++--------------- 3 files changed, 31 insertions(+), 18 deletions(-) diff --git a/app/routes/admin.py b/app/routes/admin.py index 7bca8f0..208a0cd 100644 --- a/app/routes/admin.py +++ b/app/routes/admin.py @@ -6,7 +6,7 @@ from datetime import datetime from flask import Blueprint, render_template, request, jsonify, redirect, url_for, current_app from app.state import current_config -from app.utils.helpers import load_configs, load_default_sounds, load_soundboard_configs, write_default_theme +from app.utils.helpers import load_configs, load_default_sounds, load_soundboard_configs, write_default_theme, read_default_theme admin_bp = Blueprint('admin', __name__) logger = logging.getLogger(__name__) @@ -15,7 +15,11 @@ logger = logging.getLogger(__name__) def admin(): configs = load_configs() sb_configs = load_soundboard_configs(current_app.config['SOUNDBOARD_CONFIG_DIR']) - return render_template('admin.html', configs=configs, sb_configs=sb_configs) + default_theme = read_default_theme(current_app.config['DEFAULT_THEME_FILE']) + return render_template('admin.html', + configs=configs, + sb_configs=sb_configs, + default_theme=default_theme) @admin_bp.route('/edit/', methods=['GET', 'POST']) diff --git a/templates/admin.html b/templates/admin.html index 852b618..62b7c38 100644 --- a/templates/admin.html +++ b/templates/admin.html @@ -77,7 +77,12 @@ {% for sb in sb_configs %} - {{ sb.name }} + + {{ sb.name }} + {% if default_theme == sb.filename %} + Standard + {% endif %} + {{ sb.filename }} { await updateAutoStatus(); // Wenn noch kein Theme aktiv ist, versuche Standard-Theme zu laden - const statusRes = await fetch('/api/soundboard/status'); - const statusData = await statusRes.json(); + let statusRes = await fetch('/api/soundboard/status'); + let statusData = await statusRes.json(); if (!statusData.active && !statusData.current_theme) { await fetch('/api/soundboard/load_default', { method: 'POST' }); + statusRes = await fetch('/api/soundboard/status'); + statusData = await statusRes.json(); } - if (selectEl && selectEl.value) { - const statusRes2 = await fetch('/api/soundboard/status'); - const statusData2 = await statusRes2.json(); - if (!statusData2.active || statusData2.current_theme !== selectEl.value) { - loadSoundboard(selectEl.value); - } else { - const cur = await fetch('/api/soundboard/current'); - const curData = await cur.json(); - if (curData.soundboard) { - currentSB = curData.soundboard; - renderSoundboard(currentSB); - content.style.display = 'block'; - } + + if (statusData.current_theme) { + const cur = await fetch('/api/soundboard/current'); + const curData = await cur.json(); + if (curData.soundboard) { + currentSB = curData.soundboard; + renderSoundboard(currentSB); + content.style.display = 'block'; } + // Select auf aktuelles Theme setzen, falls vorhanden + if (selectEl) { + const opt = Array.from(selectEl.options).find(o => o.value === statusData.current_theme); + if (opt) selectEl.value = opt.value; + } + } else if (selectEl && selectEl.value) { + loadSoundboard(selectEl.value); } })();