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 flask import Blueprint, render_template, request, jsonify, redirect, url_for, current_app
from app.state import current_config 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__) admin_bp = Blueprint('admin', __name__)
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -15,7 +15,11 @@ logger = logging.getLogger(__name__)
def admin(): def admin():
configs = load_configs() configs = load_configs()
sb_configs = load_soundboard_configs(current_app.config['SOUNDBOARD_CONFIG_DIR']) 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']) @admin_bp.route('/edit/<filename>', methods=['GET', 'POST'])

View File

@ -77,7 +77,12 @@
<tbody> <tbody>
{% for sb in sb_configs %} {% for sb in sb_configs %}
<tr> <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><code>{{ sb.filename }}</code></td>
<td> <td>
<a href="{{ url_for('admin.admin_edit_theme', filename=sb.filename) }}" <a href="{{ url_for('admin.admin_edit_theme', filename=sb.filename) }}"

View File

@ -289,17 +289,15 @@
(async () => { (async () => {
await updateAutoStatus(); await updateAutoStatus();
// Wenn noch kein Theme aktiv ist, versuche Standard-Theme zu laden // Wenn noch kein Theme aktiv ist, versuche Standard-Theme zu laden
const statusRes = await fetch('/api/soundboard/status'); let statusRes = await fetch('/api/soundboard/status');
const statusData = await statusRes.json(); let statusData = await statusRes.json();
if (!statusData.active && !statusData.current_theme) { if (!statusData.active && !statusData.current_theme) {
await fetch('/api/soundboard/load_default', { method: 'POST' }); 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'); if (statusData.current_theme) {
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 cur = await fetch('/api/soundboard/current');
const curData = await cur.json(); const curData = await cur.json();
if (curData.soundboard) { if (curData.soundboard) {
@ -307,7 +305,13 @@
renderSoundboard(currentSB); renderSoundboard(currentSB);
content.style.display = 'block'; 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> </script>