Terminplaner: Gaesteseiten – Nachbesserungen

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Sonnet 5.5 committed 2026-10-03 08:17:44 +00:00
1 parent 734e397e73
commit 70940e02c8
5 files changed
+193 -33

No files matched your search

+28 -22
View File
@@ -161,12 +161,6 @@
return m
}
function absaetze (text, cls) {
const wrap = el('div', cls || '')
String(text).split(/\n{2,}/).forEach(function (a) { if (a.trim()) wrap.appendChild(el('p', '', a.trim())) })
return wrap
}
// Zusammenfassung des Termins (alles vom Server, nur Texte)
function zusammenfassung (t) {
const dl = el('dl', 't-zusammen')
@@ -246,11 +240,22 @@
return k.length ? fehler[k[0]] : vorgabe
}
// Kopf und Fuss einer Fehleransicht: Ist die Vorschau schon geladen (der Link laeuft mitten in der Sitzung ab), bleiben
// Farbe, Anrede und Fusslinks, wie der Gast sie gesehen hat; sonst neutraler Kopf, Sie-Form, kein Betriebsfuss.
function fehlerKopf (name) {
if (S.v) {
setzeKopf(name || S.v.betrieb.name, S.v.farbe)
setzeFuss(S.v.betrieb)
return
}
S.du = false
setzeKopf(name, '')
setzeFuss(null)
}
// Link unbekannt, unvollstaendig oder ohne Hash
function zeigeUngueltig (text, hinweis) {
S.du = false
setzeKopf('', '')
setzeFuss(null)
fehlerKopf('')
zeichne(function () {
add(titel(text))
add(el('p', '', hinweis))
@@ -260,8 +265,7 @@
// Abgelaufen: die Antwort traegt Name, Telefon und Website des Betriebs
function zeigeAbgelaufen (err) {
const b = err.betrieb || {}
setzeKopf(b.name, '')
setzeFuss(null)
fehlerKopf(b.name)
zeichne(function () {
add(titel(ersterText(err.fehler, 'Diese Reservierung ist abgelaufen.')))
add(el('p', '', T('Bitte buchen Sie Ihren Termin noch einmal oder rufen Sie uns an.', 'Bitte buche deinen Termin noch einmal oder ruf uns an.')))
@@ -318,8 +322,15 @@
function start () {
const roh = window.location.hash
// Der Token steht nur im Hash (wird nie an einen Server gesendet) und verschwindet sofort aus der Adresszeile
if (roh) window.history.replaceState(null, '', window.location.pathname + window.location.search)
S.v = null
S.verschieben = null
// Der Token steht nur im Hash (wird nie an einen Server gesendet) und verschwindet sofort aus der Adresszeile;
// wirft der Browser dabei (eingeschraenkte Umgebung), laeuft die Seite trotzdem weiter
if (roh) {
try {
window.history.replaceState(null, '', window.location.pathname + window.location.search)
} catch (e) { /* Token bleibt dann in der Adresszeile, die Seite funktioniert */ }
}
if (!roh) {
zeigeUngueltig('Bitte öffnen Sie den Link aus Ihrer E-Mail', 'Diese Seite wird über den Link in der E-Mail zu Ihrem Termin aufgerufen. Bitte öffnen Sie diese E-Mail und klicken Sie dort noch einmal auf den Link.')
return
@@ -330,8 +341,6 @@
return
}
S.token = m[1]
S.v = null
S.verschieben = null
lade()
}
@@ -408,11 +417,11 @@
break
case 'angefragt':
ok = true
t = neu ? T('Ihre Anfrage ist eingegangen.', 'Deine Anfrage ist eingegangen.') : 'Diese Anfrage ist bereits bestätigt.'
t = neu ? T('Ihre Anfrage ist eingegangen.', 'Deine Anfrage ist eingegangen.') : T('Ihre Anfrage wurde bereits abgesendet.', 'Deine Anfrage wurde bereits abgesendet.')
text = neu
? T(betrieb + ' prüft Ihre Anfrage und meldet sich bei Ihnen. Eine Eingangsbestätigung haben wir Ihnen per E-Mail geschickt.',
betrieb + ' prüft deine Anfrage und meldet sich bei dir. Eine Eingangsbestätigung haben wir dir per E-Mail geschickt.')
: T('Sie müssen nichts weiter tun. ' + betrieb + ' meldet sich bei Ihnen.', 'Du musst nichts weiter tun. ' + betrieb + ' meldet sich bei dir.')
: T('Sie erhalten eine E-Mail, sobald ' + betrieb + ' sie annimmt.', 'Du erhältst eine E-Mail, sobald ' + betrieb + ' sie annimmt.')
break
case 'abgesagt':
t = 'Dieser Termin wurde abgesagt.'
@@ -465,12 +474,9 @@
const nav = el('div', 't-nav')
if (a.verschieben) nav.appendChild(knopf('t-btn', 'Termin verschieben', function () { zeigeVerschieben() }))
if (a.absagen) nav.appendChild(knopf('t-btn t-btn-sek', 'Termin absagen', zeigeAbsageFrage))
// § 356a BGB: die Widerrufsfunktion ist gut sichtbar und leicht erreichbar, ein gleichrangiger Knopf in derselben Reihe
if (a.widerrufen) nav.appendChild(knopf('t-btn t-btn-sek', 'Vertrag widerrufen', zeigeWiderruf))
if (nav.childNodes.length) add(nav)
if (a.widerrufen) {
const w = el('p', 't-weitere')
w.appendChild(knopf('t-link', 'Vertrag widerrufen', zeigeWiderruf))
add(w)
}
const offen = v.status === 'bestaetigt' || v.status === 'angefragt'
if (offen && !a.absagen && !a.verschieben && !a.widerrufen && !(istText(v.hinweis) && v.hinweis)) {
add(el('p', 't-box', 'Dieser Termin kann online nicht mehr geändert werden.' +