JavaScript-Widgets einbinden
Anmeldung, Mitgliedsantrag, Fragebogen, Spenden, Gutscheine und Event-Moments mit einem Script und einem div auf jeder Website, ohne Framework und ohne WordPress.
Die JavaScript-Widgets bringen Funktionen von vynst (inwendo ERP) auf jede Website: WordPress, Typo3, Wix, Jimdo, eine statische Seite oder eure eigene App. Ein Widget besteht aus einem Script und einem Platzhalter. Es braucht kein Framework, und die Gestaltung eurer Seite bleibt unberührt.
| Widget | Script | Platzhalter |
|---|---|---|
| Veranstaltungsanmeldung | event-signup.js |
data-iw-event-signup |
| Registrierung und Mitgliedsantrag | registration.js |
data-iw-registration |
| Fragebogen | questionnaire.js |
data-iw-questionnaire |
| Spenden | donation.js |
data-iw-donation |
| Gutscheine | voucher.js |
data-iw-voucher |
| Event-Moments | event-moments.js |
data-iw-event-moments |
Der schnellste Weg: der Embed-Code-Generator
In vynst unter Ext. Verbindungen (API) → JS Website Einbindung stellt ihr ein Widget zusammen, seht eine Vorschau mit euren echten Daten und kopiert den fertigen Code. Der Generator kennt Fragebogen, Veranstaltungsanmeldung, Registrierung und Spenden.
Einbinden
Jede Installation liefert die Scripts selbst aus:
<div data-iw-event-signup
data-iw-host="verein.iw-erp.de"
data-iw-event-id="523"></div>
<script src="https://verein.iw-erp.de/frontend_assets/backend/iw_erp_web_ui/event-signup.js" async></script>
data-iw-hostist die Adresse eurer Installation, mit oder ohnehttps://. Alle Anfragen gehen per HTTPS dorthin.- Das Script sucht nach dem Laden alle passenden Platzhalter auf der Seite und startet in jedem ein Widget. Mehrere Widgets auf einer Seite sind kein Problem.
- Jedes Widget rendert in ein eigenes Shadow DOM. CSS eurer Seite wirkt nicht hinein und das Widget nicht hinaus.
- Ziel sind aktuelle Browser. Polyfills für alte Browser gibt es nicht.
In vynst freischalten
Die Widgets rufen die API eurer Installation direkt aus dem Browser der Besucher auf. Damit der Browser das zulässt, tragt eure Website in vynst bei CORS - HTTP Origins (cors_allow_origin) ein, mehrere durch Komma getrennt:
https://www.unser-verein.de,https://unser-verein.de
Je nach Widget braucht ihr außerdem die Funktion in vynst, etwa die Selbstregistrierung, Spendenziele, Gutscheine oder den Zahlungsanbieter. Das steht auf der Seite des Widgets.
Gestalten
Ohne weitere Angaben kommt ein neutrales Design. Mit Attributen passt ihr es an eure Seite an:
<div data-iw-registration
data-iw-host="verein.iw-erp.de"
data-iw-theme="soft"
data-iw-theme-highlight="#005f66"
data-iw-theme-font="Inter, sans-serif"
data-iw-theme-radius="8"
data-iw-theme-density="compact"></div>
| Attribut | Wirkung |
|---|---|
data-iw-theme |
Vorlage: default, soft, sharp, minimal, high-contrast oder vynst (das Layout der vynst App) |
data-iw-theme-highlight, -highlight-text |
Akzentfarbe für Buttons und Auswahl und die Schrift darauf |
data-iw-theme-text, -muted, -label |
Schriftfarben |
data-iw-theme-background, -surface |
Hintergrund und Flächen |
data-iw-theme-border-color, -field-border-color, -focus |
Rahmen und Fokus |
data-iw-theme-error, -success, -danger |
Farben für Meldungen |
data-iw-theme-font, -font-size |
Schrift |
data-iw-theme-radius |
Eckenradius für alles; einzeln mit -card-radius, -field-radius, -button-radius |
data-iw-theme-border |
none, soft oder strong |
data-iw-theme-shape |
Form von Feldern und Buttons: sharp, rounded oder pill |
data-iw-theme-density |
Abstände: compact, normal oder comfortable |
data-iw-theme-max-width |
maximale Breite |
Einzelne Werte gehen vor der Vorlage. Dieselben Werte stehen als CSS-Variablen bereit (--iw-color-highlight, --iw-font-family, --iw-radius und so weiter), die ihr am Platzhalter setzen könnt.
Texte ändern
Jeder Text lässt sich überschreiben, einzeln oder als JSON:
<div data-iw-event-signup
data-iw-host="verein.iw-erp.de"
data-iw-event-id="523"
data-iw-text-send="Platz sichern"
data-iw-texts='{"success": "Danke, wir sehen uns!"}'></div>
Die Texte der Widgets sind deutsch. Für eine englische Seite überschreibt ihr sie auf diese Weise.
Ohne HTML-Zugriff: Shortcodes
Erlaubt euer Baukasten kein HTML, aber das Script, schreibt ihr einen Shortcode in den Text. Das Widget ersetzt ihn beim Laden:
[iw-event-signup host="verein.iw-erp.de" event-id="523"]
[iw-registration host="verein.iw-erp.de" people="multi"]
[iw-donation host="verein.iw-erp.de" goal-id="7"]
Die Optionen heißen wie die Attribute ohne data-iw-.
Per JavaScript steuern
Für Single-Page-Apps oder nachgeladene Inhalte startet ihr Widgets selbst:
const el = document.querySelector('#anmeldung');
await window.IwEventSignup.mount(el, { host: 'verein.iw-erp.de', eventId: '523' });
// Nachgeladene Platzhalter einsammeln
window.IwEventSignup.scan(document.body);
Die Objekte heißen IwEventSignup, IwRegistration, IwQuestionnaire, IwDonation, IwVoucher und IwEventMoments. Optionen heißen wie die Attribute in camelCase (data-iw-event-id wird eventId), Farben gehen auch als Objekt: theme: { highlightColor: '#005f66' }.
Ereignisse
Jedes Widget meldet, was passiert, als DOM-Ereignis am Platzhalter. Damit zählt ihr Anmeldungen in eurer Statistik oder blendet Inhalte ein:
el.addEventListener('iw:event-signup:submitted', (event) => {
console.log(event.detail.statusCode, event.detail.data);
});
| Ereignis | wann |
|---|---|
iw:<widget>:ready |
Widget geladen |
iw:<widget>:validated |
Eingaben geprüft |
iw:<widget>:submitted |
erfolgreich abgeschickt |
iw:<widget>:error |
Fehler, Text in detail.error.message |
iw:<widget>:payment-opened |
Zahlungsseite geöffnet (Anmeldung, Spenden, Gutscheine) |
<widget> ist event-signup, registration, register-multi-person, questionnaire, donation, voucher oder event-moments. Bei submitted steht in detail.data die Antwort von vynst, bei der Anmeldung etwa mit Namen. Gebt sie nicht ungefiltert an Statistik-Dienste weiter.
Zahlung
Kostenpflichtige Anmeldungen, Spenden und Gutscheine öffnen die Zahlungsseite eures Zahlungsanbieters in einem neuen Fenster. Blockiert der Browser das, wechselt die ganze Seite zur Zahlung. Einrichten: Zahlungsanbieter.
Datenschutz
- Die Widgets setzen keine Cookies.
- Damit nichts verloren geht, merken sich Registrierung, Mitgliedsantrag, Spenden und Gutscheine angefangene Eingaben im Browser (
localStorage) für etwa einen Tag. Bei der einfachen Registrierung gehören dazu auch die Bankdaten, bei Mitgliedsantrag und Spenden nicht. Erwähnt das in eurer Datenschutzerklärung. - Alle Daten gehen direkt an eure vynst-Installation, nicht an Dritte.