Wir sind für Sie da

Für Reisende:
Fragen zu Angeboten oder Informationen?

Für Betriebe:
Fragen? Kennzeichnung ­optimal nutzen!

Lade Angebot…

Jetzt anfragen
' + '
' + '
' + '
' + '
' + '' + '' + '
' + '
' + '' + '' + '
' + '
' + '' + '' + '
' + '
' + '' + '' + '
' + /* Honeypot (unsichtbar) */ '
' + '' + '' + '
' + '
' + '
' + '' + '' + '
' + '
' + '
* Pflichtfelder
' + '
' + '
' + '
'; document.body.appendChild(overlay); return overlay; } function openModal(){ var overlay = ensureModal(); overlay.classList.add('is-open'); overlay.setAttribute('aria-hidden','false'); document.documentElement.style.overflow = 'hidden'; // Fokus ins erste Feld var first = overlay.querySelector('#rfa-vorname'); if (first) first.focus(); } function closeModal(){ var overlay = document.getElementById('rfa-booking-overlay'); if (!overlay) return; overlay.classList.remove('is-open'); overlay.setAttribute('aria-hidden','true'); document.documentElement.style.overflow = ''; } function bindOnce(){ var btn = document.getElementById('rfa-angebot-buchen'); if (!btn) return; if (btn.dataset.modalBound) return; btn.dataset.modalBound = "1"; btn.addEventListener('click', function(e){ e.preventDefault(); openModal(); }); document.addEventListener('click', function(e){ var overlay = document.getElementById('rfa-booking-overlay'); if (!overlay || !overlay.classList.contains('is-open')) return; // Klick auf Overlay (außerhalb Modal) schließt if (e.target === overlay) closeModal(); }); document.addEventListener('keydown', function(e){ var overlay = document.getElementById('rfa-booking-overlay'); if (!overlay || !overlay.classList.contains('is-open')) return; if (e.key === 'Escape') closeModal(); }); // Delegated handler im Modal document.addEventListener('click', function(e){ var overlay = document.getElementById('rfa-booking-overlay'); if (!overlay) return; if (e.target && e.target.closest && e.target.closest('.rfa-modal-close')) closeModal(); if (e.target && e.target.id === 'rfa-cancel') closeModal(); }); document.addEventListener('submit', function(e){ if (!e.target || e.target.id !== 'rfa-booking-form') return; e.preventDefault(); var uuid = getUuidFromUrl(); var msgEl = document.getElementById('rfa-form-msg'); var submitBtn = document.getElementById('rfa-submit'); if (!uuid) { if (msgEl) { msgEl.className='rfa-form-msg err'; msgEl.textContent='Fehler: Keine UUID in der URL.'; } return; } if (!window.RFA_BOOKING || !window.RFA_BOOKING.ajaxurl || !window.RFA_BOOKING.nonce) { if (msgEl) { msgEl.className='rfa-form-msg err'; msgEl.textContent='Fehler: Booking-Konfiguration (Nonce/Ajaxurl) fehlt.'; } return; } var form = e.target; var fd = new FormData(form); fd.append('action', 'rfa_send_booking_request'); fd.append('nonce', window.RFA_BOOKING.nonce); fd.append('uuid', uuid); if (msgEl) { msgEl.className='rfa-form-msg'; msgEl.textContent='Sende…'; } if (submitBtn) submitBtn.disabled = true; fetch(window.RFA_BOOKING.ajaxurl, { method: 'POST', body: fd, credentials: 'same-origin', headers: { 'Accept': 'application/json' } }) .then(function(r){ return r.json().catch(function(){ return null; }); }) .then(function(res){ if (!res) throw new Error('Non-JSON response'); if (res.success) { if (msgEl) { msgEl.className='rfa-form-msg ok'; msgEl.textContent='Danke! Deine Anfrage wurde versendet.'; } form.reset(); // nach kurzer Zeit schließen setTimeout(closeModal, 900); } else { var m = (res.data && res.data.message) ? res.data.message : 'Senden fehlgeschlagen.'; if (msgEl) { msgEl.className='rfa-form-msg err'; msgEl.textContent=m; } } }) .catch(function(){ if (msgEl) { msgEl.className='rfa-form-msg err'; msgEl.textContent='Technischer Fehler beim Senden.'; } }) .finally(function(){ if (submitBtn) submitBtn.disabled = false; }); }); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', bindOnce); } else { bindOnce(); } })();

Herzlich willkommen!

Beschreibung wird geladen…

