=== TrustedTrainer ===
Contributors: manuelmlindemann
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Tested PHP up to: 8.4
Stable tag: 1.64.0
License: GPLv2 or later

Eigene Kundenbewertungen sammeln, freigeben und zusammen mit den Zahlen anderer Plattformen als Siegel, Liste oder Formular anzeigen.

== Geprüfte Umgebungen ==

PHP: 7.4, 8.0, 8.1, 8.2, 8.3 und 8.4. Jede dieser Versionen wird bei jeder
Änderung automatisch geprüft, nicht nur einmalig zum Erscheinen. Unterhalb
von PHP 7.4 startet das Plugin nicht und weist im Backend darauf hin, statt
mit einem weißen Bildschirm abzustürzen.

WordPress: ab 6.0, geprüft bis 6.8.

Den Stand deiner eigenen Installation zeigt das Plugin unter
"Bewertungen > Übersicht" ganz unten an.

== Installation ==

1. Backup der Datenbank anlegen.
2. Plugins > Installieren > Plugin hochladen > ZIP wählen.
3. Bei bestehender Installation: "Aktuelles durch hochgeladenes ersetzen".
4. Cache leeren (Caching-Plugin, ggf. Cloudflare).

Einstellungen und Bewertungen liegen in der Datenbank und bleiben bei Updates erhalten.

== Shortcodes ==

Anzeige:
[apc_reviews]                                   Siegel + Bewertungsliste
[apc_reviews layout="badge"]                    nur großes Siegel
[apc_reviews layout="list" limit="9" columns="3"]  nur Liste
[apc_reviews layout="seal"]                     kompaktes Siegel mit Rückseite
[apc_reviews layout="bar"]                      Balken am unteren Bildschirmrand

Bewertungsseite:
[apc_reviews_page]                              alle Bewertungen im Volltext
[apc_reviews_page group="KUERZEL"]              nur ein Angebot
[apc_reviews_page per_page="20"]                Bewertungen je Seite
[apc_reviews layout="seal" float="right"]       Siegel schwebend am Rand
[apc_reviews layout="seal" float="right" offset="120"]  mit eigener Höhe
[apc_reviews group="KUERZEL"]                   nur eine Gruppe (Kürzel aus den Einstellungen)
[apc_reviews min_rating="4"]                    nur ab Note 4,0

Formular:
[apc_review_form]                               Auswahl des Angebots im Formular
[apc_review_form group="KUERZEL"]              mit Vorauswahl, z. B. für QR-Code

Shortcodes in einen Shortcode- oder Absatz-Block setzen, nicht in einen Code-Block.

== Hinweise ==

Veröffentlicht wird nur die Anzeigeform, die der Bewertende wählt, nicht der Klarname dahinter.

Die E-Mail-Adresse ist freiwillig. Sie wird gespeichert, ist ausschließlich im Backend sichtbar und wird nie ausgegeben — weder im Siegel noch in der Bewertungsliste. Zweck ist allein die Rückfrage, etwa wenn jemand die Echtheit einer Bewertung bestreitet. Verlangt ein Kunde die Löschung, das Feld unter "Bewertungen" leeren und speichern: Die Adresse ist weg, die Bewertung bleibt. Der Zweck gehört in deine Datenschutzerklärung.

Die Quote "x % empfehlen weiter" zählt ausschließlich Bewertungen, bei denen die Frage beantwortet wurde. Von Hand übertragene Plattformbewertungen gehören im Backend auf "Nicht gefragt".

Formular-Bewertungen erscheinen erst nach Freigabe unter "Bewertungen > Freigabe".

Die Bewertungsseite zeigt die Bewertungen im Volltext, die in diesem Plugin liegen. Von anderen Plattformen sind nur Note und Anzahl bekannt, keine Texte - diese stehen deshalb als Übersicht am Fuß der Seite, mit Link zum Profil.

Der Name der eigenen Quelle steht in derselben Liste wie Google oder ProvenExpert. Diese Bewertungen liegen aber auf der eigenen Website und werden vom Betreiber freigegeben — sie stammen nicht von einer unabhängigen Plattform. Den Namen entsprechend wählen.

Plattformen mit Auto-URL werden zweimal täglich abgefragt. Gelesen werden nur Note und Anzahl aus schema.org-Auszeichnung, keine Bewertungstexte.

Gibt bereits ein SEO-Plugin ein AggregateRating für dieselbe Seite aus, die Auszeichnung hier abschalten. Zwei Angaben zum selben Objekt sind ein Fehler.

Google-Bewertungstexte werden nur kurz zwischengespeichert, nicht dauerhaft abgelegt.

== Changelog ==

= 1.64.0 =
Zehn Verbesserungen, gesammelt statt einzeln ausgeliefert.

**Übersicht**

* Die Notenkachel sagt jetzt, **woher ihre Zahl kommt**: aus wie vielen
  Quellen, wie viele davon direkt über das eigene Formular kamen und wie
  viele wirklich als einzelne Bewertung auf der Seite stehen. „Gesamtnote
  aus 670 Bewertungen“ allein ließ offen, dass der größte Teil gepflegte
  Gesamtzahlen fremder Plattformen sind — wer das nicht weiß, sucht 670
  Kacheln und findet elf.
* Der farbige Streifen an der Kachel ist grün statt magenta. Links ein
  farbiger Streifen ist im Backend die Sprache der Hinweiskästen, und
  Magenta liegt dort neben dem Rot der Fehlermeldung. Die Kachel meldet
  aber nichts, sie zeigt einen Stand.
* **Summenzeile unter der Quellentabelle** samt aufklappbarem Rechenweg:
  jede Quelle mit Note, Gewicht und Beitrag, darunter die Division. Wer die
  Spalte „Schnitt“ im Kopf mittelt, bekommt eine andere Zahl als die
  ausgewiesene Gesamtnote; ohne Rechenweg ist nicht zu erkennen, welche
  stimmt.
* Die **Umgebungstabelle** führt beide Plugins getrennt auf und weist aus,
  ob sie zusammenpassen — die Paarung ist das, was hier kaputtgehen kann.
* Ein neueres WordPress ist eine Warnung statt eines roten Fehlers. Es ist
  der Normalfall, und ein Daueralarm dafür sorgt nur dafür, dass der echte
  nicht mehr auffällt.

**Bewertungskriterien**

* Unter der Kriterienliste steht die **Anzahl**, ab neun eine Warnung. In
  einem mehrzeiligen Textfeld sieht man dreizehn Zeilen nicht als dreizehn
  — und dreizehn Schieberegler stehen zwischen dem Kunden und dem
  Absenden.
* Die Gruppentabelle nennt je Gruppe, **wie viele Kriterien sie wirklich
  stellt**, geerbte wie eigene.

**Import**

* Die Vorschau zeigt „3 von 7“ statt einer nackten „3“.
* Sie **benennt Spalten mit Einzelwerten, die verworfen würden**, nennt die
  zwei möglichen Gründe und sagt, dass ein zweiter Import derselben Datei
  sie nachträgt, ohne eine zweite Bewertung anzulegen.

**Sonstiges**

* `readme.txt` hieß noch „APC Reviews“ — das wäre der Name im Verzeichnis
  geworden, und der lässt sich später nicht mehr frei ändern.
* Geprüft bis WordPress 7.1.

= 1.63.0 =
* **In der Übersicht steht jetzt „Add-on (Pro)“ statt nur „Add-on“.** Dass
  das Add-on die Pro-Fassung ist, war aus der Zeile nicht zu erkennen —
  zwei Nummern nebeneinander, und nur die Überschrift verriet, um welches
  Produkt es überhaupt geht.
* Beide Plugin-Namen stehen jetzt an einer Stelle im Code, und ein Test
  vergleicht sie gegen die Plugin-Kopfzeilen. Damit heißt im Backend
  nichts anders als in der Pluginliste von WordPress.

= 1.62.1 =
* **Behoben: Der Abschnitt „Updates“ war unauffindbar.** Er wurde in 1.61.0
  gebaut, aber die Einstellungsseite rief ihn nie auf — der Abschnitt war
  vollständig vorhanden und für niemanden erreichbar.
* Zwei Prüfungen hatten das durchgelassen, weil beide am Ziel vorbeisahen:
  die eine rief den Abschnitt direkt auf statt über die Seite, die andere
  sah nur nach, ob er angemeldet ist. Geprüft wird jetzt die gerenderte
  Seite samt Sprungmarken — und zusätzlich, dass **jeder** Abschnitt des
  Add-ons von der Einstellungsseite auch aufgerufen wird.

= 1.62.0 =
* **Neu: Summenzeile unter der Quellentabelle.** Sie addiert Bewertungen und
  Volltexte, nennt die Gesamtnote und sagt, wie viele der Quellen überhaupt
  in sie eingehen.
* **Neu: „So kommt die Note zustande“** — ein aufklappbarer Rechenweg mit
  jeder Quelle, ihrer Note, ihrem Gewicht und ihrem Beitrag, darunter die
  Division, aus der die Gesamtnote entsteht.
* Der Grund dafür: Wer die Spalte „Schnitt“ im Kopf mittelt, bekommt eine
  ganz andere Zahl als die ausgewiesene Gesamtnote — bei gewichteter
  Rechnung liegen die beiden schnell ein Zehntel auseinander. Beide Zahlen
  sehen plausibel aus, und ohne Rechenweg ist nicht zu erkennen, welche
  stimmt.
* Die Summenzeile rechnet die Note **nicht** selbst nach, sondern zeigt die
  aus der Kachel darüber. Zwei Rechenwege für dieselbe Note würden eines
  Tages verschiedene Zahlen zeigen; ein Test prüft beide gegeneinander.
