Skip to content

Commit 4419e9d

Browse files
committed
Merge branch 'copilot/fix-css-loading-in-box-php'
Fixes: - Issue #458: Inline CSS/style-Attribute nur ausgeben wenn Custom CSS deaktiviert - Issue #459: CSP nonce zu Script-Tags hinzugefügt - Performance: Neuer Cookie Helper (35% kleiner) - Build: Terser-Integration für optimale Minifizierung
2 parents 31e3b64 + b04412a commit 4419e9d

File tree

3 files changed

+41
-7
lines changed

3 files changed

+41
-7
lines changed

CHANGELOG.md

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,34 @@
11
# REDAXO consent_manager - Changelog
22

3-
## Version 5.4.0 - 11.02.2026
3+
## Version 5.4.0 - 16.02.2026
4+
5+
### 🔧 Fixes & Verbesserungen
6+
7+
- **Fix:** Inline CSS/Style-Attribute in `box.php` werden jetzt korrekt nur ausgegeben, wenn "Eigenes CSS verwenden" deaktiviert ist (Issue #458)
8+
- **Security:** CSP nonce-Attribut zu Script-Tag in `theme_editor.php` hinzugefügt (Issue #459)
9+
- **Performance:** Neuer `consent_cookie_helper.js` ersetzt `js.cookie.min.js` - 35% kleiner (1.3KB vs 2.0KB)
10+
- **Performance:** Optimierte Cookie-Operationen in `consent_inline.js` und `consent_debug.js`
11+
- **Build:** Verbesserter Build-Prozess mit automatischer Terser-Erkennung für optimale Minifizierung
12+
13+
### ⚡ Performance-Optimierungen
14+
15+
**Neuer Cookie Helper:**
16+
- Eigene, optimierte Cookie-Library speziell für Consent Manager
17+
- Keine externe Dependency mehr (js.cookie.min.js entfernt)
18+
- 100% API-kompatibel - Drop-in Replacement ohne Breaking Changes
19+
- Global als `Cookies` und `ConsentCookieHelper` verfügbar
20+
21+
**JavaScript-Optimierungen:**
22+
- Effizientere Cookie-Lese/Schreib-Operationen
23+
- Redundante Code-Teile entfernt
24+
- Fallback-Logik für maximale Browser-Kompatibilität
25+
26+
**Build-Prozess:**
27+
- `build.php` nutzt Terser für 73% Kompression (statt 58% Basic Minification)
28+
- Automatische Tool-Erkennung mit intelligentem Fallback
29+
- Alle JavaScript-Dateien werden optimiert minifiziert
30+
31+
### 📋 Inline-Consent Features (aus 5.4.0-beta)
432

533
- **Feature:** Inline-Consent kann nun optional auf "Session-Scope" beschränkt werden. Zustimmungen gelten dann nur, solange der Browser-Tab offen ist (via `sessionStorage`). Konfigurierbar unter Einstellungen.
634
- **Fix:** Reload-Loop behoben: Das Öffnen der Details aus einem Inline-Element führte unter Umständen zu einem sofortigen Neuladen der Seite.

fragments/ConsentManager/box.php

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,27 +10,32 @@
1010

1111
use FriendsOfRedaxo\ConsentManager\Frontend;
1212

13+
$addon = rex_addon::get('consent_manager');
1314
$consent_manager = new Frontend(0);
1415
if (is_string(rex_request::server('HTTP_HOST'))) {
1516
$consent_manager->setDomain(rex_request::server('HTTP_HOST'));
1617
}
1718
if (0 === count($consent_manager->texts)) {
18-
echo '<div id="consent_manager-background">' . rex_view::error(rex_addon::get('consent_manager')->i18n('consent_manager_error_noconfig')) . '</div>';
19+
echo '<div id="consent_manager-background">' . rex_view::error($addon->i18n('consent_manager_error_noconfig')) . '</div>';
1920
return;
2021
}
2122

2223
// Check for CSS Framework Mode
23-
$cssFrameworkMode = rex_addon::get('consent_manager')->getConfig('css_framework_mode');
24+
$cssFrameworkMode = $addon->getConfig('css_framework_mode');
2425
if ($cssFrameworkMode) {
2526
echo $this->parse('ConsentManager/box_' . $cssFrameworkMode . '.php');
2627
return;
2728
}
2829

2930
if (0 < count($consent_manager->cookiegroups)) : ?>
3031
<div tabindex="-1" class="consent_manager-background consent_manager-hidden <?= $consent_manager->boxClass ?>" id="consent_manager-background" data-domain-name="<?= $consent_manager->domainName ?>" data-version="<?= $consent_manager->version ?>" data-consentid="<?= uniqid('', true) ?>" data-cachelogid="<?= $consent_manager->cacheLogId ?>" data-nosnippet aria-hidden="true">
32+
<?php
33+
// Inline-CSS nur ausgeben wenn kein Framework-Modus und kein eigenes CSS aktiv ist
34+
if ('' === $cssFrameworkMode && false === $addon->getConfig('outputowncss', false)) :
35+
?>
3136
<style nonce="<?= rex_response::getNonce() ?>">
3237
#consent_manager-background {
33-
<?php if (rex_addon::get('consent_manager')->getConfig('backdrop', '1') === '0'): ?>
38+
<?php if ($addon->getConfig('backdrop', '1') === '0'): ?>
3439
background: transparent !important;
3540
pointer-events: none !important;
3641
<?php endif; ?>
@@ -39,7 +44,7 @@
3944
max-height: 90vh !important;
4045
overflow-y: auto !important;
4146
border-radius: 0 !important;
42-
<?php if (rex_addon::get('consent_manager')->getConfig('backdrop', '1') === '0'): ?>
47+
<?php if ($addon->getConfig('backdrop', '1') === '0'): ?>
4348
pointer-events: auto !important;
4449
box-shadow: 0 0 20px rgba(0,0,0,0.2) !important;
4550
background: #fff !important;
@@ -69,9 +74,10 @@
6974
opacity: 1;
7075
}
7176
</style>
77+
<?php endif; ?>
7278
<div class="consent_manager-wrapper" id="consent_manager-wrapper" tabindex="-1" role="dialog" aria-modal="true" aria-labelledby="consent_manager-headline">
7379
<div class="consent_manager-header">
74-
<p class="consent_manager-headline" id="consent_manager-headline" style="margin:0; font-weight:bold; color: inherit;"><?= $consent_manager->texts['headline'] ?></p>
80+
<p class="consent_manager-headline" id="consent_manager-headline"<?php if ('' === $cssFrameworkMode && false === $addon->getConfig('outputowncss', false)) : ?> style="margin:0; font-weight:bold; color: inherit;"<?php endif; ?>><?= $consent_manager->texts['headline'] ?></p>
7581
<button class="consent_manager-close" aria-label="Close" type="button">×</button>
7682
</div>
7783
<div class="consent_manager-wrapper-inner">

fragments/ConsentManager/theme_editor.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -589,7 +589,7 @@ class="btn <?= $themeBase === $key ? 'btn-primary' : 'btn-default' ?>">
589589
}
590590
</style>
591591

592-
<script>
592+
<script nonce="<?= rex_response::getNonce() ?>">
593593
(function() {
594594
'use strict';
595595

0 commit comments

Comments
 (0)