=== G-Rev ===
Contributors:      herzigkev
Tags:              google reviews, bewertungen, elementor, shortcode, rating, stars
Requires at least: 5.8
Tested up to:      6.7
Requires PHP:      7.4
Stable tag:        1.0.5
License:           GPL-2.0-or-later
License URI:       https://www.gnu.org/licenses/gpl-2.0.html

Google-Bewertungen als schicke Widgets – 4 Rating-Stile, 4 Review-Stile, Elementor-Integration, Hintergrund-Sync oder manuelle Eingabe, DSGVO-konform.

== Description ==

**G-Rev** holt deine Google-Bewertungen über die Google Places API oder nimmt sie per manueller Eingabe ohne API-Schlüssel entgegen und zeigt sie als hochwertige Widgets auf deiner Website an.

**Profilfotos werden lokal zwischengespeichert** – kein einziger Request geht vom Browser deiner Besucher an Google. Das macht das Plugin vollständig DSGVO-konform: keine IP-Übermittlung, kein Tracking-Cookie, kein Consent-Banner nötig.

= Features =

* **4 Rating-Widget-Stile** – vertikale Karte, horizontales Badge, minimalistisch inline, breites Banner
* **4 Review-Widget-Stile** – moderner Slider, Mosaik-Raster, schlichte Liste, Testimonial-Karten mit G-Wasserzeichen
* **Elementor-Integration** – native Widgets mit vollständigen Style-Controls
* **Shortcodes** – `[[grev_rating]]` und `[[grev_reviews]]` mit optionalen Attributen
* **Hintergrund-Sync** per WP-Cron (täglich, zweimal pro Woche, wöchentlich oder monatlich) – dauerhaft in der Datenbank gespeichert
* **Manuelle Eingabe** – Bewertungen ohne Google-Konto und ohne API-Schlüssel selbst erfassen
* **Profilfotos lokal gecacht** – kein Browser-Request an Google
* **Globale CSS-Variablen** – Typografie, Farben und Rahmen zentral steuerbar
* **Fehlermeldungen auf Deutsch** – bei Verbindungsproblemen klare Hinweise zur Ursache
* **Elementor Style-Overrides** – globale Stile direkt im Widget überschreiben
* Vollständig deutschsprachige Backend-Oberfläche

= Shortcode-Referenz =

**Rating-Widget:**
`[[grev_rating style="1"]]` – Vertikale Karte (Standard)
`[[grev_rating style="2"]]` – Horizontales Badge
`[[grev_rating style="3"]]` – Minimalistisch inline
`[[grev_rating style="4"]]` – Breites Banner

**Review-Widget:**
`[[grev_reviews style="1"]]` – Moderner Slider
`[[grev_reviews style="2"]]` – Mosaik-Raster
`[[grev_reviews style="3"]]` – Schlichte Liste
`[[grev_reviews style="4"]]` – Testimonial-Karten

**Optionale Attribute (alle Widgets):**
* `place_id` – Überschreibt die gespeicherte Standort-ID
* `min_rating` – Mindest-Sternanzahl (1–5), z. B. `min_rating="4"`
* `autoplay` – Slider automatisch abspielen: `autoplay="true"` (nur Style 1)
* `autoplay_speed` – Intervall in ms, z. B. `autoplay_speed="5000"` (nur Style 1)

= DSGVO / Datenschutz =

Das Plugin ist nach vollständiger Einrichtung datenschutzkonform einsetzbar:

* Profilfotos werden beim ersten Abruf lokal in `wp-content/uploads/grev-photos/` gespeichert. Kein Browser-Request an Google für Bilder.
* Das Google-G-Logo ist als Inline-SVG eingebettet – kein externer Request.
* Google-Maps-Links sind reine `<a>`-Tags, die erst beim Klick des Nutzers aufgerufen werden.
* Der Server-seitige API-Abruf (WordPress ↔ Google Places API) überträgt keine Besucherdaten.

**Empfehlung:** Ein einfacher Hinweis in der Datenschutzerklärung genügt, z. B.:
> Bewertungen werden über die Google Places API (Google LLC) abgerufen und lokal zwischengespeichert. Es werden keine Besucherdaten an Google übermittelt.

= Voraussetzungen =

Nur für den API-Modus, die manuelle Eingabe braucht nichts davon:

1. Google Cloud Account mit aktivierter **Places API** (nicht Places API New)
2. **Abrechnung aktiviert** in der Google Cloud Console
3. API-Schlüssel ohne IP- oder Referrer-Beschränkung (Server-seitiger Aufruf)

== Installation ==

1. Plugin-Verzeichnis `grev` nach `wp-content/plugins/` hochladen
2. Plugin unter *Plugins → Installierte Plugins* aktivieren
3. Zu *G-Rev → API-Einstellungen* navigieren
4. API-Schlüssel und Standort-ID eintragen, *Verbindung testen*, *Speichern*
5. Widget oder Shortcode auf einer Seite einsetzen

== Frequently Asked Questions ==

= Wo finde ich meine Standort-ID? =