* Quellen unterhalb der Mindestanzahl werden im Rechenweg namentlich als
  ausgeschlossen aufgeführt statt stillschweigend weggelassen — sie stecken
  in der Summe, aber nicht in der Note, und dieser Unterschied gehört
  benannt.
* Weicht der ausgewiesene Rechenweg um mehr als eine Rundung von der Note
  ab, steht das als Warnung dort. Dann stimmt etwas nicht, und das soll
  auffallen statt geglättet zu werden.

= 1.61.0 =
* **Bewertungen, die hier direkt abgegeben wurden, sind jetzt als solche zu
  erkennen** — fett und in Gold, statt grau wie zuvor. Eine von einer anderen
  Plattform übernommene Bewertung bleibt ein Link auf die Plattform. Vorher
  sahen beide gleich unscheinbar aus, und die eigene wirkte dabei wie die
  schwächere Angabe, obwohl sie die belastbarere ist.
* An der Auszeichnung hängt eine Erklärung: Wer darauf zeigt, liest, warum
  diese Bewertung anders steht. Eine Hervorhebung ohne Begründung wäre eine
  Behauptung über Echtheit — und die gehört belegt.
* Von Hand im Backend eingetragene Bewertungen bekommen diese Auszeichnung
  ausdrücklich **nicht**. Sie hat der Anbieter selbst getippt; sie als
  „direkt abgegeben“ zu kennzeichnen wäre genau die Angabe, die § 5b Abs. 3
  UWG nicht zulässt.
* Das Gold für Schrift ist ein anderes als das Gold für Rahmen. Das helle
  Rahmengold kommt auf weißem Grund auf etwa 1,7:1 Kontrast und ist als Text
  praktisch unlesbar; das neue erfüllt WCAG AA. Ein Test rechnet das nach.

= 1.60.0 =
* **Neu: Filter nach Jahr auf der Bewertungsseite** (Add-on). Er erscheint
  erst ab vier Jahrgängen — darunter wäre er nur eine Reihe Knöpfe. Wer
  seit 2010 Bewertungen sammelt, kann das damit zeigen statt behaupten.
* Aufgeführt werden nur Jahre, aus denen es auch etwas gibt, und eine
  erfundene Jahreszahl in der Adresse wird ignoriert statt auf eine leere
  Seite zu führen.
* Festgehalten durch einen Prüfpunkt: **Importierte Bewertungen stehen
  nach ihrem echten Datum, nicht nach dem Zeitpunkt des Imports.** 94
  Bewertungen aus 2010 bis 2016, heute eingespielt, dürfen nicht als die
  neuesten oben stehen — nichts wäre schneller unglaubwürdig. Sortiert
  wird nach `review_date`; der Import heftet auch nichts nach oben.

= 1.59.1 =
* **Die Importvorschau sagt jetzt, womit sie gerechnet hat** — Quelle,
  Bereich, Skala, Schwelle für die Weiterempfehlung, Sichtbarkeit und
  Zahl der Kriterien stehen über den Zahlen.
* Vorher konnte oben im Feld „Weiterempfehlung ab 4“ stehen und unten in
  der Vorschau „nicht gefragt“ — weil der Knopf *Vorschau aktualisieren*
  dazwischen noch nicht gedrückt war. Beide Angaben stimmten für sich,
  zusammen waren sie unverständlich.
* Vor dem ersten Abschicken steht das jetzt ausdrücklich da, und der
  Hinweis am Knopf sagt, dass Änderungen erst nach dem Klick wirken.
* Der Knopf *Import starten* nennt daneben, was übernommen wird — samt
  Schwelle. Die letzte Zeile vor dem Klick beschreibt damit genau das,
  was passiert.
* Der Hinweis beim Feld *Link zur Bewertung* sagt jetzt, was passiert,
  wenn man es leer lässt: Die Bewertungskarte verlinkt von selbst die
  Profil-URL der Plattform. Einen Portalexport, der nur die Profilseite
  enthält, als „Link zur Originalbewertung“ einzutragen wäre falsch — er
  zeigt eben nicht auf die einzelne Bewertung.

= 1.59.0 =
* Die Übersicht nennt jetzt beide Versionsnummern: die des Plugins und die
  des Add-ons. Seit beide getrennt ausgeliefert werden, dürfen sie
  auseinanderlaufen — bei einer Rückfrage war damit nicht mehr auf einen
  Blick klar, welche Kombination läuft. Ohne Add-on steht dort
  „kein Add-on installiert“.

= 1.58.2 =
* **Behoben: Der CSV-Upload endete auf einer weißen Fehlerseite.** Die drei
  Handler, die den Upload entgegennehmen, waren nie geschrieben worden —
  das Menü verwies aber schon darauf. WordPress rief damit eine Methode
  auf, die es nicht gibt.
* Dagegen jetzt ein Prüfpunkt, der die ganze Fehlerklasse abdeckt: **Jeder
  angemeldete Haken muss auf eine Methode zeigen, die existiert.** Zweimal
  hintereinander ist derselbe Fehler passiert — erst beim Speichern mit
  Medien, dann beim Import —, und beide Male hätte kein Prüfpunkt ihn
  gefunden, weil keiner diese Haken auslöst.

= 1.58.1 =
* **Behoben: Importierte Bewertungen waren ohne das Add-on unsichtbar.**
  Wer Bewertungen aus einem Portal importiert, hat sie danach als echte
  Zeilen in der eigenen Tabelle — mit Text, Datum und Einzelnoten. Sie
  tragen aber den Kurznamen der Plattform als Quelle, und Plattformen
  gehörten seit 1.56.0 vollständig zum Add-on. Ohne Add-on lagen 94
  importierte Bewertungen also in der Datenbank und wurden nirgends
  gezählt. Der Import steht in der kostenlosen Fassung und lief damit
  ins Leere.
* Die Grenze verläuft jetzt dort, wo sie hingehört: **Eigene Zeilen in
  der eigenen Tabelle sind frei**, egal welchen Quellennamen sie tragen.
  Zum Add-on gehören die **gepflegten Zahlen** einer Plattform — also
  Bewertungen, die gar nicht hier liegen, sondern deren Summe nur
  behauptet wird — und ihr automatischer Abruf.

= 1.58.0 =
* **Neu: Bewertungen aus einer CSV-Datei übernehmen** — etwa den Export
  eines Portals, bei dem man nicht weiß, wie lange es die Seite noch gibt.
  Datei hochladen, Spalten zuordnen, Vorschau ansehen, übernehmen.
  In der **kostenlosen Fassung**, genau wie der CSV-Export: Wer seine
  Bewertungen nicht mitnehmen kann, probiert das Plugin gar nicht erst aus.
* Die Spalten werden von allein vorgeschlagen, auch über Sprachgrenzen
  hinweg — ein Kriterium „Praxisbezug“ findet die Spalte
  `rating_practice`. Falsch geraten fällt in der Vorschau auf.
* **Es wird nichts geschrieben, bevor nicht eine Vorschau da war.** Sie
  sagt, wie viele Zeilen neu angelegt und wie viele aktualisiert werden,
  wie viele übersprungen werden und warum — und zeigt die ersten drei
  Bewertungen so, wie sie ankommen würden.
* Ein zweiter Durchgang legt nichts doppelt an: Quelle und Kennung aus der
  Datei bilden einen eindeutigen Schlüssel. Nach einer Korrektur an der
  Zuordnung spielt man die Datei einfach noch einmal ein.
* Zeilen ohne lesbares Datum oder ohne Note werden übersprungen, nicht
  geraten. Ein fehlendes Datum durch „heute“ zu ersetzen machte aus einer
  Bewertung von 2012 eine von heute — das fällt niemandem auf und ist
  nicht mehr zu reparieren.
* Steht in der Datei ein Nachweis (etwa „Code-Übereinstimmung und
  E-Mail-Adresse“), gilt die Bewertung als bestätigte Kundenbewertung und
  der Nachweis wird als Grundlage festgehalten. Ohne Nachweisspalte
  entsteht keine Bestätigung.
* **Behoben: Das Speichern einer Bewertung mit Video oder Foto im Backend
  stürzte ab.** Beim Heraustrennen der Pro-Handler in 1.54.0 ist eine
  Hilfsmethode mitgegangen, die noch aufgerufen wurde. Keiner der über
  300 Prüfpunkte merkte es, weil keiner das Speichern wirklich ausführte —
  sie prüften den Quelltext, nicht den Ablauf. Jetzt tut es einer.

= 1.57.2 =
* **Behoben: Die Aufstellung „Was auf der Bewertungsseite erscheint" zeigte
  eine falsche Zahl.** Sie rechnete immer so, als würden Bewertungen ohne
  Text ausgeblendet — das gilt aber nur, wenn „Nur Bewertungen mit Text
  zeigen" angehakt ist, und das ist es standardmäßig nicht. Auf einer Seite,
  die alle zeigt, stand dort eine rote Warnung über Bewertungen, die in
  Wirklichkeit dastanden. Eine falsche Zahl im Backend ist schlimmer als
  gar keine: Man sucht dann nach einem Fehler, den es nicht gibt.
* Die Erklärung darunter passt sich jetzt ebenfalls an — sie beschrieb
  vorher immer nur den einen Fall.
* Die schlichte Bewertungsseite der kostenlosen Fassung beachtet dieselbe
  Einstellung wie die Portalseite des Add-ons. Der gespeicherte Wunsch
  soll sich nicht ändern, nur weil das Add-on gerade nicht läuft.

