=== platzeo Reservations ===
Contributors: platzeo
Tags: restaurant, reservation, booking, table, gastronomy
Requires at least: 6.0
Tested up to: 6.8
Requires PHP: 8.0
Stable tag: 1.2.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Binde das platzeo Reservierungssystem direkt in deine WordPress-Seite ein - mit Gutenberg-Blöcken oder Shortcodes.

== Description ==

**platzeo Reservations** verbindet dein Restaurant auf [platzeo.de](https://platzeo.de) mit deiner WordPress-Website. Gäste können direkt auf deiner Seite einen Tisch reservieren - ohne Umwege.

= 4 Gutenberg-Blöcke =

* **Buchungsformular** - Bettet das komplette Reservierungsformular inline ein (iFrame oder nativ, siehe unten)
* **Buchungs-Button** - Ein Call-to-Action-Button, der das Formular in einem Overlay öffnet
* **Verfügbarkeit** - Zeigt die nächsten freien Termine als klickbare Chips
* **Restaurant-Info** - Zeigt Name, Adresse, Öffnungszeiten und Telefonnummer aus deinem platzeo Dashboard

= Einfache Verbindung =

Verbinde dein Restaurant mit einem Klick über den platzeo Login oder manuell per API-Key.

= Zwei Darstellungsarten für das Buchungsformular =

Der Block und der Shortcode `[platzeo]` haben ein Attribut `mode`:

* `mode="iframe"` (Standard) - Lädt die Buchungsseite deines Restaurants (`https://<slug>.platzeo.de/embed`) in einem iFrame, dessen Höhe sich automatisch dem Inhalt anpasst. Alle Design-Einstellungen aus dem platzeo Dashboard (Farben, Schrift, Eckenradius, Button-Stil, Kopfbereich, eigenes CSS, Texte, Formularfelder) werden 1:1 übernommen.
* `mode="native"` - Rendert das Formular ohne iFrame direkt im HTML deiner Seite. Übernimmt Farben, Theme-Modus, Schrift, Eckenradius, Button-Stil, Kopfbereich (Logo, Titel, Begrüßungstext, Adresse), Schritt-Beschriftungen, Personen- und Uhrzeit-Auswahlstil, AGB-/Newsletter-Opt-in, eigene Felder, Anlass und Bestätigungstexte aus dem Dashboard. Nicht übernommen wird eigenes CSS aus dem Dashboard; Aktivitäten und Veranstaltungen werden nicht angezeigt.

= Shortcodes =

Alle Blöcke sind auch als Shortcodes verfügbar:

* `[platzeo]` - Buchungsformular
* `[platzeo_button]` - Buchungs-Button (Overlay)
* `[platzeo_availability]` - Verfügbarkeit
* `[platzeo_info]` - Restaurant-Info

= Attribute von [platzeo] / Block „Buchungsformular" =

* `restaurant` - Slug des Restaurants (Standard: Restaurant aus den Plugin-Einstellungen)
* `mode` - `iframe` (Standard) oder `native`
* `theme` - `light`, `dark` oder `auto`; überschreibt den Theme-Modus aus dem Dashboard (beide Modi)
* `lang` - `de` oder `en`; überschreibt die Buchungssprache aus dem Dashboard (beide Modi)
* `compact` - `1` blendet den Kopfbereich (Logo, Titel, Begrüßungstext) aus (beide Modi)
* `seamless` - `1` entfernt Hintergrund und Karte um das Formular (beide Modi)
* `primary` - Primärfarbe als Hex, z. B. `#e63946`; überschreibt die Farbe aus dem Dashboard (beide Modi)
* `height` - Anfangs-/Mindesthöhe des iFrames in Pixeln (nur `mode="iframe"`; danach passt sich die Höhe automatisch an)

Beispiele:

`[platzeo]`
`[platzeo restaurant="mein-restaurant" theme="dark" lang="en"]`
`[platzeo mode="native" compact="1" seamless="1"]`

= Attribute von [platzeo_button] =

* `restaurant`, `label`, `style` (`filled`, `outlined`, `text`), `size` (`small`, `medium`, `large`), `color`, `alignment` (`left`, `center`, `right`)
* `theme`, `lang` - werden an das Formular im Overlay weitergegeben
* `compact` - Standard `1` (kein Kopfbereich im Overlay); `0` zeigt den Kopfbereich

Das Overlay verwendet immer den iFrame-Modus.

= Features =

* Responsive Darstellung auf allen Geräten
* Light/Dark/Auto Theme (Dashboard-Einstellung oder per Attribut)
* Deutsch und Englisch (Dashboard-Einstellung oder per Attribut)
* Farbe, Schrift, Eckenradius und Button-Stil aus dem platzeo Dashboard
* Kompakt-Modus ohne Kopfbereich, Seamless-Modus ohne Karte
* Mehrere Widgets pro Seite möglich (jedes Widget hat eine eigene ID)
* Automatische Höhenanpassung des iFrames
* Buchungs-Funnel-Ereignisse für die Analyse im platzeo Dashboard (beide Modi)
* JavaScript-Events `platzeo:step-changed` und `platzeo:booking-confirmed` auf `document` (beide Modi, `detail.id` = Widget-ID)
* Lazy Loading des iFrames

== Installation ==

1. Lade das Plugin über das WordPress Plugin-Verzeichnis herunter oder lade die ZIP-Datei manuell hoch
2. Aktiviere das Plugin unter „Plugins"
3. Gehe zu Einstellungen → platzeo Reservations
4. Klicke auf „Mit platzeo verbinden" oder gib deinen API-Key ein
5. Wähle dein Standard-Restaurant und konfiguriere die Darstellung
6. Füge die Blöcke im Gutenberg-Editor ein oder nutze die Shortcodes

== Frequently Asked Questions ==

= Brauche ich einen platzeo Account? =

Ja. Du benötigst einen aktiven platzeo Account mit dem Pro-Plan oder höher. Registriere dich auf [platzeo.de](https://platzeo.de).

= Wo finde ich meinen API-Key? =

Im platzeo Dashboard unter Einstellungen → API / Integrationen → „Neuen API-Key erstellen".

= iFrame oder nativ - was soll ich nehmen? =

Der iFrame-Modus (Standard) zeigt immer exakt deine platzeo Buchungsseite, inklusive eigenem CSS aus dem Dashboard. Der native Modus rendert das Formular im HTML deiner Seite (kein iFrame, keine Drittseite im DOM) und übernimmt die Design-Einstellungen aus dem Dashboard, kann aber eigenes CSS aus dem Dashboard nicht anwenden und zeigt keine Aktivitäten/Veranstaltungen.

= Kann ich mehrere Restaurants auf einer Seite anzeigen? =

Ja. Jeder Block und Shortcode hat ein `restaurant`-Attribut, mit dem du das Restaurant pro Widget auswählen kannst.

= Funktioniert das Plugin mit dem Classic Editor? =

Ja. Nutze die Shortcodes `[platzeo]`, `[platzeo_button]`, `[platzeo_availability]` und `[platzeo_info]`.

= Werden meine Daten gespeichert? =

Das Plugin speichert nur deine Verbindungsdaten (verschlüsselt) und deine Einstellungen in der WordPress-Datenbank. Reservierungsdaten werden ausschließlich auf der platzeo Plattform verarbeitet. Beide Formular-Modi senden anonyme Funnel-Ereignisse (Schrittwechsel, Auswahl von Datum/Uhrzeit/Personenzahl, Absenden) mit einer Sitzungs-ID an platzeo, damit du im Dashboard siehst, wo Gäste abspringen.

== Screenshots ==

1. Einstellungsseite - Verbindung herstellen
2. Buchungsformular-Block im Gutenberg-Editor
3. Buchungs-Button auf der Seite
4. Verfügbarkeits-Widget mit freien Terminen
5. Restaurant-Info-Karte

== Changelog ==

= 1.2.0 =
* Neues Attribut `mode` für `[platzeo]` und den Buchungsformular-Block: `iframe` (neuer Standard, identisch zur platzeo Buchungsseite, automatische Höhenanpassung) oder `native`
* `theme`, `lang`, `compact` und `height` wirken wieder (waren in 1.1.0 ohne Funktion); neues Attribut `seamless`
* Natives Formular übernimmt jetzt Theme-Modus, Schrift, Eckenradius, Button-Stil, Kopfbereich (Logo, Titel, Begrüßungstext, Adresse, Hero-Bild), Schritt-Beschriftungen, Personen-/Uhrzeit-Auswahlstil, AGB-Opt-in, Bestätigungs-/Anfrage-Texte und die Buchungssprache (vollständige englische Übersetzung)
* Buchungs-Funnel-Ereignisse aus beiden Modi für die Analyse im platzeo Dashboard
* Buchungs-Button/Overlay gibt Theme, Sprache, Farbe und Widget-ID an das Formular weiter; Overlay-Höhe folgt dem Inhalt
* Jedes Widget hat eine eigene ID; `platzeo:*`-Events enthalten sie in `detail.id`
* Standardwerte „Kompakt-Modus" und „Minimale Höhe" aus den Plugin-Einstellungen werden vom Shortcode berücksichtigt
* Build-Skript `build-zip.ps1` für ein reproduzierbares Plugin-Zip

= 1.1.0 =
* Natives Buchungsformular ohne iframe (schneller, barrierefrei, im Theme-Stil)
* Individuelle Formularfelder und Newsletter-Opt-in aus dem platzeo Dashboard werden übernommen
* OAuth-Verbindung mit `state`-Prüfung; Verbindung bleibt bei temporären Serverfehlern erhalten
* Verfügbarkeits-Widget zeigt Datum im WordPress-Datumsformat und maximale Gästezahl
* Plattform-URL über Option/Filter `platzeo_api_base` konfigurierbar
* Fehlerbehebungen (Einstellungs-Link, Fehlermeldungen der API, Restaurant-Name in den Einstellungen)

= 1.0.0 =
* Erstveröffentlichung
* 4 Gutenberg-Blöcke: Buchungsformular, Buchungs-Button, Verfügbarkeit, Restaurant-Info
* 4 Shortcodes: [platzeo], [platzeo_button], [platzeo_availability], [platzeo_info]
* Dual-Authentifizierung: OAuth Login + API-Key
* Light/Dark/Auto Theme-Unterstützung
* Deutsch und Englisch

== Upgrade Notice ==

= 1.2.0 =
Das Buchungsformular wird jetzt standardmäßig als iFrame der platzeo Buchungsseite eingebettet. Wer das native Formular aus 1.1.0 behalten möchte, setzt `mode="native"` im Shortcode bzw. „Darstellung: Nativ" im Block.

= 1.1.0 =
Natives Buchungsformular, individuelle Formularfelder und sicherere OAuth-Verbindung. Bestehende Verbindungen bleiben erhalten.

= 1.0.0 =
Erstveröffentlichung des platzeo Reservations Plugins.
