Zum Inhalt springen

Widget einbinden

Owner und Admins legen Widgets unter Widgets an. Trainer:innen haben keinen Zugriff.

  1. Wähle Widget anlegen und lege Name, Kurse, Filialen und erlaubte Domains fest.
  2. Öffne den Dialog Embed-Code einmalig sichern bewusst.
  3. Kopiere den Code und schließe den Dialog erst, nachdem du bestätigt hast, dass du ihn gespeichert hast oder den Key rotieren kannst.

Orbinaut speichert nur den SHA-256-Hash. Listen zeigen später nur Präfix und Key-Version. Ein verlorener Key lässt sich nicht erneut anzeigen; rotiere ihn stattdessen.

Das Script kommt von der Orbinaut-Web-Origin. Die API-Origin steht in api-url.

<script type="module" src="YOUR_WEB_ORIGIN/widget/v1/orbinaut-widget.js"></script>
<orbinaut-booking-widget
api-url="YOUR_API_URL"
widget-key="YOUR_WIDGET_KEY"
></orbinaut-booking-widget>
Teil Vertrag
Script YOUR_WEB_ORIGIN/widget/v1/orbinaut-widget.js als type="module", einmal pro Seite
Custom Element orbinaut-booking-widget
api-url HTTPS-Origin ohne Pfad, Query, Hash oder Zugangsdaten. HTTP nur für localhost, 127.0.0.1 und [::1]
widget-key vollständiger Key mit Präfix orb_widget_v1_
lang (optional) de, en oder fr für die Widget-Texte. Ohne Attribut gilt ein auf der Host-Origin unter localStorage["orbinaut:locale"] gespeicherter Wert, sonst lang des Host-Dokuments, sonst die Browsersprache. locale ist ein Alias.

Ändert sich eines dieser Attribute, lädt nur dieses Element neu. Entfernst du das Element, bricht es laufende Anfragen ab.

Buchen öffnet die gehostete Seite /b/{slug}/{courseId} in einem neuen Tab (source=widget). Die Host-Seite bleibt geöffnet. Es gibt kein Formular, keine Zahlung und keine Anmeldung im Widget.

Eine neutrale HTML-Vorlage mit absichtlich grobem Host-CSS liegt unter /examples/widget-html.html. Das ist die Copy-Paste-Referenz, kein lokaler Server.

Zum Einfügen eines echten Dashboard-Embeds dienen die laufenden Hosts examples/widget-html (http://localhost:4177) und examples/widget-angular (http://localhost:4178). Starte sie mit npm run dev:widget-html und npm run dev:widget-angular. Sie werden nicht von npm run dev gestartet. Trage die exakte Origin in Erlaubte Domains ein. Ablauf und Befehle: Beispiele.

Aktion Wirkung
Vorschau zeigt Theme und aktuelle Kursfilter. Die Vorschau erfasst keine Nutzung und legt keine Buchung an.
Key rotieren ersetzt den Hash, erhöht die Key-Version und macht den bisherigen Embed-Code sofort ungültig. Der neue Key erscheint genau einmal.
Deaktivieren weist den aktuellen Key ab. Kursfilter und Origins bleiben erhalten.
Aktivieren erlaubt dem bestehenden Key wieder, Inhalte zu laden.

Nach einer Rotation musst du den neuen Embed-Code auf jeder Host-Seite ersetzen.

Eine strikte Host-Policy braucht mindestens:

Content-Security-Policy:
script-src YOUR_WEB_ORIGIN;
connect-src YOUR_API_URL;
img-src YOUR_API_URL;

Ergänze diese Quellen in den bereits vorhandenen Direktiven deiner Host-Policy; ersetze die bestehende Policy nicht. img-src erlaubt veröffentlichte Kursbilder. Veröffentlicht das Design eine eigene Schrift, ergänze außerdem font-src YOUR_API_URL.

Das Modul verwendet kein eval, keine globalen Host-Styles und keine Inline-Event-Handler. Constructable Stylesheets machen style-src in aktuellen Browsern für das Widget überflüssig. Der Fallback für ältere Browser verwendet ein Style-Element und benötigt deshalb eine passende Inline-Style-Freigabe.

Blockiert script-src das Modul, kann der Browser das Custom Element nicht rendern. Höre in diesem Fall auf das error-Ereignis des Script-Tags aus deinem bereits erlaubten Bundle und zeige eigenen Fallback-Inhalt.

Das Script nur einmal laden. Danach dürfen beliebig viele orbinaut-booking-widget-Elemente folgen, auch mit unterschiedlichen Keys. Jedes Element lädt Manifest und Kursliste selbst.

Siehe Beispiele und Fehlerbehebung.