= 1.57.0 =
* **Die Bewertungsseite läuft jetzt auch ohne Add-on** — schlicht: alle
  veröffentlichten Bewertungen untereinander, neueste zuerst, mit
  Seitenwechsel. Profilkopf, Filter, Teilen-Knöpfe und der Google-Block
  bleiben dem Add-on vorbehalten. Ein Plugin, das Bewertungen einsammelt
  und dann keine Seite hat, sie zu zeigen, wäre schwer zu verteidigen.
* **Menü und Überschrift sagen, welche Fassung läuft:** „Bewertungen Free"
  oder „Bewertungen Pro". Mit gültigem Schlüssel steht auf der Übersicht
  ein grüner Kasten „Du benutzt Pro" samt Datum, bis wann es Updates gibt.
  Ist das Add-on installiert, aber nicht freigeschaltet, steht das genauso
  da — zwei Lagen, die vorher beide gleich aussahen.
* **Behoben: die schmale leere Blase über dem Bewertungsformular.** Die
  versteckten Felder standen lose im Formular; ein `<input>` ist für HTML
  inline, und wenn irgendwo `wpautop` über das fertige Formular läuft —
  ein Theme, ein Seitenbauer —, macht es daraus einen Absatz. Der ist
  leer, trägt aber die Absatz-Gestaltung des Themes. Die Felder stehen
  jetzt in einem eigenen Block, und das Stylesheet neutralisiert jeden
  klassenlosen Absatz in unseren Bereichen. Ein Test hält fest, dass wir
  selbst keinen einzigen ausgeben — sonst träfe die Regel etwas Eigenes.

= 1.56.0 =
* **Die Zahlen anderer Portale gehören jetzt ganz zum Add-on** — nicht mehr
  nur das automatische Abholen, sondern auch das Eintragen von Hand und das
  Einrechnen in die Gesamtnote. Das ist genau die Leistung, für die
  Bewertungsportale dreistellige Monatsbeträge nehmen.
* Das kostenlose Plugin sammelt und zeigt die **eigenen** Bewertungen —
  unbegrenzt, ohne Schlüssel und ohne Zeitlimit.
* Entschieden wird das an einer einzigen Stelle: bei der Registrierung der
  Quellen. Was dort nicht ankommt, taucht nirgends auf — nicht in der
  Gesamtnote, nicht in der Aufstellung, nicht im Siegel. Die Gewichtung und
  das Zusammenrechnen selbst brauchen keine eigene Abfrage und bleiben
  unberührt.
* **Gepflegte Plattform-Zahlen gehen nicht verloren.** Sie bleiben in der
  Datenbank stehen, werden beim Speichern nicht angefasst und sind
  vollständig wieder da, sobald das Add-on zurückkommt. Wer zehn Portale
  eingetragen hat, tippt sie nicht noch einmal ab.

= 1.55.1 =
* **Ohne Add-on ist nirgends mehr von einem Schlüssel die Rede.** Der
  Schlüssel schaltet das Add-on frei — ohne Add-on ist er wertlos, und es
  gibt auch kein Feld, in das man ihn eintragen könnte. Trotzdem stand auf
  der Übersicht „Schlüssel eintragen", mit einem Link auf einen Abschnitt,
  den es dort gar nicht gibt. Jetzt steht dort, dass die Funktionen zu
  TrustedTrainer Pro gehören, und der Knopf führt zum Add-on.
* Dasselbe in der Funktionsliste: Pro-Zeilen verlinkten Sprungmarken wie
  `#apc-siegel`, die ohne Add-on ins Leere führen. Sie zeigen jetzt auf
  das Add-on. Der Eintrag „Freischaltung" verschwindet ganz — ohne Add-on
  ist er keine Funktion, sondern ein Hinweis auf ein fremdes Produkt.
* **Das Feld „Auto-URL" bei den Plattformen ist ohne Add-on verschwunden.**
  Es holte nichts ab, sah aber aus, als täte es etwas — man trug eine
  Adresse ein und wartete auf Zahlen, die nie kommen. Der gespeicherte
  Wert bleibt erhalten und kommt mit dem Add-on zurück.
* Unverändert frei und ausdrücklich so gemeint: **Zahlen von anderen
  Plattformen von Hand eintragen und zu einer Gesamtnote zusammenrechnen.**
  Das ist der Kern des Plugins. Nur das automatische Abholen gehört zum
  Add-on.

= 1.55.0 =
* **Die Funktionsseite sagt jetzt, was zu Pro gehört.** Bisher kannte sie
  das Add-on gar nicht und meldete zum Beispiel beim Siegel „nicht
  seitenweit — per Shortcode einzeln". Ohne Add-on ist das falsch: Der
  Shortcode gibt dort nichts aus. Ausgerechnet die Seite, die jemand
  aufschlägt, um zu sehen, was das Werkzeug kann, hätte ihn in die Irre
  geschickt.
* Vierzehn Zeilen tragen jetzt die Markierung „gehört zu TrustedTrainer
  Pro", zwanzig bleiben frei. Ist das Add-on installiert, aber ohne
  gültigen Schlüssel, steht dort „Schlüssel eintragen" statt derselben
  Meldung — zwei sehr verschiedene Lagen.
* Der vollständige JSON-Export fehlte in der Liste ganz und ist ergänzt.
* Vier neue Prüfungen: Jede Pro-Fähigkeit muss in der Liste auftauchen,
  ohne Schlüssel darf keine Pro-Zeile als verfügbar gelten, mit Schlüssel
  keine mehr als Pro — und die Markierung braucht eine Regel im
  Stylesheet, sonst sieht sie aus wie gar nichts.

= 1.54.2 =
* **Behoben: Auf „Bewertung erfassen" standen die Kriterien aller Angebote
  untereinander** — viermal dieselben Sternefelder. Die neue Seite war
  nicht in der Liste der Seiten eingetragen, die das Admin-Stylesheet
  bekommen; ohne dieses steht die Regel nicht da, die alle nicht gewählten
  Gruppen ausblendet.
* Aus demselben Grund fehlte dort die Mediathek: Die Knöpfe „Aus Mediathek
  wählen" blendeten sich selbst aus, weil sie ohne sie nichts tun können.
* Zwei neue Prüfungen dagegen: Jede Unterseite im Menü muss Stylesheet und
  Script bekommen, und die Ausblendregel muss im Stylesheet stehen. Eine
  neue Seite ohne diesen Eintrag ist eine kaputte Seite, die aussieht,
  als wäre sie fertig.

= 1.54.1 =
* **Behoben: Der Shortcode `[apc_reviews_page]` stand als nackter Text auf
  der Seite**, wenn das Add-on fehlte. WordPress gibt einen Shortcode, den
  niemand angemeldet hat, wörtlich aus — auf der Bewertungsseite hätte für
  jeden Besucher lesbar „[apc_reviews_page]" gestanden. Der Shortcode wird
  jetzt immer vom Free-Plugin angemeldet; ohne Add-on bleibt er für
  Besucher stumm, und wer die Seite verwalten darf, liest eine Zeile
  dazu.
* Behoben: Der Updater des Add-ons meldete sich mit dem Bezeichner des
  Free-Plugins an.
* Die Versionsnummern von Free und Add-on dürfen jetzt auseinanderlaufen.
  Ein Bugfix im Free-Plugin erzwingt keine neue Fassung des Add-ons mehr.
  Das Add-on nennt nur noch, ab welcher Fassung es das Free-Plugin
  braucht.
* Wer nur das Add-on installiert hat, bekommt im Backend einen Knopf zum
  Installieren des Free-Plugins statt bloß einen Hinweis.

= 1.54.0 =
* **Aufgeteilt in zwei Plugins.** TrustedTrainer bleibt kostenlos und
  unbegrenzt; was daraus ein Marketing-Werkzeug macht, liegt jetzt im
  Add-on *TrustedTrainer Pro*. Beide werden nebeneinander installiert und
  sind gleichzeitig aktiv — Pro ersetzt das Free-Plugin nicht.
* Im Free-Plugin: Bewertungen sammeln, Formular, Einladungen, Moderation
  und Kundenbestätigung, Bewertungsliste, CSV-Export. Ohne Begrenzung.
* Im Add-on: Siegel und Balken, Profilseite, Google- und Plattform-Abruf,
  Video-Bewertungen, Schema.org-Auszeichnung, JSON-Export.
* Fehlt das Add-on, geben die betroffenen Shortcodes **nichts** aus statt
  eines halben Kastens, und im Backend steht ein Satz statt eines
  ausgegrauten Knopfes.
* **Wichtig:** Die Einstellungen des Add-ons werden beim Speichern nicht
  mehr angefasst, solange das Add-on fehlt. Sonst hätte ein einziger
  Klick auf „Speichern" die komplette Einrichtung von Siegel, Profilseite
  und Auszeichnung gelöscht — derselbe Fehler wie damals bei den
  Teilen-Knöpfen, nur vierzehnfach.
* Das Stylesheet bleibt vollständig im Free-Plugin. Das Add-on bringt
  keine eigene Kopie mit, damit Siegel und Liste nicht auseinanderlaufen.
* Der Google-Abruf gehört jetzt zum Add-on und wird von ihm geplant und
  abgeräumt. Das Free-Plugin plant keinen Cron-Lauf mehr, den es nicht
  ausführen kann.

= 1.53.1 =
* Vorbereitung auf das Pro-Add-on: Ein zweites Plugin namens
  „TrustedTrainer Pro" ist kein zweites Exemplar dieser App, sondern ihr
  Gegenstück — und darf deshalb keine Doppelt-Warnung auslösen. Das tut es
  nicht, und ein Test mit Gegenprobe hält es fest.

