From 350370eaf0bd704ba75a829a092bb60b3ed3dbf8 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Fri, 26 Nov 2021 11:36:41 +0100 Subject: [PATCH 01/21] =?UTF-8?q?Variable=20non=20d=C3=A9finie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/core.php | 1 + 1 file changed, 1 insertion(+) diff --git a/core/core.php b/core/core.php index 4f562b7d..b5682eb9 100644 --- a/core/core.php +++ b/core/core.php @@ -976,6 +976,7 @@ class common { if (!is_dir($fileInfo['dirname'])) { mkdir($fileInfo['dirname'], 0755, true); } + $source_image = ''; // Type d'image switch( $fileInfo['extension']) { case 'jpeg': From 3acbaa72d130a661548379a4fe58550deeec8d93 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Fri, 26 Nov 2021 12:05:07 +0100 Subject: [PATCH 02/21] =?UTF-8?q?Bug=20couleur=20arri=C3=A8re=20plan=20de?= =?UTF-8?q?=20la=20banni=C3=A8re=20perso?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/core.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/core/core.php b/core/core.php index b5682eb9..487fde45 100644 --- a/core/core.php +++ b/core/core.php @@ -45,7 +45,7 @@ class common { // Numéro de version const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/update/raw/branch/master/'; - const ZWII_VERSION = '11.2.00.9'; + const ZWII_VERSION = '11.2.00.10'; const ZWII_UPDATE_CHANNEL = "test"; public static $actions = []; @@ -2269,6 +2269,8 @@ class core extends common { $css .= '.mce-tinymce {border: 1px solid ' . $this->getdata(['theme','block','borderColor']) .' !important;}'; // Bannière + + // Eléments communs if($this->getData(['theme', 'header', 'margin'])) { if($this->getData(['theme', 'menu', 'position']) === 'site-first') { $css .= 'header{margin:0 20px}'; @@ -2277,8 +2279,11 @@ class core extends common { $css .= 'header{margin:20px 20px 0 20px}'; } } + $colors = helper::colorVariants($this->getData(['theme', 'header', 'backgroundColor'])); + $css .= 'header{background-color:' . $colors['normal'] . ';}'; + + // Bannière de type papier peint if ($this->getData(['theme','header','feature']) === 'wallpaper' ) { - $colors = helper::colorVariants($this->getData(['theme', 'header', 'backgroundColor'])); $css .= 'header{background-size:' . $this->getData(['theme','header','imageContainer']).'}'; $css .= 'header{background-color:' . $colors['normal']; @@ -2292,9 +2297,11 @@ class core extends common { $colors = helper::colorVariants($this->getData(['theme', 'header', 'textColor'])); $css .= 'header span{color:' . $colors['normal'] . ';font-family:"' . str_replace('+', ' ', $this->getData(['theme', 'header', 'font'])) . '",sans-serif;font-weight:' . $this->getData(['theme', 'header', 'fontWeight']) . ';font-size:' . $this->getData(['theme', 'header', 'fontSize']) . ';text-transform:' . $this->getData(['theme', 'header', 'textTransform']) . '}'; } + + // Bannière au contenu personnalisé if ($this->getData(['theme','header','feature']) === 'feature' ) { // Hauteur de la taille du contenu perso - $css .= 'header #featureContent{height:' . $this->getData(['theme', 'header', 'height']) . '; }'; + $css .= 'header #featureContent{height:' . $this->getData(['theme', 'header', 'height']) . ';}'; } From 4f4b4b292e891c5298aef4f2cec7d1e989809370 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Fri, 26 Nov 2021 12:34:59 +0100 Subject: [PATCH 03/21] changes --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 78432191..ce52331d 100755 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,6 +6,7 @@ - la validation du formulaire sans avoir sélectionné de fichier de sauvegarde provoque le crash du site. - la conversion des URL des ressources ne fonctionnait plus depuis l'externalisation du contenu des pages dans des fichiers séparés. - Modifications : + - Gestion des cookies : nouvelles options de personnalisation du message d'acceptation des cookies, refus du cookie Google Analytics. - Thème : - Disposition des options de configuration du site. - Bannière : le contenu peut être personnalisé à l'aide d'un éditeur. La bannière au-dessus du site peut s'étendre sur la largeur de la page. From fef670a209a0546e0f21e4956c343809eb3aeddc Mon Sep 17 00:00:00 2001 From: fredtempez Date: Fri, 26 Nov 2021 14:48:39 +0100 Subject: [PATCH 04/21] supprimer les animations de cookies --- core/module/config/view/connect/connect.php | 78 ++++++++++----------- core/module/config/view/index/index.js.php | 7 +- 2 files changed, 42 insertions(+), 43 deletions(-) diff --git a/core/module/config/view/connect/connect.php b/core/module/config/view/connect/connect.php index 60a27671..b06db9cd 100644 --- a/core/module/config/view/connect/connect.php +++ b/core/module/config/view/connect/connect.php @@ -132,49 +132,47 @@ ]); ?> -
-
-
- '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(['config', 'cookies', 'cookiesZwiiText']) - ]); ?> -
+
+
+ '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(['config', 'cookies', 'cookiesZwiiText']) + ]); ?>
-
-
- 'Saisissez le message pour les cookies déposés par Google Analytics, le consentement est requis.', - 'label' => 'Cookies Google Analytics', - 'value' => $this->getData(['config', 'cookies', 'cookiesGaText']) - ]); ?> -
+
+
+
+ 'Saisissez le message pour les cookies déposés par Google Analytics, le consentement est requis.', + 'label' => 'Cookies Google Analytics', + 'value' => $this->getData(['config', 'cookies', 'cookiesGaText']) + ]); ?>
-
-
- 'Saisissez le titre de la fenêtre de gestion des cookies.', - 'label' => 'Titre de la fenêtre', - 'value' => $this->getData(['config', 'cookies', 'cookiesTitleText']) - ]); ?> -
+
+
+
+ 'Saisissez le titre de la fenêtre de gestion des cookies.', + 'label' => 'Titre de la fenêtre', + 'value' => $this->getData(['config', 'cookies', 'cookiesTitleText']) + ]); ?>
-
-
- 'Saisissez le texte du lien vers les mentions légales.', - 'label' => 'Lien vers mentions légales', - 'value' => $this->getData(['config', 'cookies', 'cookiesLinkMlText']) - ]); ?> -
-
- 'Saisissez le texte de la case à cocher Google Analytics.', - 'label' => 'Checkbox Google Analytics', - 'value' => $this->getData(['config', 'cookies', 'cookiesCheckboxGaText']) - ]); ?> -
+
+
+
+ 'Saisissez le texte du lien vers les mentions légales.', + 'label' => 'Lien vers mentions légales', + 'value' => $this->getData(['config', 'cookies', 'cookiesLinkMlText']) + ]); ?> +
+
+ 'Saisissez le texte de la case à cocher Google Analytics.', + 'label' => 'Checkbox Google Analytics', + 'value' => $this->getData(['config', 'cookies', 'cookiesCheckboxGaText']) + ]); ?>
diff --git a/core/module/config/view/index/index.js.php b/core/module/config/view/index/index.js.php index 5c468212..e75d3842 100644 --- a/core/module/config/view/index/index.js.php +++ b/core/module/config/view/index/index.js.php @@ -41,12 +41,13 @@ $( document).ready(function() { /** * Cookie */ + /* if ($("input[name=configCookieConsent]").is(':checked')) { $("#cookieContainer").slideDown(); } else { $("#cookieContainer").slideUp(); } - + */ // Gestion des événements //--------------------------------------------------------------------------------------------------------------------- @@ -189,7 +190,7 @@ $( document).ready(function() { /** * Options des cookies */ - +/* $("input[name=configCookieConsent]").on("change", function() { if ($("input[name=configCookieConsent]").is(':checked')) { $("#cookieContainer").slideDown(); @@ -197,7 +198,7 @@ $( document).ready(function() { $("#cookieContainer").slideUp(); } }); - +*/ var configLayout = getCookie("configLayout"); if (configLayout == null) { From ce702d3de26a38b09476621ba7e701ff70136093 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Fri, 26 Nov 2021 15:12:43 +0100 Subject: [PATCH 05/21] changes --- CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index ce52331d..d9114ea8 100755 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,7 +6,7 @@ - la validation du formulaire sans avoir sélectionné de fichier de sauvegarde provoque le crash du site. - la conversion des URL des ressources ne fonctionnait plus depuis l'externalisation du contenu des pages dans des fichiers séparés. - Modifications : - - Gestion des cookies : nouvelles options de personnalisation du message d'acceptation des cookies, refus du cookie Google Analytics. + - Gestion des cookies : nouvelles options de personnalisation du message d'acceptation des cookies, acceptation ou refus du cookie Google Analytics. - Thème : - Disposition des options de configuration du site. - Bannière : le contenu peut être personnalisé à l'aide d'un éditeur. La bannière au-dessus du site peut s'étendre sur la largeur de la page. From 947df175519a2f8e984837c42a74777c43b29e64 Mon Sep 17 00:00:00 2001 From: SylvainLelievre Date: Sat, 27 Nov 2021 08:47:00 +0100 Subject: [PATCH 06/21] Lien gestion des cookies dans le footer --- core/core.js.php | 15 +++++++++++++++ core/core.php | 6 ++++-- core/layout/common.css | 1 + core/module/config/config.php | 3 ++- core/module/config/view/connect/connect.php | 7 +++++++ core/module/install/ressource/defaultdata.php | 3 ++- 6 files changed, 31 insertions(+), 4 deletions(-) diff --git a/core/core.js.php b/core/core.js.php index 0e7b98ea..f0b9c3be 100644 --- a/core/core.js.php +++ b/core/core.js.php @@ -244,6 +244,21 @@ core.start = function() { document.cookie = "ZWII_COOKIE_CONSENT=;" + domain + ";" + path + ";" + samesite + ";" + expires; }); + /** + * Suppression du cookie de consentement + */ + $('#footerCookies').bind('click', function(event) { + var samesite = "samesite=lax"; + var getUrl = window.location; + var domain = "domain=" + getUrl.host; + var path = "path=" + getUrl.pathname.split('/')[1]; + var samesite = "samesite=lax"; + var e = new Date(); + e.setFullYear(e.getFullYear() - 1); + var expires = "expires=" + e.toUTCString(); + document.cookie = "ZWII_COOKIE_CONSENT=;" + domain + ";" + path + ";" + samesite + ";" + expires; + }); + /** * Fermeture de la popup des cookies */ diff --git a/core/core.php b/core/core.php index 487fde45..1d46d9b1 100644 --- a/core/core.php +++ b/core/core.php @@ -1480,6 +1480,8 @@ class common { $items .= ' | ' . $label .''; } $items .= ''; + // Affichage de la gestion des cookies + $items .= $this->getData(['config', 'cookies', 'cookieConsent' ]) === false ? '':' | '.$this->getData(['config', 'cookies', 'cookiesFooterText' ]).''; // Affichage du lien de connexion if( ( @@ -2269,7 +2271,7 @@ class core extends common { $css .= '.mce-tinymce {border: 1px solid ' . $this->getdata(['theme','block','borderColor']) .' !important;}'; // Bannière - + // Eléments communs if($this->getData(['theme', 'header', 'margin'])) { if($this->getData(['theme', 'menu', 'position']) === 'site-first') { @@ -2281,7 +2283,7 @@ class core extends common { } $colors = helper::colorVariants($this->getData(['theme', 'header', 'backgroundColor'])); $css .= 'header{background-color:' . $colors['normal'] . ';}'; - + // Bannière de type papier peint if ($this->getData(['theme','header','feature']) === 'wallpaper' ) { $css .= 'header{background-size:' . $this->getData(['theme','header','imageContainer']).'}'; diff --git a/core/layout/common.css b/core/layout/common.css index 36a1e377..292ba574 100755 --- a/core/layout/common.css +++ b/core/layout/common.css @@ -838,6 +838,7 @@ footer #footerbody>div { #footerDisplayVersion, #footerDisplaySiteMap, #footerDisplayLegal, +#footerCookies, #footerDisplaySearch, #footerZwiiCMS { font-size: inherit; diff --git a/core/module/config/config.php b/core/module/config/config.php index 3ef582d9..3b10fd07 100644 --- a/core/module/config/config.php +++ b/core/module/config/config.php @@ -509,7 +509,8 @@ class config extends common { 'cookiesGaText' => $this->getInput('connectCookiesGaText', helper::FILTER_STRING_LONG), 'cookiesTitleText' => $this->getInput('connectCookiesTitleText', helper::FILTER_STRING_SHORT), 'cookiesLinkMlText' => $this->getInput('connectCookiesLinkMlText', helper::FILTER_STRING_SHORT), - 'cookiesCheckboxGaText' => $this->getInput('connectCookiesCheckboxGaText', helper::FILTER_STRING_SHORT) + 'cookiesCheckboxGaText' => $this->getInput('connectCookiesCheckboxGaText', helper::FILTER_STRING_SHORT), + 'cookiesFooterText' => $this->getInput('connectCookiesFooterText', helper::FILTER_STRING_SHORT) ] ] ]); diff --git a/core/module/config/view/connect/connect.php b/core/module/config/view/connect/connect.php index b06db9cd..affb5312 100644 --- a/core/module/config/view/connect/connect.php +++ b/core/module/config/view/connect/connect.php @@ -131,6 +131,13 @@ 'help' => 'Activation obligatoire selon les lois françaises sauf si vous utilisez votre propre système de consentement.' ]); ?>
+
+ 'Saisissez le texte du lien, présent dans le pied de page, qui permet au visiteur de modifier son consentement aux cookies.', + 'label' => 'Texte du lien dans le pied de page', + 'value' => $this->getData(['config', 'cookies', 'cookiesFooterText']) + ]); ?> +
diff --git a/core/module/install/ressource/defaultdata.php b/core/module/install/ressource/defaultdata.php index 3c7f7d0d..791695ec 100644 --- a/core/module/install/ressource/defaultdata.php +++ b/core/module/install/ressource/defaultdata.php @@ -58,7 +58,8 @@ class init extends common { 'cookiesGaText' => '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.', 'cookiesTitleText' => 'Gérer les cookies', 'cookiesLinkMlText' => 'Voir les mentions légales', - 'cookiesCheckboxGaText' => 'Autorisation des cookies Google Analytics' + 'cookiesCheckboxGaText' => 'Autorisation des cookies Google Analytics', + 'cookiesFooterText' => 'Gestion des cookies' ] ], 'core' => [ From dd78774357c7b1d3ad87a2807d38a0b513c7be54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Tempez?= Date: Sat, 27 Nov 2021 16:20:25 +0100 Subject: [PATCH 07/21] =?UTF-8?q?D=C3=A9placement=20des=20options=20dans?= =?UTF-8?q?=20la=20config?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/core.js.php | 28 ++++--- core/core.php | 19 +++-- core/include/update.inc.php | 15 ++-- core/module/config/config.php | 21 ++--- core/module/config/view/connect/connect.php | 71 ---------------- core/module/config/view/locale/locale.php | 82 +++++++++++++++++-- core/module/config/view/setup/setup.php | 6 ++ core/module/install/ressource/defaultdata.php | 22 ++--- core/module/theme/theme.php | 1 + core/module/theme/view/footer/footer.php | 28 ++++--- 10 files changed, 156 insertions(+), 137 deletions(-) diff --git a/core/core.js.php b/core/core.js.php index f0b9c3be..ac429c36 100644 --- a/core/core.js.php +++ b/core/core.js.php @@ -206,18 +206,6 @@ core.start = function() { $("#notification").fadeOut(); $("#notificationProgress").stop(); }); - /** - * Affiche / Cache le menu en mode responsive - */ - var menuDOM = $("#menu"); - $("#toggle").on("click", function() { - menuDOM.slideToggle(); - }); - $(window).on("resize", function() { - if($(window).width() > 768) { - menuDOM.css("display", ""); - } - }); /** * Traitement du formulaire cookies @@ -244,7 +232,7 @@ core.start = function() { document.cookie = "ZWII_COOKIE_CONSENT=;" + domain + ";" + path + ";" + samesite + ";" + expires; }); - /** + /** * Suppression du cookie de consentement */ $('#footerCookies').bind('click', function(event) { @@ -265,6 +253,20 @@ core.start = function() { $("#cookieConsent .cookieClose").on("click", function() { $(this).parents("#cookieConsent").fadeOut(); }); + + /** + * Affiche / Cache le menu en mode responsive + */ + var menuDOM = $("#menu"); + $("#toggle").on("click", function() { + menuDOM.slideToggle(); + }); + $(window).on("resize", function() { + if($(window).width() > 768) { + menuDOM.css("display", ""); + } + }); + /** * Choix de page dans la barre de membre */ diff --git a/core/core.php b/core/core.php index 1d46d9b1..8efd39ef 100644 --- a/core/core.php +++ b/core/core.php @@ -1192,25 +1192,25 @@ class common { public function showCookies() { if( $this->getInput('ZWII_COOKIE_CONSENT') !== $_SERVER['PHP_SELF'] AND - $this->getData(['config', 'cookies', 'cookieConsent']) === true + $this->getData(['config', 'cookieConsent']) === true ){ - $analytics = $this->getData(['config', 'seo', 'analyticsId']); - $legalPage = $this->getData(['locale','legalPageId']) ==='none'? 'mentions-legales' : $this->getData(['locale','legalPageId']); + $analytics = $this->getData(['locale', 'seo', 'analyticsId']); + $legalPage = $this->getData(['locale', 'legalPageId']) ==='none'? 'mentions-legales' : $this->getData(['locale','legalPageId']); $item = '
'; $item .= '
'; $item .= template::ico('cancel'); $item .= '
'; - $item .= '

'. $this->getData(['config', 'cookies', 'cookiesTitleText']) . '

'; - $item .= '

' . $this->getData(['config', 'cookies', 'cookiesZwiiText']) . '

'; - $item .= '

' . $this->getData(['config', 'cookies', 'cookiesLinkMlText']) . '

'; + $item .= '

'. $this->getData(['locale', 'cookies', 'cookiesTitleText']) . '

'; + $item .= '

' . $this->getData(['locale', 'cookies', 'cookiesZwiiText']) . '

'; + $item .= '

' . $this->getData(['locale', 'cookies', 'cookiesLinkMlText']) . '

'; if( $analytics !== null AND $analytics !=='' ){ - $item .= '

' . $this->getData(['config', 'cookies', 'cookiesGaText']) . '

'; + $item .= '

' . $this->getData(['locale', 'cookies', 'cookiesGaText']) . '

'; } $item .= '
'; if( $analytics !== null AND $analytics !=='' ) { $item .= ''; - $item .= ''; + $item .= ''; } $item .= '

'; $item .= ''; @@ -1481,7 +1481,8 @@ class common { } $items .= ''; // Affichage de la gestion des cookies - $items .= $this->getData(['config', 'cookies', 'cookieConsent' ]) === false ? '':' | '.$this->getData(['config', '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'])) ? '':' | '. $label .''; // Affichage du lien de connexion if( ( diff --git a/core/include/update.inc.php b/core/include/update.inc.php index a05fc511..afdc8e94 100644 --- a/core/include/update.inc.php +++ b/core/include/update.inc.php @@ -698,15 +698,16 @@ if ($this->getData(['core', 'dataVersion']) < 11200) { $this->setData(['theme', 'header', 'featureContent', '

Bannière vide

']); $this->setData(['theme', 'header', 'container', 'container']); $this->setData(['theme', 'menu', 'container', 'container']); + // Option des cookies dans le footer + $this->setData(['theme', 'footer', 'displayCookie', false]); // Acceptation et paramétres des cookies RGPD - $this->setData(['config', 'cookies', 'cookieConsent', $this->getData(['config', 'cookieConsent']) ]); - $this->deleteData(['config', 'cookieConsent' ]); - $this->setData(['config', 'cookies', 'cookiesZwiiText', '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.']); - $this->setData(['config', 'cookies', 'cookiesGaText', '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.']); - $this->setData(['config', 'cookies', 'cookiesTitleText', 'Gérer les cookies']); - $this->setData(['config', 'cookies', 'cookiesLinkMlText', 'Voir les mentions légales']); - $this->setData(['config', 'cookies', 'cookiesCheckboxGaText', 'Autorisation des cookies Google Analytics']); + $this->setData(['locale', 'cookies', 'cookieZwiiText', '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.']); + $this->setData(['locale', 'cookies', 'cookieGaText', '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.']); + $this->setData(['locale', 'cookies', 'cookieTitleText', 'Gérer les cookies']); + $this->setData(['locale', 'cookies', 'cookieLinkMlText', 'Voir les mentions légales']); + $this->setData(['locale', 'cookies', 'cookieCheckboxGaText', 'Autorisation des cookies Google Analytics']); + // Mise à jour $this->setData(['core', 'dataVersion', 11200]); diff --git a/core/module/config/config.php b/core/module/config/config.php index 3b10fd07..98f7645d 100644 --- a/core/module/config/config.php +++ b/core/module/config/config.php @@ -437,7 +437,16 @@ class config extends common { 'legalPageLabel' => empty($this->getInput('localeLegalPageLabel', helper::FILTER_STRING_SHORT)) ? 'Mentions légales' : $this->getInput('localeLegalPageLabel', helper::FILTER_STRING_SHORT), 'sitemapPageLabel' => empty($this->getInput('localeSitemapPageLabel', helper::FILTER_STRING_SHORT)) ? 'Plan du site' : $this->getInput('localeSitemapPageLabel', helper::FILTER_STRING_SHORT), 'metaDescription' => $this->getInput('localeMetaDescription', helper::FILTER_STRING_LONG, true), - 'title' => $this->getInput('localeTitle', helper::FILTER_STRING_SHORT, true) + 'title' => $this->getInput('localeTitle', helper::FILTER_STRING_SHORT, true), + 'cookies' => [ + // Les champs sont obligatoires si l'option consentement des cookies est active + 'cookiesZwiiText' => $this->getInput('localeCookiesZwiiText', helper::FILTER_STRING_LONG, $this->getData(['config', 'cookieConsent'])), + 'cookiesGaText' => $this->getInput('localeCookiesGaText', helper::FILTER_STRING_LONG, $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'])), + 'cookiesCheckboxGaText' => $this->getInput('localeCookiesCheckboxGaText', helper::FILTER_STRING_SHORT, $this->getData(['config', 'cookieConsent'])), + 'cookiesFooterText' => $this->getInput('localeCookiesFooterText', helper::FILTER_STRING_SHORT, $this->getData(['config', 'cookieConsent'])) + ] ] ]); @@ -452,6 +461,7 @@ class config extends common { 'autoUpdateHtaccess' => $this->getInput('configAutoUpdateHtaccess', helper::FILTER_BOOLEAN), 'autoBackup' => $this->getInput('configAutoBackup', helper::FILTER_BOOLEAN), 'maintenance' => $this->getInput('configMaintenance', helper::FILTER_BOOLEAN), + 'cookieConsent' => $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN), 'proxyType' => $this->getInput('configProxyType'), 'proxyUrl' => $this->getInput('configProxyUrl'), 'proxyPort' => $this->getInput('configProxyPort',helper::FILTER_INT), @@ -502,15 +512,6 @@ class config extends common { 'it' => $this->getData(['config', 'i18n', 'it']), 'nl' => $this->getData(['config', 'i18n', 'nl']), 'pt' => $this->getData(['config', 'i18n', 'pt']) - ], - 'cookies' => [ - 'cookieConsent' => $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN), - 'cookiesZwiiText' => $this->getInput('connectCookiesZwiiText', helper::FILTER_STRING_LONG), - 'cookiesGaText' => $this->getInput('connectCookiesGaText', helper::FILTER_STRING_LONG), - 'cookiesTitleText' => $this->getInput('connectCookiesTitleText', helper::FILTER_STRING_SHORT), - 'cookiesLinkMlText' => $this->getInput('connectCookiesLinkMlText', helper::FILTER_STRING_SHORT), - 'cookiesCheckboxGaText' => $this->getInput('connectCookiesCheckboxGaText', helper::FILTER_STRING_SHORT), - 'cookiesFooterText' => $this->getInput('connectCookiesFooterText', helper::FILTER_STRING_SHORT) ] ] ]); diff --git a/core/module/config/view/connect/connect.php b/core/module/config/view/connect/connect.php index affb5312..e5e1baf5 100644 --- a/core/module/config/view/connect/connect.php +++ b/core/module/config/view/connect/connect.php @@ -114,75 +114,4 @@
-
-
-
-

Cookies - - - - - -

-
-
- $this->getData(['config', 'cookies', 'cookieConsent']), - 'help' => 'Activation obligatoire selon les lois françaises sauf si vous utilisez votre propre système de consentement.' - ]); ?> -
-
- 'Saisissez le texte du lien, présent dans le pied de page, qui permet au visiteur de modifier son consentement aux cookies.', - 'label' => 'Texte du lien dans le pied de page', - 'value' => $this->getData(['config', 'cookies', 'cookiesFooterText']) - ]); ?> -
-
-
-
- '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(['config', 'cookies', 'cookiesZwiiText']) - ]); ?> -
-
-
-
- 'Saisissez le message pour les cookies déposés par Google Analytics, le consentement est requis.', - 'label' => 'Cookies Google Analytics', - 'value' => $this->getData(['config', 'cookies', 'cookiesGaText']) - ]); ?> -
-
-
-
- 'Saisissez le titre de la fenêtre de gestion des cookies.', - 'label' => 'Titre de la fenêtre', - 'value' => $this->getData(['config', 'cookies', 'cookiesTitleText']) - ]); ?> -
-
-
-
- 'Saisissez le texte du lien vers les mentions légales.', - 'label' => 'Lien vers mentions légales', - 'value' => $this->getData(['config', 'cookies', 'cookiesLinkMlText']) - ]); ?> -
-
- 'Saisissez le texte de la case à cocher Google Analytics.', - 'label' => 'Checkbox Google Analytics', - 'value' => $this->getData(['config', 'cookies', 'cookiesCheckboxGaText']) - ]); ?> -
-
-
-
-
diff --git a/core/module/config/view/locale/locale.php b/core/module/config/view/locale/locale.php index 3dce33d8..88e596a8 100644 --- a/core/module/config/view/locale/locale.php +++ b/core/module/config/view/locale/locale.php @@ -55,9 +55,9 @@
-

