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