= 1.53.0 =
* **Die Zehnergrenze ist weg.** Sie sperrte die Bewertungen des Betreibers
  ein — also seine eigenen Daten — und bestrafte ausgerechnet die, die das
  Werkzeug erfolgreich nutzen. Sammeln, Anzeigen und Berechnen ist ab
  sofort frei und unbegrenzt, mit und ohne Schlüssel.
* Stattdessen trennt eine Funktionsgrenze. Zu Pro gehören: Siegel und
  Bewertungsbalken, die Profilseite, der Google- und Plattform-Abruf,
  Video-Bewertungen, die Schema.org-Auszeichnung und der JSON-Export.
  Alles andere ist frei.
* Ohne Pro gibt eine gesperrte Funktion im Frontend **nichts** aus statt
  eines halben Kastens, und im Backend steht ein Satz mit Link statt eines
  ausgegrauten Knopfes.
* Menü aufgeräumt: „Zahlen" heißt jetzt „Statistik", „Einladungen" heißt
  „Bewertungseinladung".
* Neu: eigene Seite **„Bewertung erfassen"**. Das Formular stand bisher
  über der Liste — wer nur nachsehen wollte, wie eine Bewertung lautet,
  scrollte jedes Mal daran vorbei. Beim Bearbeiten einer vorhandenen
  Bewertung bleibt es bei der Liste, wo es hingehört.
* Der CSV-Export bleibt ausdrücklich frei. Niemand soll seine eigenen
  Bewertungen nur gegen Geld wieder herausbekommen.

= 1.52.1 =
* Behoben: Beide Fassungen benutzen dieselben Cron-Namen. Wer die neue
  zuerst aktiviert und die alte danach deaktiviert, liess deren
  Deaktivierung genau die Einträge abräumen, die die neue gerade braucht —
  und ein Aktivierungs-Hook läuft danach nie wieder. Abruf und Aufräumen
  hätten stillgestanden, ohne dass es jemandem auffällt.
* Die Cron-Einträge werden jetzt bei jedem Aufruf nachgezogen statt nur
  beim Aktivieren. Damit ist die Reihenfolge beim Umstieg egal.

= 1.52.0 =
* **Die Bewertungen überleben das Löschen der alten Fassung.** Beide Ordner
  — „apc-reviews" und „trustedtrainer" — arbeiten auf denselben Tabellen.
  Löscht man den alten Ordner, läuft dessen `uninstall.php`, und die kennt
  die neue Fassung nicht: Stand „Beim Löschen des Plugins alle Daten
  entfernen" auf an, hätte sie vier Tabellen abgeräumt, die die laufende
  Installation noch braucht.
* Solange eine zweite Kopie im Plugin-Verzeichnis liegt, wird dieser Haken
  jetzt geparkt — die alte `uninstall.php` liest dieselbe Option, findet 0
  und lässt die Tabellen stehen. Verschwindet der zweite Ordner, kommt der
  Haken zurück.
* Erkannt wird an der Hauptdatei, nicht am Ordnernamen. Ein entpacktes ZIP
  in einem umbenannten Ordner fällt also nicht durch.
* Ein Hinweis im Backend nennt den zweiten Ordner und sagt, was zu tun ist.
  Er erscheint auch, wenn die alte Fassung nur deaktiviert ist: Abgeschalteter
  Code läuft nicht und kann sich nicht selbst melden — der Ordner ist aber da.
* Auch andersherum abgesichert: Wird TrustedTrainer gelöscht, während eine
  zweite Kopie noch arbeitet, bleiben die Tabellen stehen. Der Löschwunsch
  galt dem Plugin, nicht den Bewertungen einer laufenden Installation.
* Nichts davon überträgt Daten, und nichts davon muss es: Es gibt nur einen
  Datenbestand, beide Ordner sehen ihn.

= 1.51.1 =
* Behoben: Sind nach der Umbenennung beide Ordner installiert — das alte
  „apc-reviews“ und das neue „trustedtrainer“ — und werden beide aktiviert,
  gab es einen Fatal Error: Jede Klasse wäre ein zweites Mal deklariert
  worden, das Backend bliebe weiß und ohne FTP-Zugang unerreichbar.
* Jetzt steigt die zweite Kopie aus, bevor sie irgendetwas lädt, und meldet
  im Backend, welche Fassung läuft und welche zu deaktivieren ist.
* **Reihenfolge beim Umstieg:** erst die alte Fassung deaktivieren, dann
  TrustedTrainer aktivieren, dann die alte löschen. Vor dem Löschen prüfen,
  dass in den Einstellungen der alten Fassung „Beim Löschen des Plugins alle
  Daten entfernen“ nicht angehakt ist — sonst nimmt sie die Bewertungen mit.
  Die Tabellen sind dieselben, die Bewertungen sind nach dem Umstieg
  unverändert da; nur der Schlüssel ist neu einzugeben.

= 1.51.0 =
* Neu: **Alle Bewertungen als JSON herunterladen.** Der CSV-Export daneben
  ist für Excel gemacht und verliert dabei, was sich nicht in eine Zelle
  pressen lässt — die Einzelbewertungen je Kriterium, Videos und Fotos,
  die gewählte Anzeigeform. Die JSON-Datei enthält alles, auch
  Unveröffentlichtes.
* Das ist die Antwort auf die Frage, was passiert, wenn jemand dieses
  Plugin nicht mehr will: Seine Bewertungen gehen vollständig mit, ohne
  Abtippen. Ein Werkzeug, das mit Datenhoheit wirbt, muss den Weg nach
  draußen genauso ernst nehmen wie den Weg hinein.

= 1.50.0 =
* Neu: Knopf „Schlüssel anfragen“. Er schickt Domain, Kontaktadresse und
  die Zahl der Bewertungen an den Herausgeber; der Schlüssel kommt per
  E-Mail zurück.
* Die eigene Domain steht daneben — ein Schlüssel gilt nur für genau
  diese Adresse. Die Mail geht vom Server des Kunden aus und kann im Spam
  landen; dann genügt es, die Domain auf anderem Weg mitzuteilen.
* Eine zweite Anfrage ist erst nach zwölf Stunden möglich. Ohne Bremse
  wird aus dem Knopf einer, den jemand zwanzigmal drückt, weil nichts
  sichtbar passiert.

= 1.49.0 =
* **Das Plugin heißt jetzt TrustedTrainer**, Autor Manuel M. Lindemann.
  Der Ordner heißt `trustedtrainer` statt `apc-reviews` — WordPress sieht
  darin ein anderes Plugin. **Beim Umstieg das alte deaktivieren und
  löschen, dann das neue installieren.** Bewertungen, Einstellungen und
  Protokoll bleiben dabei erhalten: Sie hängen an der Datenbank, nicht am
  Ordner, und gelöscht wird nur, wenn das ausdrücklich angehakt ist.
* **Neu: Updates aus eigener Quelle.** Gibt es eine neuere Version,
  meldet WordPress sie wie bei jedem anderen Plugin. Ohne Schlüssel wird
  gar nicht erst gefragt — wer kostenlos nutzt, löst keine Anfrage an
  einen fremden Server aus.
* Fällt der Update-Server aus, passiert nichts: kein Fehler, keine
  Verzögerung im Backend, nur eben kein Update.
* Der eingetragene Schlüssel bleibt sichtbar, schreibgeschützt und mit
  dem Datum, bis wann es Updates gibt. Zum Wechseln gibt es einen Knopf.
  Ihn nach der Eingabe zu verbergen wäre bequem zu bauen und im Betrieb
  ärgerlich.
* Ein Schlüssel, der hier nicht gilt, sagt jetzt warum — statt ein Feld
  mit Inhalt zu zeigen und trotzdem nur zehn Bewertungen.

= 1.48.0 =
* **Die Freischaltung lässt sich jetzt auch öffnen.** In 1.47.0 gab es die
  Schranke, aber keinen Weg dahinter: Ein eingetragener Schlüssel wurde
  nirgends geprüft, und niemand konnte freischalten.
* Ein Schlüssel ist eine unterschriebene Angabe, kein Passwort. Er trägt
  die Domain in sich und wird auf dem eigenen Server nachgerechnet — ohne
  Anfrage nach außen. Damit hängt keine Kundenwebsite an der
  Erreichbarkeit eines fremden Servers, und es werden keine Daten
  übertragen, die man erklären müsste.
* Ein Schlüssel gilt nur für seine Domain; ob mit oder ohne www ist egal.
* Testumgebungen (.test, .local, localhost, staging., dev.) sind ohne
  Schlüssel frei — wer auf einer Kopie ausprobiert, soll dafür keine
  Anfrage schreiben müssen.
* Das Datum im Schlüssel begrenzt die Updates, nicht die Freischaltung.
  Eine Website, die nach einem Jahr plötzlich Bewertungen versteckt, wäre
  ein Schaden beim Kunden.

= 1.47.0 =
* **Neu: Freischaltung.** Ohne Schlüssel zeigt die Website die zehn
  neuesten Bewertungen. Erfassen, freigeben, verwalten und Einladungen
  bleiben unbegrenzt.
* Die Gesamtnote wird immer aus **allen** Bewertungen gerechnet. Eine Note
  aus zehn statt siebzehn wäre schlicht falsch, und mit falschen Zahlen zu
  werben ist irreführend — unabhängig davon, ob jemand bezahlt hat.
* Die Grenze lässt sich nicht durch Filtern umgehen: Freigegeben ist eine
  feste Auswahl, nicht die jeweils ersten zehn einer gefilterten Liste.
