chore: monorepo - plugin, backend und hilfsdaten in einem repo
- Eltern-Ordner ist jetzt EIN Git-Repo (statt getrennter Repos). - root .gitignore haelt Secrets (.env), node_modules, DB und Build-Artefakte raus. - release.ps1: manueller Release (ZIP bauen + ans Backend laden). - root README mit Struktur und Release-Ablauf. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
92
gdpr-content-blocker/readme.txt
Normal file
92
gdpr-content-blocker/readme.txt
Normal file
@@ -0,0 +1,92 @@
|
||||
=== GDPR Content Blocker ===
|
||||
Contributors: lucasorth
|
||||
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.0.0
|
||||
License: GPL-2.0-or-later
|
||||
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
||||
|
||||
DSGVO-konformer Consent-Blocker für externe iframes. Schlanke Alternative zu schweren Consent-Tools.
|
||||
|
||||
== Description ==
|
||||
|
||||
Content Blocker verhindert, dass externe Dienste (Google Maps, YouTube, OpenStreetMap, Bewerbungsportale etc.)
|
||||
Daten übertragen, bevor der Nutzer aktiv eingewilligt hat. Kein iframe sendet vor dem Klick eine einzige
|
||||
Anfrage an den Drittserver.
|
||||
|
||||
**Features:**
|
||||
|
||||
* 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)
|
||||
* 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)
|
||||
* Manueller Shortcode `[content_blocker id="google-maps"]...[/content_blocker]`
|
||||
* Stabile CSS-Klassen für vollständige Gestaltungsfreiheit per Custom-CSS
|
||||
* Keine externen Abhängigkeiten, kein CDN, kein Composer
|
||||
* PHP 8.1+, WordPress 6.0+
|
||||
|
||||
== Shortcodes ==
|
||||
|
||||
**Dienst blockieren:**
|
||||
`[content_blocker id="google-maps"]<iframe src="https://maps.google.com/..." ...></iframe>[/content_blocker]`
|
||||
|
||||
**Widerruf für externe Inhalte (für Datenschutzerklärung):**
|
||||
`[content_blocker_revoke]`
|
||||
Rendert standardmäßig einen Text-Link. Betrifft nur die Freigabe externer
|
||||
Einbettungen (nicht die Cookie-Einwilligung eines separaten Cookie-Plugins).
|
||||
Optionen: `text="…"`, `style="link|button"`, `note="yes|no"`.
|
||||
|
||||
**Übersicht aller blockierten Dienste (für Datenschutzerklärung):**
|
||||
`[content_blocker_services]`
|
||||
|
||||
== CSS-Klassen ==
|
||||
|
||||
| Klasse | Beschreibung |
|
||||
|---|---|
|
||||
| `.cb-blocker` | Wrapper / Platzhalter-Hintergrund |
|
||||
| `.cb-blocker__inner` | Innerer Container (zentriert) |
|
||||
| `.cb-blocker__text` | Hinweistext |
|
||||
| `.cb-blocker__recipient` | Empfänger / Drittlandzeile |
|
||||
| `.cb-blocker__purpose` | Zweck |
|
||||
| `.cb-blocker__third-country` | Drittland-Warnhinweis |
|
||||
| `.cb-blocker__privacy-link` | Link zur Anbieter-DSE |
|
||||
| `.cb-blocker__button` | Lade-Button |
|
||||
| `.cb-revoke-btn` | Widerrufs-Button |
|
||||
|
||||
CSS Custom Properties (via `:root`):
|
||||
`--cb-text`, `--cb-bg`, `--cb-btn-bg`, `--cb-btn-text`, `--cb-btn-hover-bg`, `--cb-btn-hover-text`
|
||||
|
||||
Hinweis zur Spezifität: Die Plugin-Regeln sind unter `.cb-blocker` verschachtelt
|
||||
(z. B. `.cb-blocker .cb-blocker__button`), damit Theme-Styles sie nicht überschreiben.
|
||||
Ihr Custom-CSS wird DANACH geladen und überschreibt alles — verwenden Sie zur
|
||||
Sicherheit denselben Präfix, z. B. `.cb-blocker .cb-blocker__button { ... }`.
|
||||
|
||||
== Updates ==
|
||||
|
||||
Updates werden über den eigenen Lizenzserver ausgeliefert und nur an Seiten mit
|
||||
aktiver Lizenz angeboten. Der Update-Hinweis erscheint wie gewohnt unter
|
||||
Plugins → Installierte Plugins. Ohne aktive Lizenz wird kein Update angeboten.
|
||||
|
||||
Veröffentlichung (für den Betreiber): Plugin-ZIP per Gitea-Actions (Tag `v*`) oder
|
||||
manuell per curl an den Endpoint `POST /api/v1/releases` des Backends laden. Die
|
||||
ZIP muss einen Ordner `gdpr-content-blocker/` auf oberster Ebene enthalten.
|
||||
|
||||
== Bekannte Grenzen ==
|
||||
|
||||
* Auto-Erkennung greift nur auf iframes im initialen Server-HTML. Durch JavaScript nachgeladene iframes
|
||||
werden nicht automatisch erkannt. Für diese Fälle den manuellen Shortcode verwenden.
|
||||
|
||||
== Changelog ==
|
||||
|
||||
= 1.0.0 =
|
||||
* Erstveröffentlichung
|
||||
|
||||
== Upgrade Notice ==
|
||||
|
||||
= 1.0.0 =
|
||||
Erstveröffentlichung.
|
||||
Reference in New Issue
Block a user