Zertifiziert im Zeitraum:

Wird geladen…

"; var form = new FormData(); form.append("action", "rfa_detail"); form.append("uuid", uuid); fetch("/wp-admin/admin-ajax.php", { method: "POST", body: form, credentials: "same-origin", headers: {"Accept":"application/json"} }) .then(function(r){ return r.json(); }) .then(function(data){ if (data && data.errors && data.errors.length) { console.log("RFA cert GraphQL errors:", data.errors); box.innerHTML = "
Zertifikate konnten nicht geladen werden.
"; return; } var f = data && data.data && data.data.facility; var cd = f && f.certificate_data ? f.certificate_data : null; if (!cd) { box.innerHTML = ""; return; } var from = monthYear(cd.certified_from); var to = monthYear(cd.certified_to); var icons = []; // 1) Haupt-Zertifikat-Icon (de bevorzugt) if (cd.certificate_type) { var mainIcon = cd.certificate_type.icon_url_de || cd.certificate_type.icon_url_en || ""; if (mainIcon) { icons.push({ src: mainIcon, alt: cd.certificate_type.label_de || cd.certificate_type.label_en || "Barrierefreiheit geprüft", className: "rfa-cert-icon--main" }); } } // 2) Gruppen-Icons (nur wenn icon_url vorhanden) var groups = [ ["walking", "Gehbehinderung"], ["wheelchair", "Rollstuhlfahrer"], ["deaf", "gehörlose Menschen"], ["partially_deaf", "Menschen mit Hörbehinderung"], ["visual", "blinde Menschen"], ["partially_visual", "Menschen mit Sehbehinderung"], ["mental", "Menschen mit kognitiven Beeinträchtigungen"] ]; for (var i=0; iZertifiziert im Zeitraum:"; html += "

" + esc((from || "") + (from && to ? " - " : "") + (to || "")) + "

"; } if (icons.length) { html += "
"; for (var j=0; j"; } html += "
"; } box.innerHTML = html || ""; }) .catch(function(err){ console.log("RFA cert fetch failed:", err); box.innerHTML = "
Zertifikate konnten nicht geladen werden.
"; }); } if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", init); else init(); })();
Adresse & Kontakt
Kontakt wird geladen…
"; return; } var facility = data && data.data && data.data.facility; var bd = facility && facility.base_data ? facility.base_data : null; if (!bd) { box.innerHTML = "
Kontakt konnte nicht geladen werden.
"; return; } var addr = bd.address || {}; var website = normalizeWebsite(bd.website); // optional hübsch: PLZ trimmen var zip = (addr.zipcode || "").trim(); var city = (addr.city || "").trim(); var html = ""; if (bd.name_de) html += "" + esc(bd.name_de) + "
"; if (addr.street) html += esc(addr.street) + "
"; if (zip || city) html += esc((zip + " " + city).trim()) + "
"; if (bd.phone || bd.fax || bd.email || website) html += "
"; if (bd.phone) { html += "
Telefonnummer:
" + esc(bd.phone) + "
"; } if (bd.fax) { html += "
Faxnummer:
" + esc(bd.fax) + "
"; } if (bd.email) { html += "
E-Mail-Adresse:
" + esc(bd.email) + "
"; } if (website) { html += ""; } box.innerHTML = html || "
Keine Kontaktdaten verfügbar.
"; }) .catch(function(err){ console.log("RFA Detail contact fetch failed:", err); box.innerHTML = "
Kontakt konnte nicht geladen werden.
"; }); } if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", init); else init(); })();
Partner & Lizenznehmer
Kontakt wird geladen…
"; } if (licence) { html += "
" + esc(licence) + "
"; } el.innerHTML = html || "
Keine Angaben vorhanden.
"; }) .catch(function(err){ console.log("Fetch failed:", err); }); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", init); } else { init(); } })();
'; box.innerHTML = html; // Click handler -> Lightbox (mit Index) box.addEventListener("click", function(e){ var a = e.target && e.target.closest ? e.target.closest("a[data-large]") : null; if (!a) return; e.preventDefault(); // Index ermitteln (robust) var links = box.querySelectorAll('a[data-large]'); var idx2 = -1; for (var i=0; i

Informationen zur Barrierefreiheit

