Merge pull request 'detailed' (#1) from detailed into main

Reviewed-on: https://git.walzen665.de/Walzen665/gdprcookieconsent/pulls/1
This commit is contained in:
Max W. 2025-04-08 13:14:50 +00:00
commit 20eacdf96c
6 changed files with 278 additions and 48 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.idea/

View File

@ -1,4 +1,5 @@
<?php
/**
* GDPR Cookie Consent Module for PrestaShop
*
@ -42,14 +43,20 @@ class GdprCookieConsent extends Module
$this->registerHook('displayHeader') &&
$this->registerHook('displayFooter') &&
Configuration::updateValue('GDPR_COOKIE_ENABLED', 1) &&
Configuration::updateValue('GDPR_COOKIE_MESSAGE', 'This website uses cookies to ensure you get the best experience on our website.') &&
Configuration::updateValue('GDPR_COOKIE_MESSAGE', 'This website uses cookies to ensure you get the best experience. We collect and process your data for website functionality, analytics, and personalized advertising.') &&
Configuration::updateValue('GDPR_COOKIE_ACCEPT', 'Accept All Cookies') &&
Configuration::updateValue('GDPR_COOKIE_DECLINE', 'Decline') &&
Configuration::updateValue('GDPR_COOKIE_DECLINE', 'Decline Non-Essential') &&
Configuration::updateValue('GDPR_COOKIE_SETTINGS', 'Cookie Settings') &&
Configuration::updateValue('GDPR_COOKIE_MORE_INFO', 'More Information') &&
Configuration::updateValue('GDPR_COOKIE_MORE_INFO_URL', 'content/2-privacy-policy');
Configuration::updateValue('GDPR_COOKIE_MORE_INFO_URL', 'https://yourstore.net/content/privacy-policy') &&
Configuration::updateValue('GDPR_COOKIE_DATA_CONTROLLER', 'Your Company Name') &&
Configuration::updateValue('GDPR_COOKIE_RETENTION_PERIOD', '365 days') &&
Configuration::updateValue('GDPR_COOKIE_THIRD_PARTIES', 'Google Analytics, Facebook, etc.') &&
Configuration::updateValue('GDPR_COOKIE_MANAGE_TEXT', 'Manage Cookie Preferences') &&
Configuration::updateValue('GDPR_COOKIE_ONLY_REQUIRED', 1);
}
/**
* Uninstall the module
*/
@ -62,7 +69,12 @@ class GdprCookieConsent extends Module
Configuration::deleteByName('GDPR_COOKIE_DECLINE') &&
Configuration::deleteByName('GDPR_COOKIE_SETTINGS') &&
Configuration::deleteByName('GDPR_COOKIE_MORE_INFO') &&
Configuration::deleteByName('GDPR_COOKIE_MORE_INFO_URL');
Configuration::deleteByName('GDPR_COOKIE_MORE_INFO_URL') &&
Configuration::deleteByName('GDPR_COOKIE_DATA_CONTROLLER') &&
Configuration::deleteByName('GDPR_COOKIE_RETENTION_PERIOD') &&
Configuration::deleteByName('GDPR_COOKIE_THIRD_PARTIES') &&
Configuration::deleteByName('GDPR_COOKIE_MANAGE_TEXT') &&
Configuration::deleteByName('GDPR_COOKIE_ONLY_REQUIRED');
}
/**
@ -82,6 +94,11 @@ class GdprCookieConsent extends Module
$settings = Tools::getValue('GDPR_COOKIE_SETTINGS');
$moreInfo = Tools::getValue('GDPR_COOKIE_MORE_INFO');
$moreInfoUrl = Tools::getValue('GDPR_COOKIE_MORE_INFO_URL');
$dataController = Tools::getValue('GDPR_COOKIE_DATA_CONTROLLER');
$retentionPeriod = Tools::getValue('GDPR_COOKIE_RETENTION_PERIOD');
$thirdParties = Tools::getValue('GDPR_COOKIE_THIRD_PARTIES');
$manageText = Tools::getValue('GDPR_COOKIE_MANAGE_TEXT');
$onlyRequired = Tools::getValue('GDPR_COOKIE_ONLY_REQUIRED');
// Update configuration values
Configuration::updateValue('GDPR_COOKIE_ENABLED', $enabled);
@ -91,6 +108,11 @@ class GdprCookieConsent extends Module
Configuration::updateValue('GDPR_COOKIE_SETTINGS', $settings);
Configuration::updateValue('GDPR_COOKIE_MORE_INFO', $moreInfo);
Configuration::updateValue('GDPR_COOKIE_MORE_INFO_URL', $moreInfoUrl);
Configuration::updateValue('GDPR_COOKIE_DATA_CONTROLLER', $dataController);
Configuration::updateValue('GDPR_COOKIE_RETENTION_PERIOD', $retentionPeriod);
Configuration::updateValue('GDPR_COOKIE_THIRD_PARTIES', $thirdParties);
Configuration::updateValue('GDPR_COOKIE_MANAGE_TEXT', $manageText);
Configuration::updateValue('GDPR_COOKIE_ONLY_REQUIRED', $onlyRequired);
// Display confirmation
$output .= $this->displayConfirmation($this->l('Settings updated'));
@ -137,6 +159,27 @@ class GdprCookieConsent extends Module
'name' => 'GDPR_COOKIE_MESSAGE',
'required' => true,
],
[
'type' => 'text',
'label' => $this->l('Data Controller'),
'name' => 'GDPR_COOKIE_DATA_CONTROLLER',
'desc' => $this->l('Your company/organization name'),
'required' => true,
],
[
'type' => 'text',
'label' => $this->l('Cookie Retention Period'),
'name' => 'GDPR_COOKIE_RETENTION_PERIOD',
'desc' => $this->l('How long cookies will be stored (e.g., 365 days)'),
'required' => true,
],
[
'type' => 'textarea',
'label' => $this->l('Third-Party Recipients'),
'name' => 'GDPR_COOKIE_THIRD_PARTIES',
'desc' => $this->l('List third parties that receive cookie data'),
'required' => true,
],
[
'type' => 'text',
'label' => $this->l('Accept Button Text'),
@ -155,6 +198,13 @@ class GdprCookieConsent extends Module
'name' => 'GDPR_COOKIE_SETTINGS',
'required' => true,
],
[
'type' => 'text',
'label' => $this->l('Manage Preferences Text'),
'name' => 'GDPR_COOKIE_MANAGE_TEXT',
'desc' => $this->l('Text for the manage preferences button (displayed after consent is given)'),
'required' => true,
],
[
'type' => 'text',
'label' => $this->l('More Info Button Text'),
@ -168,6 +218,26 @@ class GdprCookieConsent extends Module
'name' => 'GDPR_COOKIE_MORE_INFO_URL',
'required' => true,
],
[
'type' => 'switch',
'label' => $this->l('This cookie types are used'),
'name' => 'GDPR_COOKIE_ONLY_REQUIRED',
'desc' => $this->l('If this option is enabled, no config modal will be rendered and there will only be a single button to hide the cookie notice. (Only enable this, if you don\'t track any user data)'),
'is_bool' => true,
'required' => true,
'values' => [
[
'id' => 'active_on',
'value' => 1,
'label' => $this->l('Nessessary only')
],
[
'id' => 'active_off',
'value' => 0,
'label' => $this->l('All cookies')
]
],
],
],
'submit' => [
'title' => $this->l('Save'),
@ -202,6 +272,11 @@ class GdprCookieConsent extends Module
$helper->fields_value['GDPR_COOKIE_SETTINGS'] = Configuration::get('GDPR_COOKIE_SETTINGS');
$helper->fields_value['GDPR_COOKIE_MORE_INFO'] = Configuration::get('GDPR_COOKIE_MORE_INFO');
$helper->fields_value['GDPR_COOKIE_MORE_INFO_URL'] = Configuration::get('GDPR_COOKIE_MORE_INFO_URL');
$helper->fields_value['GDPR_COOKIE_DATA_CONTROLLER'] = Configuration::get('GDPR_COOKIE_DATA_CONTROLLER');
$helper->fields_value['GDPR_COOKIE_RETENTION_PERIOD'] = Configuration::get('GDPR_COOKIE_RETENTION_PERIOD');
$helper->fields_value['GDPR_COOKIE_THIRD_PARTIES'] = Configuration::get('GDPR_COOKIE_THIRD_PARTIES');
$helper->fields_value['GDPR_COOKIE_MANAGE_TEXT'] = Configuration::get('GDPR_COOKIE_MANAGE_TEXT');
$helper->fields_value['GDPR_COOKIE_ONLY_REQUIRED'] = Configuration::get('GDPR_COOKIE_ONLY_REQUIRED');
return $helper->generateForm([$form]);
}
@ -228,10 +303,23 @@ class GdprCookieConsent extends Module
'gdprCookieDecline' => Configuration::get('GDPR_COOKIE_DECLINE'),
'gdprCookieSettings' => Configuration::get('GDPR_COOKIE_SETTINGS'),
'gdprCookieMoreInfo' => Configuration::get('GDPR_COOKIE_MORE_INFO'),
'gdprCookieMoreInfoUrl' => $this->context->link->getCMSLink(
Configuration::get('GDPR_COOKIE_MORE_INFO_URL')
),
'gdprCookieMoreInfoUrl' => Configuration::get('GDPR_COOKIE_MORE_INFO_URL'),
'gdprCookieDataController' => Configuration::get('GDPR_COOKIE_DATA_CONTROLLER', ''),
'gdprCookieRetentionPeriod' => Configuration::get('GDPR_COOKIE_RETENTION_PERIOD', '365 days'),
'gdprCookieThirdParties' => Configuration::get('GDPR_COOKIE_THIRD_PARTIES', ''),
'gdprCookieManageText' => Configuration::get('GDPR_COOKIE_MANAGE_TEXT', 'Manage Cookies'),
'gdprCookieOnlyRequired' => Configuration::get('GDPR_COOKIE_ONLY_REQUIRED'),
]);
// Assign variables to Smarty for the manage button template
$this->context->smarty->assign([
'gdprCookieManageText' => Configuration::get('GDPR_COOKIE_MANAGE_TEXT', 'Manage Cookies'),
]);
// Return the template content - but don't throw an error if it doesn't exist yet
if (file_exists(_PS_MODULE_DIR_ . $this->name . '/views/templates/hook/manage_button.tpl')) {
return $this->display(__FILE__, 'views/templates/hook/manage_button.tpl');
}
}
/**
@ -249,11 +337,14 @@ class GdprCookieConsent extends Module
'gdprCookieDecline' => Configuration::get('GDPR_COOKIE_DECLINE'),
'gdprCookieSettings' => Configuration::get('GDPR_COOKIE_SETTINGS'),
'gdprCookieMoreInfo' => Configuration::get('GDPR_COOKIE_MORE_INFO'),
'gdprCookieMoreInfoUrl' => $this->context->link->getCMSLink(
Configuration::get('GDPR_COOKIE_MORE_INFO_URL')
),
'gdprCookieMoreInfoUrl' => Configuration::get('GDPR_COOKIE_MORE_INFO_URL'),
'gdprCookieDataController' => Configuration::get('GDPR_COOKIE_DATA_CONTROLLER'),
'gdprCookieRetentionPeriod' => Configuration::get('GDPR_COOKIE_RETENTION_PERIOD'),
'gdprCookieThirdParties' => Configuration::get('GDPR_COOKIE_THIRD_PARTIES'),
'gdprCookieManageText' => Configuration::get('GDPR_COOKIE_MANAGE_TEXT'),
'gdprCookieOnlyRequired' => Configuration::get('GDPR_COOKIE_ONLY_REQUIRED'),
]);
return $this->display(__FILE__, 'views/templates/hook/footer.tpl');
}
}
}

View File

@ -224,4 +224,73 @@
.gdpr-cookie-more-info {
margin-bottom: 10px;
}
}
.gdpr-cookie-info-block {
margin: 15px 0;
padding: 15px;
background-color: #f9f9f9;
border: 1px solid #eee;
border-radius: 5px;
}
.gdpr-cookie-info-block p {
margin: 5px 0;
font-size: 13px;
color: #666;
}
.gdpr-cookie-banner-info {
margin: 5px 0 10px;
}
.gdpr-cookie-banner-info p {
font-size: 12px;
opacity: 0.9;
margin: 0;
}
/* Equal prominence for buttons */
.gdpr-cookie-banner-decline,
.gdpr-cookie-banner-accept {
font-weight: 400;
padding: 8px 15px;
border-radius: 3px;
/* Make both buttons similar size but distinctive */
min-width: 120px;
}
.gdpr-cookie-banner-decline {
background-color: #f1f1f1;
color: #333;
border: 1px solid #ccc;
}
.gdpr-cookie-banner-accept {
background-color: #4caf50;
color: white;
border: 1px solid #4caf50;
}
/* Manage button styles */
.gdpr-cookie-manage-button {
position: fixed;
bottom: 20px;
right: 20px;
z-index: 9990;
}
.gdpr-cookie-manage {
padding: 8px 12px;
background-color: #f1f1f1;
color: #333;
border: 1px solid #ccc;
border-radius: 3px;
font-size: 12px;
cursor: pointer;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}
.gdpr-cookie-manage:hover {
background-color: #e5e5e5;
}

