From 839c3647581df9e3b0f3782c9e684beee48562e1 Mon Sep 17 00:00:00 2001 From: s4luorth Date: Sun, 21 Jun 2026 09:34:25 +0200 Subject: [PATCH] chore: alle versionsangaben einheitlich auf 1.7.0 + readme aktualisiert - Plugin: Header-Version + CB_VERSION -> 1.7.0 - readme.txt: Stable tag 1.7.0, Features aktualisiert (skript-blockierung, consent-shortcode, textausrichtung, ganzseitiger scan, kein weissraum, ...), changelog-eintrag 1.7.0 + upgrade notice - Backend package.json -> 1.7.0 - Doku-beispiele (README.md, SPICKZETTEL.md, license-backend/README.md) auf 1.7.0 angeglichen Co-Authored-By: Claude Opus 4.8 --- README.md | 2 +- gdpr-content-blocker/gdpr-content-blocker.php | 4 +-- gdpr-content-blocker/readme.txt | 35 +++++++++++++++---- hilfsdaten/SPICKZETTEL.md | 8 ++--- license-backend/README.md | 4 +-- license-backend/package.json | 2 +- 6 files changed, 39 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 259ae1c..0efa58a 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Lizenz-/Update-Server. (Header `Version:` **und** `define( 'CB_VERSION', … )`), committen. 2. ZIP bauen + hochladen: ```powershell - .\release.ps1 -Version 1.0.1 -Token DEIN_ADMIN_API_TOKEN + .\release.ps1 -Version 1.7.0 -Token DEIN_ADMIN_API_TOKEN ``` 3. Lizenzierte Seiten sehen das Update unter Plugins. diff --git a/gdpr-content-blocker/gdpr-content-blocker.php b/gdpr-content-blocker/gdpr-content-blocker.php index 5f03471..5b91db7 100644 --- a/gdpr-content-blocker/gdpr-content-blocker.php +++ b/gdpr-content-blocker/gdpr-content-blocker.php @@ -3,7 +3,7 @@ * Plugin Name: GDPR Content Blocker * Plugin URI: https://lucas-orth.de/wp-plugins/gdpr-content-blocker/ * Description: DSGVO-konformer Consent-Blocker für externe iframes. Lädt Drittinhalte erst nach aktiver Einwilligung. - * Version: 1.6 + * Version: 1.7.0 * Author: Lucas Orth * Author URI: https://lucas-orth.de * Text Domain: gdpr-content-blocker @@ -15,7 +15,7 @@ defined( 'ABSPATH' ) || exit; -define( 'CB_VERSION', '1.5.4' ); +define( 'CB_VERSION', '1.7.0' ); define( 'CB_FILE', __FILE__ ); define( 'CB_DIR', plugin_dir_path( __FILE__ ) ); define( 'CB_URL', plugin_dir_url( __FILE__ ) ); diff --git a/gdpr-content-blocker/readme.txt b/gdpr-content-blocker/readme.txt index 99307fd..70a56bf 100644 --- a/gdpr-content-blocker/readme.txt +++ b/gdpr-content-blocker/readme.txt @@ -4,7 +4,7 @@ Tags: dsgvo, gdpr, consent, iframe, datenschutz, gdpr-content-blocker Requires at least: 6.0 Tested up to: 6.7 Requires PHP: 8.1 -Stable tag: 1.2.0 +Stable tag: 1.7.0 License: GPL-2.0-or-later License URI: https://www.gnu.org/licenses/gpl-2.0.html @@ -18,15 +18,18 @@ Anfrage an den Drittserver. **Features:** +* Echtes Click-to-Load: vor der Einwilligung keine Verbindung zum Drittanbieter, keine Datenübertragung * Granulare Einwilligung pro Dienst (localStorage, je ein Key pro Service-ID) * Art. 13 DSGVO-konformer Platzhalter: Anbieter, Empfänger, Zweck, Drittlandhinweis, Datenschutzlink -* Widerruf per Shortcode `[content_blocker_revoke]` — so einfach wie die Einwilligung (Art. 7 Abs. 3) -* Auto-Erkennung via DOMDocument (keine Regex-HTML-Parsing) +* Drittanbieter-Skripte blockieren — auch per JavaScript nachgeladene (z. B. YouTube-/Vimeo-API, Tracking-Skripte), optional auch von der eigenen Domain +* Auto-Erkennung von iframes (server-seitig via DOMDocument) und JS-Einbettungen (Slider, Elementor-Videos inkl. e-youtube-/e-vimeo-Element, Gutenberg-oEmbed) * Vorlagen für Google Maps, YouTube, OpenStreetMap, Vimeo (Ein-Klick, voll editierbar) -* Webseiten-Scan: listet alle eingebundenen Drittanbieter-Ressourcen auf (erfordert Lizenz) -* Platzhalter übernimmt automatisch die Höhe des eingebetteten Elements (kein Layout-Sprung) +* Webseiten-Scan: durchsucht die gesamte Website (alle Seiten/Beiträge) und listet alle Drittanbieter-Ressourcen samt Fundseiten auf (erfordert Lizenz) +* Widerruf per Shortcode `[content_blocker_revoke]` (Art. 7 Abs. 3); Einwilligungs-Button `[content_blocker_consent]` für reine Skript-Dienste +* Platzhalter exakt so hoch wie sein Inhalt (kein Weißraum); das Element lädt nach der Einwilligung in Originalgröße +* Textausrichtung wählbar (mittig/links/rechts), Farben frei einstellbar, eigenes Custom-CSS; Theme überschreibt nichts * Manueller Shortcode `[content_blocker id="google-maps"]...[/content_blocker]` -* Stabile CSS-Klassen für vollständige Gestaltungsfreiheit per Custom-CSS +* Lizenz- und Update-Auslieferung über eigenen Server; Sprachen: Deutsch + Englisch * Keine externen Abhängigkeiten, kein CDN, kein Composer * PHP 8.1+, WordPress 6.0+ @@ -44,6 +47,11 @@ Optionen: `text="…"`, `style="link|button"`, `note="yes|no"`. **Übersicht aller blockierten Dienste (für Datenschutzerklärung):** `[content_blocker_services]` +**Einwilligungs-Button (für reine Skript-Dienste ohne sichtbaren Platzhalter):** +`[content_blocker_consent id="dienst-id" text="…" style="button|link"]` +Erteilt die Einwilligung für den angegebenen Dienst und lädt die Seite neu. +Die ID steht im Backend unter jedem Dienst (klein unter dem Namen). + == CSS-Klassen == | Klasse | Beschreibung | @@ -93,6 +101,18 @@ ZIP muss einen Ordner `gdpr-content-blocker/` auf oberster Ebene enthalten. == Changelog == += 1.7.0 = +* Drittanbieter-Skripte blockieren (auch per JavaScript nachgeladene wie die YouTube-/Vimeo-API und Tracking-Skripte; optional auch von der eigenen Domain) +* Neuer Shortcode `[content_blocker_consent]` (Einwilligungs-Button für reine Skript-Dienste) +* Textausrichtung des Platzhalters wählbar (mittig/links/rechts) +* Werbe-Badge mit Link zur Produktseite (mit aktiver Unlimited-Lizenz ausblendbar) +* Verbesserte Elementor-Erkennung inkl. neuem e-youtube-/e-vimeo-Element; Video lädt nach Einwilligung in Originalgröße +* Webseiten-Scan deckt jetzt die gesamte Website ab (alle Seiten/Beiträge), parallele Abfrage +* Platzhalter exakt so hoch wie sein Inhalt (kein Weißraum mehr) +* Kein Nachladen von WordPress-Emoji-Grafiken mehr (s.w.org) +* Dienst-ID im Backend sichtbar; „Lizenz upgraden" öffnet eine vorausgefüllte E-Mail +* Plugin-Icon; diverse Darstellungs- und Hover-Korrekturen (Tabs, Button, Links) + = 1.2.0 = * Shortcodes in eigenen Tab; „Über das Plugin"-Tab * Belegte Domains als Liste mit Papierkorb; Lizenz-Status live aktualisiert @@ -113,5 +133,8 @@ ZIP muss einen Ordner `gdpr-content-blocker/` auf oberster Ebene enthalten. == Upgrade Notice == += 1.7.0 = +Skript-Blockierung (inkl. YouTube-/Vimeo-API), ganzseitiger Scan, kein Weißraum im Platzhalter und diverse Darstellungs-Korrekturen. + = 1.0.0 = Erstveröffentlichung. diff --git a/hilfsdaten/SPICKZETTEL.md b/hilfsdaten/SPICKZETTEL.md index 927e879..b12edd8 100644 --- a/hilfsdaten/SPICKZETTEL.md +++ b/hilfsdaten/SPICKZETTEL.md @@ -58,17 +58,17 @@ hängen daran). Repo-/Ordnername = gdpr-content-blocker, das ist nur kosmetisch. ```bash cd .../gdpr-content-blocker # Version in gdpr-content-blocker.php (Header + CB_VERSION) bumpen, committen -git add -A && git commit -m "release: 1.0.1" -git tag v1.0.1 +git add -A && git commit -m "release: 1.7.0" +git tag v1.7.0 git push origin main -git push origin v1.0.1 # löst den Release-Workflow aus +git push origin v1.7.0 # löst den Release-Workflow aus ``` ### Manuell (ohne Runner) ```bash cd .../gdpr-content-blocker git archive --format=zip --prefix=gdpr-content-blocker/ -o gdpr-content-blocker.zip HEAD -curl -fSs -X POST "https://hub.lucas-orth.de/api/v1/releases?product=gdpr-content-blocker&version=1.0.1" \ +curl -fSs -X POST "https://hub.lucas-orth.de/api/v1/releases?product=gdpr-content-blocker&version=1.7.0" \ -H "X-Admin-Token: ADMIN_TOKEN" -H "Content-Type: application/zip" \ --data-binary @gdpr-content-blocker.zip ``` diff --git a/license-backend/README.md b/license-backend/README.md index 9f06332..6fbaf61 100644 --- a/license-backend/README.md +++ b/license-backend/README.md @@ -87,7 +87,7 @@ Optional: `email`, `note`, `expires_at` (ISO date; omit for lifetime). ```bash curl -X POST https://hub.lucas-orth.de/api/v1/releases/from-url \ -H "X-Admin-Token: $ADMIN_API_TOKEN" -H "Content-Type: application/json" \ - -d '{"product":"gdpr-content-blocker","version":"1.1.0","zip_url":"https://gitea.lucas-orth.de/lucas.orth/GDPR-Content-Blocker/releases/download/v1.1.0/gdpr-content-blocker.zip"}' + -d '{"product":"gdpr-content-blocker","version":"1.7.0","zip_url":"https://gitea.lucas-orth.de/lucas.orth/GDPR-Content-Blocker/releases/download/v1.7.0/gdpr-content-blocker.zip"}' ``` The backend downloads the ZIP once and stores it locally, so the customer download stays license-gated. The asset must be a **built plugin ZIP** (top-level @@ -97,7 +97,7 @@ restrict fetches to your Gitea, and `GITEA_TOKEN` for private repos. **Upload a new plugin version** (raw `.zip` as the body — no multipart): ```bash -curl -X POST "https://hub.lucas-orth.de/api/v1/releases?product=gdpr-content-blocker&version=1.1.0" \ +curl -X POST "https://hub.lucas-orth.de/api/v1/releases?product=gdpr-content-blocker&version=1.7.0" \ -H "X-Admin-Token: $ADMIN_API_TOKEN" \ -H "Content-Type: application/zip" \ -H "X-Changelog: Fixes XYZ" \ diff --git a/license-backend/package.json b/license-backend/package.json index 2c3849d..dd38f92 100644 --- a/license-backend/package.json +++ b/license-backend/package.json @@ -1,6 +1,6 @@ { "name": "license-backend", - "version": "1.0.0", + "version": "1.7.0", "description": "Self-hosted license server for WordPress plugins (extensible, multi-product).", "author": "Lucas Orth", "license": "UNLICENSED",