diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e425be..e26fc98 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # REDAXO consent_manager - Changelog -## Version 4.0.0beta4 – 01.01.2023 +## Version 4.0.0beta5 – 13.01.2023 ### Breaking Changes @@ -9,11 +9,18 @@ * Buttons statt Links für die Buttons und den Close-Button * Neuer Button "Alles ablehnen" (@thorol) * Tabindex(e) hinzugefügt - * CSS angepasst (scss/consent_manager_frontend.scss) - * Browser-Default-Checkboxen ohne SchnickSchnack (nur greyscale, und mit scale vergrössert), dadurch sind die Checkboxen auch per Tastatur erreichbar + * SCSS angepasst, Variablen hinzugefügt und Style vereinfacht (scss/consent_manager_frontend.scss) + * Browser-Default-Checkboxen ohne SchnickSchnack (nur greyscale/hue-rotate, und mit scale vergrössert), dadurch sind die Checkboxen auch per Tastatur erreichbar ### Features +* Themes sind jetzt möglich, SCSS mit Variablen, 5 Standard-Themes sind beim Addon dabei, Theme-Vorschau im Backend + * Standard Theme Light + * Standard Theme Light Bottom-Bar + * Standard Theme Light Bottom-Right + * Standard Theme Dark + * Olien's Dark Theme von @olien +* Eigene Themes können im project-Addon im Ordner **consent_manager_themes** gespeichert werden * CHANGELOG.md hinzugefügt, Anzeige im Backend (package.yml) * Host-Validation angepasst (consent_manager_rex_form::validateHostname) * JavaScript-Funktion **consent_manager_showBox** zum anzeigen der Consent-Box (assets/consent_manager_frontend.js) #230 @@ -29,7 +36,8 @@ * Update js.cookie-3.0.1.min.js * Reload der Seite kann erzwungen werden **REX_CONSENT_MANAGER[forceReload=1]** * In der Übersicht der Gruppen eine Warning ausgeben wenn noch keine Domain zugeordnet wurde #257 -* Code-Quality (rexstan) Extensions: REDAXO SuperGlobals, Bleeding-Edge, Strict-Mode, Deprecation Warnings, PHPUnit, phpstan-dba, report-mixed, dead code +* Code-Quality (rexstan) Level 9, Extensions: REDAXO SuperGlobals, Bleeding-Edge, Strict-Mode, Deprecation Warnings, PHPUnit, phpstan-dba, report-mixed, dead code +* added .php-cs-fixer.dist.php, Code überarbeitet mit Coding Standards ### Bugfixes diff --git a/README.md b/README.md index e42ff5e..213e41d 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,19 @@ -# Consent-Manager 3.0 für REDAXO CMS +# Consent-Manager 4.0 für das REDAXO CMS ![logo](https://github.com/FriendsOfREDAXO/consent_manager/blob/assets/consent_manager-logo.png?raw=true) Stellt ein Opt-In Cookie-Banner zur Verfügung. Cookies können in selbst definierte Gruppen zusammengefasst werden. Der Website Besucher bekommt eine Cookie-Box angezeigt in der er allen oder einzelnen Gruppen zustimmen kann. Es existiert eine Gruppe **Notwendig**, die nicht deaktiviert werden kann. Die Cookie-Box kann erneut (zum Beispiel über einen Link im Impressum) aufgerufen werden, um die Auswahl nachträglich zu ändern. Alle Texte sowie die Gestaltung der Cookie-Box sind anpassbar. -![Screenshot](https://github.com/FriendsOfREDAXO/consent_manager/blob/assets/consent_manager.jpg?raw=true) +![Screenshot](https://github.com/FriendsOfREDAXO/consent_manager/blob/assets/consent_manager.png?raw=true) ## Kurzanleitung -1. AddOn consent_manager über den Installer herunterladen und installieren. +1. AddOn `consent_manager` über den Installer herunterladen und installieren. 2. [Domains hinterlegen](#domains-hinzufuegen) 3. [Cookies anlegen](#cookies-anlegen) 4. [Cookie-Gruppen anlegen](#cookie-gruppen-anlegen) 5. Der jeweiligen Domain-Gruppe die gewünschten Domains und Cookies zuordnen und JS Scripte hinterlegen. -6. `REX_CONSENT_MANAGER[]` in den `head`-Bereich in alle gewünschten [Templates einfügen](#in-template-einfuegen), bzw. `echo consent_manager_frontend::getFragment(false, 'consent_manager_box_cssjs.php');`, wenn via PHP. +6. `REX_CONSENT_MANAGER[forceCache=0 forceReload=0]` in den `head`-Bereich in alle gewünschten [Templates einfügen](#in-template-einfuegen), bzw.
`echo consent_manager_frontend::getFragment(false, false, 'consent_manager_box_cssjs.php');`,
wenn via PHP. 7. Alle weiteren Einstellungen sind optional. > **Hinweis:** Wird keine Cookie-Box angezeigt Punkte 2 bis 6 nochmal checken ... und/oder siehe [Fehlerbehebung](#fehlerbehebung) @@ -131,7 +131,7 @@ REX_CONSENT_MANAGER[] ... ... -`echo consent_manager_frontend::getFragment(false, 'consent_manager_box_cssjs.php');` + ... ... @@ -259,6 +259,8 @@ Verfügt die Website über mehrere Sprachen oder wird eine neue Sprache angelegt Das Design der Cookie-Box kann nach Belieben angepasst werden. Der HTML-Code der Cookie Box liegt im Fragment `/redaxo/src/addons/consent_manager/fragments/consent_manager_box.php`. Änderungen in dieser Datei werden aber beim nächsten Update überschrieben. Deshalb ist es empfehlenswert, das Fragment zu kopieren und zum Beispiel im Project oder Theme AddOn abzulegen 'theme/private/fragments/consent_manager_box.php' und die Änderungen hier vorzunehmen. Anschließend die Datei `consent_manager_frontend.css` an einen beliebigen Ort kopieren, anpassen und im eigenen Template/CSS einbinden (Eigenes CSS verwenden in den Einstellungen aktivieren!). +> **Hinweis:** Das Design kann auch über ein eigenes Theme angepasst werden. Siehe unter Tipps & Tricks Eigene Themes für die Consent-Box weiter unten. + ### Ausgabe-Einstellungen Über den Menüpunkt **Einstellungen** kann die Ausgabe für CSS und JavaScript im Frontend gesteuert werden. @@ -267,8 +269,8 @@ Standardmäßig wird auf jeder Seite das benötigte JavaScript und die CSS-Datei Der Platzhalter `REX_CONSENT_MANAGER[]` im Template wird durch folgenden Code ersetzt. ```html - - + + ``` Sind im eigenen Frontend-Theme Styles für die Consent-Box vorhanden kann hier die Ausgabe der CSS-Datei `consent_manager_frontend.css` durch aktivieren der Einstellung **Eigenes CSS verwenden** unterdrückt werden. Es wird dann nur die JavaScript-Zeile ausgegeben. @@ -295,6 +297,45 @@ Die Cookie-Box kann auch durch einen JavaScript-Aufruf geöffnet werden `consent ``` +### Consent mit JavaScript abfragen + +Um mit JavaScript einen Consent abzufragen die Funktion `consent_manager_hasconsent()` verwenden. + +```js + +``` + +### Consent mit PHP abfragen + +Um mit PHP einen Consent abzufragen die Klassen-Funktion `consent_manager_util::has_consent()` verwenden. + +```php + +``` + +### Eigene Themes für die Consent-Box + +Um eigene Themes zu erstellen am besten ein bereits bestehendes Theme kopieren (im AddOn-Verzeichnis `/consent_manager/scss/`) +und im Project-AddOn im Verzeichnis `/project/consent_manager_themes/` ablegen. +Hier dann die gewünschten Anpassungen vornehmen und dann unter **Themes** in der Theme-Vorschau das eigene Theme **anwenden**. + +### Seite ohne Consent-Box + +Um z.B. einen Link zu teilen bei dem keine Consent-Box erscheinen soll kann in den Einstellungen ein **TOKEN** hinterlegt werden. +An die URL dann einfach `skip_consent=MEINTOKEN` anhängen. + +z.B.: `https://meinedomain.de/SeiteOhneToken.html?skip_consent=MEINTOKEN` + ### Scripte mit PHP laden Neben der Einbindung der Scripte direkt über das Addon lassen sich Scripte auch per PHP einbinden. Somit kann man (am Beispiel GoogleMaps) eine Meldung ausgeben, dass bestimmte Cookies akzeptiert werden müssen um die Karte zu laden. @@ -356,7 +397,6 @@ MIT Lizenz, siehe [LICENSE.md](https://github.com/FriendsOfREDAXO/consent_manage ### Autor **Friends Of REDAXO** -[http://www.redaxo.org](http://www.redaxo.org) [https://github.com/FriendsOfREDAXO](https://github.com/FriendsOfREDAXO) **Projekt-Lead** @@ -368,4 +408,4 @@ First Release: [Ingo Winter](https://github.com/IngoWinter). [Thomas Blum](https://github.com/tbaddade/) wird eine Menge Code aus seinem [Sprog Addon](https://github.com/tbaddade/redaxo_sprog) in Consent-Manager wiederfinden. [Thomas Skerbis](https://github.com/skerbis) hat unermüdlich getestet und für die Entwicklung gespendet, [Peter Bickel](https://github.com/polarpixel) hat für die Entwicklung gespendet, -[Oliver Kreischer](https://github.com/olien) hat den Keks gebacken +[Oliver Kreischer](https://github.com/olien) hat den Keks gebacken. diff --git a/assets/consent_manager_backend.css b/assets/consent_manager_backend.css index a9ca415..f8d2bd1 100644 --- a/assets/consent_manager_backend.css +++ b/assets/consent_manager_backend.css @@ -1 +1 @@ -.consent_manager-rex-form-info{margin:-15px -15px 15px -15px;padding:5px 15px;background:#f09000;color:#fff}.consent_manager-rex-form-info i{margin-right:0.5em}.consent_manager-fake{opacity:0.6}.consent_manager-fake label{cursor:default} +.consent_manager-rex-form-info{margin:-15px -15px 15px -15px;padding:5px 15px;background:#f09000;color:#fff}.consent_manager-rex-form-info i{margin-right:0.5em}.consent_manager-fake{opacity:0.6}.consent_manager-fake label{cursor:default}ul.navbar-nav li.active{font-weight:bold}legend>span{font-size:0.7em;font-weight:normal}p.theme_description span,p.theme_selected_description span{display:inline-block;width:160px}.cm_modal-overlay{position:fixed;box-sizing:border-box;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.6);display:none;z-index:9999}.cm_modal-overlay.is-open{display:block}.cm_modal-iframe{border:0;background-color:#000;transform:scale(1, 1);width:100%;height:100%;opacity:0}.cm_modal-button-close{position:absolute;top:30px;right:30px;z-index:99999}div.thumbnail-container{width:calc(1440px * 0.20);height:calc(900px * 0.20);display:inline-block;overflow:hidden;position:relative;cursor:pointer}div.thumbnail{width:1440px;height:900px;position:relative;-ms-zoom:0.2;-moz-transform:scale(0.2);-moz-transform-origin:0 0;-o-transform:scale(0.2);-o-transform-origin:0 0;-webkit-transform:scale(0.2);-webkit-transform-origin:0 0}div.thumbnail:after{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0}div.thumbnail iframe{border:0;width:1440px;height:900px;opacity:0;transition:all 300ms ease-in-out} diff --git a/assets/consent_manager_backend.js b/assets/consent_manager_backend.js index b4b21d1..5d4f757 100644 --- a/assets/consent_manager_backend.js +++ b/assets/consent_manager_backend.js @@ -1,5 +1,28 @@ +// Show theme preview + +function consent_manager_show_preview(theme) { + $('.cm_modal-iframe').css('opacity', 0); + $('.cm_modal-iframe').attr('src', '?page=consent_manager/theme&preview=' + theme) + $('.cm_modal-iframe').on('load', function () { + $('.cm_modal-iframe').off('load'); + $('.cm_modal-overlay').addClass('is-open'); + $('.cm_modal-iframe').css('opacity', 1); + }); +} + +// Close theme preview + +function consent_manager_close_preview() { + $(document).off('keydown'); + $('.cm_modal-overlay').removeClass('is-open'); + $('.cm_modal-iframe').attr('src', 'about:blank'); + $('.cm_modal-iframe').css('opacity', 0); +} + $(document).on('rex:ready', function () { + // Search on consent logfile + function consent_manager_setsearch() { const urlParams = new URLSearchParams(window.location.search); entries = urlParams.entries(); @@ -43,4 +66,21 @@ $(document).on('rex:ready', function () { }); rex_searchfield_init("#consent_manager_log_search"); + + // Theme preview + + $('.cm_modal-button-close').on('click', function (e) { + consent_manager_close_preview(); + }); + + $('div.thumbnail-container, a.consent_manager-button-preview').on('click', function (e) { + e.preventDefault(); + consent_manager_show_preview($(this).data('theme')); + $(document).on('keydown', function (e) { + if (e.keyCode === 27) { // ESC + consent_manager_close_preview(); + } + }); + }); + }); diff --git a/assets/consent_manager_frontend.css b/assets/consent_manager_frontend.css index 776d623..f1539a5 100644 --- a/assets/consent_manager_frontend.css +++ b/assets/consent_manager_frontend.css @@ -1 +1 @@ -.consent_manager-background{position:fixed;left:0;top:0;right:0;bottom:0;background:rgba(0, 0, 0, 0.6);display:flex;flex-direction:column;justify-content:center;align-items:center;padding:1em;z-index:999999;height:100%;width:100%;overflow:hidden;box-sizing:border-box}.consent_manager-wrapper{background:#fff;position:relative;font-size:15px;width:100%;max-width:60em;max-height:100vh;overflow-y:auto;box-sizing:border-box}.consent_manager-wrapper-inner{padding:1em;position:relative}.consent_manager-hidden{display:none}.consent_manager-detail{margin-bottom:1em}.consent_manager-headline{font-weight:bold;font-size:1.2em}.consent_manager-headline span{font-weight:normal}.consent_manager-show-details{padding:0 0 1em 0}.consent_manager-show-details a{color:#999;text-decoration:none}.consent_manager-show-details a:hover{color:#444;text-decoration:none}.consent_manager-save-selection,.consent_manager-accept-all,.consent_manager-accept-none{transition:200ms ease all;background:#999;border:1px solid #444;color:#fff;padding:0.5em 2em;border-radius:0.2em;font-weight:bold;text-align:center;margin:0.5em 0;display:block}.consent_manager-save-selection:hover,.consent_manager-accept-all:hover,.consent_manager-accept-none:hover{background:#444;border-color:#444;color:#fff;text-decoration:none}.consent_manager-sitelinks a{display:inline-block;margin:0.5em 0.5em 0.5em 0;color:#999;text-decoration:none}.consent_manager-sitelinks a:hover{color:#444;text-decoration:none}.consent_manager-save-and-close{color:#999}.consent_manager-save-and-close:hover{color:#444}.consent_manager-close-box{position:absolute;cursor:pointer;right:1em;top:1em;display:block;border-radius:50% !important;border:solid 2px #666;width:30px;height:30px;line-height:28px;background-color:#666;color:#fff;font-family:Arial;font-size:18px;padding:0;margin:0}.consent_manager-close-box:hover{border-color:#444;background-color:#444;color:#fff}.consent_manager-cookiegroups{padding:1em 0}.consent_manager-cookiegroup+.consent_manager-cookiegroup-title{margin-top:1em}.consent_manager-cookiegroup-title{background-color:#d4d4d4;padding:5px 10px}.consent_manager-cookie{margin-top:0.5em;border-left:2px solid #999;padding:0.5em 0.5em 0.5em 1em;background:#f9f9f9}.consent_manager-cookie span{display:block}.consent_manager-show-details .icon-info-circled:before{color:#fff;background-color:#666;content:"i";font-family:"Serif";font-weight:bold;display:inline-block;border-radius:50% !important;line-height:1em;width:1em;height:1em;text-align:center;vertical-align:middle;margin-right:5px}a.consent_manager-close,#consent_manager-toggle-details{cursor:pointer}.consent_manager-cookiegroups label>span{cursor:pointer}.consent_manager-cookiegroups label>input[type="checkbox"]{filter:grayscale(1);transform:scale(1.5);margin:10px;cursor:pointer}.consent_manager-cookiegroups label>input[type="checkbox"]:disabled{cursor:default}@media (min-width:35em){.consent_manager-cookiegroups{display:flex;flex-wrap:wrap;justify-content:flex-end;padding-top:1em}.consent_manager-cookiegroup-checkbox{margin:0 2em 0 0}.consent_manager-show-details{text-align:right;padding:1em 2em 1em 0}.consent_manager-buttons{display:flex;justify-content:flex-end;align-items:center}.consent_manager-sitelinks{text-align:right;padding-right:1.5em}.consent_manager-sitelinks a{margin:0.5em 0 0.5em 1em}.consent_manager-save-selection,.consent_manager-accept-all,.consent_manager-accept-none{display:inline-block;margin:0 0 0 0.5em}}@media (min-width:50em){.consent_manager-wrapper-inner{padding:2em}.consent_manager-buttons-sitelinks{display:flex;justify-content:space-between;align-items:center;flex-direction:row-reverse}a.consent_manager-close-box{right:1.5em;top:1.5em}} +@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}div.consent_manager-background{position:fixed;left:0;top:0;right:0;bottom:0;background:rgba(0, 0, 0, 0.4);display:flex;flex-direction:column;justify-content:center;align-items:center;padding:1em;z-index:999999;height:100%;width:100%;overflow:hidden;box-sizing:border-box;animation:fadeIn 0.2s}div.consent_manager-wrapper{font-family:Verdana, Geneva, sans-serif;font-size:14px;line-height:1.5em;background:#fefefe;border:1px solid #cbcbcb;color:#444;position:relative;width:100%;max-width:65em;max-height:95vh;overflow-y:auto;box-sizing:border-box;animation:fadeIn 0.2s}div.consent_manager-wrapper-inner{padding:2em;position:relative}div.consent_manager-hidden{display:none}.consent_manager-close-box{position:absolute;cursor:pointer;right:1.5em;top:1em;display:block;border-radius:50% !important;border:solid 2px #666;width:30px;height:30px;line-height:28px;background-color:#666;color:#eee;font-family:Arial;font-size:18px;padding:0;margin:0;opacity:0.5;transition:0.3s ease all}.consent_manager-close-box:hover{border-color:#4d4d4d;background-color:#4d4d4d;color:white;opacity:1}div.consent_manager-wrapper .consent_manager-headline{margin:0 0 1em 0;font-weight:bold;font-size:18px;color:#666}div.consent_manager-wrapper p.consent_manager-text{margin:0 0 1.5em 0}div.consent_manager-cookiegroups{margin:0 0 1.5em 0}div.consent_manager-cookiegroup-checkbox{margin-bottom:1.5em}div.consent_manager-cookiegroups label{position:relative;font-weight:bold;font-size:15px;color:#111;cursor:pointer}div.consent_manager-cookiegroups label>span{cursor:pointer}div.consent_manager-cookiegroups label>input[type="checkbox"]{filter:grayscale(1);filter:hue-rotate(275deg);transform:scale(1.6);margin:0 0.7em 0 0.2em;cursor:pointer}.consent_manager-wrapper input[type="checkbox"]:disabled,.consent_manager-cookiegroups label>input[type="checkbox"]:disabled+*{opacity:0.7;cursor:default}div.consent_manager-show-details{padding:0 0 1.5em 0}div.consent_manager-show-details a{display:inline-block;line-height:1.2em;height:1.4em;cursor:pointer;color:#999}div.consent_manager-show-details a:hover{color:#666}div.consent_manager-show-details a.icon-info-circled:before{color:#fff;background-color:#999;opacity:0.7;content:"i";font-family:"Serif";font-weight:bold;display:inline-block;border-radius:50%;text-align:center;margin-right:7px;line-height:1.4em;height:1.4em;width:1.4em}button.consent_manager-save-selection,button.consent_manager-accept-all,button.consent_manager-accept-none{transition:0.3s ease all;background:#999;border:1px solid #999;color:#fff;padding:0.5em 2em;border-radius:3px;font-size:14px;font-weight:bold;text-align:center;display:block;min-height:3em;width:100%;margin-bottom:1em;cursor:pointer}button.consent_manager-save-selection:hover,button.consent_manager-accept-all:hover,button.consent_manager-accept-none:hover{background:#4d4d4d;border-color:#4d4d4d;color:white;text-decoration:none}div.consent_manager-sitelinks{margin:1.5em 0 0 0}div.consent_manager-sitelinks a{display:inline-block;margin:0.4em 1em 0.4em 0;color:#999;text-decoration:none;cursor:pointer}div.consent_manager-sitelinks a:hover{color:#666;text-decoration:none}div.consent_manager-wrapper div.consent_manager-detail{margin-bottom:3em}div.consent_manager-wrapper div.consent_manager-detail a{color:#999}div.consent_manager-wrapper div.consent_manager-detail a:hover{color:#666;text-decoration:none}div.consent_manager-wrapper div.consent_manager-detail div.consent_manager-cookiegroup-title{color:#666;background-color:#d4d4d4;padding:5px 11px;margin:1.5em 0 0 0}div.consent_manager-wrapper div.consent_manager-cookiegroup-description{border-left:1px solid #d4d4d4;padding:5px 10px;background:#f9f9f9}div.consent_manager-wrapper div.consent_manager-cookie{margin-top:3px;border-left:1px solid #d4d4d4;padding:5px 10px;background:#f9f9f9}div.consent_manager-wrapper div.consent_manager-cookie span{display:block;margin-top:0.5em}@media only screen and (min-width:600px){div.consent_manager-cookiegroups{padding:1em 0 0 0;display:flex;flex-wrap:wrap;justify-content:flex-end;margin-bottom:0}div.consent_manager-cookiegroup-checkbox{margin-left:1.5em;margin-bottom:1em}div.consent_manager-show-details{text-align:right;padding:1.5em 0 1.5em 0}div.consent_manager-buttons{display:flex;justify-content:flex-end;align-items:center}button.consent_manager-save-selection,button.consent_manager-accept-all,button.consent_manager-accept-none{display:inline-block;margin:0 0 0 0.5em;width:auto}div.consent_manager-sitelinks{margin:0 0 0 0}div.consent_manager-buttons-sitelinks{display:flex;justify-content:space-between;align-items:center;flex-direction:row-reverse}} diff --git a/assets/consent_manager_frontend.js b/assets/consent_manager_frontend.js index 6021727..fead998 100644 --- a/assets/consent_manager_frontend.js +++ b/assets/consent_manager_frontend.js @@ -82,6 +82,10 @@ } else if (el.classList.contains('consent_manager-accept-none')) { deleteCookies(); saveConsent('none'); + } else if (el.classList.contains('consent_manager-close')) { + if (!document.getElementById('consent_manager-detail').classList.contains('consent_manager-hidden')) { + document.getElementById('consent_manager-detail').classList.toggle('consent_manager-hidden'); + } } if (consent_manager_parameters.hidebodyscrollbar) { document.querySelector('body').style.overflow = 'auto'; @@ -90,15 +94,19 @@ }); }); - document.getElementById('consent_manager-toggle-details').addEventListener('click', function () { - document.getElementById('consent_manager-detail').classList.toggle('consent_manager-hidden'); - }); - - document.getElementById('consent_manager-toggle-details').addEventListener('keydown', function (event) { - if (event.key == 'Enter') { + if (document.getElementById('consent_manager-toggle-details')) { + document.getElementById('consent_manager-toggle-details').addEventListener('click', function () { document.getElementById('consent_manager-detail').classList.toggle('consent_manager-hidden'); - } - }); + }); + } + + if (document.getElementById('consent_manager-toggle-details')) { + document.getElementById('consent_manager-toggle-details').addEventListener('keydown', function (event) { + if (event.key == 'Enter') { + document.getElementById('consent_manager-detail').classList.toggle('consent_manager-hidden'); + } + }); + } document.querySelectorAll('.consent_manager-show-box, .consent_manager-show-box-reload').forEach(function (el) { el.addEventListener('click', function () { @@ -203,7 +211,9 @@ document.querySelector('body').style.overflow = 'hidden'; } document.getElementById('consent_manager-background').classList.remove('consent_manager-hidden'); - document.getElementById('consent_manager-save-selection').focus(); + if (document.getElementById('consent_manager-save-selection')) { + document.getElementById('consent_manager-save-selection').focus(); + } } })(); @@ -233,7 +243,9 @@ function consent_manager_showBox() { document.querySelector('body').style.overflow = 'hidden'; } document.getElementById('consent_manager-background').classList.remove('consent_manager-hidden'); - document.getElementById('consent_manager-save-selection').focus(); + if (document.getElementById('consent_manager-save-selection')) { + document.getElementById('consent_manager-save-selection').focus(); + } } function consent_manager_hasconsent(id) { diff --git a/assets/consent_manager_frontend_dark.css b/assets/consent_manager_frontend_dark.css new file mode 100644 index 0000000..386ac2c --- /dev/null +++ b/assets/consent_manager_frontend_dark.css @@ -0,0 +1 @@ +@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}div.consent_manager-background{position:fixed;left:0;top:0;right:0;bottom:0;background:rgba(0, 0, 0, 0.6);display:flex;flex-direction:column;justify-content:center;align-items:center;padding:1em;z-index:999999;height:100%;width:100%;overflow:hidden;box-sizing:border-box;animation:fadeIn 0.2s}div.consent_manager-wrapper{font-family:Verdana, Geneva, sans-serif;font-size:14px;line-height:1.5em;background:#161a1c;border:1px solid #434f55;color:#b3bfc5;position:relative;width:100%;max-width:65em;max-height:95vh;overflow-y:auto;box-sizing:border-box;animation:fadeIn 0.2s}div.consent_manager-wrapper-inner{padding:2em;position:relative}div.consent_manager-hidden{display:none}.consent_manager-close-box{position:absolute;cursor:pointer;right:1.5em;top:1em;display:block;border-radius:50% !important;border:solid 2px #33383c;width:30px;height:30px;line-height:28px;background-color:#33383c;color:#d8e5ea;font-family:Arial;font-size:18px;padding:0;margin:0;opacity:0.5;transition:0.3s ease all}.consent_manager-close-box:hover{border-color:#4a5258;background-color:#4a5258;color:#f9fbfc;opacity:1}div.consent_manager-wrapper .consent_manager-headline{margin:0 0 1em 0;font-weight:bold;font-size:18px;color:#d8e5ea}div.consent_manager-wrapper p.consent_manager-text{margin:0 0 1.5em 0}div.consent_manager-cookiegroups{margin:0 0 1.5em 0}div.consent_manager-cookiegroup-checkbox{margin-bottom:1.5em}div.consent_manager-cookiegroups label{position:relative;font-weight:bold;font-size:15px;color:#d8e5ea;cursor:pointer}div.consent_manager-cookiegroups label>span{cursor:pointer}div.consent_manager-cookiegroups label>input[type="checkbox"]{filter:grayscale(1);filter:hue-rotate(225deg);transform:scale(1.6);margin:0 0.7em 0 0.2em;cursor:pointer}.consent_manager-wrapper input[type="checkbox"]:disabled,.consent_manager-cookiegroups label>input[type="checkbox"]:disabled+*{opacity:0.7;cursor:default}div.consent_manager-show-details{padding:0 0 1.5em 0}div.consent_manager-show-details a{display:inline-block;line-height:1.2em;height:1.4em;cursor:pointer;color:#a6c4dd}div.consent_manager-show-details a:hover{color:#81accf}div.consent_manager-show-details a.icon-info-circled:before{color:#161a1c;background-color:#a6c4dd;opacity:0.7;content:"i";font-family:"Serif";font-weight:bold;display:inline-block;border-radius:50%;text-align:center;margin-right:7px;line-height:1.4em;height:1.4em;width:1.4em}button.consent_manager-save-selection,button.consent_manager-accept-all,button.consent_manager-accept-none{transition:0.3s ease all;background:#33383c;border:1px solid #33383c;color:#d8e5ea;padding:0.5em 2em;border-radius:3px;font-size:14px;font-weight:bold;text-align:center;display:block;min-height:3em;width:100%;margin-bottom:1em;cursor:pointer}button.consent_manager-save-selection:hover,button.consent_manager-accept-all:hover,button.consent_manager-accept-none:hover{background:#4a5258;border-color:#4a5258;color:#f9fbfc;text-decoration:none}div.consent_manager-sitelinks{margin:1.5em 0 0 0}div.consent_manager-sitelinks a{display:inline-block;margin:0.4em 1em 0.4em 0;color:#a6c4dd;text-decoration:none;cursor:pointer}div.consent_manager-sitelinks a:hover{color:#81accf;text-decoration:none}div.consent_manager-wrapper div.consent_manager-detail{margin-bottom:3em}div.consent_manager-wrapper div.consent_manager-detail a{color:#a6c4dd}div.consent_manager-wrapper div.consent_manager-detail a:hover{color:#81accf;text-decoration:none}div.consent_manager-wrapper div.consent_manager-detail div.consent_manager-cookiegroup-title{color:#d8e5ea;background-color:#2b3035;padding:5px 11px;margin:1.5em 0 0 0}div.consent_manager-wrapper div.consent_manager-cookiegroup-description{border-left:1px solid #2b3035;padding:5px 10px;background:#23272a}div.consent_manager-wrapper div.consent_manager-cookie{margin-top:3px;border-left:1px solid #2b3035;padding:5px 10px;background:#23272a}div.consent_manager-wrapper div.consent_manager-cookie span{display:block;margin-top:0.5em}@media only screen and (min-width:600px){div.consent_manager-cookiegroups{padding:1em 0 0 0;display:flex;flex-wrap:wrap;justify-content:flex-end;margin-bottom:0}div.consent_manager-cookiegroup-checkbox{margin-left:1.5em;margin-bottom:1em}div.consent_manager-show-details{text-align:right;padding:1.5em 0 1.5em 0}div.consent_manager-buttons{display:flex;justify-content:flex-end;align-items:center}button.consent_manager-save-selection,button.consent_manager-accept-all,button.consent_manager-accept-none{display:inline-block;margin:0 0 0 0.5em;width:auto}div.consent_manager-sitelinks{margin:0 0 0 0}div.consent_manager-buttons-sitelinks{display:flex;justify-content:space-between;align-items:center;flex-direction:row-reverse}} diff --git a/assets/consent_manager_frontend_theme_olien_dark.css b/assets/consent_manager_frontend_theme_olien_dark.css new file mode 100644 index 0000000..9ca5825 --- /dev/null +++ b/assets/consent_manager_frontend_theme_olien_dark.css @@ -0,0 +1 @@ +@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}div.consent_manager-background{position:fixed;left:0;top:0;right:0;bottom:0;background:rgba(0, 0, 0, 0.5);display:flex;flex-direction:column;justify-content:center;align-items:center;padding:1em;z-index:999999;height:100%;width:100%;overflow:hidden;box-sizing:border-box;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}div.consent_manager-wrapper{font-family:Verdana, Geneva, sans-serif;font-size:13px;line-height:1.65;background:#2a2a2a;border:1px solid #444;color:#fff;position:relative;width:100%;max-width:65em;max-height:95vh;overflow-y:auto;box-sizing:border-box;animation:fadeIn 0.2s}div.consent_manager-wrapper-inner{padding:24px;position:relative}div.consent_manager-hidden{display:none}.consent_manager-close-box{border:0;position:absolute;right:20px;top:20px;display:inline-block;width:30px;height:30px;display:inline-block;background-color:#2a2a2a;text-indent:-9999px;color:#fff;cursor:pointer}.consent_manager-close-box::before,.consent_manager-close-box::after{content:" ";position:absolute;display:block;background-color:#fff;width:3px;left:13px;top:7px;bottom:7px}.consent_manager-close-box::before{transform:rotate(45deg)}.consent_manager-close-box::after{transform:rotate(-45deg)}.consent_manager-close-box:hover::before,.consent_manager-close-box:hover::after{transition:0.2s ease all;background:#16a085;cursor:pointer}div.consent_manager-wrapper .consent_manager-headline{margin:0 0 1em 0;font-weight:bold;font-size:16px;color:#fff}div.consent_manager-wrapper p.consent_manager-text{margin:0 0 1.5em 0;text-align:justify}div.consent_manager-cookiegroups{margin:0 0 1.5em 0}.consent_manager-cookiegroup-checkbox{margin-bottom:1.5em}.consent_manager-cookiegroup-checkbox span{font-size:13px -2px;line-height:1.85;vertical-align:top}.consent_manager-cookiegroup-checkbox span:hover{cursor:pointer}.consent_manager-wrapper [type="checkbox"]{-webkit-appearance:none;-webkit-tap-highlight-color:transparent;position:relative;border:0;outline:0;cursor:pointer;display:inline-block;width:40px;background:transparent}.consent_manager-wrapper [type="checkbox"]:after{content:"";width:32px;height:16px;display:inline-block;background:#5d5d5d;border-radius:8px;clear:both}.consent_manager-wrapper [type="checkbox"]:before{content:"";width:16px;height:16px;display:block;position:absolute;left:0;top:0;border-radius:50%;background:white;box-shadow:1px 1px 3px rgba(0, 0, 0, 0.6)}.consent_manager-wrapper [type="checkbox"]:checked:before{left:16px;box-shadow:-1px 1px 3px rgba(0, 0, 0, 0.6)}.consent_manager-wrapper [type="checkbox"]:checked:after{background:#16a085}.consent_manager-wrapper [type="checkbox"],.consent_manager-wrapper [type="checkbox"]:before,.consent_manager-wrapper [type="checkbox"]:after,.consent_manager-wrapper [type="checkbox"]:checked:before,.consent_manager-wrapper [type="checkbox"]:checked:after{transition:ease 0.2s;-webkit-transition:ease 0.2s;-moz-transition:ease 0.2s;-o-transition:ease 0.2s}.consent_manager-wrapper input[type="checkbox"]:disabled,.consent_manager-cookiegroups label>input[type="checkbox"]:disabled+*{opacity:0.7;cursor:default}div.consent_manager-show-details{padding:0 0 1.5em 0}.consent_manager-show-details a{color:#fff;text-decoration:none;cursor:pointer}.consent_manager-show-details a:hover{color:#16a085;text-decoration:none}div.consent_manager-show-details .icon-info-circled:before{display:none}button.consent_manager-save-selection,button.consent_manager-accept-all,button.consent_manager-accept-none{transition:0.2s ease all;background:#16a085;border:1px solid #16a085;color:#fff;padding:0.5em 2em;border-radius:3px;font-size:13px;font-weight:bold;text-align:center;display:block;min-height:3em;width:100%;margin-bottom:1em;cursor:pointer}button.consent_manager-save-selection:hover,button.consent_manager-accept-all:hover,button.consent_manager-accept-none:hover{background:#107360;border-color:#107360;color:white;text-decoration:none}.consent_manager-sitelinks{margin:1.5em 0 0 0;cursor:pointer}.consent_manager-sitelinks a{display:inline-block;margin:0.4em 1em 0.4em 0;color:#fff;text-decoration:none}.consent_manager-sitelinks a:hover{color:#16a085;text-decoration:none}div.consent_manager-wrapper div.consent_manager-detail{margin-bottom:3em}div.consent_manager-wrapper div.consent_manager-detail a{color:#16a085}div.consent_manager-wrapper div.consent_manager-detail a:hover{color:#107360;text-decoration:none}div.consent_manager-wrapper div.consent_manager-detail div.consent_manager-cookiegroup-title{color:#fff;background-color:#16a085;padding:5px 11px;margin:1.5em 0 0 0}div.consent_manager-wrapper div.consent_manager-cookiegroup-description{border-left:1px solid #16a085;padding:5px 10px;background:#373737}div.consent_manager-wrapper div.consent_manager-cookie{margin-top:3px;border-left:1px solid #16a085;padding:5px 10px;background:#373737}div.consent_manager-wrapper div.consent_manager-cookie span{display:block}@media only screen and (min-width:600px){div.consent_manager-cookiegroups{padding:1em 0 0 0;display:flex;flex-wrap:wrap;justify-content:flex-end;margin-bottom:0}div.consent_manager-cookiegroup-checkbox{margin-left:1.5em;margin-bottom:1em}div.consent_manager-show-details{text-align:right;padding:1.5em 0 1.5em 0}div.consent_manager-buttons{display:flex;justify-content:flex-end;align-items:center}button.consent_manager-save-selection,button.consent_manager-accept-all,button.consent_manager-accept-none{display:inline-block;margin:0 0 0 0.5em;width:auto}div.consent_manager-sitelinks{margin:0 0 0 0}div.consent_manager-buttons-sitelinks{display:flex;justify-content:space-between;align-items:center;flex-direction:row-reverse}} diff --git a/assets/frank-mckenna-Fg9l2rojs24-unsplash.jpg b/assets/frank-mckenna-Fg9l2rojs24-unsplash.jpg new file mode 100644 index 0000000..d4f619d Binary files /dev/null and b/assets/frank-mckenna-Fg9l2rojs24-unsplash.jpg differ diff --git a/assets/harley-davidson-4ixHdlcROPI-unsplash.jpg b/assets/harley-davidson-4ixHdlcROPI-unsplash.jpg new file mode 100644 index 0000000..d39ccaf Binary files /dev/null and b/assets/harley-davidson-4ixHdlcROPI-unsplash.jpg differ diff --git a/assets/maciek-sulkowski-58tP7g7x1LQ-unsplash.jpg b/assets/maciek-sulkowski-58tP7g7x1LQ-unsplash.jpg new file mode 100644 index 0000000..9c1b7d0 Binary files /dev/null and b/assets/maciek-sulkowski-58tP7g7x1LQ-unsplash.jpg differ diff --git a/assets/pang-yuhao-yMUI1WDmTdM-unsplash.jpg b/assets/pang-yuhao-yMUI1WDmTdM-unsplash.jpg new file mode 100644 index 0000000..23b8d4f Binary files /dev/null and b/assets/pang-yuhao-yMUI1WDmTdM-unsplash.jpg differ diff --git a/assets/peter-olexa-Jin9EvsZnqA-unsplash.jpg b/assets/peter-olexa-Jin9EvsZnqA-unsplash.jpg new file mode 100644 index 0000000..0e5a736 Binary files /dev/null and b/assets/peter-olexa-Jin9EvsZnqA-unsplash.jpg differ diff --git a/assets/project_consent_manager_frontend_test.css b/assets/project_consent_manager_frontend_test.css new file mode 100644 index 0000000..739b59a --- /dev/null +++ b/assets/project_consent_manager_frontend_test.css @@ -0,0 +1 @@ +@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}div.consent_manager-background{position:fixed;left:0;top:0;right:0;bottom:0;background:rgba(0, 0, 0, 0.6);display:flex;flex-direction:column;justify-content:center;align-items:center;padding:1em;z-index:999999;height:100%;width:100%;overflow:hidden;box-sizing:border-box;animation:fadeIn 0.2s;-webkit-backdrop-filter:sepia(60%);backdrop-filter:sepia(60%)}div.consent_manager-wrapper{font-family:Verdana, Geneva, sans-serif;font-size:14px;line-height:1.5em;background:#fefefe;border:1px solid #cbcbcb;color:#444;position:absolute;bottom:0;right:0;width:100%;max-width:620px;max-height:100vh;overflow-y:auto;box-sizing:border-box;animation:fadeIn 0.2s}div.consent_manager-wrapper-inner{padding:2em;position:relative}div.consent_manager-hidden{display:none}.consent_manager-close-box{position:absolute;cursor:pointer;right:1.5em;top:1em;display:block;border-radius:50% !important;border:solid 2px #666;width:30px;height:30px;line-height:28px;background-color:#666;color:#eee;font-family:Arial;font-size:18px;padding:0;margin:0;opacity:0.5;transition:0.3s ease all}.consent_manager-close-box:hover{border-color:#4d4d4d;background-color:#4d4d4d;color:white;opacity:1}div.consent_manager-wrapper .consent_manager-headline{margin:0 0 1em 0;font-weight:bold;font-size:18px;color:#666}div.consent_manager-wrapper p.consent_manager-text{margin:0 0 1.5em 0}div.consent_manager-cookiegroups{margin:0 0 1.5em 0}div.consent_manager-cookiegroup-checkbox{margin-bottom:1.5em}div.consent_manager-cookiegroups label{position:relative;font-weight:bold;font-size:15px;color:#111;cursor:pointer}div.consent_manager-cookiegroups label>span{cursor:pointer}div.consent_manager-cookiegroups label>input[type="checkbox"]{filter:grayscale(1);filter:hue-rotate(275deg);transform:scale(1.6);margin:0 0.7em 0 0.2em;cursor:pointer}.consent_manager-wrapper input[type="checkbox"]:disabled,.consent_manager-cookiegroups label>input[type="checkbox"]:disabled+*{opacity:0.7;cursor:default}div.consent_manager-show-details{padding:0 0 1.5em 0}div.consent_manager-show-details a{display:inline-block;line-height:1.2em;height:1.4em;cursor:pointer;color:#999}div.consent_manager-show-details a:hover{color:gray}div.consent_manager-show-details a.icon-info-circled:before{color:#fff;background-color:#999;opacity:0.7;content:"i";font-family:"Serif";font-weight:bold;display:inline-block;border-radius:50%;text-align:center;margin-right:7px;line-height:1.4em;height:1.4em;width:1.4em}button.consent_manager-save-selection,button.consent_manager-accept-all,button.consent_manager-accept-none{transition:0.3s ease all;background:#999;border:1px solid #999;color:#fff;padding:0.5em 2em;border-radius:3px;font-size:14px;font-weight:bold;text-align:center;display:block;min-height:3em;width:100%;margin-bottom:1em;cursor:pointer}button.consent_manager-save-selection:hover,button.consent_manager-accept-all:hover,button.consent_manager-accept-none:hover{background:#4d4d4d;border-color:#4d4d4d;color:white;text-decoration:none}div.consent_manager-sitelinks{margin:1.5em 0 0 0}div.consent_manager-sitelinks a{display:inline-block;margin:0.4em 1em 0.4em 0;color:#999;text-decoration:none;cursor:pointer}div.consent_manager-sitelinks a:hover{color:gray;text-decoration:none}div.consent_manager-wrapper div.consent_manager-detail{margin-bottom:3em}div.consent_manager-wrapper div.consent_manager-detail a{color:#999}div.consent_manager-wrapper div.consent_manager-detail a:hover{color:gray;text-decoration:none}div.consent_manager-wrapper div.consent_manager-detail div.consent_manager-cookiegroup-title{color:#666;background-color:#d4d4d4;padding:5px 11px;margin:1.5em 0 0 0}div.consent_manager-wrapper div.consent_manager-cookiegroup-description{border-left:1px solid #d4d4d4;padding:5px 10px;background:#f9f9f9}div.consent_manager-wrapper div.consent_manager-cookie{margin-top:3px;border-left:1px solid #d4d4d4;padding:5px 10px;background:#f9f9f9}div.consent_manager-wrapper div.consent_manager-cookie span{display:block;margin-top:0.5em}@media only screen and (min-width:600px){div.consent_manager-cookiegroups{padding:1em 0 0 0;display:flex;flex-wrap:wrap;justify-content:flex-end;margin-bottom:0}div.consent_manager-cookiegroup-checkbox{margin-left:1.5em;margin-bottom:1em}div.consent_manager-show-details{text-align:right;padding:1.5em 0 1.5em 0}div.consent_manager-buttons{display:flex;justify-content:flex-end;align-items:center}button.consent_manager-save-selection,button.consent_manager-accept-all,button.consent_manager-accept-none{display:inline-block;margin:0 0 0 0.5em;width:auto}div.consent_manager-sitelinks{margin:0 0 0 0}div.consent_manager-buttons-sitelinks{display:flex;justify-content:space-between;align-items:center;flex-direction:row-reverse}} diff --git a/assets/ricardo-gomez-angel-2mjl2uvz9ic-unsplash.jpg b/assets/ricardo-gomez-angel-2mjl2uvz9ic-unsplash.jpg new file mode 100644 index 0000000..f4fdd43 Binary files /dev/null and b/assets/ricardo-gomez-angel-2mjl2uvz9ic-unsplash.jpg differ diff --git a/boot.php b/boot.php index ebd8672..57e9e24 100644 --- a/boot.php +++ b/boot.php @@ -21,22 +21,7 @@ rex_extension::register('PACKAGES_INCLUDED', static function () { $addon = rex_addon::get('consent_manager'); - if (null !== rex::getUser()) { - if (rex::getUser()->isAdmin() && rex::isDebugMode() && 'get' === rex_request_method()) { - $compiler = new rex_scss_compiler(); - $compiler->setRootDir($addon->getPath()); - $compiler->setScssFile($addon->getPath('scss/consent_manager_backend.scss')); - $compiler->setCssFile($addon->getPath('assets/consent_manager_backend.css')); - $compiler->compile(); - $compiler->setScssFile($addon->getPath('scss/consent_manager_frontend.scss')); - $compiler->setCssFile($addon->getPath('assets/consent_manager_frontend.css')); - $compiler->compile(); - rex_file::copy($addon->getPath('assets/consent_manager_frontend.css'), $addon->getAssetsPath('consent_manager_frontend.css')); - rex_file::copy($addon->getPath('assets/consent_manager_backend.css'), $addon->getAssetsPath('consent_manager_backend.css')); - rex_file::copy($addon->getPath('assets/consent_manager_polyfills.js'), $addon->getAssetsPath('consent_manager_polyfills.js')); - rex_file::copy($addon->getPath('assets/consent_manager_frontend.js'), $addon->getAssetsPath('consent_manager_frontend.js')); - } if ('consent_manager' === rex_be_controller::getCurrentPagePart(1)) { rex_view::addCssFile($addon->getAssetsUrl('consent_manager_backend.css')); rex_view::addJsFile($addon->getAssetsUrl('consent_manager_backend.js')); diff --git a/fragments/consent_manager_box.php b/fragments/consent_manager_box.php index ad17d61..a6e2e19 100644 --- a/fragments/consent_manager_box.php +++ b/fragments/consent_manager_box.php @@ -1,6 +1,10 @@ setDomain(strval(rex_request::server('HTTP_HOST'))); +if (0 === count($consent_manager->texts)) { + echo ''; + return; +} ?> cookiegroups): ?>