View File

@ -29,6 +29,21 @@ document.addEventListener('DOMContentLoaded', function() {
return null;
}
// Show manage preferences button when cookies are already set
function showManageButton() {
document.getElementById('gdpr-cookie-manage-button').style.display = 'block';
}
// After user consents, hide banner and modal and show the manage button
function afterConsent() {
// Hide banner and modal
hideModal();
document.getElementById('gdpr-cookie-banner').style.display = 'none';
// Show manage button
showManageButton();
}
// Check if cookie consent is already set
var cookieConsent = getCookie('gdpr_cookie_consent');
@ -39,6 +54,9 @@ document.addEventListener('DOMContentLoaded', function() {
// Apply cookie preferences
var consentPreferences = JSON.parse(cookieConsent);
applyConsentPreferences(consentPreferences);
// Show the manage button since consent was already given
showManageButton();
}
// Banner buttons
@ -46,25 +64,34 @@ document.addEventListener('DOMContentLoaded', function() {
acceptAllCookies();
});
document.getElementById('gdpr-cookie-banner-decline').addEventListener('click', function() {
declineAllCookies();
});
if(!gdprCookieOnlyRequired) {
document.getElementById('gdpr-cookie-banner-decline').addEventListener('click', function() {
declineAllCookies();
});
}
document.getElementById('gdpr-cookie-banner-settings').addEventListener('click', function() {
showModal();
});
// Modal buttons
if(!gdprCookieOnlyRequired) {
document.getElementById('gdpr-cookie-decline').addEventListener('click', function() {
declineAllCookies();
});
document.getElementById('gdpr-cookie-accept-selected').addEventListener('click', function() {
acceptSelectedCookies();
});
}
document.getElementById('gdpr-cookie-accept-all').addEventListener('click', function() {
acceptAllCookies();
});
document.getElementById('gdpr-cookie-decline').addEventListener('click', function() {
declineAllCookies();
});
document.getElementById('gdpr-cookie-accept-selected').addEventListener('click', function() {
acceptSelectedCookies();
// Manage button (for after consent is given)
document.getElementById('gdpr-cookie-manage').addEventListener('click', function() {
showModal();
});
// Functions
@ -103,8 +130,7 @@ document.addEventListener('DOMContentLoaded', function() {
setCookie('gdpr_cookie_consent', JSON.stringify(preferences), 365);
applyConsentPreferences(preferences);
hideModal();
document.getElementById('gdpr-cookie-banner').style.display = 'none';
afterConsent(); // Use the new function for consistent post-consent behavior
}
function declineAllCookies() {
@ -117,8 +143,7 @@ document.addEventListener('DOMContentLoaded', function() {
setCookie('gdpr_cookie_consent', JSON.stringify(preferences), 365);
applyConsentPreferences(preferences);
hideModal();
document.getElementById('gdpr-cookie-banner').style.display = 'none';
afterConsent(); // Use the new function for consistent post-consent behavior
}
function acceptSelectedCookies() {
@ -134,8 +159,7 @@ document.addEventListener('DOMContentLoaded', function() {
setCookie('gdpr_cookie_consent', JSON.stringify(preferences), 365);
applyConsentPreferences(preferences);
hideModal();
document.getElementById('gdpr-cookie-banner').style.display = 'none';
afterConsent(); // Use the new function for consistent post-consent behavior
}
function applyConsentPreferences(preferences) {
@ -179,6 +203,11 @@ document.addEventListener('DOMContentLoaded', function() {
function disableAnalytics() {
// Example: Disable Google Analytics
window['ga-disable-UA-XXXXXXXX-X'] = true;
// Remove existing GA cookies
document.cookie = '_ga=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain=.' + window.location.hostname;
document.cookie = '_gid=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain=.' + window.location.hostname;
document.cookie = '_gat=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain=.' + window.location.hostname;
}
function enableAnalytics() {
@ -187,12 +216,20 @@ document.addEventListener('DOMContentLoaded', function() {
}
function disableMarketing() {
// Example implementation
// You would implement according to your specific marketing cookies
// Example implementation for common marketing cookies
var marketingCookies = ['_fbp', 'fr', 'IDE', 'MUID', 'personalization_id'];
var domains = [window.location.hostname, '.' + window.location.hostname];
marketingCookies.forEach(function(cookie) {
domains.forEach(function(domain) {
document.cookie = cookie + '=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Domain=' + domain;
});
});
}
function enableMarketing() {
// Example implementation
// You would implement according to your specific marketing cookies
// For enabling marketing, we typically don't need to do anything special
// The marketing scripts will set their cookies when they load
// Just ensure the marketing scripts are loaded after checking consent
}
});

View File

@ -14,34 +14,45 @@
<div class="gdpr-cookie-modal-body">
<p>{$gdprCookieMessage}</p>
<div class="gdpr-cookie-info-block">
<p><strong>{l s='Data Controller:' mod='gdprcookieconsent'}</strong> {$gdprCookieDataController}</p>
<p><strong>{l s='Cookie Retention Period:' mod='gdprcookieconsent'}</strong> {$gdprCookieRetentionPeriod}</p>
<p><strong>{l s='Third-Party Recipients:' mod='gdprcookieconsent'}</strong> {$gdprCookieThirdParties}</p>
<p><strong>{l s='Your Rights:' mod='gdprcookieconsent'}</strong> {l s='You can withdraw your consent at any time by clicking the "Manage Cookie Preferences" button or by deleting cookies in your browser settings.' mod='gdprcookieconsent'}</p>
</div>
<div class="gdpr-cookie-categories">
<div class="gdpr-cookie-category">
<input type="checkbox" id="gdpr-cookie-necessary" checked disabled>
<label for="gdpr-cookie-necessary">{l s='Necessary' mod='gdprcookieconsent'}</label>
<p>{l s='Necessary cookies help make a website usable by enabling basic functions like page navigation. The website cannot function properly without these cookies.' mod='gdprcookieconsent'}</p>
</div>
<div class="gdpr-cookie-category">
<input type="checkbox" id="gdpr-cookie-functional" class="gdpr-cookie-checkbox" data-cookie-category="functional">
<label for="gdpr-cookie-functional">{l s='Functional' mod='gdprcookieconsent'}</label>
<p>{l s='Functional cookies enable a website to remember information that changes the way the website behaves or looks, like your preferred language or the region you are in.' mod='gdprcookieconsent'}</p>
</div>
<div class="gdpr-cookie-category">
<input type="checkbox" id="gdpr-cookie-analytics" class="gdpr-cookie-checkbox" data-cookie-category="analytics">
<label for="gdpr-cookie-analytics">{l s='Analytics' mod='gdprcookieconsent'}</label>
<p>{l s='Analytics cookies help website owners understand how visitors interact with websites by collecting and reporting information anonymously.' mod='gdprcookieconsent'}</p>
</div>
<div class="gdpr-cookie-category">
<input type="checkbox" id="gdpr-cookie-marketing" class="gdpr-cookie-checkbox" data-cookie-category="marketing">
<label for="gdpr-cookie-marketing">{l s='Marketing' mod='gdprcookieconsent'}</label>
<p>{l s='Marketing cookies are used to track visitors across websites. The intention is to display ads that are relevant and engaging for the individual user.' mod='gdprcookieconsent'}</p>
</div>
{if !$gdprCookieOnlyRequired}
<div class="gdpr-cookie-category">
<input type="checkbox" id="gdpr-cookie-functional" class="gdpr-cookie-checkbox" data-cookie-category="functional">
<label for="gdpr-cookie-functional">{l s='Functional' mod='gdprcookieconsent'}</label>
<p>{l s='Functional cookies enable a website to remember information that changes the way the website behaves or looks, like your preferred language or the region you are in.' mod='gdprcookieconsent'}</p>
</div>
<div class="gdpr-cookie-category">
<input type="checkbox" id="gdpr-cookie-analytics" class="gdpr-cookie-checkbox" data-cookie-category="analytics">
<label for="gdpr-cookie-analytics">{l s='Analytics' mod='gdprcookieconsent'}</label>
<p>{l s='Analytics cookies help website owners understand how visitors interact with websites by collecting and reporting information anonymously.' mod='gdprcookieconsent'}</p>
</div>
<div class="gdpr-cookie-category">
<input type="checkbox" id="gdpr-cookie-marketing" class="gdpr-cookie-checkbox" data-cookie-category="marketing">
<label for="gdpr-cookie-marketing">{l s='Marketing' mod='gdprcookieconsent'}</label>
<p>{l s='Marketing cookies are used to track visitors across websites. The intention is to display ads that are relevant and engaging for the individual user.' mod='gdprcookieconsent'}</p>
</div>
{/if}
</div>
</div>
<div class="gdpr-cookie-modal-footer">
<a href="{$gdprCookieMoreInfoUrl}" class="gdpr-cookie-more-info">{$gdprCookieMoreInfo}</a>
<div class="gdpr-cookie-buttons">
<button id="gdpr-cookie-decline" class="gdpr-cookie-decline">{$gdprCookieDecline}</button>
<button id="gdpr-cookie-accept-selected" class="gdpr-cookie-accept-selected">{l s='Accept Selected' mod='gdprcookieconsent'}</button>
{if !$gdprCookieOnlyRequired}
<button id="gdpr-cookie-decline" class="gdpr-cookie-decline">{$gdprCookieDecline}</button>
<button id="gdpr-cookie-accept-selected" class="gdpr-cookie-accept-selected">{l s='Accept Selected' mod='gdprcookieconsent'}</button>
{/if}
<button id="gdpr-cookie-accept-all" class="gdpr-cookie-accept-all">{$gdprCookieAccept}</button>
</div>
</div>
@ -51,10 +62,20 @@
<div id="gdpr-cookie-banner" class="gdpr-cookie-banner">
<div class="gdpr-cookie-banner-content">
<p>{$gdprCookieMessage}</p>
{* <div class="gdpr-cookie-banner-info">*}
{* <p><small><strong>{l s='Data Controller:' mod='gdprcookieconsent'}</strong> {$gdprCookieDataController} | *}
{* <strong>{l s='Retention:' mod='gdprcookieconsent'}</strong> {$gdprCookieRetentionPeriod}</small></p>*}
{* </div>*}
<div class="gdpr-cookie-banner-buttons">
<button id="gdpr-cookie-banner-decline" class="gdpr-cookie-banner-decline">{$gdprCookieDecline}</button>
{if !$gdprCookieOnlyRequired}
<button id="gdpr-cookie-banner-decline" class="gdpr-cookie-banner-decline">{$gdprCookieDecline}</button>
{/if}
<button id="gdpr-cookie-banner-settings" class="gdpr-cookie-banner-settings">{$gdprCookieSettings}</button>
<button id="gdpr-cookie-banner-accept" class="gdpr-cookie-banner-accept">{$gdprCookieAccept}</button>
</div>
</div>
</div>
<div id="gdpr-cookie-manage-button" class="gdpr-cookie-manage-button" style="display: none;">
<button id="gdpr-cookie-manage" class="gdpr-cookie-manage">{$gdprCookieManageText}</button>
</div>

View File

@ -0,0 +1,11 @@
{*
* GDPR Cookie Consent Module for PrestaShop
*
* @author Walzen665
* @copyright Copyright (c) 2025
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*}
<div id="gdpr-cookie-manage-button" class="gdpr-cookie-manage-button" style="display: none;">
<button id="gdpr-cookie-manage" class="gdpr-cookie-manage">{$gdprCookieManageText}</button>
</div>