Über den [Place ID Finder](https://developers.google.com/maps/documentation/javascript/examples/places-placeid-finder) von Google.

= Was bedeutet "REQUEST_DENIED"? =

Mögliche Ursachen:
1. **Places API** ist im Google Cloud Projekt nicht aktiviert (Achtung: Places API New ≠ Places API)
2. **Abrechnung** ist im Google Cloud Projekt nicht aktiviert
3. Der API-Schlüssel hat **HTTP-Referrer- oder IP-Beschränkungen** – für Server-seitige Aufrufe müssen diese deaktiviert oder auf die Server-IP beschränkt sein

= Wo werden die Fotos gespeichert? =

In `wp-content/uploads/grev-photos/`. Das Verzeichnis wird automatisch angelegt und durch `.htaccess` und `index.php` geschützt.

= Wie oft wird die API aufgerufen? =

So oft, wie du es unter *G-Rev → API-Einstellungen* einstellst: täglich, zweimal pro Woche (empfohlen), wöchentlich oder monatlich. Besucher:innen bekommen immer die gespeicherten Daten. Bei manueller Eingabe wird die API gar nicht aufgerufen.

= Funktioniert das Plugin ohne Elementor? =

Ja. Shortcodes funktionieren vollständig ohne Elementor. Das Plugin prüft beim Laden, ob Elementor aktiv ist, und registriert Widgets nur wenn vorhanden.

== Screenshots ==

1. Admin-Bereich – API-Einstellungen mit Verbindungstest
2. Admin-Bereich – Design & Stil (Farben, Typografie, Rahmen)
3. Rating-Widget Stil 1 (Vertikale Karte) im Frontend
4. Rating-Widget Stil 4 (Breites Banner) im Frontend
5. Review-Widget Stil 1 (Slider) im Frontend
6. Review-Widget Stil 4 (Testimonial-Karten) im Frontend
7. Elementor-Widget-Controls

== Changelog ==

= 1.0.5 =
* Neu: Updates kommen direkt von herzigkev.in und erscheinen wie gewohnt im WordPress-Backend. Weder die Abfrage noch der Download nennen die Adresse deiner Website.
* Doku: Readme auf den aktuellen Stand gebracht (Hintergrund-Sync, manuelle Eingabe, Attribut `api_key` wird nicht mehr ausgewertet).
* Entfernt: Peak-Publisher-Update-Code. Er schickte bei jeder Update-Prüfung die Website-Adresse an einen Server, den es nicht mehr gibt.

= 1.0.4 =
* Fix: Widget-Klassen in `class-rating-widget.php` und `class-reviews-widget.php` in den korrekten Namespace `GRev\Elementor` verschoben (waren zuvor im globalen `Elementor`-Namespace), sodass die Auflösung aus dem `GRev`-Namespace in `grev.php` nun korrekt funktioniert und kein fataler „Class not found"-Fehler mehr auftritt.
* Geprüft: Alle weiteren Klassen- und Funktionsreferenzen vollständig qualifiziert (`\Elementor\Controls_Manager`, `\Elementor\Widget_Base` etc.). Keine weiteren Namespace- oder Kompatibilitätsprobleme gefunden.

= 1.0.3 =
* Fix: `class-reviews-widget.php` declared `namespace Elementor` instead of `namespace GRev\Elementor`, causing a fatal "Class not found" error whenever Elementor registered widgets. All `Controls_Manager`, `Widget_Base`, and `Group_Control_Box_Shadow` references are now fully qualified with the `\Elementor\` prefix to match the pattern used by the Rating Widget.

= 1.0.2 =
* Readme und kleine Admin-Page-Fixes
* Branding und Links in der Admin-Oberfläche hinzugefügt
* Farbschema auf Erdbraun-Grün umgestellt

= 1.0.0 =
* Erstveröffentlichung
* 4 Rating-Widget-Stile (vertikale Karte, Badge, Inline, Banner)
* 4 Review-Widget-Stile (Slider, Mosaik, Liste, Testimonial)
* Elementor-Widgets mit Style-Override-Controls
* Shortcodes `[[grev_rating]]` und `[[grev_reviews]]`
* 24h-Transient-Cache
* Lokaler Foto-Cache (DSGVO-konform, kein Browser→Google-Request)
* Deutschsprachige Admin-Oberfläche und Fehlermeldungen
* CSS-Variablen-System für globale Stilsteuerung
* Detaillierte API-Fehlermeldungen (REQUEST_DENIED etc.)

== Upgrade Notice ==

= 1.0.5 =
Neue Update-Quelle. Ab dieser Version kommen Updates direkt im WordPress-Backend an.

= 1.0.4 =
Kritischer Bugfix: Elementor-Widget-Klassen in korrekten Namespace verschoben – behebt fatalen Fehler beim Widget-Register.

= 1.0.3 =
Kritischer Bugfix: Reviews-Elementor-Widget-Klasse nicht auffindbar.

= 1.0.2 =
Branding-Update und Farbschema-Anpassung.

= 1.0.1 =
Fix Error. 

= 1.0.0 =
Erstveröffentlichung.
