Impressum

Angaben gemäß § 5 TMG:

Rheinischer Dialog und Bildungsverein e.V

Kantstr. 30  D-47166  Duisburg

Registereintrag:

Eintragung im Vereinsregister.
Registergericht: Amtsgericht Duısburg
Registernummer: VR 4210

Vorstand

hier klicken

Kontakt:

Telefon: +49 (0) 203-46 80 280
Telefax: +49 (0) 203-47 99 663
E-Mail: [email protected]

Streitschlichtung

Die Europäische Kommission stellt eine Plattform zur Online-Streitbeilegung (OS) bereit: https://ec.europa.eu/consumers/odr.
Unsere E-Mail-Adresse finden Sie oben im Impressum.

Wir sind nicht bereit oder verpflichtet, an Streitbeilegungsverfahren vor einer Verbraucherschlichtungsstelle teilzunehmen.

Haftung für Inhalte

Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen.

Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.

Haftung für Links

Unser Angebot enthält Links zu externen Websites Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar.

Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.

Urheberrecht

Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind nur für den privaten, nicht kommerziellen Gebrauch gestattet.

Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen.

Bildernachweise:
© bigstockphoto.de
© stock.adobe.com
© graphicstock.com
© shutterstock.com
© freepik.com

Quellenangaben für die verwendeten Bilder und Grafiken:
© 2023 Layout & technische Umsetzung: Webdesigner Gelsenkirchen – webpen.de
- End * 3. Priority: 1(oder höher) */(function () { 'use strict';function enhanceElementorForms() { // Alle Elementor Formularfelder finden const formFields = document.querySelectorAll('.elementor-form .elementor-field-group');formFields.forEach(function (fieldGroup, index) { const input = fieldGroup.querySelector('input, textarea, select'); if (!input) return;// Wenn bereits ein Label existiert, überspringen const existingLabel = fieldGroup.querySelector('label'); if (existingLabel && existingLabel.textContent.trim()) return;// Text aus Placeholder oder Field-Label holen const labelText = input.placeholder || input.getAttribute('aria-label') || fieldGroup.querySelector('.elementor-field-label')?.textContent || 'Feld ' + (index + 1);// Eindeutige ID generieren if (!input.id) { input.id = 'form-field-' + input.name || 'field-' + index + '-' + Date.now(); }// Label-Element erstellen const label = document.createElement('label'); label.setAttribute('for', input.id); label.textContent = labelText; label.className = 'elementor-field-label elementor-screen-only sr-only';// Label vor dem Input einfügen input.parentNode.insertBefore(label, input);// aria-label hinzufügen (für Screenreader) if (!input.getAttribute('aria-label')) { input.setAttribute('aria-label', labelText); }// Prüfung auf Pflichtfelder - required Attribute, Klasse oder * im Placeholder const hasRequiredAttr = input.required; const hasRequiredClass = input.classList.contains('elementor-field-required') || fieldGroup.classList.contains('elementor-field-required'); const hasAsteriskInPlaceholder = input.placeholder && input.placeholder.includes('*');if (hasRequiredAttr || hasRequiredClass || hasAsteriskInPlaceholder) { input.setAttribute('aria-required', 'true');// Wenn required Attribute fehlt, aber * im Placeholder ist, hinzufügen if (!input.required && hasAsteriskInPlaceholder) { input.required = true; }// Sternchen zum Label hinzufügen if (!label.textContent.includes('*')) { const requiredSpan = document.createElement('span'); requiredSpan.className = 'required-indicator'; requiredSpan.setAttribute('aria-hidden', 'true'); requiredSpan.textContent = ' *'; label.appendChild(requiredSpan); } }// Zusätzliche ARIA-Attribute basierend auf Input-Typ if (input.type === 'email') { input.setAttribute('aria-describedby', input.id + '-desc'); } if (input.type === 'tel') { input.setAttribute('inputmode', 'tel'); } });// aria-label zu Submit-Buttons hinzufügen const submitButtons = document.querySelectorAll('.elementor-form button[type="submit"], .elementor-form .elementor-button'); submitButtons.forEach(function (button) { if (!button.getAttribute('aria-label')) { const buttonText = button.textContent.trim() || 'Absenden'; button.setAttribute('aria-label', buttonText); } });// Role und aria-label zum Formular hinzufügen const forms = document.querySelectorAll('.elementor-form'); forms.forEach(function (form, index) { if (!form.getAttribute('aria-label')) { form.setAttribute('aria-label', 'Kontaktformular'); } if (!form.getAttribute('role')) { form.setAttribute('role', 'form'); } });// aria-live für Fehlermeldungen const errorMessages = document.querySelectorAll('.elementor-message'); errorMessages.forEach(function (msg) { msg.setAttribute('aria-live', 'polite'); msg.setAttribute('role', 'alert'); }); }// Skip Link Korrektur - Ziel für #content prüfen function fixSkipLink() { const skipLink = document.querySelector('a[href="#content"]'); const contentTarget = document.getElementById('content');if (skipLink && !contentTarget) { // Hauptinhaltsbereich finden und id="content" hinzufügen const mainContent = document.querySelector('.elementor-location-single, .site-main, main, [data-elementor-type="wp-page"]'); if (mainContent) { mainContent.id = 'content'; mainContent.setAttribute('role', 'main'); mainContent.setAttribute('tabindex', '-1'); } } }// Fokus-Sichtbarkeit verbessern function enhanceFocusVisibility() { const style = document.createElement('style'); style.textContent = ` /* Barrierefreiheit: Fokus-Indikator */ a:focus, button:focus, input:focus, textarea:focus, select:focus, [tabindex]:focus { outline: 2px solid #005fcc !important; outline-offset: 2px !important; } /* Klasse nur für Screenreader */ .sr-only, .elementor-screen-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; } /* sr-only im Fokus anzeigen (für Skip Links) */ .sr-only:focus, .elementor-screen-only:focus { position: static !important; width: auto !important; height: auto !important; padding: 0.5rem 1rem !important; margin: 0 !important; overflow: visible !important; clip: auto !important; white-space: normal !important; } `; document.head.appendChild(style); }// Beim Laden der Seite ausführen function init() { enhanceElementorForms(); fixSkipLink(); enhanceFocusVisibility();// MutationObserver für Elementor Popups const observer = new MutationObserver(function (mutations) { mutations.forEach(function (mutation) { if (mutation.addedNodes.length) { enhanceElementorForms(); } }); });observer.observe(document.body, { childList: true, subtree: true }); }// DOM Ready Check if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); }// Auch nach Elementor Frontend Init ausführen if (typeof jQuery !== 'undefined') { jQuery(window).on('elementor/frontend/init', function () { setTimeout(enhanceElementorForms, 500); }); }})();