Button im Lizenz-tab (status "Plaetze belegt") oeffnet jetzt einen mailto-link
an info@lucas-orth.de, Betreff "Lizenzupgrade", body mit leeren feldern
"Lizenzkey:" und "Bestellmail:" zum ausfuellen (key NICHT vorausgefuellt).
+ i18n DE/EN. version 1.5.4.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Darstellung: neue option "Textausrichtung" (mittig/links/rechts). Setzt
--cb-align (text-align) und --cb-justify (remember-zeile) inline.
- "Diesen Dienst kuenftig immer laden" nutzt jetzt die textfarbe (var(--cb-text),
ohne dimming).
- Datenschutz-link: schriftgroesse/-gewicht/laufweite/transform/decoration in
allen zustaenden festgenagelt -> keine theme-a:hover-aenderung mehr.
- Werbe-badge: dito -> wird beim hover nicht mehr riesig (theme-scaling/
font-size gesperrt).
+ i18n DE/EN (138 strings). version 1.5.2.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Kleines Badge "GDPR Content Blocker" unten rechts im platzhalter, verlinkt
auf die kaufseite (rel=nofollow sponsored). Server- und client-seitig.
- Wird IMMER angezeigt; abschaltbar via checkbox im Darstellung-tab
("Werbe-Badge ausblenden") - die checkbox ist aber nur mit aktiver
Unlimited-lizenz nutzbar (sonst disabled) und greift am render-punkt nur,
wenn is_unlimited() true ist.
- Dafuer speichert das plugin jetzt max_activations aus der backend-antwort
(activate/validate/swap) und bietet is_unlimited().
+ i18n DE/EN (134 strings). version 1.5.0.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Unter jedem dienstnamen wird jetzt die auto-erzeugte ID angezeigt
(z. B. "ID: eigenes-matomo") - kopierbar, fuer den consent-shortcode.
Bei neuen diensten live-vorschau aus dem namen (slugify, spiegelt
sanitize_title); bei gespeicherten die stabile ID.
- Shortcode-tab: [content_blocker_consent] erklaert jetzt id/text/style einzeln
mit beispielen (button vs. link).
+ i18n DE/EN ergaenzt (131 strings). version 1.4.9.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1) Das Warn-Emoji "⚠" im platzhalter-text loeste WordPress' wp-emoji aus, das
die grafik von s.w.org nachlud (drittanbieter-request). Emoji aus den texten
entfernt; das warn-dreieck wird jetzt rein per CSS gezeichnet (kein netzwerk).
Hinweis: s.w.org ist der WP-emoji-CDN, NICHT Google.
2) Der platzhalter reservierte die hoehe des eingebetteten elements -> bei
kuerzerem inhalt entstand weissraum darunter. Hoehen-reservierung entfernt
(PHP min-height-style, JS minHeight, CSS min-height:180px) - der content
blocker ist jetzt exakt so hoch wie sein eigener inhalt. Die original-masse
bleiben als data-attribute fuer das iframe nach einwilligung erhalten.
3) Redundante, partielle de_DE-.po/.mo (mit altem emoji) entfernt - deutsche
locales nutzen direkt die deutschen quell-strings.
+ version 1.4.3 (assets cache-busting).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Loest die YouTube/Vimeo-API-Luecke: viele dienste laden ueber <script>
(z. B. youtube.com/iframe_api, www-widgetapi.js, analytics) statt iframes -
oft per JavaScript nachgeladen, daher fuer den scanner unsichtbar.
- Pro dienst aktivierbar ueber das (umbenannte) feld "Zugehoerige Skripte
blockieren (z. B. YouTube-/Vimeo-API)" = das vorhandene loads_script-flag.
Presets (YouTube, Vimeo, Maps) haben es bereits an.
- Server-seitig: passende <script src> werden zu type="text/plain"
(src -> data-cb-src) neutralisiert, laden also nicht.
- Client-seitig: winziger guard ganz frueh im <head> patcht
appendChild/insertBefore/replaceChild und neutralisiert dynamisch
injizierte scripts VOR dem einfuegen -> kein request. Faengt damit auch
die per JS nachgeladene iframe_api ab.
- Einwilligung (per-dienst-consent, z. B. ueber den video-platzhalter)
schaltet die scripts via cbActivateScripts frei und laedt sie nach.
- Neuer shortcode [content_blocker_consent id="…"] als einwilligungs-button
fuer reine skript-dienste ohne sichtbaren platzhalter.
- guard-logik mit DOM-mock getestet (block + reinject), server-regex
isoliert geprueft. i18n DE/EN ergaenzt (127 strings).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Feature "Schriften lokal hosten" komplett zurueckgebaut (class-fonts.php,
tab, ajax-endpunkte, output-buffer, admin-js-handler, optionen).
- Scan: wird fonts.googleapis.com / fonts.gstatic.com erkannt, steht in der
Aktion-spalte jetzt der nicht-klickbare hinweis "Schriftart fuer
DSGVO-konformen Betrieb lokal hosten." statt eines buttons.
- i18n entsprechend bereinigt (123 strings).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Lizenz-Tab: bei vollen Plaetzen erscheint ein "Lizenz upgraden"-Button
(https://lucas-orth.de/wp-plugins/gdpr-content-blocker/) zusaetzlich zur
domain-freigabe.
- Neues Feature "Schriften": Google Fonts lokal hosten (button-modell).
Admin klickt "Jetzt herunterladen & einbinden" -> plugin scannt die seiten,
laedt googleapis-CSS + gstatic-schriftdateien einmalig in den uploads-ordner,
schreibt die pfade lokal um und tauscht sie per output-buffer im quelltext.
Abgedeckt: <link>, inline-@import/url() UND @import/url() in gleicher-origin
externen CSS-dateien (mit absolutierung der restlichen relativen pfade).
preconnect/dns-prefetch zu google-font-hosts werden entfernt (kein IP-leak).
Toggle zum aus/einschalten + "Lokale Schriften loeschen".
- i18n-pipeline robuster: build-en-mo.py nutzt jetzt translations-en.json
(lookup per quell-string, reihenfolge-unabhaengig) und bricht mit liste ab,
falls eine uebersetzung fehlt. Alle neuen strings DE/EN ergaenzt (139).
- version 1.3.0 (header + CB_VERSION).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>