Assignation des pages spéciales - - +

Assignation des pages spéciales + + @@ -123,27 +123,97 @@

-
+
'Mentions légales', 'placeholder' => 'Mentions légales', 'value' => $this->getData(['locale', 'legalPageLabel']) ]); ?>
-
+
'Rechercher', 'placeholder' => 'Rechercher', 'value' => $this->getData(['locale', 'searchPageLabel']) ]); ?>
-
+
+
+
'Plan du site', 'placeholder' => 'Plan du site', 'value' => $this->getData(['locale', 'sitemapPageLabel']), ]); ?>
+
+ 'Confidentialité des cookies', + 'value' => $this->getData(['locale', 'cookies', 'cookiesFooterText']), + 'placeHolder' => 'Confidentialité' + ]); ?> +
+
+
+
+
+
+
+
+

Message d'acceptation des Cookies + + + + + +

+
+
+ '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.' + ]); ?> +
+
+
+
+ '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.' + ]); ?> +
+
+
+
+ 'Saisissez le titre de la fenêtre de gestion des cookies.', + 'label' => 'Titre de la fenêtre', + 'value' => $this->getData(['locale', 'cookies', 'cookiesTitleText']), + 'placeHolder' => 'Gérer les cookies' + ]); ?> +
+
+
+
+ 'Saisissez le texte du lien vers les mentions légales.', + 'label' => 'Lien vers mentions légales', + 'value' => $this->getData(['locale', 'cookies', 'cookiesLinkMlText']), + 'placeHolder' => 'Voir les mentions légales' + ]); ?> +
+
+ 'Saisissez le texte de la case à cocher Google Analytics.', + 'label' => 'Checkbox Google Analytics', + 'value' => $this->getData(['locale', 'cookies', 'cookiesCheckboxGaText']), + 'placeHolder' => 'Autorisation des cookies Google Analytics' + ]); ?> +
diff --git a/core/module/config/view/setup/setup.php b/core/module/config/view/setup/setup.php index 86240f0c..5e03ec8d 100644 --- a/core/module/config/view/setup/setup.php +++ b/core/module/config/view/setup/setup.php @@ -35,6 +35,12 @@

