diff --git a/gdpr-content-blocker/assets/frontend.css b/gdpr-content-blocker/assets/frontend.css index 68642ae..a1ba95b 100644 --- a/gdpr-content-blocker/assets/frontend.css +++ b/gdpr-content-blocker/assets/frontend.css @@ -23,7 +23,6 @@ display: flex; align-items: flex-start; /* pin content to the top */ justify-content: center; - min-height: 180px; /* fallback only; real height is set inline */ width: 100%; background-color: var(--cb-bg); color: var(--cb-text); @@ -31,7 +30,7 @@ padding: 24px 8px 20px; /* min 20px top/bottom, 8px sides */ font-family: inherit; border-radius: 4px; - overflow: auto; /* if text is taller than the embed, scroll, don't clip */ + /* No reserved height: the placeholder is exactly as tall as its content. */ } /* ── Inner content ── */ @@ -62,6 +61,18 @@ color: #f0b429; /* amber — universal caution, brand-neutral */ font-weight: 600; } +/* Caution marker drawn in pure CSS (no emoji → no s.w.org/emoji request). */ +.cb-blocker .cb-blocker__third-country::before { + content: ""; + display: inline-block; + width: 0; + height: 0; + margin-right: 6px; + vertical-align: -2px; + border-left: 0.45em solid transparent; + border-right: 0.45em solid transparent; + border-bottom: 0.8em solid currentColor; +} /* ── Privacy link ── */ .cb-blocker .cb-blocker__privacy-link { diff --git a/gdpr-content-blocker/assets/frontend.js b/gdpr-content-blocker/assets/frontend.js index 7a5b4a7..3374bdb 100644 --- a/gdpr-content-blocker/assets/frontend.js +++ b/gdpr-content-blocker/assets/frontend.js @@ -169,11 +169,10 @@ wrap.className = 'cb-blocker'; wrap.setAttribute( 'data-cb-id', svc.id ); wrap.dataset.src = src; + // Keep the dims for the iframe we create on consent, but do NOT reserve + // height — the placeholder is sized to its own content (no empty space). if ( dims.width ) wrap.dataset.width = dims.width; if ( dims.height ) wrap.dataset.height = dims.height; - if ( dims.height && /^\d+$/.test( String( dims.height ) ) ) { - wrap.style.minHeight = dims.height + 'px'; - } const inner = document.createElement( 'div' ); inner.className = 'cb-blocker__inner'; diff --git a/gdpr-content-blocker/gdpr-content-blocker.php b/gdpr-content-blocker/gdpr-content-blocker.php index ee773b6..00bd881 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 * Description: DSGVO-konformer Consent-Blocker für externe iframes. Lädt Drittinhalte erst nach aktiver Einwilligung. - * Version: 1.4.2 + * Version: 1.4.3 * 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.4.2' ); +define( 'CB_VERSION', '1.4.3' ); define( 'CB_FILE', __FILE__ ); define( 'CB_DIR', plugin_dir_path( __FILE__ ) ); define( 'CB_URL', plugin_dir_url( __FILE__ ) ); diff --git a/gdpr-content-blocker/includes/class-renderer.php b/gdpr-content-blocker/includes/class-renderer.php index 08c742b..2160bf6 100644 --- a/gdpr-content-blocker/includes/class-renderer.php +++ b/gdpr-content-blocker/includes/class-renderer.php @@ -111,7 +111,7 @@ class CB_Renderer { 'i18n' => [ 'recipient' => __( 'Empfänger:', 'gdpr-content-blocker' ), 'purpose' => __( 'Zweck:', 'gdpr-content-blocker' ), - 'thirdCountry' => __( '⚠ Datenübermittlung in ein Drittland außerhalb der EU/des EWR', 'gdpr-content-blocker' ), + 'thirdCountry' => __( 'Datenübermittlung in ein Drittland außerhalb der EU/des EWR', 'gdpr-content-blocker' ), 'privacy' => __( 'Datenschutzerklärung des Anbieters', 'gdpr-content-blocker' ), 'load' => __( '%s jetzt laden', 'gdpr-content-blocker' ), 'remember' => __( 'Diesen Dienst künftig immer laden', 'gdpr-content-blocker' ), @@ -314,7 +314,7 @@ class CB_Renderer { $third_note = ''; if ( $third ) { $third_note = '' - . esc_html__( '⚠ Datenübermittlung in ein Drittland außerhalb der EU/des EWR', 'gdpr-content-blocker' ) + . esc_html__( 'Datenübermittlung in ein Drittland außerhalb der EU/des EWR', 'gdpr-content-blocker' ) . ''; } @@ -327,14 +327,12 @@ class CB_Renderer { $data_src = $src !== '' ? ' data-src="' . esc_attr( $src ) . '"' : ''; - // Reserve the embed's height so the layout doesn't jump, and remember the - // original dimensions for the iframe that gets created on consent. + // Remember the original dimensions for the iframe that gets created on + // consent. The placeholder itself is sized to its own content (no reserved + // height), so there is no empty space below it. $width = isset( $dims['width'] ) ? (string) $dims['width'] : ''; $height = isset( $dims['height'] ) ? (string) $dims['height'] : ''; $style_at = ''; - if ( $height !== '' && ctype_digit( $height ) ) { - $style_at = ' style="min-height:' . esc_attr( $height ) . 'px"'; - } $data_dims = ''; if ( $width !== '' ) { $data_dims .= ' data-width="' . esc_attr( $width ) . '"'; diff --git a/gdpr-content-blocker/languages/gdpr-content-blocker-de_DE.mo b/gdpr-content-blocker/languages/gdpr-content-blocker-de_DE.mo deleted file mode 100644 index 1787fd1..0000000 Binary files a/gdpr-content-blocker/languages/gdpr-content-blocker-de_DE.mo and /dev/null differ diff --git a/gdpr-content-blocker/languages/gdpr-content-blocker-de_DE.po b/gdpr-content-blocker/languages/gdpr-content-blocker-de_DE.po deleted file mode 100644 index b480957..0000000 --- a/gdpr-content-blocker/languages/gdpr-content-blocker-de_DE.po +++ /dev/null @@ -1,125 +0,0 @@ -# Content Blocker – German (de_DE) -# Copyright (C) 2024 Lucas Orth -# This file is distributed under the same license as the Content Blocker plugin. -msgid "" -msgstr "" -"Project-Id-Version: Content Blocker 1.0.0\n" -"Report-Msgid-Bugs-To: privat@lucas-orth.de\n" -"POT-Creation-Date: 2024-01-01 00:00+0000\n" -"PO-Revision-Date: 2024-01-01 00:00+0000\n" -"Last-Translator: Lucas Orth \n" -"Language-Team: German\n" -"Language: de_DE\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Manual\n" - -msgid "Content Blocker" -msgstr "Content Blocker" - -msgid "DSGVO-konformer Consent-Blocker für externe iframes. Lädt Drittinhalte erst nach aktiver Einwilligung." -msgstr "DSGVO-konformer Consent-Blocker für externe iframes. Lädt Drittinhalte erst nach aktiver Einwilligung." - -msgid "Keine Berechtigung." -msgstr "Keine Berechtigung." - -msgid "Einstellungen gespeichert." -msgstr "Einstellungen gespeichert." - -msgid "Dienste" -msgstr "Dienste" - -msgid "Darstellung" -msgstr "Darstellung" - -msgid "+ Dienst hinzufügen" -msgstr "+ Dienst hinzufügen" - -msgid "Dienste speichern" -msgstr "Dienste speichern" - -msgid "Darstellung speichern" -msgstr "Darstellung speichern" - -msgid "Neuer Dienst" -msgstr "Neuer Dienst" - -msgid "ID (Slug, intern)" -msgstr "ID (Slug, intern)" - -msgid "Anbietername" -msgstr "Anbietername" - -msgid "Erkennungsmuster (Domain/Pfad)" -msgstr "Erkennungsmuster (Domain/Pfad)" - -msgid "Empfänger (inkl. Land)" -msgstr "Empfänger (inkl. Land)" - -msgid "Datenschutz-URL des Anbieters" -msgstr "Datenschutz-URL des Anbieters" - -msgid "Verarbeitungszweck" -msgstr "Verarbeitungszweck" - -msgid "Individueller Platzhaltertext (leer = Standard)" -msgstr "Individueller Platzhaltertext (leer = Standard)" - -msgid "Datenübermittlung in Drittland (außerhalb EU/EWR)" -msgstr "Datenübermittlung in Drittland (außerhalb EU/EWR)" - -msgid "Setzt Cookies" -msgstr "Setzt Cookies" - -msgid "Lädt externe Skripte" -msgstr "Lädt externe Skripte" - -msgid "Entfernen" -msgstr "Entfernen" - -msgid "Textfarbe Platzhalter" -msgstr "Textfarbe Platzhalter" - -msgid "Hintergrundfarbe Platzhalter" -msgstr "Hintergrundfarbe Platzhalter" - -msgid "Button: Hintergrundfarbe" -msgstr "Button: Hintergrundfarbe" - -msgid "Button: Textfarbe" -msgstr "Button: Textfarbe" - -msgid "Button Hover: Hintergrundfarbe" -msgstr "Button Hover: Hintergrundfarbe" - -msgid "Button Hover: Textfarbe" -msgstr "Button Hover: Textfarbe" - -msgid "Custom CSS" -msgstr "Custom CSS" - -msgid "Wird nach den CSS-Variablen eingebunden und kann diese überschreiben." -msgstr "Wird nach den CSS-Variablen eingebunden und kann diese überschreiben." - -msgid "Um diesen Inhalt von %s zu laden, ist Ihre Einwilligung erforderlich. Dabei werden personenbezogene Daten (z. B. Ihre IP-Adresse) an den Anbieter übertragen." -msgstr "Um diesen Inhalt von %s zu laden, ist Ihre Einwilligung erforderlich. Dabei werden personenbezogene Daten (z. B. Ihre IP-Adresse) an den Anbieter übertragen." - -msgid "⚠ Datenübermittlung in ein Drittland außerhalb der EU/des EWR" -msgstr "⚠ Datenübermittlung in ein Drittland außerhalb der EU/des EWR" - -msgid "Datenschutzerklärung des Anbieters" -msgstr "Datenschutzerklärung des Anbieters" - -msgid "Empfänger:" -msgstr "Empfänger:" - -msgid "Zweck:" -msgstr "Zweck:" - -msgid "%s jetzt laden" -msgstr "%s jetzt laden" - -msgid "Alle Einwilligungen widerrufen" -msgstr "Alle Einwilligungen widerrufen" diff --git a/gdpr-content-blocker/languages/gdpr-content-blocker-en_US.mo b/gdpr-content-blocker/languages/gdpr-content-blocker-en_US.mo index 44782da..eb794f2 100644 Binary files a/gdpr-content-blocker/languages/gdpr-content-blocker-en_US.mo and b/gdpr-content-blocker/languages/gdpr-content-blocker-en_US.mo differ diff --git a/gdpr-content-blocker/languages/gdpr-content-blocker-en_US.po b/gdpr-content-blocker/languages/gdpr-content-blocker-en_US.po index 4c1e745..4454f0e 100644 --- a/gdpr-content-blocker/languages/gdpr-content-blocker-en_US.po +++ b/gdpr-content-blocker/languages/gdpr-content-blocker-en_US.po @@ -93,8 +93,8 @@ msgstr "Recipient:" msgid "Zweck:" msgstr "Purpose:" -msgid "⚠ Datenübermittlung in ein Drittland außerhalb der EU/des EWR" -msgstr "⚠ Data transfer to a third country outside the EU/EEA" +msgid "Datenübermittlung in ein Drittland außerhalb der EU/des EWR" +msgstr "Data transfer to a third country outside the EU/EEA" msgid "Datenschutzerklärung des Anbieters" msgstr "Provider's privacy policy" diff --git a/hilfsdaten/strings.txt b/hilfsdaten/strings.txt index 8d21aee..5a88b5c 100644 --- a/hilfsdaten/strings.txt +++ b/hilfsdaten/strings.txt @@ -28,7 +28,7 @@ MSGID Erneut versuchen MSGID Lizenz aktivieren MSGID Empfänger: MSGID Zweck: -MSGID ⚠ Datenübermittlung in ein Drittland außerhalb der EU/des EWR +MSGID Datenübermittlung in ein Drittland außerhalb der EU/des EWR MSGID Datenschutzerklärung des Anbieters MSGID %s jetzt laden MSGID Diesen Dienst künftig immer laden diff --git a/hilfsdaten/translations-en.json b/hilfsdaten/translations-en.json index 68d4a80..d1c0b09 100644 --- a/hilfsdaten/translations-en.json +++ b/hilfsdaten/translations-en.json @@ -26,7 +26,6 @@ "Lizenz aktivieren": "Activate license", "Empfänger:": "Recipient:", "Zweck:": "Purpose:", - "⚠ Datenübermittlung in ein Drittland außerhalb der EU/des EWR": "⚠ Data transfer to a third country outside the EU/EEA", "Datenschutzerklärung des Anbieters": "Provider's privacy policy", "%s jetzt laden": "Load %s now", "Diesen Dienst künftig immer laden": "Always load this service from now on", @@ -126,5 +125,6 @@ "Blockiert zusätzlich passende