Compare commits
2 Commits
aeab158e47
...
ccfd90d4b5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ccfd90d4b5 | ||
|
|
03ae5bf4ad |
11
app.py
11
app.py
@@ -51,7 +51,7 @@ CONFIG_FILE = os.path.join(BASE_DIR, "config.json") # Persistente Konfiguration
|
|||||||
USERS_FILE = os.path.join(BASE_DIR, "users.json") # User-Datenbank
|
USERS_FILE = os.path.join(BASE_DIR, "users.json") # User-Datenbank
|
||||||
HISTORY_FILE = os.path.join(BASE_DIR, "history.json") # Aktivitätsverlauf
|
HISTORY_FILE = os.path.join(BASE_DIR, "history.json") # Aktivitätsverlauf
|
||||||
|
|
||||||
APP_VERSION = "6.2.5"
|
APP_VERSION = "6.2.6"
|
||||||
UPLOAD_EXTENSIONS = {".jpg", ".jpeg", ".png", ".mp4"}
|
UPLOAD_EXTENSIONS = {".jpg", ".jpeg", ".png", ".mp4"}
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
@@ -1554,12 +1554,21 @@ def admin(site):
|
|||||||
screen_status[screen_name] = "online" if screen_is_active(current_site, screen_name) else "offline"
|
screen_status[screen_name] = "online" if screen_is_active(current_site, screen_name) else "offline"
|
||||||
client_info[screen_name] = get_client_info(current_site, screen_name)
|
client_info[screen_name] = get_client_info(current_site, screen_name)
|
||||||
|
|
||||||
|
# Priority-Einträge des Standorts nur zur Anzeige mitgeben: sie gelten für
|
||||||
|
# alle Screens, sind aber in einem eigenen Menüpunkt und werden hier leicht
|
||||||
|
# übersehen. Bedienung bleibt ausschließlich auf der Priority-Seite.
|
||||||
|
prio_cfg = get_priority_config(cfg, current_site) if current_site else {}
|
||||||
|
priority_preview = []
|
||||||
|
if current_site and prio_cfg.get("enabled", False):
|
||||||
|
priority_preview = [f for f in load_priority_files(current_site) if "enabled" in f]
|
||||||
|
|
||||||
return render_template(
|
return render_template(
|
||||||
"admin.html",
|
"admin.html",
|
||||||
site_list=site_list,
|
site_list=site_list,
|
||||||
current_site=current_site,
|
current_site=current_site,
|
||||||
screens=screens,
|
screens=screens,
|
||||||
media_files=media_files,
|
media_files=media_files,
|
||||||
|
priority_preview=priority_preview,
|
||||||
screen_status=screen_status,
|
screen_status=screen_status,
|
||||||
client_info=client_info,
|
client_info=client_info,
|
||||||
version=APP_VERSION,
|
version=APP_VERSION,
|
||||||
|
|||||||
@@ -52,6 +52,19 @@
|
|||||||
gap: 0.75rem;
|
gap: 0.75rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ─── Prio-Vorschau: reine Anzeige, keine Bedienung ─── */
|
||||||
|
.playlist-prio {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 28px 1fr 90px 80px;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.75rem;
|
||||||
|
opacity: 0.72;
|
||||||
|
background: var(--tblr-bg-surface-secondary, #f8f9fa);
|
||||||
|
}
|
||||||
|
.playlist-prio .playlist-name {
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
.playlist-name {
|
.playlist-name {
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
@@ -229,6 +242,32 @@
|
|||||||
|
|
||||||
<!-- ═══ Tab: Playlist ═══ -->
|
<!-- ═══ Tab: Playlist ═══ -->
|
||||||
<div class="tab-pane active" id="tab-playlist-{{ screen }}" role="tabpanel">
|
<div class="tab-pane active" id="tab-playlist-{{ screen }}" role="tabpanel">
|
||||||
|
{% if priority_preview %}
|
||||||
|
<!-- Priority-Playlist des Standorts: laeuft diesen Screens vorweg.
|
||||||
|
Reine Anzeige - Bedienung ausschliesslich unter "Priority". -->
|
||||||
|
<ul class="list-group mb-2">
|
||||||
|
{% for file in priority_preview %}
|
||||||
|
<li class="list-group-item playlist-prio">
|
||||||
|
<i class="ti ti-player-play" title="Laeuft vorweg"></i>
|
||||||
|
<span class="playlist-name">
|
||||||
|
{{ file.name }}
|
||||||
|
{% if file.schedule %}<span class="badge ms-1 {% if file.active %}bg-info text-white{% else %}bg-secondary-lt{% endif %}" title="{{ file.schedule | schedule_text }}{% if not file.active %} — laeuft gerade nicht{% endif %}">Zeit</span>{% endif %}
|
||||||
|
{% if not file.enabled %}<span class="badge bg-secondary-lt ms-1">inaktiv</span>{% endif %}
|
||||||
|
</span>
|
||||||
|
<span class="badge bg-red text-red-fg">Prio</span>
|
||||||
|
<span class="playlist-size">
|
||||||
|
{% if file.type == "url" %}{{ file.size }}{% else %}{{ file.size }} KB{% endif %}
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
<p class="text-muted small mb-3">
|
||||||
|
Diese Einträge kommen aus der
|
||||||
|
<a href="{{ url_for('admin_priority', site=current_site) }}">Priority-Playlist</a>
|
||||||
|
des Standorts und laufen allen Screens vorweg. Bearbeiten nur dort.
|
||||||
|
</p>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
<ul class="list-group mb-3" id="playlist-{{ screen }}">
|
<ul class="list-group mb-3" id="playlist-{{ screen }}">
|
||||||
{% for file in media_files[screen] %}
|
{% for file in media_files[screen] %}
|
||||||
<li class="list-group-item playlist-row"
|
<li class="list-group-item playlist-row"
|
||||||
|
|||||||
Reference in New Issue
Block a user