feat: pfeile statt +/-, shortcodes-tab, funktionen aus darstellung entfernt
- Ein-/Ausklappen wieder mit schwarzem Pfeil (>/v) ohne Box. - Neuer Tab Shortcodes; Darstellung listet keine Funktionen mehr. - CSS-Klassen-Referenz in den Darstellung-Tab (unter Custom CSS) verschoben. - EN-Uebersetzung (121 Strings) neu gebaut. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -28,7 +28,7 @@
|
||||
function setExpanded( box, open ) {
|
||||
$( '.cb-service-grid', box ).toggle( open );
|
||||
const $btn = $( '.cb-service-toggle', box );
|
||||
$btn.attr( 'aria-expanded', open ? 'true' : 'false' ).text( open ? '−' : '+' );
|
||||
$btn.attr( 'aria-expanded', open ? 'true' : 'false' ).text( open ? '▾' : '▸' );
|
||||
}
|
||||
function bindToggle( box ) {
|
||||
$( '.cb-service-toggle', box ).on( 'click', function () {
|
||||
|
||||
@@ -254,6 +254,9 @@ class CB_Settings {
|
||||
<a href="#cb-tab-style" class="nav-tab" data-cb-tab="style">
|
||||
<?php esc_html_e( 'Darstellung', 'gdpr-content-blocker' ); ?>
|
||||
</a>
|
||||
<a href="#cb-tab-shortcodes" class="nav-tab" data-cb-tab="shortcodes">
|
||||
<?php esc_html_e( 'Shortcodes', 'gdpr-content-blocker' ); ?>
|
||||
</a>
|
||||
<a href="#cb-tab-license" class="nav-tab" data-cb-tab="license">
|
||||
<?php esc_html_e( 'Lizenz', 'gdpr-content-blocker' ); ?>
|
||||
</a>
|
||||
@@ -321,8 +324,11 @@ class CB_Settings {
|
||||
submit_button( __( 'Darstellung speichern', 'gdpr-content-blocker' ) );
|
||||
?>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<?php self::render_usage_help(); ?>
|
||||
<!-- Shortcodes Tab -->
|
||||
<div id="cb-tab-shortcodes" class="cb-tab-content" style="display:none;">
|
||||
<?php self::render_shortcodes_help(); ?>
|
||||
</div>
|
||||
|
||||
<!-- License Tab -->
|
||||
@@ -409,21 +415,21 @@ class CB_Settings {
|
||||
.cb-admin-wrap .cb-switch input:checked + .cb-switch__slider::before {
|
||||
transform: translateX(18px);
|
||||
}
|
||||
/* expand/collapse +/- icon */
|
||||
/* expand/collapse arrow (black, no box) */
|
||||
.cb-admin-wrap .cb-service-toggle {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
font-size: 22px;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
font-size: 16px;
|
||||
line-height: 1;
|
||||
font-weight: 400;
|
||||
color: #2043B7;
|
||||
background: #f0f3fc;
|
||||
border: 1px solid #c7d2f5;
|
||||
border-radius: 6px;
|
||||
color: #1d2327;
|
||||
background: none;
|
||||
border: none;
|
||||
padding: 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
.cb-admin-wrap .cb-service-toggle:hover {
|
||||
background: #e3e9fb;
|
||||
color: #000;
|
||||
}
|
||||
/* trash remove button */
|
||||
.cb-admin-wrap .cb-remove-service {
|
||||
@@ -503,7 +509,7 @@ class CB_Settings {
|
||||
?>
|
||||
<div class="cb-service-box" data-cb-index="<?php echo $idx; ?>">
|
||||
<div class="cb-service-head">
|
||||
<button type="button" class="cb-service-toggle" aria-expanded="false" aria-label="<?php esc_attr_e( 'Details anzeigen/ausblenden', 'gdpr-content-blocker' ); ?>">+</button>
|
||||
<button type="button" class="cb-service-toggle" aria-expanded="false" aria-label="<?php esc_attr_e( 'Details anzeigen/ausblenden', 'gdpr-content-blocker' ); ?>">▸</button>
|
||||
<span class="cb-service-title"><?php echo esc_html( $headname ); ?></span>
|
||||
|
||||
<label class="cb-switch" title="<?php esc_attr_e( 'Blocker aktiv/inaktiv', 'gdpr-content-blocker' ); ?>">
|
||||
@@ -595,57 +601,36 @@ class CB_Settings {
|
||||
}
|
||||
echo '<tr><th scope="row"><label>' . esc_html__( 'Custom CSS', 'gdpr-content-blocker' ) . '</label></th>';
|
||||
echo '<td><textarea name="' . esc_attr( CB_STYLE_OPTION . '[custom_css]' ) . '" rows="8" class="large-text code">' . esc_textarea( $style['custom_css'] ) . '</textarea>';
|
||||
echo '<p class="description">' . esc_html__( 'Wird nach den CSS-Variablen eingebunden und kann diese überschreiben. Tipp: denselben Präfix verwenden, z. B. .cb-blocker .cb-blocker__button { … }', 'gdpr-content-blocker' ) . '</p></td></tr>';
|
||||
echo '<p class="description">' . esc_html__( 'Wird nach den CSS-Variablen eingebunden und kann diese überschreiben. Tipp: denselben Präfix verwenden, z. B. .cb-blocker .cb-blocker__button { … }', 'gdpr-content-blocker' ) . '</p>';
|
||||
echo '<p class="description"><strong>' . esc_html__( 'CSS-Klassen:', 'gdpr-content-blocker' ) . '</strong> '
|
||||
. '<code>.cb-blocker</code>, <code>.cb-blocker__text</code>, <code>.cb-blocker__recipient</code>, '
|
||||
. '<code>.cb-blocker__purpose</code>, <code>.cb-blocker__privacy-link</code>, '
|
||||
. '<code>.cb-blocker__button</code>, <code>.cb-revoke-link</code></p></td></tr>';
|
||||
echo '</tbody></table>';
|
||||
}
|
||||
|
||||
/**
|
||||
* Help box explaining shortcodes, revoke, auto-detection and CSS classes.
|
||||
* Shown below "Darstellung speichern".
|
||||
*/
|
||||
private static function render_usage_help(): void {
|
||||
/** "Shortcodes" tab: only the shortcodes (no feature listing). */
|
||||
private static function render_shortcodes_help(): void {
|
||||
$code = static fn( string $s ): string => '<code>' . esc_html( $s ) . '</code>';
|
||||
?>
|
||||
<hr style="margin:28px 0 18px;">
|
||||
<h2><?php esc_html_e( 'Funktionen & Shortcodes', 'gdpr-content-blocker' ); ?></h2>
|
||||
<h2><?php esc_html_e( 'Shortcodes', 'gdpr-content-blocker' ); ?></h2>
|
||||
<table class="widefat striped" style="max-width:900px;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="width:280px;vertical-align:top;"><strong><?php esc_html_e( 'Widerruf-Button (Pflicht in der Datenschutzerklärung)', 'gdpr-content-blocker' ); ?></strong><br>
|
||||
<td style="width:300px;vertical-align:top;"><strong><?php esc_html_e( 'Widerruf (Datenschutzerklärung)', 'gdpr-content-blocker' ); ?></strong><br>
|
||||
<?php echo $code( '[content_blocker_revoke]' ); ?></td>
|
||||
<td><?php esc_html_e( 'Rendert einen gut sichtbaren Link, der die Einwilligung für externe Einbettungen widerruft und die Seite neu lädt (Art. 7 Abs. 3 DSGVO). Betrifft NICHT die Cookie-Einwilligung eines separaten Cookie-Plugins. Optionen: text="…", style="link|button", note="yes|no". In die Datenschutzerklärung einfügen.', 'gdpr-content-blocker' ); ?></td>
|
||||
<td><?php esc_html_e( 'Rendert einen gut sichtbaren Link, der die Einwilligung für externe Einbettungen widerruft und die Seite neu lädt (Art. 7 Abs. 3 DSGVO). Betrifft NICHT die Cookie-Einwilligung eines separaten Cookie-Plugins. Optionen: text="…", style="link|button", note="yes|no".', 'gdpr-content-blocker' ); ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:top;"><strong><?php esc_html_e( 'Inhalt manuell blockieren', 'gdpr-content-blocker' ); ?></strong><br>
|
||||
<?php echo $code( '[content_blocker id="google-maps"]…iframe…[/content_blocker]' ); ?></td>
|
||||
<td><?php esc_html_e( 'Umschließt ein iframe und ersetzt es durch den Platzhalter des angegebenen Dienstes. Verwenden Sie den internen Namen aus dem Tab „Dienste". Ideal für Inhalte, die nicht automatisch erkannt werden (z. B. per JavaScript nachgeladene iframes).', 'gdpr-content-blocker' ); ?></td>
|
||||
<td><?php esc_html_e( 'Umschließt ein iframe und ersetzt es durch den Platzhalter des angegebenen Dienstes. Verwenden Sie den internen Namen aus dem Tab „Dienste".', 'gdpr-content-blocker' ); ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:top;"><strong><?php esc_html_e( 'Dienste-Übersicht (für die Datenschutzerklärung)', 'gdpr-content-blocker' ); ?></strong><br>
|
||||
<td style="vertical-align:top;"><strong><?php esc_html_e( 'Dienste-Übersicht (Datenschutzerklärung)', 'gdpr-content-blocker' ); ?></strong><br>
|
||||
<?php echo $code( '[content_blocker_services]' ); ?></td>
|
||||
<td><?php esc_html_e( 'Listet alle konfigurierten Dienste mit Empfänger, Drittland-Hinweis, Zweck und Datenschutz-Link auf. Ideal zum Einbinden in die Datenschutzerklärung (Art. 13 DSGVO).', 'gdpr-content-blocker' ); ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:top;"><strong><?php esc_html_e( 'Automatische Erkennung', 'gdpr-content-blocker' ); ?></strong></td>
|
||||
<td><?php esc_html_e( 'iframes im Server-HTML, deren URL auf das „Erkennungsmuster" eines Dienstes passt, werden automatisch blockiert. Greift nur bei statischem HTML – für JS-iframes den Shortcode oben nutzen.', 'gdpr-content-blocker' ); ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:top;"><strong><?php esc_html_e( 'Webseiten-Scan', 'gdpr-content-blocker' ); ?></strong></td>
|
||||
<td><?php esc_html_e( 'Im Tab „Scan" listet der Lizenzserver alle eingebundenen Drittanbieter auf. Erfordert eine aktive Lizenz.', 'gdpr-content-blocker' ); ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:top;"><strong><?php esc_html_e( 'CSS-Klassen', 'gdpr-content-blocker' ); ?></strong></td>
|
||||
<td>
|
||||
<?php echo $code( '.cb-blocker' ); ?>,
|
||||
<?php echo $code( '.cb-blocker__text' ); ?>,
|
||||
<?php echo $code( '.cb-blocker__recipient' ); ?>,
|
||||
<?php echo $code( '.cb-blocker__purpose' ); ?>,
|
||||
<?php echo $code( '.cb-blocker__privacy-link' ); ?>,
|
||||
<?php echo $code( '.cb-blocker__button' ); ?>,
|
||||
<?php echo $code( '.cb-revoke-btn' ); ?>
|
||||
<p class="description" style="margin-top:6px;"><?php esc_html_e( 'Eigene Regeln im Custom-CSS mit Präfix .cb-blocker schreiben, damit sie das Theme überschreiben.', 'gdpr-content-blocker' ); ?></p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php
|
||||
|
||||
Binary file not shown.
@@ -78,6 +78,27 @@ msgstr "Try again"
|
||||
msgid "Lizenz aktivieren"
|
||||
msgstr "Activate license"
|
||||
|
||||
msgid "Empfänger:"
|
||||
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 "Datenschutzerklärung des Anbieters"
|
||||
msgstr "Provider's privacy policy"
|
||||
|
||||
msgid "%s jetzt laden"
|
||||
msgstr "Load %s now"
|
||||
|
||||
msgid "Diesen Dienst künftig immer laden"
|
||||
msgstr "Always load this service from now on"
|
||||
|
||||
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 "Loading this content from %s requires your consent. Personal data (e.g. your IP address) will be transmitted to the provider."
|
||||
|
||||
msgid "Einwilligung für externe Inhalte widerrufen"
|
||||
msgstr "Withdraw consent for external content"
|
||||
|
||||
@@ -105,27 +126,6 @@ msgstr "No"
|
||||
msgid "Datenschutz"
|
||||
msgstr "Privacy policy"
|
||||
|
||||
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 "Loading this content from %s requires your consent. Personal data (e.g. your IP address) will be transmitted to the provider."
|
||||
|
||||
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"
|
||||
|
||||
msgid "Empfänger:"
|
||||
msgstr "Recipient:"
|
||||
|
||||
msgid "Zweck:"
|
||||
msgstr "Purpose:"
|
||||
|
||||
msgid "%s jetzt laden"
|
||||
msgstr "Load %s now"
|
||||
|
||||
msgid "Diesen Dienst künftig immer laden"
|
||||
msgstr "Always load this service from now on"
|
||||
|
||||
msgid "GDPR Content Blocker"
|
||||
msgstr "GDPR Content Blocker"
|
||||
|
||||
@@ -213,6 +213,9 @@ msgstr "Scan"
|
||||
msgid "Darstellung"
|
||||
msgstr "Appearance"
|
||||
|
||||
msgid "Shortcodes"
|
||||
msgstr "Shortcodes"
|
||||
|
||||
msgid "Lizenz"
|
||||
msgstr "License"
|
||||
|
||||
@@ -300,45 +303,27 @@ msgstr "Custom CSS"
|
||||
msgid "Wird nach den CSS-Variablen eingebunden und kann diese überschreiben. Tipp: denselben Präfix verwenden, z. B. .cb-blocker .cb-blocker__button { … }"
|
||||
msgstr "Loaded after the CSS variables and can override them. Tip: use the same prefix, e.g. .cb-blocker .cb-blocker__button { … }"
|
||||
|
||||
msgid "Funktionen & Shortcodes"
|
||||
msgstr "Features & shortcodes"
|
||||
msgid "CSS-Klassen:"
|
||||
msgstr "CSS classes:"
|
||||
|
||||
msgid "Widerruf-Button (Pflicht in der Datenschutzerklärung)"
|
||||
msgstr "Withdrawal link (required in the privacy policy)"
|
||||
msgid "Widerruf (Datenschutzerklärung)"
|
||||
msgstr "Withdrawal (privacy policy)"
|
||||
|
||||
msgid "Rendert einen gut sichtbaren Link, der die Einwilligung für externe Einbettungen widerruft und die Seite neu lädt (Art. 7 Abs. 3 DSGVO). Betrifft NICHT die Cookie-Einwilligung eines separaten Cookie-Plugins. Optionen: text=\"…\", style=\"link|button\", note=\"yes|no\". In die Datenschutzerklärung einfügen."
|
||||
msgstr "Renders a clearly visible link that withdraws consent for external embeds and reloads the page (Art. 7(3) GDPR). Does NOT affect the cookie consent of a separate cookie plugin. Options: text=\"…\", style=\"link|button\", note=\"yes|no\". Add it to your privacy policy."
|
||||
msgid "Rendert einen gut sichtbaren Link, der die Einwilligung für externe Einbettungen widerruft und die Seite neu lädt (Art. 7 Abs. 3 DSGVO). Betrifft NICHT die Cookie-Einwilligung eines separaten Cookie-Plugins. Optionen: text=\"…\", style=\"link|button\", note=\"yes|no\"."
|
||||
msgstr "Renders a clearly visible link that withdraws consent for external embeds and reloads the page (Art. 7(3) GDPR). Does NOT affect the cookie consent of a separate cookie plugin. Options: text=\"…\", style=\"link|button\", note=\"yes|no\"."
|
||||
|
||||
msgid "Inhalt manuell blockieren"
|
||||
msgstr "Block content manually"
|
||||
|
||||
msgid "Umschließt ein iframe und ersetzt es durch den Platzhalter des angegebenen Dienstes. Verwenden Sie den internen Namen aus dem Tab „Dienste\". Ideal für Inhalte, die nicht automatisch erkannt werden (z. B. per JavaScript nachgeladene iframes)."
|
||||
msgstr "Wraps an iframe and replaces it with the placeholder of the given service. Use the internal name from the \"Services\" tab. Ideal for content that isn't detected automatically (e.g. iframes loaded via JavaScript)."
|
||||
msgid "Umschließt ein iframe und ersetzt es durch den Platzhalter des angegebenen Dienstes. Verwenden Sie den internen Namen aus dem Tab „Dienste\"."
|
||||
msgstr "Wraps an iframe and replaces it with the placeholder of the given service. Use the internal name from the \"Services\" tab."
|
||||
|
||||
msgid "Dienste-Übersicht (für die Datenschutzerklärung)"
|
||||
msgstr "Services overview (for the privacy policy)"
|
||||
msgid "Dienste-Übersicht (Datenschutzerklärung)"
|
||||
msgstr "Services overview (privacy policy)"
|
||||
|
||||
msgid "Listet alle konfigurierten Dienste mit Empfänger, Drittland-Hinweis, Zweck und Datenschutz-Link auf. Ideal zum Einbinden in die Datenschutzerklärung (Art. 13 DSGVO)."
|
||||
msgstr "Lists all configured services with recipient, third-country note, purpose and privacy link. Ideal for inclusion in your privacy policy (Art. 13 GDPR)."
|
||||
|
||||
msgid "Automatische Erkennung"
|
||||
msgstr "Automatic detection"
|
||||
|
||||
msgid "iframes im Server-HTML, deren URL auf das „Erkennungsmuster\" eines Dienstes passt, werden automatisch blockiert. Greift nur bei statischem HTML – für JS-iframes den Shortcode oben nutzen."
|
||||
msgstr "iframes in the server HTML whose URL matches a service's \"detection pattern\" are blocked automatically. Works only for static HTML — for JS-injected iframes use the shortcode above."
|
||||
|
||||
msgid "Webseiten-Scan"
|
||||
msgstr "Website scan"
|
||||
|
||||
msgid "Im Tab „Scan\" listet der Lizenzserver alle eingebundenen Drittanbieter auf. Erfordert eine aktive Lizenz."
|
||||
msgstr "In the \"Scan\" tab the license server lists all embedded third parties. Requires an active license."
|
||||
|
||||
msgid "CSS-Klassen"
|
||||
msgstr "CSS classes"
|
||||
|
||||
msgid "Eigene Regeln im Custom-CSS mit Präfix .cb-blocker schreiben, damit sie das Theme überschreiben."
|
||||
msgstr "Write your own rules in Custom CSS with the .cb-blocker prefix so they override the theme."
|
||||
|
||||
msgid "Version %s"
|
||||
msgstr "Version %s"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user