fix: Word-Text in Spielerklärung + Fazit splitten

- Erkennt 'Fazit'-Überschrift als Trenner im Word-Dokument
- Spielerklärung erscheint vor dem Pagebreak
- Fazit erscheint nach dem 'Meine Meinung'-Banner
- Verlag-Fallback aus Formular wenn Excel fehlt
- Pro/Kontra nach dem Fazit
This commit is contained in:
Hermes Agent
2026-07-13 22:55:38 +02:00
parent ed63994e1c
commit b787aa12af
+30 -8
View File
@@ -2177,25 +2177,47 @@ document.getElementById('publishBtn').addEventListener('click',function(){{submi
tags_str = ", ".join(tags) if tags else f"{spielname}, Brettspiel, Review, Bewertung, {autor_name}" tags_str = ", ".join(tags) if tags else f"{spielname}, Brettspiel, Review, Bewertung, {autor_name}"
title_full = f"{spielname} {zusatz}".strip() title_full = f"{spielname} {zusatz}".strip()
# Artikeltext aus Word (zwischen Infobox und Fazit) # Artikeltext aus Word in Spielerklärung + Fazit splitten
artikel_html = "" erklarung_html = ""
fazit_html = ""
if word_text: if word_text:
if "<" not in word_text[:100]: # Suche "Fazit"-Überschrift als Trenner
artikel_html = f"<p>{word_text.replace(chr(10)+chr(10), '</p><p>')}</p>" import re as re2
split_marker = re2.search(r'(?i)^Fazit\s*$|^{2,}Fazit\s*$', word_text, re2.MULTILINE)
if split_marker:
erkl = word_text[:split_marker.start()].strip()
faz = word_text[split_marker.end():].strip()
elif "Fazit" in word_text:
parts = word_text.split("Fazit", 1)
erkl = parts[0].strip()
faz = parts[1].strip()
else: else:
artikel_html = word_text erkl = word_text
faz = ""
# In HTML umwandeln falls Plaintext
if erkl and "<" not in erkl[:100]:
erkl = f"<p>{erkl.replace(chr(10)+chr(10), '</p><p>')}</p>"
if faz and "<" not in faz[:100]:
faz = f"<p>{faz.replace(chr(10)+chr(10), '</p><p>')}</p>"
erklarung_html = erkl
fazit_html = faz
body = f"""<p>{spielname}{komplex or 'Brettspiel'} von {autoren or verlag or 'unbekannt'}</p> # Verlag/Autor Fallback
display_autor = autoren or verlag or meta.get("verlag", "").strip() or "unbekannt"
body = f"""<p>{spielname}{komplex or 'Brettspiel'} von {display_autor}</p>
<hr id="system-readmore"> <hr id="system-readmore">
<p>&nbsp;</p> <p>&nbsp;</p>
<p><img style="margin:10px auto;display:block;" src="{base_img}/wertung/info.png" alt="Fakten zum Spiel"></p> <p><img style="margin:10px auto;display:block;" src="{base_img}/wertung/info.png" alt="Fakten zum Spiel"></p>
{fakten_html} {fakten_html}
{disc_html} {disc_html}
{mech_html} {mech_html}
{artikel_html} {erklarung_html}
<hr class="system-pagebreak" title="Fazit + Wertung + Bilder vom Spiel">
<h2><img src="images/banners/redaktion/{autor_banner}" alt="Meine Meinung"></h2>
{fazit_html}
{pro_html} {pro_html}
{kontra_html} {kontra_html}
<h2><img src="images/banners/redaktion/{autor_banner}" alt="Meine Meinung"></h2>
{wertung_html} {wertung_html}
<p>&nbsp;</p> <p>&nbsp;</p>
<p style="text-align:center;">{{{{module Discord-Hinweis Tests}}}}</p> <p style="text-align:center;">{{{{module Discord-Hinweis Tests}}}}</p>