* **Neu: uninstall.php.** Beim Löschen des Plugins werden Tabellen,
  Optionen und Zwischenspeicher entfernt — aber nur, wenn das vorher in
  den Einstellungen angehakt wurde. Vorgabe ist aus: Hier stecken Jahre an
  Kundenbewertungen, die kein Fehlklick kosten darf.
* **Fehler behoben:** Beim Deaktivieren blieb der Cron-Eintrag für die
  Statistik stehen und lief weiter, obwohl das Plugin aus war. Die Liste
  der Cron-Einträge steht jetzt an einer Stelle, und ein Test gleicht
  Einplanen, Deaktivieren und Deinstallieren gegeneinander ab.

= 1.46.2 =
* Die Hervorhebung des letzten Punktes fehlte in der Kachel im Kopf der
  Bewertungsseite — dort steht dieselbe Aufstellung ein zweites Mal, und
  angepasst war nur die Liste an den Bewertungen. Beide folgen jetzt
  derselben Regel, die nur noch an einer Stelle im Code steht.

= 1.46.1 =
* Der hervorgehobene letzte Punkt greift nicht mehr in die Aufteilung
  ein. In 1.46.0 lief er über die volle Breite und verschob damit, wo die
  übrigen Punkte stehen — gewünscht war nur ein Rahmen, kein neues
  Layout. Er steht jetzt dort, wo er ohnehin stünde, und ist nur
  deutlicher.

= 1.46.0 =
* Der letzte Punkt der Einzelbewertungen steht jetzt abgesetzt: über die
  volle Breite, kräftiger gesetzt und mit goldenem Rahmen. Welcher das
  ist, entscheiden die eingestellten Kriterien — geprüft wird die
  Position, nicht der Name.
* Am Ende der Zeile steht ein lachendes Gesicht, aber nur ab einer Note
  von 4,00. Neben einer Zwei wäre es Hohn und würde behaupten, was die
  Bewertung nicht sagt. Abgesetzt bleibt die Zeile in jedem Fall.
* **Fehler behoben: Die Marken-Logos im Teilen-Fenster waren schwarz.**
  SVG erbt seine Füllfarbe nicht von der Schriftfarbe, der Vorgabewert
  ist Schwarz — auf der schwarzen X-Kachel war das Logo damit gar nicht
  zu sehen. Die Symbole folgen jetzt der Farbe ihres Kastens.

= 1.45.0 =
* **Keine fremden Namen mehr in den Vorgaben.** Bis 1.44 standen ein
  konkreter Name und eine konkrete Bezeichnung als Standardwert in den
  Einstellungen — jede Neuinstallation zeigte sie im Siegel, bis jemand
  es bemerkte. Die Vorgaben sind jetzt leer.
* Bestehende Installationen behalten ihre Anzeige: Die alten Vorgaben
  werden einmalig als eigene Werte übernommen. Wer ein Feld bewusst
  geleert hat, behält es leer.
* Ist ein Feld leer, steht dort ein kursiver, gestrichelt unterstrichener
  Platzhalter mit Erklärung und Link zur Einstellung. Er verschwindet,
  sobald etwas eingetragen ist.
* **Diesen Platzhalter sieht nur, wer das Plugin einstellen darf.** Für
  Besucher entfällt die Zeile ersatzlos: „Bitte Namen eintragen“ auf der
  Website eines Kunden wäre peinlicher als eine Zeile, die fehlt.
* Damit es auch ohne Blick auf die Website auffällt, meldet die Übersicht
  im Backend, welche Pflichtfelder noch leer sind.

= 1.44.1 =
* Der Ausklapper im Profilkopf heißt jetzt „Mehr erfahren“ statt „Mehr
  über <Name>“. Das Plugin läuft auch bei anderen Trainern; Aufschriften
  gehören neutral, solange sie nicht aus einer Einstellung kommen.
* Die Vorstellung zeigt nur noch den ersten Absatz offen statt zwei. Wer
  auf dieser Seite landet, will Bewertungen sehen — die Vorstellung ist
  Beiwerk und darf sie nicht aus dem Bild drücken.

= 1.44.0 =
* **Tooltips ließen sich auf dem Handy kaum schließen.** Auf einem
  Touchscreen bleibt hover nach dem Antippen hängen — es gibt keinen
  Zeiger, den man wegbewegen könnte — und ein Tippen setzt zusätzlich den
  Fokus. Beides zusammen hielt die Leiste am unteren Rand fest.
  Jetzt schließt sie durch ein Tippen auf das Symbol, auf die Leiste
  selbst, irgendwo daneben, mit Escape oder durch Weiterscrollen. Ein
  Hinweis in der Leiste sagt das auch.
* Lange Erklärungen wachsen nicht mehr über den oberen Bildschirmrand
  hinaus; die Leiste ist auf 45 % der Höhe begrenzt und scrollt.
* **Die leeren Blasen über und unter dem Bewertungsformular sind weg.**
  Ursache war kein leerer Absatz im Quelltext, sondern eine Hülle:
  wpautop läuft vor do_shortcode und macht aus dem Kürzel erst
  `<p>[apc_review_form]</p>`, woraus nach dem Einsetzen
  `<p><form>…</form></p>` wird. Ein Formular darf nicht in einem Absatz
  stehen, also schließt der Browser den Absatz davor und öffnet danach
  einen neuen — aus einer Hülle werden zwei leere Blasen. Die Hülle wird
  jetzt entfernt, bevor der Browser sie auseinandernimmt.

= 1.43.0 =
* Das schwebende Siegel am Bildschirmrand ist 15 % kleiner: 187 statt
  220 Pixel breit. Es fällt weiterhin auf, drängt sich aber weniger vor
  den Inhalt.
* Verkleinert wird mit zoom statt transform. transform rastert das
  Element als Ebene — die Schrift würde weich — und macht es zum
  Bezugspunkt für alles darin, was position: fixed benutzt.
* Der eingestellte Abstand zum Rand bleibt exakt der eingestellte: zoom
  skaliert auch Abstände mit, deshalb werden die Positionsangaben durch
  denselben Faktor geteilt. Aus 20 Pixeln wären sonst 17 geworden.

= 1.42.1 =
* **Fehler behoben: Der Profilkopf war nach 1.42.0 zerschossen.** Beim
  Umbau des Teilen-Fensters wurde ein Bereich des Stylesheets von einer
  Marke bis zur nächsten ersetzt — dazwischen lagen noch vier weitere
  Abschnitte. Die Erklärungen hinter dem „i“, die Vertrauenshinweise und
  die Kennzeichnung übertragener Texte verloren ihre Gestaltung, und
  Text, der im Tooltip stecken sollte, stand als Fließtext in der
  Seitenleiste.
* Der Hinweis für Besucher mit Einladungslink hatte seit 1.41.0 gar keine
  Gestaltung — niemandem aufgefallen, weil nichts danach sah.
* Zwei neue Prüfungen: Die Abschnitte des Stylesheets müssen vorhanden
  sein, und jede Klasse aus dem Markup braucht eine Regel. Beide fangen
  genau diesen Fehler.

= 1.42.0 =
* Das Teilen-Fenster ist neu gebaut: echte Logos in den Farben der
  Netzwerke statt beschrifteter Kästchen, ein Schließen-Knopf und ein
  deutlich sichtbares Kopierfeld.
* Es schwebt jetzt über der Seite, statt die Liste auseinanderzuschieben.
  Vorher rutschte beim Öffnen alles darunter nach unten, und bei der
  letzten Bewertung einer Seite klappte es ins Nichts. Escape schließt,
  ein Klick daneben auch, und die Seite dahinter bleibt stehen.
* Auf dem Handy fährt es von unten herein und liegt damit in Daumennähe;
  die Kacheln wachsen mit der Bildschirmbreite, statt bei 360 Pixeln in
  eine zweite Zeile umzubrechen.
* Der Knopf „Bewertung teilen“ stand nicht auf einer Linie mit Name,
  Datum und Quelle — Flexbox streckte ihn auf die volle Zeilenhöhe.
* Die Logos stecken als SVG in der Seite. Eine Icon-Schrift wäre ein
  zusätzlicher Download, der das Layout beim Nachladen springen lässt,
  und Bilddateien von einem fremden Server melden jeden Besucher dorthin.

= 1.41.0 =
* **Neu: Einladungen mit persönlichem Link.** Der Link geht an eine Adresse
  aus der Buchung oder der Rechnung. Wer darüber bewertet, ist damit als
  Kunde ausgewiesen — die Bestätigung entsteht von selbst, samt Beleg,
  ohne dass jemand einen Haken setzt. Das ist der Unterschied zwischen
  „ich sage, es sind Kunden“ und „es lässt sich zeigen“, und genau danach
  fragt § 5b Abs. 3 UWG.
* In der Datenbank steht nur die Prüfsumme des Tokens, nie der Token
  selbst. Läge er im Klartext dort, könnte jeder, der einmal hineinsieht,
  im Namen fremder Kunden bewerten — und diese Bewertungen trügen dann
  „Kunde bestätigt“. Der Klartext wird nach dem Erzeugen einmal angezeigt.
* Ein untergeschobenes Formularfeld nützt nichts: Beim Absenden wird der
  Token erneut gegen die Datenbank geprüft.
* Eine Einladung gilt einmal und läuft ab (Vorgabe 60 Tage, einstellbar).
* Ohne eingetragene Formularseite lassen sich keine Einladungen erzeugen —
  sie würden auf die Startseite zeigen und der Token wäre verbraucht,
  bevor jemand bewerten konnte.