'; } html += '
'; html += '
'; html += ''; return html; } function init(){ var uuid = getUuid(); if (!uuid) return; var wrap = document.getElementById("rfa-access"); var acc = document.getElementById("rfa-access-acc"); if (!wrap || !acc) return; // Lade-Status acc.innerHTML = '
Wird geladen…
'; var fd = new FormData(); fd.append("action","rfa_detail"); fd.append("uuid", uuid); fetch("/wp-admin/admin-ajax.php", { method:"POST", body: fd, credentials:"same-origin", headers: {"Accept":"application/json"} }) .then(function(r){ return r.text(); }) .then(function(txt){ try { return JSON.parse(txt); } catch(e){ console.log("RFA Access Non-JSON:", txt); return null; } }) .then(function(data){ if (!data) { wrap.style.display="none"; return; } if (data.errors && data.errors.length) { console.log("RFA Access GraphQL errors:", data.errors); wrap.style.display="none"; return; } var f = data.data && data.data.facility; if (!f) { wrap.style.display="none"; return; } var sr = f.short_report || {}; var pdf = f.public_pdf || {}; // Kurzbericht oben // Sprache var lang = getLang(); // Kurzbericht oben var shortLink = pickLangUrl(pdf.url_for_short_report, lang); var shortA = document.getElementById("rfa-access-shortpdf"); if (shortA && shortLink) { shortA.href = shortLink; shortA.textContent = (lang === 'en') ? 'Short report as PDF' : 'Kurzbericht als PDF'; shortA.hidden = false; } // Panel-Konfiguration var panels = [ { key_de: "wheelchair_and_walking_de", key_en: "wheelchair_and_walking_en", title_de: "Menschen mit Gehbehinderung und Rollstuhlfahrer", title_en: "People with walking difficulties and wheelchair users", pdf: pickLangUrl(pdf.url_for_wheelchair, lang) || pickLangUrl(pdf.url_for_walking, lang) || "" }, { key_de: "deaf_and_partially_deaf_de", key_en: "deaf_and_partially_deaf_en", title_de: "Menschen mit Hörbehinderung und gehörlose Menschen", title_en: "People with hearing impairment and deaf people", pdf: pickLangUrl(pdf.url_for_deaf, lang) || "" }, { key_de: "visual_and_partially_visual_de", key_en: "visual_and_partially_visual_en", title_de: "Menschen mit Sehbehinderung und blinde Menschen", title_en: "People with visual impairment and blind people", pdf: pickLangUrl(pdf.url_for_visual, lang) || "" }, { key_de: "mental_de", key_en: "mental_en", title_de: "Menschen mit kognitiven Beeinträchtigungen", title_en: "People with cognitive impairments", pdf: pickLangUrl(pdf.url_for_mental, lang) || "" }, { key_de: "generations_de", key_en: "generations_en", title_de: "Menschen mit Einschränkungen der Generationen", title_en: "People with age-related limitations", pdf: pickLangUrl(pdf.url_for_generations, lang) || "" }, { key_de: "allergic_de", key_en: "allergic_en", title_de: "Menschen mit Allergien und Unverträglichkeiten", title_en: "People with allergies and intolerances", pdf: pickLangUrl(pdf.url_for_allergic, lang) || "" } ]; var out = ""; var count = 0; panels.forEach(function(p, idx){ var key = (lang === 'en') ? p.key_en : p.key_de; var bodyHtml = sr[key] || ""; var title = (lang === 'en') ? p.title_en : p.title_de; if (!isNonEmptyHtml(bodyHtml)) return; count++; out += buildItem("rfa-acc-item-"+idx, title, bodyHtml, p.pdf); }); if (!count) { // nichts da -> Element komplett ausblenden wrap.style.display = "none"; return; } acc.innerHTML = out; // Optional: nur 1 offen gleichzeitig (wie Bootstrap accordion) acc.addEventListener("toggle", function(e){ var el = e.target; if (!el || el.tagName !== "DETAILS" || !el.open) return; var all = acc.querySelectorAll("details.rfa-acc__item[open]"); for (var i=0; i
' : '') + '
' + esc(title) + '
' + (city ? '
' + esc(city) + '
' : '') + '' ); }).join(''); grid.innerHTML = html; section.style.display = ''; }) .catch(function(){}); } waitForTitleAndRun(); })();
' : '') + '
' + esc(title) + '
' + (city ? '
' + esc(city) + '
' : '') + '' ); }).join(''); grid.innerHTML = html; section.style.display = ''; console.log('RFA Urlaubsinspirationen: erfolgreich gerendert'); }) .catch(function(err){ console.error('RFA Urlaubsinspirationen Fehler:', err); }); } waitForReadyAndRun(); })();
Nach oben scrollen