From 650aed6d6fb758927e86abc3889a0c76d3a868a0 Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Wed, 17 Jun 2026 17:44:49 +0200 Subject: [PATCH] =?UTF-8?q?Web-Submit:=20Best=C3=A4tigung=20mit=20Referenz?= =?UTF-8?q?-ID=20+=20Kopier-Button=20+=20L=C3=B6sch-Hinweis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - /api/submit gibt jetzt submission_id + delete_hint zurück - Frontend zeigt nach erfolgreichem Submit eine Erfolgsmeldung mit ID - '📋 Kopieren'-Button speichert die ID in die Zwischenablage - Hinweis, dass die ID für spätere Löschung notiert werden soll - Overlay schließt nach 8s (statt 2.5s) — Zeit zum Kopieren --- app.py | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/app.py b/app.py index 5b5ec9c..891e78b 100644 --- a/app.py +++ b/app.py @@ -2127,7 +2127,16 @@ def public_frontend(): const r = await fetch('/api/submit', { method:'POST', body:formData }); const data = await r.json(); if (r.ok) { - sStatus.textContent = data.message; + const subId = data.submission_id; + const hint = data.delete_hint || 'Notiere dir diese ID — mit ihr kannst du den Beitrag später löschen lassen.'; + sStatus.innerHTML = '
' + + '
✅ ' + data.message + '
' + + '
' + + '#' + subId + '' + + '' + + '
' + + '

' + hint + '

' + + '
'; sStatus.style.color = '#20228a'; document.getElementById('subName').value = ''; document.getElementById('subText').value = ''; @@ -2138,7 +2147,22 @@ def public_frontend(): document.getElementById('filePreview').style.display = 'none'; document.getElementById('subHalle').value = ''; document.getElementById('subSpiel').value = ''; - setTimeout(() => { sOverlay.classList.remove('open'); sOpen = false; sStatus.textContent = ''; }, 2500); + // Kopier-Button aktivieren + setTimeout(function() { + var copyBtn = document.getElementById('copyIdBtn'); + if (copyBtn) { + copyBtn.addEventListener('click', function() { + navigator.clipboard.writeText('#' + subId).then(function() { + copyBtn.textContent = '✓ Kopiert!'; + setTimeout(function() { copyBtn.textContent = '📋 Kopieren'; }, 2000); + }).catch(function() { + copyBtn.textContent = 'Fehler'; + }); + }); + } + }, 50); + // Overlay schließt automatisch nach 8 Sekunden + setTimeout(function() { sOverlay.classList.remove('open'); sOpen = false; sStatus.innerHTML = ''; }, 8000); } else { sStatus.textContent = data.error || 'Fehler beim Senden.'; sStatus.style.color = '#dc3545'; @@ -2489,8 +2513,14 @@ def api_submit(): ('web', sender_id, sender_name, msg_type, text or None, media_path, halle_valid, spiel_titel or None), ) db.commit() + sub_id = db.execute("SELECT last_insert_rowid()").fetchone()[0] - return jsonify({'ok': True, 'message': 'Danke für deine Einreichung! Wir schauen sie uns an. 🎲'}) + return jsonify({ + 'ok': True, + 'message': f'Beitrag #{sub_id} erfolgreich übermittelt! 🎲', + 'submission_id': sub_id, + 'delete_hint': 'Notiere dir diese ID — mit ihr kannst du den Beitrag später löschen lassen.', + }) @app.route("/beitrag/")