Standard-Theme sichtbar und Autoload repariert

This commit is contained in:
oberon 2026-02-19 14:18:05 +01:00
parent a69b8e4990
commit 6d58a652db
3 changed files with 31 additions and 18 deletions

View File

@ -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/<filename>', methods=['GET', 'POST'])

View File

@ -77,7 +77,12 @@
<tbody>
{% for sb in sb_configs %}
<tr>
<td>{{ sb.name }}</td>
<td>
{{ sb.name }}
{% if default_theme == sb.filename %}
<span class="badge bg-success ms-2">Standard</span>
{% endif %}
</td>
<td><code>{{ sb.filename }}</code></td>
<td>
<a href="{{ url_for('admin.admin_edit_theme', filename=sb.filename) }}"

View File

@ -289,25 +289,29 @@
(async () => {
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);
}
})();
</script>