* Neu: Sichtbarkeit direkt in der Bewertungsliste umlegen, in derselben
  Zeile wie die Kundenbestätigung. Der Zwischenspeicher wird dabei geleert,
  sonst zeigte das Siegel weiter die alte Zahl.

= 1.40.0 =
* **Fehler behoben: „Bewertung teilen“ verschwand beim Speichern.** Der
  Schalter dafür stand im Speichern-Handler, aber nirgends im Formular.
  Der Browser sendet nichts für ein Feld, das es nicht gibt — also wurde
  bei jedem Klick auf „Einstellungen speichern“ eine 0 geschrieben und die
  Teilen-Knöpfe verschwanden, ohne dass jemand sie abgeschaltet hätte, und
  ohne eine Stelle, sie zurückzuholen. Das Kästchen steht jetzt unter
  Einstellungen → Bewertungsseite → Teilen. Betroffene Installationen
  werden beim Update einmalig repariert; wer danach abschaltet, bleibt
  abgeschaltet.
* Neu: Kundenbestätigung direkt in der Bewertungsliste. Haken und Beleg je
  Zeile setzen und alles mit einem Knopf speichern, statt jede Bewertung
  einzeln zu öffnen. Gespeichert wird nur, was auf der Seite steht — andere
  Seiten der Liste bleiben unangetastet.
* Ein Haken ohne Beleg wird in der Liste als „ohne Beleg“ markiert und nach
  dem Speichern gezählt. Die Zusage, dass hinter jeder Bewertung ein echter
  Kunde steht, ist eine Tatsachenbehauptung nach § 5b UWG — ohne Beleg ist
  sie im Streitfall nichts wert.
* Ein Test verhindert den Fehler von oben künftig für jeden Schalter: Steht
  einer im Speichern-Handler, ohne ein Kästchen im Formular zu haben,
  schlägt der Testlauf fehl.

= 1.39.0 =
* Neu: die Seite „Funktionen“. Sie listet jede Funktion des Plugins mit
  einem Satz dazu, dem aktuellen Zustand und einem Link direkt auf die
  Einstellung, die sie schaltet.
* Die Zustandsanzeige ist ehrlich statt beruhigend: Google mit Schalter,
  aber ohne API-Schlüssel meldet „eingeschaltet, aber unvollständig“;
  Siegel und Balken ohne seitenweite Anzeige melden „per Shortcode
  einzeln“ statt „ausgeschaltet“; ein Schalter, dessen Voraussetzung fehlt,
  sagt welche.
* Die Abschnitte der Einstellungen haben feste Sprungmarken bekommen, damit
  Links von außen nicht beim nächsten eingeschobenen Abschnitt daneben
  zeigen.

= 1.38.0 =
* Die Bewertungsliste im Backend hat jetzt Suche, Filter und Seitenwechsel.
  Gesucht wird über Name, Text, Überschrift, E-Mail, Antwort und die
  Grundlage der Kundenbestätigung.
* Gefiltert werden kann nach Quelle und Sichtbarkeit.
* Neu: Export aller Bewertungen als CSV — als Sicherung und für eine
  Auskunft nach Art. 15 DSGVO.
* Die Liste zeigte bisher stumm die ersten 100 Bewertungen. Ab der
  einhundertersten war eine Bewertung im Backend nicht mehr auffindbar.

= 1.37.0 =
* Neu: Auf Bewertungen antworten. Die Antwort erscheint sichtbar abgesetzt
  unter der Bewertung, mit Namen und Datum — nie so, als hätte sie der
  Kunde geschrieben.
* Antworten geht beim Bearbeiten und direkt bei der Freigabe, wo die
  Entscheidung ohnehin fällt.
* Das Antwortdatum wandert nicht bei jedem Speichern nach vorn, sondern
  nur, wenn sich die Antwort wirklich ändert.
* Antworten stehen im Änderungsprotokoll.

= 1.36.1 =
* Die Einstellungen haben jetzt Sprungmarken über den Abschnitten. Bei
  fünfzehn Abschnitten scrollte man sonst an dem vorbei, was man suchte.
* „Video und Foto beim Bewerten“ steht jetzt direkt neben
  „Bewertungsformular“, wo es hingehört.

= 1.36.0 =
* Lange Bewertungstexte klappen jetzt auch auf der Bewertungsseite ein,
  mit „Ganze Bewertung lesen“. Das hielt bisher nur die Kacheln des
  Shortcodes in Form.
* Damit bleiben die Kästen auf ähnlicher Höhe: Ein Absatz steht nicht mehr
  neben einem Roman.
* Gekürzt wird erst durch das Script, nicht im Stylesheet — ohne
  JavaScript bliebe der Text sonst abgeschnitten und unerreichbar. Eine
  Prüfung hält das fest.

= 1.35.1 =
* Behoben: Bei einer reinen Videobewertung stand „Ohne Text abgegeben —
  nur die Bewertung“ direkt über dem Video. Bei einer Videobewertung ist
  das Video der Inhalt; der Hinweis erscheint jetzt nur, wenn wirklich
  nichts da ist.
* Eine Bewertung mit Video wird nicht mehr als knappe Zeile dargestellt.

= 1.35.0 =
* Videos dürfen höchstens 60 Sekunden lang sein.
* Feste Grenzen für die Abmessungen: Video mindestens 480 Pixel an der
  kurzen und höchstens 1920 an der langen Seite, Foto 600 bis 4000 Pixel.
  Hoch- und Querformat werden gleich behandelt — so filmt jedes Handy.
* Die Grenzen stehen im Formular, damit niemand raten muss.
* Der Browser prüft Dauer und Abmessungen, bevor etwas hochgeladen wird.
  Sonst lädt jemand 50 MB hoch und liest danach „zu lang“.
* Neu: „Direkt aufnehmen“ öffnet auf dem Handy die Kamera. Der Knopf
  erscheint nur dort, wo es eine gibt.
* Hochkant aufgenommene Videos werden nicht mehr beschnitten.
* Passt die Datei nicht, geht die Bewertung trotzdem durch — mit einem
  Hinweis, warum das Video fehlt.

= 1.34.0 =
* Neu: Kunden können beim Bewerten ein kurzes Video oder ein Foto
  mitschicken. Standardmäßig aus — einzuschalten unter Einstellungen →
  Video und Foto beim Bewerten.
* Angenommen wird nur, was alle Prüfungen besteht: Endung und
  tatsächlicher Inhalt müssen zusammenpassen, nur MP4, MOV, WebM, JPEG
  und PNG, Größenbegrenzung, keine doppelten Endungen, und der Dateiname
  wird neu gebaut.
* Ohne ausdrückliche Einwilligung zur Veröffentlichung wird die Datei gar
  nicht erst angenommen.
* Behoben: Im Bewertungsformular blieb ein leerer Absatz stehen. Die
  Bereinigung prüfte nur direkte Nachbarn — wickelt ein Theme die Ausgabe
  ein, sitzt der Absatz daneben und wurde nie gefunden.

= 1.33.0 =
* Behoben: Erklärungsblasen wurden abgeschnitten. Nicht am Bildschirmrand,
  sondern am Profilkopf — dessen overflow: hidden war nur für die runden
  Ecken des Banners da und schnitt dabei alles ab, was aus dem Kasten
  ragte. Die Rundung sitzt jetzt am Banner selbst.
* Im Siegel steht statt einer Blase ein Verweis auf die Bewertungsseite.
  Dort lässt sich das Abschneiden nicht beheben: Der Kasten braucht sein
  overflow, und die Klappbewegung über transform macht auch
  position: fixed wirkungslos. Für vier Sätze ist dort ohnehin kein Platz.
* Jede Bewertung steht jetzt in einem eigenen Kasten mit goldenem Rand.
  Ein Trennstrich allein reichte bei langen Texten nicht.

= 1.32.1 =
* Die Einstellungen zeigen jetzt, ob überhaupt Google-Bewertungen
  vorliegen. Der Block erschien schon vorher nur mit Daten — aber ohne
  diesen Stand war nicht erkennbar, warum auf der Seite nichts steht.
* Eine Prüfung hält das fest: Ohne abgerufene Bewertungen und bei
  abgeschaltetem Google bleibt der Block leer.

= 1.32.0 =
* Die Bewertungsseite zeigt jetzt alle Bewertungen, auch die ohne Text.
  Sie erscheinen knapp mit Sternen, Name und Datum. Umschaltbar unter
  Einstellungen → Bewertungsseite.
* Neu: Bewertungen von Google erscheinen in einem eigenen Block über der
  Liste — mit Text, soweit Google ihn herausgibt.
* Der Block steht bewusst getrennt: Die Nutzungsbedingungen von Google
  Maps untersagen es, deren Bewertungstexte dauerhaft abzulegen. Sie
  liegen nur kurz zwischengespeichert, nicht in der Datenbank, und lassen
  sich deshalb nicht sortieren oder durchblättern.
* Google gibt höchstens fünf Bewertungen heraus. Der Hinweis dazu steht
  am Block; die Gesamtzahl steht weiterhin bei den Plattformen.
* Der Sternefilter wirkt auch auf den Google-Block.

= 1.31.0 =
* Neu: Kundenbestätigung bei der Freigabe. Die Aussage „Nur bestätigte
  Kundinnen und Kunden“ erscheint nur, solange jede veröffentlichte
  Bewertung bestätigt ist — sonst verschwindet sie von selbst.
* Das Feld für eigene Hinweise warnt jetzt vor Sätzen, die eine Prüfung
  behaupten, und schlägt eine tragfähige Formulierung vor.
