Cookie OKay !

This commit is contained in:
Fred Tempez 2021-11-28 12:07:07 +01:00
parent b49b2c103d
commit 6a23966843
8 changed files with 105 additions and 63 deletions

View File

@ -224,18 +224,27 @@ core.start = function() {
// Crée le cookie d'acceptation Google Analytics si l'ID a été saisie // Crée le cookie d'acceptation Google Analytics si l'ID a été saisie
var analytics = "<?php echo $this->getData(['config', 'seo', 'analyticsId']);?>"; var analytics = "<?php echo $this->getData(['config', 'seo', 'analyticsId']);?>";
// l'Id GA est défini dans la configuration, afficher la checkbox d'acceptation
if( analytics.length > 0){ if( analytics.length > 0){
document.cookie = "ZWII_COOKIE_GA_CONSENT=" + $("#googleAnalytics").prop("checked") + "<?php echo $_SERVER['PHP_SELF']; ?>" +";" + domain + ";" + path + ";" + samesite + ";" + expires; // Traitement du retour de la checkbox
if ($("#googleAnalytics").is(":checked")) {
// L'URL du serveur faut TRUE
document.cookie = "ZWII_COOKIE_GA_CONSENT=" + "<?php echo $_SERVER['PHP_SELF']; ?>" + ";" + domain + ";" + path + ";" + samesite + ";" + expires;
} else {
document.cookie = "ZWII_COOKIE_GA_CONSENT=false;" + domain + ";" + path + ";" + samesite + ";" + expires;
}
} }
// Stocke lz cookie d'acceptation // Stocke le cookie d'acceptation
document.cookie = "ZWII_COOKIE_CONSENT=<?php echo $_SERVER['PHP_SELF']; ?>;" + domain + ";" + path + ";" + samesite + ";" + expires; document.cookie = "ZWII_COOKIE_CONSENT=<?php echo $_SERVER['PHP_SELF']; ?>;" + domain + ";" + path + ";" + samesite + ";" + expires;
}); });
/** /**
* Suppression du cookie de consentement * Suppression du cookie de consentement
*/
$('#footerCookies').bind('click', function(event) { $('#cookieConsentRefused').on('click', function() {
var samesite = "samesite=lax"; var samesite = "samesite=lax";
var getUrl = window.location; var getUrl = window.location;
var domain = "domain=" + getUrl.host; var domain = "domain=" + getUrl.host;
@ -244,8 +253,17 @@ core.start = function() {
var e = new Date(); var e = new Date();
e.setFullYear(e.getFullYear() - 1); e.setFullYear(e.getFullYear() - 1);
var expires = "expires=" + e.toUTCString(); var expires = "expires=" + e.toUTCString();
document.cookie = "ZWII_COOKIE_CONSENT=<?php echo $_SERVER['PHP_SELF']; ?>;" + domain + ";" + path + ";" + samesite + ";" + expires; document.cookie = "ZWII_COOKIE_CONSENT=false;" + domain + ";" + path + ";" + samesite + ";" + expires;
// Désactiver le cookie GA
document.cookie = "ZWII_COOKIE_GA_CONSENT=false;" + domain + ";" + path + ";" + samesite + ";" + expires;
// fermer la fenêtre
$("#cookieConsent").fadeOut();
}); });
*/
/** /**
* Fermeture de la popup des cookies * Fermeture de la popup des cookies
@ -254,6 +272,14 @@ core.start = function() {
$(this).parents("#cookieConsent").fadeOut(); $(this).parents("#cookieConsent").fadeOut();
}); });
/**
* Commande de gestion des cookies dans le footer
*/
$("footer #footerCookies").on("click", function() {
$("#cookieConsent").removeClass("displayNone");
});
/** /**
* Affiche / Cache le menu en mode responsive * Affiche / Cache le menu en mode responsive
*/ */

View File

@ -1174,7 +1174,7 @@ class common {
*/ */
public function showAnalytics() { public function showAnalytics() {
if( !empty($code = $this->getData(['config', 'seo', 'analyticsId'])) && if( !empty($code = $this->getData(['config', 'seo', 'analyticsId'])) &&
$this->getInput('ZWII_COOKIE_GA_CONSENT') === 'true'.$_SERVER['PHP_SELF']) { $this->getInput('ZWII_COOKIE_GA_CONSENT') === $_SERVER['PHP_SELF'] ) {
echo '<!-- Global site tag (gtag.js) - Google Analytics --> echo '<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id='. $code .'"></script> <script async src="https://www.googletagmanager.com/gtag/js?id='. $code .'"></script>
<script> <script>
@ -1191,33 +1191,36 @@ class common {
*/ */
public function showCookies() { public function showCookies() {
if( $this->getInput('ZWII_COOKIE_CONSENT') !== $_SERVER['PHP_SELF'] AND // Gestion des cookies intégrée
$this->getData(['config', 'cookieConsent']) === true if ($this->getData(['config', 'cookieConsent']) === true )
){ {
// Détermine si le bloc doit être affiché selon la validité du cookie
$analytics = $this->getData(['locale', 'seo', 'analyticsId']); // L'URL du serveur faut TRUE
$legalPage = $this->getData(['locale', 'legalPageId']); $enable = $this->getInput('ZWII_COOKIE_CONSENT') !== $_SERVER['PHP_SELF'] ? '' : 'displayNone';
$item = '<div id="cookieConsent">'; // Construction de la division contenant un forulaire
$item .= '<div class="cookieClose">'; $item = '<div id="cookieConsent" class="' . $enable . '">';
$item .= template::ico('cancel'); $item .= '<div class="cookieClose">';
$item .= '</div>'; $item .= template::ico('cancel');
$item .= '<h3>'. $this->getData(['locale', 'cookies', 'cookiesTitleText']) . '</h3>'; $item .= '</div>';
$item .= '<p>' . $this->getData(['locale', 'cookies', 'cookiesZwiiText']) . '</p>'; $item .= '<h3>'. $this->getData(['locale', 'cookies', 'cookiesTitleText']) . '</h3>';
if ($legalPage !== 'none') { $item .= '<p>' . $this->getData(['locale', 'cookies', 'cookiesZwiiText']) . '</p>';
$legalPage = $this->getData(['locale', 'legalPageId']);
if ($legalPage !== 'none') {
$item .= '<p><a href="' . helper::baseUrl() . $legalPage . '">' . $this->getData(['locale', 'cookies', 'cookiesLinkMlText']) . '</a></p>'; $item .= '<p><a href="' . helper::baseUrl() . $legalPage . '">' . $this->getData(['locale', 'cookies', 'cookiesLinkMlText']) . '</a></p>';
} }
if( $analytics !== null AND $analytics !=='' ){ $item .= '<form method="POST" action="" id="cookieForm">';
$analytics = $this->getData(['config', 'seo', 'analyticsId']);
$stateCookieGA = $this->getInput('ZWII_COOKIE_GA_CONSENT') === $_SERVER['PHP_SELF'] ? 'checked="checked"' : '';
var_dump($stateCookieGA);
if( $analytics !== null AND $analytics !== '' ) {
$item .= '<p>' . $this->getData(['locale', 'cookies', 'cookiesGaText']) . '</p>'; $item .= '<p>' . $this->getData(['locale', 'cookies', 'cookiesGaText']) . '</p>';
} $item .= '<input type="checkbox" id="googleAnalytics" name="googleAnalytics" value="GA" ' . $stateCookieGA . '>';
$item .= '<form method="POST" action="" id="cookieForm">'; $item .= '<label for="googleAnalytics">' . $this->getData(['locale', 'cookies', 'cookiesCheckboxGaText']) . '</label>';
if( $analytics !== null AND $analytics !=='' ) { }
$item .= '<input type="checkbox" id="googleAnalytics" name="googleAnalytics" value="GA">'; $item .= '<br><br>';
$item .= '<label for="googleAnalytics">' . $this->getData(['locale', 'cookies', 'cookiesCheckboxGaText']) . '</label>'; $item .= '<input type="submit" id="cookieConsentConfirm" value="' . $this->getData(['locale', 'cookies', 'cookiesButtonText']) . '">';
} $item .= '</form></div>';
$item .= '<br><br>'; echo $item;
$item .= '<input type="submit" id="cookieConsentConfirm" value="Valider">';
$item .= '</form></div>';
echo $item;
} }
} }
@ -1484,7 +1487,7 @@ class common {
$items .= '</span>'; $items .= '</span>';
// Affichage de la gestion des cookies // Affichage de la gestion des cookies
$label = empty($this->getData(['locale', 'cookies', 'cookiesFooterText'])) ? 'Confidentialité' : $this->getData(['locale', 'cookies', 'cookiesFooterText']) ; $label = empty($this->getData(['locale', 'cookies', 'cookiesFooterText'])) ? 'Confidentialité' : $this->getData(['locale', 'cookies', 'cookiesFooterText']) ;
$items .= ($this->getData(['config', 'cookieConsent']) === true && $this->getData(['theme', 'footer', 'displayCookie'])) ? '':'<span id="footerCookies"><wbr>&nbsp;|&nbsp;<a href="#">'. $label .'</a></span>'; $items .= ($this->getData(['config', 'cookieConsent']) === true && $this->getData(['theme', 'footer', 'displayCookie'])) === true ? '<span id="footerCookies"><wbr>&nbsp;|&nbsp;<a href="javascript:void(0)">'. $label .'</a></span>' : '';
// Affichage du lien de connexion // Affichage du lien de connexion
if( if(
( (

View File

@ -707,8 +707,8 @@ if ($this->getData(['core', 'dataVersion']) < 11200) {
$this->setData(['locale', 'cookies', 'cookieTitleText', 'Gérer les cookies']); $this->setData(['locale', 'cookies', 'cookieTitleText', 'Gérer les cookies']);
$this->setData(['locale', 'cookies', 'cookieLinkMlText', 'Voir les mentions légales']); $this->setData(['locale', 'cookies', 'cookieLinkMlText', 'Voir les mentions légales']);
$this->setData(['locale', 'cookies', 'cookieCheckboxGaText', 'Autorisation des cookies Google Analytics']); $this->setData(['locale', 'cookies', 'cookieCheckboxGaText', 'Autorisation des cookies Google Analytics']);
$this->setData(['locale', 'cookies', 'cookieButtonText', 'J\'ai compris']);
// Mise à jour // Mise à jour
$this->setData(['core', 'dataVersion', 11200]); $this->setData(['core', 'dataVersion', 11200]);
} }

View File

@ -986,9 +986,9 @@ footer #footerSocials .zwiico-github:hover {
/* Message sur les cookies */ /* Message sur les cookies */
#cookieConsent { #cookieConsent {
width: 80%; width: 60%;
margin: auto; margin: auto;
opacity: .9; opacity: .95;
background: #212223; background: #212223;
position: fixed; position: fixed;
right: 0; right: 0;
@ -1001,17 +1001,20 @@ footer #footerSocials .zwiico-github:hover {
font-size: 1em; font-size: 1em;
} }
#cookieConsentConfirm {
background-color: green;
}
#cookieConsentConfirm { #cookieConsentConfirm {
cursor: pointer; cursor: pointer;
margin-left: 10px; margin-left: 10px;
background: #666;
padding: 4px 8px; padding: 4px 8px;
display: inline-block; display: inline-block;
transition: background .3s ease-out; transition: background .3s ease-out;
} }
#cookieConsentConfirm:hover { #cookieConsentConfirm:hover {
background: #777; filter: grayscale(50%);
} }
#cookieConsent .cookieClose { #cookieConsent .cookieClose {

View File

@ -445,7 +445,8 @@ class config extends common {
'cookiesTitleText' => $this->getInput('localeCookiesTitleText', helper::FILTER_STRING_SHORT, $this->getData(['config', 'cookieConsent'])), 'cookiesTitleText' => $this->getInput('localeCookiesTitleText', helper::FILTER_STRING_SHORT, $this->getData(['config', 'cookieConsent'])),
'cookiesLinkMlText' => $this->getInput('localeCookiesLinkMlText', helper::FILTER_STRING_SHORT, $this->getData(['config', 'cookieConsent'])), 'cookiesLinkMlText' => $this->getInput('localeCookiesLinkMlText', helper::FILTER_STRING_SHORT, $this->getData(['config', 'cookieConsent'])),
'cookiesCheckboxGaText' => $this->getInput('localeCookiesCheckboxGaText', helper::FILTER_STRING_SHORT, $this->getData(['config', 'cookieConsent'])), 'cookiesCheckboxGaText' => $this->getInput('localeCookiesCheckboxGaText', helper::FILTER_STRING_SHORT, $this->getData(['config', 'cookieConsent'])),
'cookiesFooterText' => $this->getInput('localeCookiesFooterText', helper::FILTER_STRING_SHORT, $this->getData(['config', 'cookieConsent'])) 'cookiesFooterText' => $this->getInput('localeCookiesFooterText', helper::FILTER_STRING_SHORT, $this->getData(['config', 'cookieConsent'])),
'cookiesButtonText' =>$this->getInput('localeCookiesButtonText', helper::FILTER_STRING_SHORT, $this->getData(['config', 'cookieConsent']))
] ]
] ]
]); ]);

