From a0753ea4c30a9939684efb58ea2e9391200d2b8e Mon Sep 17 00:00:00 2001 From: Erik Thiele Date: Sat, 4 Jul 2026 10:31:02 +0200 Subject: [PATCH] =?UTF-8?q?Willkommensseite:=20Kontaktinfo=20linksb=C3=BCn?= =?UTF-8?q?dig=20mit=20Aufz=C3=A4hlungen,=20Portrait-Modus=20verbessert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - md_to_html: Listen-Support (- /*) und Zeilenumbrüche erhalten - Kein Firmenname mehr unter den Logos (customer-name entfernt) - text-align: left + align-items: stretch für linksbündige Texte - Feste Logo-Höhe 120px für gleiche Text-Startposition - Portrait-Modus: Text links vom Logo (via order), gap 40px - Schrift 1.3rem, margin-top 24px, Listeneinzug entfernt - Reset-Button im Willkommensseite-Formular - Markdown-Hilfetext aktualisiert --- app.py | 13 +++++++-- generate_welcome_page.py | 57 +++++++++++++++++++++++++++++----------- templates/customer.html | 5 +++- 3 files changed, 56 insertions(+), 19 deletions(-) diff --git a/app.py b/app.py index 9566255..136e250 100755 --- a/app.py +++ b/app.py @@ -30,7 +30,7 @@ from werkzeug.middleware.proxy_fix import ProxyFix from flask import ( Flask, jsonify, render_template, send_from_directory, redirect, - request, abort, flash, session + request, abort, flash, session, url_for ) from flask_login import ( LoginManager, login_user, current_user, @@ -769,10 +769,19 @@ def add_customer(): config = load_config() site_list = get_site_list(config) background_url = get_background_url(site) + + if request.args.get("reset") and site: + site_cfg = config.setdefault("sites", {}).setdefault(site, {}) + site_cfg.pop("welcome_data", None) + save_config(config) + return redirect(url_for("add_customer", site=site)) + welcome_data = config.get("sites", {}).get(site, {}).get("welcome_data", {}) saved_contacts = welcome_data.get("contacts", ["", "", ""]) - if not contacts: + if request.method != "POST": contacts = saved_contacts + customer_names = welcome_data.get("names", ["", "", ""]) + logo_urls = welcome_data.get("logo_urls", [None, None, None]) return render_template( "customer.html", error=error, diff --git a/generate_welcome_page.py b/generate_welcome_page.py index 626a51f..aaa9133 100644 --- a/generate_welcome_page.py +++ b/generate_welcome_page.py @@ -98,13 +98,34 @@ def search_customer_logo(customer_name): # ------------------------------------------------- def md_to_html(text): - """Wandelt einfaches Markdown in HTML um (fett, kursiv, code, zeilenumbrüche).""" + """Wandelt einfaches Markdown in HTML um (fett, kursiv, code, zeilenumbrüche, aufzählungen).""" import re text = re.sub(r'\*\*(.+?)\*\*', r'\1', text) text = re.sub(r'\*(.+?)\*', r'\1', text) text = re.sub(r'`(.+?)`', r'\1', text) lines = text.split('\n') - return '
'.join(line.strip() for line in lines) + parts = [] + in_list = False + for line in lines: + stripped = line.strip() + is_li = stripped.startswith('- ') or stripped.startswith('* ') + if is_li: + if not in_list: + parts.append('') + in_list = False + if stripped: + parts.append(stripped) + parts.append('
') + if in_list: + parts.append('') + if parts and parts[-1] == '
': + parts.pop() + return ''.join(parts) def generate_welcome_html(customer_names, logo_urls, contacts=None, site="stuttgart", background_url=None): @@ -141,7 +162,6 @@ def generate_welcome_html(customer_names, logo_urls, contacts=None, site="stuttg
- {name} {contact_html}
''' @@ -193,41 +213,45 @@ def generate_welcome_html(customer_names, logo_urls, contacts=None, site="stuttg .customer-logo-item {{ flex: 0 0 280px; display: flex; flex-direction: column; - align-items: center; justify-content: flex-start; + align-items: stretch; justify-content: flex-start; + }} + .customer-meta {{ + width: 100%; text-align: left; }} .customer-logo {{ - width: 100%; height: auto; - max-height: 180px; + width: 100%; height: 120px; object-fit: contain; filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.15)); - }} - .customer-name {{ - font-size: 1rem; font-weight: 600; color: #000; - margin-top: 8px; text-align: center; + display: block; }} .contact-info {{ - font-size: 0.85rem; color: #333; line-height: 1.5; - margin-top: 6px; text-align: center; + font-size: 1.3rem; color: #333; line-height: 1.3; + margin-top: 24px; text-align: left; }} .contact-info strong {{ color: #000; }} .contact-info code {{ font-size: 0.8rem; padding: 1px 4px; background: rgba(0,0,0,0.06); border-radius: 3px; }} + .contact-info ul {{ + margin: 0; padding-left: 0; + list-style-position: inside; + }} + .contact-info li {{ + margin: 0; padding: 0; + }} @media (orientation: portrait) {{ .customer-logos {{ flex-direction: column; gap: 20px; }} .customer-logo-item {{ flex: 0 0 auto; - flex-direction: row; gap: 20px; + flex-direction: row; gap: 40px; width: 100%; max-width: 600px; }} .customer-logo {{ max-height: 100px; width: 180px; flex-shrink: 0; - }} - .customer-name {{ - margin-top: 0; text-align: left; + order: 2; }} .contact-info {{ text-align: left; @@ -235,6 +259,7 @@ def generate_welcome_html(customer_names, logo_urls, contacts=None, site="stuttg .customer-meta {{ display: flex; flex-direction: column; align-items: flex-start; flex: 1; + order: 1; }} }} .content {{ diff --git a/templates/customer.html b/templates/customer.html index 392cdc7..22551a7 100644 --- a/templates/customer.html +++ b/templates/customer.html @@ -156,12 +156,15 @@

Das System sucht automatisch nach den Kundenlogos

und erstellt eine angepasste Willkommensseite für die Lobby-Playlist.

-

Ansprechpartner unterstützen fett, kursiv und Code sowie Zeilenumbrüche.

+

Ansprechpartner unterstützen fett, kursiv, Code, Aufzählungen (- ) sowie Zeilenumbrüche.

+ + Zurücksetzen +