* Behoben: Die Warnung „Zahlen prüfen“ stand dauerhaft da. Eine Plattform
  ohne Auto-URL hatte nie einen Abrufstand und galt deshalb immer als
  veraltet. Der Stand wird jetzt beim Speichern mitgeschrieben.
* Behoben: Ein Rautenzeichen im Muster des Absatz-Filters beendete den
  Ausdruck vorzeitig. Leere Absätze mit &#160; blieben stehen.
* Behoben: Die hervorgehobene Bewertung im Profilkopf richtete sich nach
  Sortierung und Seitenzahl. Sie zeigt jetzt immer die neueste.
* Leere Absätze rund um die Ausgabe werden jetzt auch dann entfernt, wenn
  das Theme am the_content-Filter vorbei rendert.
* „Empfiehlt weiter“ hat eine Erklärung, woher die Angabe stammt.
* Erklärungsblasen bleiben im Bild, auch am rechten Rand.
* Filterklicks springen zur Liste statt an den Seitenanfang.
* Langer Vorstellungstext klappt nach zwei Absätzen auf.
* Die Übersicht zeigt, wie viele Bewertungen auf der Bewertungsseite
  erscheinen — und wie viele ohne Text dort fehlen.

= 1.30.0 =
* Neue Seite „Zahlen“: Wie oft Siegel, Balken, Bewertungsseite und
  Formular gesehen und angeklickt werden.
* Im Vordergrund stehen die Quoten, nicht die rohen Aufrufe: Wie viele von
  denen, die das Formular gesehen haben, schicken es ab. Wie viele, die
  das Siegel gesehen haben, klicken darauf.
* „Gesehen“ heißt tatsächlich gesehen — ein Siegel, zu dem niemand
  heruntergescrollt hat, zählt nicht. Sonst wäre die Klickrate wertlos.
* Gezählt werden Aufrufe, KEINE Besucher. Besucher auseinanderzuhalten
  hieße, sie wiederzuerkennen — über eine Kennung oder die IP-Adresse.
  Das wäre einwilligungspflichtig. Hier wird nichts gespeichert, was zu
  einer Person führt: keine IP, keine Kennung, kein Cookie.
* Gezählt wird im Browser, nicht auf dem Server: Hinter einem Seiten-Cache
  liefe ein Zähler in PHP beim ersten Aufruf und danach nie wieder.
* Klicks auf die anderen Plattformen werden je Plattform gezählt.
* Alte Zeilen werden nach einer einstellbaren Zeit entfernt.

= 1.29.0 =
* Neu: Video- und Fotobewertungen. Je Bewertung ein Video — als
  YouTube-Link oder als eigene Datei aus der Mediathek — und bis zu vier
  Fotos.
* YouTube lädt erst auf Klick. Vor dem Klick geht nichts an Google: kein
  iframe, kein Vorschaubild von ytimg. Eingebundene YouTube-Videos laden
  sonst schon beim Seitenaufruf und setzen Kennungen, bevor jemand auf
  Abspielen gedrückt hat — das ist einwilligungspflichtig.
* Als Vorschau dient ein selbst hinterlegtes Bild aus der Mediathek.
  Ohne Bild zeigt das Plugin eine schlichte Fläche mit Abspielknopf.
* Eigene Videos laden mit preload="none", also ebenfalls erst auf Klick.
* Adressen müssen vollständig sein und mit http oder https beginnen.
  Unvollständige Angaben werden verworfen statt als defektes Bild
  gespeichert.
* Video und Fotos lassen sich über die Mediathek auswählen.
* Änderungen an Medien stehen im Änderungsprotokoll.

= 1.28.0 =
* Neu: Interessenten können der bewertenden Person eine Frage stellen —
  aber nur, wenn diese beim Abgeben der Bewertung ausdrücklich eingewilligt
  hat. Standardmäßig ist die Funktion aus.
* Die E-Mail-Adresse verlässt den Server nie. Die Nachricht wird
  zugestellt, der Absender erfährt nur, dass sie draußen ist. Antwortet
  die bewertende Person, gibt sie sich selbst preis — freiwillig.
* Jede weitergeleitete Nachricht trägt einen Abmeldelink, der die
  Einwilligung sofort beendet. Der Link verfällt, sobald sich die Adresse
  ändert.
* Der Betreiber wird informiert, DASS geschrieben wurde — nie, was. Die
  Nachricht gehört den beiden Beteiligten.
* Sperre je Absender und Bewertung, dazu eine Obergrenze pro Stunde.
* Neue Spalte contact_ok. Bestehende Bewertungen haben keine Einwilligung;
  sie lässt sich unter Bewertungen nachtragen, wenn sie vorliegt.

= 1.27.0 =
* Neues Änderungsprotokoll: Jede Änderung an einer Bewertung wird mit
  Zeitpunkt, Benutzer und alt/neu festgehalten. Es lässt sich nicht
  abschalten — ohne Protokoll wäre die Zusage „Texte werden nicht
  verändert“ eine Behauptung ohne Beleg.
* Nachträglich geänderte Texte werden auf der Bewertungsseite
  gekennzeichnet. Sonst bliebe das Protokoll für den Leser unsichtbar.
* Löschungen hinterlassen eine Zeile mit Note und Datum, ohne Text und
  ohne Namen. E-Mail-Adressen stehen nie mit Wert im Protokoll.
* Neue Hinweise zum Umgang mit Bewertungen, wahlweise auf der
  Bewertungsseite, auf der Rückseite des Siegels und unter dem Formular.
  Pflicht nach § 5b Abs. 3 UWG.
* Die Vorgabetexte nennen ausschließlich, was das Plugin wirklich
  leistet. „Alle Bewertungen sind geprüft“ steht bewusst nicht darunter
  und muss selbst eingetragen werden — samt einem Ablauf, der das trägt.
* Die Übersicht zeigt, wie oft geändert und wie oft gelöscht wurde.

= 1.26.0 =
* Neuer Profilkopf für die Bewertungsseite: Banner mit Zitat, Porträt,
  Name, Vorstellungstext, zwei Knöpfe oben rechts und eine hervorgehobene
  Bewertung. Abschaltbar unter Einstellungen → Profilkopf; ausgeschaltet
  bleibt die Seite unverändert.
* Über der Liste steht jetzt, wie viele Bewertungen dort tatsächlich
  stehen. Die große Zahl im Kopf zählt alle Plattformen zusammen — beides
  nebeneinander zu zeigen, war irreführend.
* Neue Auswahl der Reihenfolge: Neueste, Älteste, Beste und Kritischste
  zuerst. Funktioniert auch ohne JavaScript.
* „Bewertung teilen“ an jeder Bewertung: Facebook, X, LinkedIn, Xing,
  WhatsApp, E-Mail und ein kopierbarer Link. Keine eingebundenen Skripte
  der Netzwerke — es geht erst etwas hinaus, wenn jemand klickt.
* Der geteilte Link führt zur einzelnen Bewertung, nicht zu einem
  Sprungpunkt, der auf Seite 3 ins Leere liefe.
* Optional: „von insgesamt n eingegangen, m veröffentlicht“ als
  Offenlegung, sowie ein Verweis auf eine Seite zur Echtheit der
  Bewertungen.

= 1.25.0 =
* Bewertungen zeigen jetzt auch die Uhrzeit, zu der sie abgegeben wurden.
  Bei der Erfassung im Backend gibt es dafür ein eigenes Feld.
* Ist keine Uhrzeit bekannt — etwa bei einer von einer anderen Plattform
  übertragenen Bewertung — bleibt es beim Datum. Eine erfundene Uhrzeit
  wird nirgends ausgegeben.
* Der bisherige Füllwert 12:00 Uhr an von Hand erfassten Bewertungen wird
  beim Update auf „nicht bekannt“ gesetzt. Er war nie eine echte Angabe.
* Neben „empfehlen weiter“ steht ein Info-Symbol. Es erklärt, dass Kunden
  bei der Bewertung ausdrücklich nach einer Weiterempfehlung gefragt
  werden und dass übertragene Bewertungen in dieser Quote nicht mitzählen.
* Hinter jeder Plattform steht, wie viele ihrer Bewertungen hier im
  Volltext liegen. Ein Klick darauf zeigt genau diese.
* Übertragene Bewertungen zählen nur einmal, solange beim Erfassen die
  Plattform als Quelle gewählt wird. Die Backend-Übersicht zeigt die Zahlen
  nebeneinander, und beim Quellenfeld steht, worauf zu achten ist.

= 1.24.1 =
* Die Backend-Übersicht zeigt jetzt auch die Einbinde-Codes für den Balken
  am unteren Bildschirmrand und für die Bewertungsseite.
* Die Parametertabelle nennt das Layout „bar“ und den Parameter per_page.
* Zwei Prüfungen im Testlauf sorgen dafür, dass künftig jeder Shortcode und
  jedes Layout in der Übersicht auftaucht.

= 1.24.0 =
* Neue Bewertungsseite: [apc_reviews_page] zeigt alle Bewertungen im
  Volltext, mit Filter nach Sternen und Angebot, Einzelbewertungen zum
  Ausklappen und Seitenwechsel.
* Am Fuß der Seite stehen die Bewertungen der übrigen Plattformen mit Note,
  Anzahl und Link zum jeweiligen Profil.
* Filter und Seitenwechsel laufen über die Adresse. Jede Ansicht ist damit
  verlinkbar und funktioniert ohne JavaScript.

= 1.23.2 =
* Behoben: Die Auslassungspunkte klebten am letzten Wort, wenn ein Zitat
  nicht in die Sprechblase passte. Die Kürzung übernimmt jetzt das Plugin
  selbst und setzt das im Deutschen übliche Leerzeichen davor.