View File

@ -167,26 +167,6 @@
</a> </a>
</span> </span>
</h4> </h4>
<div class="row">
<div class="col12">
<?php echo template::textarea('localeCookiesZwiiText', [
'help' => 'Saisissez le message pour les cookies déposés par ZwiiCMS, nécessaires au fonctionnement et qui ne nécessitent pas de consentement.',
'label' => 'Cookies Zwii',
'value' => $this->getData(['locale', 'cookies', 'cookiesZwiiText']),
'placeHolder' => 'Ce site utilise des cookies nécessaires à son fonctionnement, ils permettent de fluidifier son fonctionnement par exemple en mémorisant les données de connexion, la langue que vous avez choisie ou la validation de ce message.'
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<?php echo template::textarea('localeCookiesGaText', [
'help' => 'Saisissez le message pour les cookies déposés par Google Analytics, le consentement est requis.',
'label' => 'Cookies Google Analytics',
'value' => $this->getData(['locale', 'cookies', 'cookiesGaText']),
'placeHolder' => 'Il utilise également des cookies permettant de réaliser des statistiques de visites pour améliorer votre expérience utilisateur, ces cookies déposés par Google Analytics ont besoin de votre consentement.'
]); ?>
</div>
</div>
<div class="row"> <div class="row">
<div class="col12"> <div class="col12">
<?php echo template::text('localeCookiesTitleText', [ <?php echo template::text('localeCookiesTitleText', [
@ -198,15 +178,35 @@
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col6"> <div class="col8">
<?php echo template::textarea('localeCookiesZwiiText', [
'help' => 'Saisissez le message pour les cookies déposés par ZwiiCMS, nécessaires au fonctionnement et qui ne nécessitent pas de consentement.',
'label' => 'Cookies Zwii',
'value' => $this->getData(['locale', 'cookies', 'cookiesZwiiText']),
'placeHolder' => 'Ce site utilise des cookies nécessaires à son fonctionnement, ils permettent de fluidifier son fonctionnement par exemple en mémorisant les données de connexion, la langue que vous avez choisie ou la validation de ce message.'
]); ?>
</div>
<div class="col4">
<?php echo template::text('localeCookiesLinkMlText', [ <?php echo template::text('localeCookiesLinkMlText', [
'help' => 'Saisissez le texte du lien vers les mentions légales.', 'help' => 'Saisissez le texte du lien vers les mentions légales,la page doit être définie dans la configuration du site.',
'label' => 'Lien vers mentions légales', 'label' => 'Lien page des mentions légales.',
'value' => $this->getData(['locale', 'cookies', 'cookiesLinkMlText']), 'value' => $this->getData(['locale', 'cookies', 'cookiesLinkMlText']),
'placeHolder' => 'Voir les mentions légales' 'placeHolder' => 'Voir les mentions légales'
]); ?> ]); ?>
</div> </div>
<div class="col6"> </div>
<div class="row">
<div class="col8">
<?php echo template::textarea('localeCookiesGaText', [
'help' => 'Saisissez le message pour les cookies déposés par Google Analytics, le consentement est requis.',
'label' => 'Cookies Google Analytics',
'value' => $this->getData(['locale', 'cookies', 'cookiesGaText']),
'placeHolder' => 'Il utilise également des cookies permettant de réaliser des statistiques de visites pour améliorer votre expérience utilisateur, ces cookies déposés par Google Analytics ont besoin de votre consentement.'
]); ?>
</div>
<div class="col4">
<?php echo template::text('localeCookiesCheckboxGaText', [ <?php echo template::text('localeCookiesCheckboxGaText', [
'help' => 'Saisissez le texte de la case à cocher Google Analytics.', 'help' => 'Saisissez le texte de la case à cocher Google Analytics.',
'label' => 'Checkbox Google Analytics', 'label' => 'Checkbox Google Analytics',
@ -215,6 +215,15 @@
]); ?> ]); ?>
</div> </div>
</div> </div>
<div class="row">
<div class="col4 offset4">
<?php echo template::text('localeCookiesButtonText', [
'label' => 'Bouton de validation',
'value' => $this->getData(['locale', 'cookies', 'cookiesButtonText']),
'placeHolder' => 'J\'ai compris'
]); ?>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -81,8 +81,8 @@ class init extends common {
'cookiesLinkMlText' => 'Voir les mentions légales', 'cookiesLinkMlText' => 'Voir les mentions légales',
'cookiesCheckboxGaText' => 'Autorisation des cookies Google Analytics', 'cookiesCheckboxGaText' => 'Autorisation des cookies Google Analytics',
'cookiesFooterText' => 'Confidentialité' 'cookiesFooterText' => 'Confidentialité'
'cookieButtonText' => 'J\'ai compris'
] ]
], ],
'page' => [ 'page' => [
'accueil' => [ 'accueil' => [

View File

@ -90,7 +90,7 @@
</div> </div>
<div class="col3"> <div class="col3">
<?php echo template::checkbox('themefooterDisplayCookie', true, 'Confidentialité', [ <?php echo template::checkbox('themefooterDisplayCookie', true, 'Confidentialité', [
'checked' => $this->getData(['config', 'cookieConsent']) ? false : $this->getData(['theme', 'footer', 'displayCookie']), 'checked' => $this->getData(['config', 'cookieConsent']) === true ? $this->getData(['theme', 'footer', 'displayCookie']) : false,
'help' => 'Affiche le message relatif au cookie, disponible si le message d\'acceptation des cookies est activé.', 'help' => 'Affiche le message relatif au cookie, disponible si le message d\'acceptation des cookies est activé.',
'disabled' => !$this->getData(['config', 'cookieConsent']) 'disabled' => !$this->getData(['config', 'cookieConsent'])
]); ?> ]); ?>