+
+ $this->getData(['config', 'cookieConsent']), + 'help' => 'Activation obligatoire selon les lois françaises sauf si vous utilisez votre propre système de consentement.' + ]); ?> +
helper::checkRewrite(), diff --git a/core/module/install/ressource/defaultdata.php b/core/module/install/ressource/defaultdata.php index 791695ec..176352b7 100644 --- a/core/module/install/ressource/defaultdata.php +++ b/core/module/install/ressource/defaultdata.php @@ -9,6 +9,7 @@ class init extends common { 'favicon' => 'favicon.ico', 'faviconDark' => 'faviconDark.ico', 'maintenance' => false, + 'cookieConsent' => true, 'social' => [ 'facebookId' => 'facebook', 'instagramId' => '', @@ -51,15 +52,6 @@ class init extends common { 'it'=> 'none', 'nl'=> 'none', 'pt'=> 'none' - ], - 'cookies' => [ - 'cookieConsent' => true, - 'cookiesZwiiText' => '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.', - 'cookiesGaText' => '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.', - 'cookiesTitleText' => 'Gérer les cookies', - 'cookiesLinkMlText' => 'Voir les mentions légales', - 'cookiesCheckboxGaText' => 'Autorisation des cookies Google Analytics', - 'cookiesFooterText' => 'Gestion des cookies' ] ], 'core' => [ @@ -81,7 +73,16 @@ class init extends common { 'sitemapPageLabel' => 'Plan du site', 'legalPageLabel' => 'Mentions légales', 'metaDescription' => 'Zwii est un CMS sans base de données qui permet de créer et gérer facilement un site web sans aucune connaissance en programmation.', - 'title' => 'Votre site en quelques clics !' + 'title' => 'Votre site en quelques clics !', + 'cookies' => [ + 'cookiesZwiiText' => '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.', + 'cookiesGaText' => '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.', + 'cookiesTitleText' => 'Gérer les cookies', + 'cookiesLinkMlText' => 'Voir les mentions légales', + 'cookiesCheckboxGaText' => 'Autorisation des cookies Google Analytics', + 'cookiesFooterText' => 'Confidentialité' + ] + ], 'page' => [ 'accueil' => [ @@ -144,6 +145,7 @@ class init extends common { 'displayVersion' => true, 'displaySiteMap' => true, 'displayCopyright' => false, + 'displayCookie' => false, 'displayLegal' => false, 'displaySearch' => false, 'displayMemberBar' => false, diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php index bc22e4e4..4deebd30 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -391,6 +391,7 @@ class theme extends common { 'displayVersion' => $this->getInput('themefooterDisplayVersion', helper::FILTER_BOOLEAN), 'displaySiteMap' => $this->getInput('themefooterDisplaySiteMap', helper::FILTER_BOOLEAN), 'displayCopyright' => $this->getInput('themefooterDisplayCopyright', helper::FILTER_BOOLEAN), + 'displayCookie' => $this->getInput('themefooterDisplayCookie', helper::FILTER_BOOLEAN), 'displayLegal' => $this->getInput('themeFooterDisplayLegal', helper::FILTER_BOOLEAN), 'displaySearch' => $this->getInput('themeFooterDisplaySearch', helper::FILTER_BOOLEAN), 'displayMemberBar'=> $this->getInput('themeFooterDisplayMemberBar', helper::FILTER_BOOLEAN), diff --git a/core/module/theme/view/footer/footer.php b/core/module/theme/view/footer/footer.php index cee78331..9c1df67e 100644 --- a/core/module/theme/view/footer/footer.php +++ b/core/module/theme/view/footer/footer.php @@ -71,32 +71,39 @@

Contenu

-
+
$this->getData(['theme', 'footer','displayCopyright']), 'help' => 'Affiche cette mention devant ZwiiCMS' ]); ?>
-
+
$this->getData(['theme', 'footer','displayVersion']), 'help' => 'Affiche le numéro de version après ZwiiCMS' ]); ?>
-
+
$this->getData(['theme', 'footer', 'displaySiteMap']) ]); ?>
+
+ $this->getData(['config', 'cookieConsent']) ? false : $this->getData(['theme', 'footer', 'displayCookie']), + 'help' => 'Affiche le message relatif au cookie, disponible si le message d\'acceptation des cookies est activé.', + 'disabled' => !$this->getData(['config', 'cookieConsent']) + ]); ?> +
-
+
$this->getData(['theme', 'footer', 'loginLink']), 'help' => 'Pour limiter les tentatives de piratage, enregistrez la page de connexion en favori et désactivez cette option.' ]); ?>
-
+
$this->getData(['theme', 'footer', 'displayMemberBar']), 'help' => 'Affiche les icônes de gestion du compte et de déconnexion des membres simples connectés, ne s\'applique pas aux éditeurs et administrateurs.' @@ -104,29 +111,28 @@
-
+
$this->getData(['locale', 'legalPageId']) === 'none' ? false : $this->getData(['theme', 'footer', 'displayLegal']), 'disabled' => $this->getData(['locale', 'legalPageId']) === 'none' ? true : false, 'help' => 'Option active si une page a été sélectionnée.' ]); ?>
-
+
'Aucune'] , helper::arrayCollumn($module::$pagesList, 'title', 'SORT_ASC') ) , [ 'label' => 'Page "Mentions légales" ' . template::flag('site', '20px'), 'selected' => $this->getData(['locale', 'legalPageId']) ]); ?>
-
-
-
+ +
$this->getData(['locale', 'searchPageId']) === 'none' ? false : $this->getData(['theme', 'footer', 'displaySearch']), 'disabled' => $this->getData(['locale', 'searchPageId']) === 'none' ? true : false, 'help' => 'Option active si une page a été sélectionnée.' ]); ?>
-
+
'Aucune'] , helper::arrayCollumn($module::$pagesList, 'title', 'SORT_ASC') ) , [ 'label' => 'Page "Rechercher" ' . template::flag('site', '20px'), 'selected' => $this->getData(['locale', 'searchPageId']), From b49b2c103d19a182d1e00a901d005897d4cee7e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Tempez?= Date: Sat, 27 Nov 2021 17:43:19 +0100 Subject: [PATCH 08/21] =?UTF-8?q?lien=20mentions=20l=C3=A9gales=20si=20pag?= =?UTF-8?q?e=20d=C3=A9finie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/core.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/core/core.php b/core/core.php index 8efd39ef..e217235d 100644 --- a/core/core.php +++ b/core/core.php @@ -1196,16 +1196,18 @@ class common { ){ $analytics = $this->getData(['locale', 'seo', 'analyticsId']); - $legalPage = $this->getData(['locale', 'legalPageId']) ==='none'? 'mentions-legales' : $this->getData(['locale','legalPageId']); + $legalPage = $this->getData(['locale', 'legalPageId']); $item = '
'; - $item .= '
'; + $item .= '
'; $item .= template::ico('cancel'); $item .= '
'; $item .= '

'. $this->getData(['locale', 'cookies', 'cookiesTitleText']) . '

'; $item .= '

' . $this->getData(['locale', 'cookies', 'cookiesZwiiText']) . '

'; - $item .= '

' . $this->getData(['locale', 'cookies', 'cookiesLinkMlText']) . '

'; - if( $analytics !== null AND $analytics !=='' ){ - $item .= '

' . $this->getData(['locale', 'cookies', 'cookiesGaText']) . '

'; + if ($legalPage !== 'none') { + $item .= '

' . $this->getData(['locale', 'cookies', 'cookiesLinkMlText']) . '

'; + } + if( $analytics !== null AND $analytics !=='' ){ + $item .= '

' . $this->getData(['locale', 'cookies', 'cookiesGaText']) . '

'; } $item .= ''; if( $analytics !== null AND $analytics !=='' ) { From 6a239668430f902f81548bf08fec5c16124756cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Tempez?= Date: Sun, 28 Nov 2021 12:07:07 +0100 Subject: [PATCH 09/21] Cookie OKay ! --- core/core.js.php | 36 ++++++++++-- core/core.php | 55 +++++++++--------- core/include/update.inc.php | 2 +- core/layout/common.css | 11 ++-- core/module/config/config.php | 3 +- core/module/config/view/locale/locale.php | 57 +++++++++++-------- core/module/install/ressource/defaultdata.php | 2 +- core/module/theme/view/footer/footer.php | 2 +- 8 files changed, 105 insertions(+), 63 deletions(-) diff --git a/core/core.js.php b/core/core.js.php index ac429c36..c8ce0f0a 100644 --- a/core/core.js.php +++ b/core/core.js.php @@ -224,18 +224,27 @@ core.start = function() { // Crée le cookie d'acceptation Google Analytics si l'ID a été saisie var analytics = "getData(['config', 'seo', 'analyticsId']);?>"; + // l'Id GA est défini dans la configuration, afficher la checkbox d'acceptation if( analytics.length > 0){ - document.cookie = "ZWII_COOKIE_GA_CONSENT=" + $("#googleAnalytics").prop("checked") + "" +";" + 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=" + "" + ";" + 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=;" + domain + ";" + path + ";" + samesite + ";" + expires; }); /** * Suppression du cookie de consentement - */ - $('#footerCookies').bind('click', function(event) { + + $('#cookieConsentRefused').on('click', function() { + var samesite = "samesite=lax"; var getUrl = window.location; var domain = "domain=" + getUrl.host; @@ -244,8 +253,17 @@ core.start = function() { var e = new Date(); e.setFullYear(e.getFullYear() - 1); var expires = "expires=" + e.toUTCString(); - document.cookie = "ZWII_COOKIE_CONSENT=;" + 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 @@ -254,6 +272,14 @@ core.start = function() { $(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 */ diff --git a/core/core.php b/core/core.php index e217235d..bbe2c319 100644 --- a/core/core.php +++ b/core/core.php @@ -1174,7 +1174,7 @@ class common { */ public function showAnalytics() { 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 '