* Die Anführungszeichen der Sprechblase stehen im Stylesheet, damit sie
  auch bei gekürztem Text vollständig erscheinen.

= 1.23.1 =
* Der Balken ist deutlich flacher: 46 statt 70 Pixel. Der Name der
  Kundenstimme steht jetzt neben der Sprechblase statt darunter, dadurch
  bleibt der Balken einzeilig.
* Das Zitat erscheint erst ab 1250 Pixeln Bildschirmbreite. Darunter reicht
  der Platz nicht, und der Browser hat es selbst abgeschnitten — mit einem
  Auslassungszeichen ohne Leerzeichen davor, was im Deutschen falsch ist.
  Lieber kein Zitat als ein Wortrest.

= 1.23.0 =
* Der Balken zeigt das Foto aus den Siegel-Einstellungen, rund und mit
  Goldrand, statt eines Sterns. Ohne hinterlegtes Foto bleibt der Stern.
* Die Kundenstimme steht in einer Sprechblase.
* Neue Einstellung "Freiraum links": hält Platz für ein Symbol frei, das
  unten links auf dem Bildschirm schwebt — meist der Schalter des
  Cookie-Banners. Der lag vorher auf dem Balken. Voreinstellung 64 px.
* Auf schmalen Bildschirmen steht der Inhalt mittig und läuft nicht mehr
  unter das Cookie-Symbol. Geprüft von 320 px aufwärts.

= 1.22.0 =
* Neuer Balken am unteren Bildschirmrand: Note, Sterne, Anzahl und eine
  wechselnde Kundenstimme über die volle Breite. Seitenweit über die
  Einstellungen oder für einzelne Seiten per [apc_reviews layout="bar"].
  Besucher können ihn wegklicken.
* Siegel deutlicher: größere Sterne, größere verbale Einordnung, kräftigere
  Anzahl der Bewertungen, größerer Name oben und größere Überschrift über
  den Kundenstimmen.
* Das schwebende Siegel rückt automatisch über den Balken, wenn beides
  aktiv ist.

= 1.21.0 =
* Gibt an, mit welchen PHP- und WordPress-Versionen das Plugin geprüft ist.
  Der Stand der eigenen Installation steht unter "Bewertungen > Übersicht".
* Auf zu altem PHP startet das Plugin nicht mehr, sondern erklärt im
  Backend, was fehlt. Vorher gab es einen weißen Bildschirm.
* Automatisch geprüft wird jetzt gegen PHP 7.4, 8.0, 8.1, 8.2, 8.3 und 8.4.

= 1.20.1 =
* Formulardaten werden durchgehend entschlüsselt und bereinigt, bevor sie
  verarbeitet werden. Betrifft das Bewertungsformular und alle
  Backend-Formulare. An der Verarbeitung selbst ändert sich nichts.
* Rein technische Korrekturen für die Codeprüfung. Keine Änderung an
  Funktion, Datenbank oder Anzeige.

= 1.20.0 =
* Bewertungen aus dem eigenen Formular heißen jetzt "TrustedTrainer" statt
  "Direktes Kundenfeedback" — im Siegel, im Badge und auf jeder
  Bewertungskachel.
* Der Name ist in den Einstellungen frei wählbar. Vorher war er fest im
  Code verdrahtet, was für ein Plugin, das auch andere einsetzen, nicht
  taugt.

= 1.19.0 =
* Die E-Mail-Adresse aus dem Bewertungsformular wird jetzt tatsächlich
  gespeichert. Bisher wurde sie abgefragt und verworfen — eine Rückfrage
  war nie möglich, obwohl das Formular sie in Aussicht stellte.
* Adresse steht in der Benachrichtigungsmail, ist bei der Freigabe und in
  der Bewertungsmaske sichtbar und lässt sich dort einzeln löschen.
* Sie wird nie ausgegeben: weder im Siegel noch in der Bewertungsliste.

= 1.18.1 =
* Behoben: Die Umstellung der Spalte "recommend" auf "darf leer sein" wird
  jetzt ausdrücklich nachgezogen. Verließ sie sich auf dbDelta, konnte sie
  ausbleiben — Bewertungen aus dem Formular wären dann nicht gespeichert
  worden oder mit "empfiehlt nicht weiter" gelandet.

= 1.18.0 =
* Backend intern aufgeräumt: Menü, die vier Seiten und die schreibenden
  Vorgänge liegen jetzt in eigenen Dateien, Styles und Script in eigenen
  Assets. An der Bedienung ändert sich nichts.

= 1.17.0 =
* Siegel-Rückseite weist jetzt aus, welche Quelle noch nicht zur Gesamtnote
  zählt. Vorher gingen die Zahlen dort ohne Erklärung nicht auf.
* Der Filter gegen leere Absätze greift nur noch rund um die eigene
  Ausgabe, nicht mehr in jedem Beitrag der Website.
* Spam-Drosselung erkennt die Besucher-IP hinter Cloudflare und anderen
  Reverse-Proxys. Vorher teilten sich alle Besucher eine Sperre.

= 1.16.0 =
* Gibt die Gesamtnote je Angebot als strukturierte Daten (schema.org,
  JSON-LD) aus, damit Suchmaschinen sie lesen können. Schema-Typ je Gruppe
  in den Einstellungen wählbar.
* Die Auszeichnung der Gesamtnote über alles ist getrennt schaltbar und
  standardmäßig aus: Google zeigt für selbst eingesammelte Bewertungen über
  das eigene Unternehmen keine Sterne.

= 1.15.0 =
* Die Frage nach der Weiterempfehlung ist im Formular Pflicht und nicht
  mehr auf "Ja" vorangekreuzt. Die Quote "x % empfehlen weiter" beruht
  damit nur noch auf tatsächlich gegebenen Antworten.
* Im Backend gibt es zusätzlich "Nicht gefragt". Übertragene
  Plattformbewertungen gehören dorthin und zählen nicht mehr in die Quote.
* Einmaliger Hinweis in der Übersicht für Bewertungen aus älteren
  Versionen, die die Voreinstellung "Ja" tragen.

= 1.14.0 =
* Google wird nicht mehr beim Seitenaufruf abgefragt. Der Abruf läuft
  ausschließlich über den Cron, in dem unter „Aktualisierung“ eingestellten
  Takt. Besucher warten dadurch nie auf eine Antwort von Google.
* Nach jedem Abruf wird die zwischengespeicherte Gesamtnote verworfen —
  neue Zahlen erscheinen sofort statt bis zu eine Stunde später.

= 1.13.0 =
* Klick auf die Kundenstimme führt wahlweise zur Originalquelle oder zur eigenen Bewertungsseite.
* Quellenangabe auf Bewertungskacheln verlinkt ohne Direktlink auf das Plattformprofil.

= 1.12.0 =
* Kundenstimme im Siegel anklickbar: führt zur Bewertung, die vollständig und hervorgehoben oben auf der Bewertungsseite erscheint.
* Ohne eingetragene Bewertungsseite öffnet "Weiterlesen" den Volltext direkt im Ausklapper.

= 1.11.0 =
* Reihenfolge der Quellen im Backend festlegbar. Ohne Position wird nach Anzahl sortiert.

= 1.10.0 =
* Manuelle Erfassung mit Angebot, Einzelkriterien und Weiterempfehlung. Gesamtnote wird aus den Kriterien berechnet.
* Bewertungsliste im Backend zeigt das Angebot.

= 1.9.1 =
* Shortcode-Übersicht nutzt die eigenen Gruppen-Kürzel aus den Einstellungen, mit Parametertabelle.

= 1.9.0 =
* Siegel neu gestaltet: Name, Titelband, verbale Einordnung, Datum der letzten Bewertung, optionales Foto.
* Schwebendes Siegel fährt beim Darüberfahren eine Kundenstimme aus.
* Höhe, Seite und seitenweite Anzeige des Siegels im Backend einstellbar.
* Behoben: Das Formular hat sein Script nicht geladen.

= 1.8.0 =
* Leitfrage über dem Textfeld, pro Gruppe im Backend einstellbar, schaltet mit der Angebotsauswahl um.

= 1.7.2 =
* Angebotsauswahl schaltet per CSS um und funktioniert auch ohne JavaScript.
* Ungenutztes Feld "Bewertetes Angebot" aus den Einstellungen entfernt.

= 1.7.1 =
* Angebotsauswahl im Formular schaltet zuverlässig um, auch bei verzögert geladenen Scripts und Theme-Auswahlfeldern.
* Einstellungen zeigen, welche Kriterien jede Gruppe nutzt, und warnen bei Kürzeln ohne Treffer.

= 1.7.0 =
* Readme aktualisiert, Release-Stand.

= 1.6.0 =
* Kompaktes Siegel dreht sich in 3D zur Rückseite.

= 1.5.x =
* Schrift der Seite wird übernommen, Code-Block-Rahmen wird entfernt.
* Feste Spalten auf der Siegel-Rückseite, legend-Fix im Formular.
* Angebot und Monat auf Bewertungskacheln, Weiterempfehlungsrate im Siegel.

= 1.4.0 =
* Kompaktes Siegel, eingebettet oder schwebend.

= 1.3.x =
* Angebotsauswahl im Formular, Kriterien je Gruppe, Design-Fixes.

= 1.2.x =
* Auto-URL für Plattformzahlen, Erinnerung bei veralteten Zahlen, Formular auf Du.

= 1.1.0 =
* Bewertungsformular, Freigabe, Gruppen.

= 1.0.0 =
* Erste Version.
