From 2f2702caed737234a09cf85ffa044a34b3bc8e80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Munsch?= Date: Tue, 18 Jun 2024 16:00:55 +0200 Subject: [PATCH] Closes #15 --- .env.example | 5 +- content/plugins/ldc-messages/ldc-messages.php | 2 +- .../ldc/contacts/6246_collaborateurs.php | 2 +- content/themes/ldc/contacts/6249_eleveurs.php | 219 ++++----- content/themes/ldc/contacts/6670_export.php | 204 ++++---- content/themes/ldc/contacts/6672_demande.php | 194 +++----- content/themes/ldc/contacts/6674_finance.php | 169 +++---- .../themes/ldc/contacts/6676_engagements.php | 167 +++---- .../contacts/6678_information_generale.php | 176 +++---- .../ldc/contacts/6681_information_produit.php | 2 +- content/themes/ldc/contacts/ajax_contact.php | 92 ++++ .../ldc/cookie-notice/custom-template.php | 419 ++++++++++++++++ content/themes/ldc/css/cn-inline-buttons.css | 90 ++++ content/themes/ldc/css/cookies-ldc.css | 451 ------------------ content/themes/ldc/css/cookies-ldc.min.css | 1 + content/themes/ldc/footer.php | 280 +---------- content/themes/ldc/functions.php | 16 +- content/themes/ldc/js/cn-inline-buttons.js | 26 + content/themes/ldc/js/ldcweb-cn.js | 372 --------------- content/themes/ldc/js/ldcweb-cn.min.js | 2 +- content/themes/ldc/js/script.js | 2 - content/themes/ldc/package-lock.json | 241 ++++++++++ content/themes/ldc/package.json | 17 + content/themes/ldc/page-finance.php | 14 +- content/themes/ldc/page-press.php | 234 ++++----- content/themes/ldc/partials/inline-cookie.php | 22 + .../themes/ldc/partials/menu-rejoin-en.php | 111 +++-- .../themes/ldc/partials/menu-rejoin-fr.php | 109 +++-- .../themes/ldc/partials/recaptcha-form.php | 41 ++ content/themes/ldc/sass/_cookies-notice.scss | 26 + 30 files changed, 1686 insertions(+), 2020 deletions(-) create mode 100644 content/themes/ldc/contacts/ajax_contact.php create mode 100644 content/themes/ldc/cookie-notice/custom-template.php create mode 100644 content/themes/ldc/css/cn-inline-buttons.css delete mode 100644 content/themes/ldc/css/cookies-ldc.css create mode 100644 content/themes/ldc/css/cookies-ldc.min.css create mode 100644 content/themes/ldc/js/cn-inline-buttons.js delete mode 100644 content/themes/ldc/js/ldcweb-cn.js create mode 100644 content/themes/ldc/package-lock.json create mode 100644 content/themes/ldc/package.json create mode 100644 content/themes/ldc/partials/inline-cookie.php create mode 100644 content/themes/ldc/partials/recaptcha-form.php create mode 100644 content/themes/ldc/sass/_cookies-notice.scss diff --git a/.env.example b/.env.example index a32e91d7..fcd03d1f 100644 --- a/.env.example +++ b/.env.example @@ -23,8 +23,6 @@ MAIL_ADMIN=equipe.web@ldc.fr PROJECT_UUID=de795411-08a3-4318-ac29-d30a2bb0e460 LDCWEB_API_TOKEN= MAIL_LIST_SERVICEWEB= -# LDC MESSAGE PLUGIN -LDC_MSG_PLUGIN_RECAPTCHA= # ALPHAVANTAGE ALPHAVANTAGE_API_KEY= # Matomo @@ -33,3 +31,6 @@ MATOMO_SITE_ID= CRM_ENDPOINT= CRM_TOKEN= CRM_PASSWORD= +# RECAPTCHA +RECAPTCHA_V3_PUBLIC= +RECAPTCHA_V3_SECRET= diff --git a/content/plugins/ldc-messages/ldc-messages.php b/content/plugins/ldc-messages/ldc-messages.php index 0cebd571..fb912207 100644 --- a/content/plugins/ldc-messages/ldc-messages.php +++ b/content/plugins/ldc-messages/ldc-messages.php @@ -200,7 +200,7 @@ function ContactAjx() $gToken = $_POST['token']; - $secret = getenv('LDC_MSG_PLUGIN_RECAPTCHA'); + $secret = getenv('RECAPTCHA_V3_SECRET'); if (isset($_SERVER["HTTP_X_FORWARDED_FOR"]) && $_SERVER["HTTP_X_FORWARDED_FOR"] != "") { if (strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ',')) { $explode = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); diff --git a/content/themes/ldc/contacts/6246_collaborateurs.php b/content/themes/ldc/contacts/6246_collaborateurs.php index 413bc58b..99e29ccb 100644 --- a/content/themes/ldc/contacts/6246_collaborateurs.php +++ b/content/themes/ldc/contacts/6246_collaborateurs.php @@ -1,4 +1,4 @@ -

+

diff --git a/content/themes/ldc/contacts/6249_eleveurs.php b/content/themes/ldc/contacts/6249_eleveurs.php index 2862cc60..0f4592e5 100644 --- a/content/themes/ldc/contacts/6249_eleveurs.php +++ b/content/themes/ldc/contacts/6249_eleveurs.php @@ -1,4 +1,4 @@ -

+

@@ -9,51 +9,51 @@

+
+
+ +
+
*
- +
*
- +
*
- +
*
- +
-
* ()
+
* ()
-
@@ -65,11 +65,35 @@
- - + +
@@ -81,20 +105,16 @@
*
- +
- - + + Les informations recueillies à partir de ce formulaire sont traitées par le Responsable de Traitement pour donner suite à votre demande de contact. Pour connaître vos droits, vous pouvez consulter
la Charte de confidentialité
+ + The information collected from this form is processed by the Data Controller to respond to your contact request. To know your rights, you can consult
the Confidentiality Charter
+
@@ -116,95 +136,60 @@
+ + ['Vous devez activer les cookies recaptcha', 'You must enable recaptcha cookies'], + 'succeed' => [ + 'Bonjour. Nous vous remercions de nous avoir contactés pour nous rejoindre en tant qu\'éleveur. Notre équipe Élevage vous répondra dans les meilleurs délais.', + 'Hello. Thank you for contacting us to join us as a breeder. Our Livestock team will respond to you as soon as possible.' + ], + 'invalid_email' => ['Le format de l\'adresse email est invalide.', 'The email address format is invalid.'], + 'error' => ['Une erreur est survenue, veuillez recharger la page.', 'An error has occurred, please reload the page.'] +]; +?> + + diff --git a/content/themes/ldc/contacts/6670_export.php b/content/themes/ldc/contacts/6670_export.php index dc0c9ace..37e9e17a 100644 --- a/content/themes/ldc/contacts/6670_export.php +++ b/content/themes/ldc/contacts/6670_export.php @@ -1,4 +1,4 @@ -

+

@@ -6,16 +6,19 @@
+
+
+ +
+
*
- +
*
- +
@@ -26,16 +29,16 @@
- + /** ["Client", "Fournisseur", 'Autre'] */ + $typesList = array(); + $typesList[] = __('Customer', 'LDC Custom string'); + $typesList[] = __('Supplier', 'LDC Custom string'); + $typesList[] = __('Other', 'LDC Custom string'); + ?> +
@@ -45,28 +48,25 @@
*
- +
*
- +
*
- +
*
- +
- +
@@ -74,20 +74,16 @@
*
- +
- - + + Les informations recueillies à partir de ce formulaire sont traitées par le Responsable de Traitement pour donner suite à votre demande de contact. Pour connaître vos droits, vous pouvez consulter
la Charte de confidentialité
+ + The information collected from this form is processed by the Data Controller to respond to your contact request. To know your rights, you can consult
the Confidentiality Charter
+
@@ -109,96 +105,64 @@
+ + ['Vous devez activer les cookies recaptcha', 'You must enable recaptcha cookies'], + 'succeed' => [ + 'Bonjour. Nous vous remercions de nous avoir contactés pour une demande liée à l\'Export. Notre équipe vous répondra dans les meilleurs délais.', + 'Hello. Thank you for contacting us for an Export-related request. Our team will respond to you as soon as possible.' + ], + 'invalid_email' => ['Le format de l\'adresse email est invalide.', 'The email address format is invalid.'], + 'error' => ['Une erreur est survenue, veuillez recharger la page.', 'An error has occurred, please reload the page.'] +]; +?> + + diff --git a/content/themes/ldc/contacts/6672_demande.php b/content/themes/ldc/contacts/6672_demande.php index 5359490d..b7b0e265 100644 --- a/content/themes/ldc/contacts/6672_demande.php +++ b/content/themes/ldc/contacts/6672_demande.php @@ -1,4 +1,4 @@ -

+

@@ -6,78 +6,71 @@
+
+
+ +
+
*
- +
*
- +
*
- +
*
- +
*
- +
*
- +
*
- +
- +
*
- +
*
- +
*
- +
- - + + Les informations recueillies à partir de ce formulaire sont traitées par le Responsable de Traitement pour donner suite à votre demande de contact. Pour connaître vos droits, vous pouvez consulter
la Charte de confidentialité
+ + The information collected from this form is processed by the Data Controller to respond to your contact request. To know your rights, you can consult
the Confidentiality Charter
+
@@ -99,98 +92,61 @@
+ ['Vous devez activer les cookies recaptcha', 'You must enable recaptcha cookies'], + 'succeed' => [ + 'Bonjour. Nous vous remercions de nous avoir contactés pour une demande liée à l\'Export. Notre équipe vous répondra dans les meilleurs délais.', + 'Hello. Thank you for contacting us for an Export-related request. Our team will respond to you as soon as possible.' + ], + 'invalid_email' => ['Le format de l\'adresse email est invalide.', 'The email address format is invalid.'], + 'error' => ['Une erreur est survenue, veuillez recharger la page.', 'An error has occurred, please reload the page.'] +]; +?> + + diff --git a/content/themes/ldc/contacts/6674_finance.php b/content/themes/ldc/contacts/6674_finance.php index aa3b8b8d..97646b70 100644 --- a/content/themes/ldc/contacts/6674_finance.php +++ b/content/themes/ldc/contacts/6674_finance.php @@ -1,4 +1,4 @@ -

+

@@ -6,59 +6,57 @@
+
+
+ +
+
*
- +
*
- +
*
- +
*
- +
*
- +
- +
*
- +
- - +
+ + Les informations recueillies à partir de ce formulaire sont traitées par le Responsable de Traitement pour donner suite à votre demande de contact. Pour connaître vos droits, vous pouvez consulter
la Charte de confidentialité
+ + The information collected from this form is processed by the Data Controller to respond to your contact request. To know your rights, you can consult
the Confidentiality Charter
+ +
@@ -80,84 +78,59 @@
+ ['Vous devez activer les cookies recaptcha', 'You must enable recaptcha cookies'], + 'succeed' => [ + 'Bonjour. Nous vous remercions de nous avoir contactés concernant la finance. Notre équipe vous répondra dans les meilleurs délais.', + 'Hello. Thank you for contacting us regarding finance. Our team will respond to you as soon as possible.' + ], + 'invalid_email' => ['Le format de l\'adresse email est invalide.', 'The email address format is invalid.'], + 'error' => ['Une erreur est survenue, veuillez recharger la page.', 'An error has occurred, please reload the page.'] +]; +?> + + diff --git a/content/themes/ldc/contacts/6676_engagements.php b/content/themes/ldc/contacts/6676_engagements.php index 8e44aa3d..0912fa60 100644 --- a/content/themes/ldc/contacts/6676_engagements.php +++ b/content/themes/ldc/contacts/6676_engagements.php @@ -1,4 +1,4 @@ -

+

@@ -6,63 +6,54 @@
+
+
+ +
+
*
- +
*
- +
*
- +
*
- +
*
- +
*
- +
- +
*
- +
- -
@@ -84,87 +75,59 @@
+ ['Vous devez activer les cookies recaptcha', 'You must enable recaptcha cookies'], + 'succeed' => [ + 'Bonjour. Nous vous remercions de nous avoir contactés au sujet de nos engagements. Notre équipe développement durable vous répondra dans les meilleurs délais.', + 'Hello. We thank you for contacting us regarding our commitments. Our sustainable development team will respond to you as soon as possible.' + ], + 'invalid_email' => ['Le format de l\'adresse email est invalide.', 'The email address format is invalid.'], + 'error' => ['Une erreur est survenue, veuillez recharger la page.', 'An error has occurred, please reload the page.'] +]; +?> + + diff --git a/content/themes/ldc/contacts/6678_information_generale.php b/content/themes/ldc/contacts/6678_information_generale.php index b31051ab..c421d377 100644 --- a/content/themes/ldc/contacts/6678_information_generale.php +++ b/content/themes/ldc/contacts/6678_information_generale.php @@ -1,4 +1,4 @@ -

+

@@ -6,63 +6,59 @@
-
+
+
+ +
+
+
*
- +
*
- +
-
+
*
- +
*
- +
-
+
*
- +
-
+
*
- +
- +
*
-
- +
+
- - + + Les informations recueillies à partir de ce formulaire sont traitées par le Responsable de Traitement pour donner suite à votre demande de contact. Pour connaître vos droits, vous pouvez consulter
la Charte de confidentialité
+ + The information collected from this form is processed by the Data Controller to respond to your contact request. To know your rights, you can consult
the Confidentiality Charter
+
@@ -73,7 +69,7 @@ -
+
@@ -84,88 +80,48 @@
+ + ['Vous devez activer les cookies recaptcha', 'You must enable recaptcha cookies'], + 'succeed' => [ + 'Bonjour. Nous vous remercions de nous avoir contactés. Notre équipe communication vous répondra dans les meilleurs délais.', + 'Hello. We thank you for contacting us. Our communications team will respond to you as soon as possible.' + ], + 'invalid_email' => ['Le format de l\'adresse email est invalide.', 'The email address format is invalid.'], + 'error' => ['Une erreur est survenue, veuillez recharger la page.', 'An error has occurred, please reload the page.'] +]; +?> + + diff --git a/content/themes/ldc/contacts/6681_information_produit.php b/content/themes/ldc/contacts/6681_information_produit.php index ae1b0672..e95dc208 100644 --- a/content/themes/ldc/contacts/6681_information_produit.php +++ b/content/themes/ldc/contacts/6681_information_produit.php @@ -1,4 +1,4 @@ -

+

diff --git a/content/themes/ldc/contacts/ajax_contact.php b/content/themes/ldc/contacts/ajax_contact.php new file mode 100644 index 00000000..fd23e04b --- /dev/null +++ b/content/themes/ldc/contacts/ajax_contact.php @@ -0,0 +1,92 @@ + + diff --git a/content/themes/ldc/cookie-notice/custom-template.php b/content/themes/ldc/cookie-notice/custom-template.php new file mode 100644 index 00000000..04e44d9f --- /dev/null +++ b/content/themes/ldc/cookie-notice/custom-template.php @@ -0,0 +1,419 @@ + ['Fenêtre de gestion de cookies', 'Cookie management window'], + 'button_customize_cookies' => ['Personnaliser les cookies', 'Customize cookies'], + 'button_close_cookies' => ['Fermer la fenêtre des cookies', 'Close cookie window'], + 'button_title_open_new_tab' => ['Ouvrir le lien dans un nouvel onglet', 'Open link in new tab'], + 'button_toggle_cookie' => ['Autoriser ou refuser', 'Accept or refuse'], + 'button_forbid_all' => [strtoupper('Tout refuser'), strtoupper('Refuse all')], + 'button_allow_all' => [strtoupper('Tout accepter'), strtoupper('Accept all')], + 'button_customize' => [strtoupper('Personnaliser'), strtoupper('Customize')], + 'button_forbid_all_title' => ['Refuser tous les cookies et fermer le panneau des cookies', 'Refuse all cookies and close the cookies panel'], + 'button_allow_all_title' => ['Accepter tous les cookies et fermer le panneau des cookies', 'Accept all cookies and close the cookies panel'], + 'button_validate_and_close' => [strtoupper('Valider et fermer'), strtoupper('Confirm and close')], + 'banner_title' => ['Le site internet ' . $site_name . ' utilise des cookies !', 'The ' . $site_name . ' website uses cookies!'], + 'banner_text' => [sprintf( + "%s

%s", + "Nous utilisons des cookies pour nous assurer du bon fonctionnement de notre site et à des fins analytiques. Vous pouvez changer d'avis à tout moment en cliquant sur l'icône présente sur chaque page de notre site. En autorisant ces services tiers, vous acceptez le dépôt et la lecture de cookies et l'utilisation de technologies de suivi nécessaires à leur bon fonctionnement.", + "Charte de confidentialité" + ), sprintf( + "%s

%s", + "We use cookies to ensure the proper functioning of our site and for analytical purposes. + You can change your mind at any time by clicking on the icon on any page of our site. + By authorizing these third-party services, you agree to the deposit and reading of cookies and the use of tracking technologies necessary for their proper operation.", + "Privacy Policy" + )], + 'panel_content' => ['Contenu du panneau des cookies', 'Cookie management panel conten'], + 'picture_cookie_title' => ['Image d’un bon gros cookie', 'Image of a nice big cookie'], + 'navigation_title' => ['Navigation du panneau des cookie', 'Cookies panel navigation'], + + // * Cookie + 'learn_more' => ['En savoir +', 'learn more'], + 'matomo_description' => ['Les services de mesure d’audience permettent de générer des statistiques de fréquentation utiles à l’amélioration du site.', 'Audience measurement services make it possible to generate traffic statistics useful for improving the site.'], + 'recaptcha_description' => ['Les cookies qui sont déposés via le recaptcha sur les formulaires ont pour finalité d’empêcher que ceux-ci ne soient soumis par des robots.', 'The purpose of cookies placed via recaptcha on forms is to prevent them from being submitted by robots.'], + 'youtube_disabled' => ['Youtube est désactivé', 'Youtube is disabled'], + 'youtube_description' => ['Les cookies déposés par les services de partage de vidéo ont pour finalité de permettre à l’utilisateur de visionner directement sur le site le contenu multimédia.', 'The purpose of cookies placed by video sharing services is to allow the user to view multimedia content directly on the site.'], + 'vimeo_disabled' => ['Vimeo est désactivé', 'Vimeo is disabled'], + 'vimeo_description' => ['Les cookies déposés par les services de partage de vidéo ont pour finalité de permettre à l’utilisateur de visionner directement sur le site le contenu multimédia.', 'The purpose of cookies placed by video sharing services is to allow the user to view multimedia content directly on the site.'] +]; + + +$i18n_cn = function ($key) use ($i18NCnList) { + return nl2br(ICL_LANGUAGE_CODE === 'fr' ? $i18NCnList[$key][0] : $i18NCnList[$key][1]); +}; +$e_i18n_cn = function ($key) use ($i18NCnList, $i18n_cn) { + // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + echo $i18n_cn($key); +}; + +// * - COOKIES + +$cookieInline = function ($cookieName, $text, $subtext = '') { + return << + + diff --git a/content/themes/ldc/css/cn-inline-buttons.css b/content/themes/ldc/css/cn-inline-buttons.css new file mode 100644 index 00000000..d0706d68 --- /dev/null +++ b/content/themes/ldc/css/cn-inline-buttons.css @@ -0,0 +1,90 @@ +.cn-cookie-activate { + display: flex; + flex-direction: column; + // * Prevent weird theme override + font-size: calc(0.9rem + 0.1vw) !important; + background-color: #fff; + padding: 0.6rem 1rem; + border-radius: 1rem; + justify-content: center; + align-items: center; + border-width: 2px; + border-style: solid; + border-color: #000; + + &.w-100 { + max-width: inherit !important; + } + + // * Prevent weird theme override + span { + font-size: calc(0.9rem + 0.1vw) !important; + @include media(">phone") { + font-size: calc(0.9rem + 0.1vw) !important; + } + } + + @include media(">phone") { + max-width: 80%; + // * Prevent weird theme override + font-size: calc(0.9rem + 0.1vw) !important; + } + @include media(">tablet") { + flex-direction: row; + max-width: 70%; + } + @include media(">desktop") { + max-width: 50%; + } + + button { + // * Prevent weird theme override + font-size: 0.9rem !important; + height: fit-content; + padding: 0.8rem 0.6rem; + border-width: 0.1rem; + border-radius: 1rem; + @include media(">phone") { + // * Prevent weird theme override + font-size: calc(0.9rem + 0.1vw) !important; + } + @include media(">tablet") { + // * Prevent weird theme override + font-size: calc(0.9rem - 0.1vw) !important; + } + @include media(">desktop") { + // * Prevent weird theme override + font-size: 0.9rem !important; + } + } + + > span { + margin-bottom: 0.9rem; + display: flex; + flex-direction: column; + color: #e11c1b; + font-weight: bold; + + @include media(">phone") { + margin-bottom: initial; + } + + > small { + color: initial; + font-weight: initial; + opacity: 0.5; + } + } + + &.d-none { + display: none; + } +} + +.text-center { + text-align: center !important; +} + +.justify-content-center { + justify-content: center !important; +} diff --git a/content/themes/ldc/css/cookies-ldc.css b/content/themes/ldc/css/cookies-ldc.css deleted file mode 100644 index 56ead6eb..00000000 --- a/content/themes/ldc/css/cookies-ldc.css +++ /dev/null @@ -1,451 +0,0 @@ -/* DEBUT DU PARAMETRAGE */ -/* - Choix des FONTS */ -/* - Changement des couleurs et des polices */ - -:root{ - /* PARTIE A RENSEIGNER */ - --primary-color: rgb(100, 100, 100); - --secondary-color: #ff4e4e; - --background-color: #ffffff; - --shadow-color: 0px 3px 7px 0px rgb(0 0 0 / 35%); - --title-font: "Satisfy", sans-serif; - --title-size: 25px; - --text-font: "Barlow", sans-serif; - --text-size: 14px; - --accept-color: #33aa33; - --deny-color: #aa3333; - --ldcweb-cn-position-left: 30px; - --ldcweb-cn-position-bottom: 40px; - - /* PARTIE A RENSEIGNER FACULTATIF */ - /* FENETRE D'ACCUEIL */ - --ck-bg-color: var(--background-color); - - /* Title settings */ - --ck-w1-bgcolor-title: var(--background-color); - --ck-w1-font-family-title: var(--title-font); - --ck-w1-font-size-title: var(--title-size); - --ck-w1-color-title: var(--secondary-color); - - /* Text settings */ - --ck-w1-font-family-txt: var(--text-font); - --ck-w1-font-size-txt: var(--text-size); - --ck-w1-color-txt: var(--primary-color); - --ck-w1-color-href-hover: var(--secondary-color); - - /* Button settings */ - --ck-w1-color-btn: var(--secondary-color); - --ck-w1-color-btn-hover: var(--secondary-color); - --ck-w1-font-family-btn-txt: var(--text-font); - --ck-w1-font-size-btn-txt: var(--text-size); - --ck-w1-color-btn-txt: #ffffff; - --ck-w1-color-btn-txt-hover: #ffffff; - --ck-w1-color-btn-border: transparent; - --ck-w1-color-btn-border-hover: transparent; - - /* FENETRE DE PERSONNALISATION */ - --ck-bg-color-modal-wrapper: #ffffff; - /* Title settings */ - --ck-w2-bgcolor-title: var(--background-color); - --ck-w2-font-family-title: var(--title-font); - --ck-w2-font-size-title: var(--title-size); - --ck-w2-color-title: var(--secondary-color); - - /* Text settings */ - --ck-w2-font-family-txt: var(--text-font); - --ck-w2-font-size-txt: var(--text-size); - --ck-w2-color-txt: var(--primary-color); - --ck-w2-color-href-hover: #000000; - - /* Accept/Deny btn settings */ - --ck-color-accept: #808080; - --ck-color-accept-hover: var(--accept-color); - --ck-color-deny: #808080; - --ck-color-deny-hover: var(--deny-color); - --ck-color-txt: #ffffff; - --ck-color-txt-hover: #ffffff; - - /* Cookies list settings */ - --ck-bgcolor-list: #e4e4e4; - --ck-font-family-list: var(--text-font); - --ck-font-size-list: var(--text-size); - --ck-color-list: #000000; - --ck-color-title: var(--secondary-color); - - /* Scroll bar */ - --ck-scroll-bgcolor: var(--primary-color); - --ck-scroll-barcolor: var(--secondary-color); -} -/* FIN DU PARAMETRAGE */ - - - - - - - - - - -/* MOBILE FIRST */ -#template{ - display: none; -} -#ldcweb-cn.open-banner .ldcweb-cn-banner{ - display: flex; -} -#ldcweb-cn.open-banner, #ldcweb-cn.open-modal{ - display: flex; -} -#ldcweb-cn p, #ldcweb-cn a{ - font-family: var(--ck-w1-font-family-txt); - font-size: var(--ck-w1-font-size-txt); - color: var(--ck-w1-color-txt); -} -#ldcweb-cn a{ - text-decoration: underline; - transition: 0s; -} -#ldcweb-cn .ldcweb-cn-banner, #ldcweb-cn-modal .modal-wrapper{ - overflow: auto; - display: flex; - flex-direction: column; - align-items: center; -} -#ldcweb-cn .ldcweb-cn-banner{ - padding: 0; - margin: 0; - padding-top: 20px; - background-color: var(--ck-bg-color); - flex-direction: column; - justify-content: flex-end; - position: fixed; - left: var(--ldcweb-cn-position-left); - bottom: calc(var(--ldcweb-cn-position-bottom) + 70px); - width: 480px; - height: auto; - max-height: 80vh; - border-radius: 10px; - z-index: 99999999999999999999; - opacity: 1; - line-height: initial; - overflow: hidden; - box-shadow: var(--shadow-color); - user-select: none; - opacity: 1; - transition: .3s; -} -#ldcweb-cn .ldcweb-cn-banner-open{ - left: 0; - opacity: 0; - visibility: hidden; -} -.ldcweb-banner-content, .ldcweb-banner-details{ - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - padding: 0px 20px 0px 20px; -} -.ldcweb-banner-details{ - height: 0; - transition: .3s; - text-align: justify; - overflow: hidden; - align-items: flex-start; -} -.ldcweb-banner-details-open{ - height: 120px; - margin-bottom: 6px; -} -#ldcweb-cn .ldcweb-banner-img{ - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - height: auto; - width: 150px; -} -#ldcweb-cn .ldcweb-banner-img img{ - width: 100%; -} -#ldcweb-cn .ldcweb-banner-text{ - flex: 2; -} -#ldcweb-cn .ldcweb-banner-title p{ - font-family: var(--ck-w1-font-family-title); - font-size: var(--ck-w1-font-size-title); - font-weight: bold; - color: var(--ck-w1-color-title); - text-align: left; -} -#ldcweb-cn .ldcweb-banner-para-p{ - text-align: justify; - margin-bottom: 6px; -} -#ldcweb-cn .ldcweb-banner-btnDetails{ - width: 100%; - margin: 0 0 20px 0; -} -#ldcweb-cn .ldcweb-banner-btnDetails-p{ - cursor: pointer; - color: var(--secondary-color); - width: fit-content; - margin: 0 auto; - text-align: center; -} -#ldcweb-cn .ldcweb-banner-btns{ - flex: 1; - display: flex; - flex-direction: row; - width: 100%; -} -#ldcweb-cn .ldcweb-banner-btns .ldcweb-banner-btn-flex{ - width: 66.5%; - border-top: 1px solid grey; - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - text-align: center; -} -.ldcweb-banner-btn-personalize{ - width: 33.5%; - border-top: 1px solid gray; -} -#ldcweb-cn .ldcweb-banner-btns .ldcweb-banner-btn-flex div{ - width: 50%; -} -.ldcweb-banner-btn-accept{ - border-left: 1px solid gray; - border-right: 1px solid gray; -} -#ldcweb-cn .ldcweb-banner-btns .ldcweb-banner-btn-flex .ldcweb-cn-accept{ - font-weight: bolder; - color: var(--secondary-color); -} -#ldcweb-cn .ldcweb-banner-btns .ldcweb-banner-btns-btn { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - text-align: center; - width: 100%; - height: 50px; - background-color: var(--background-color); - text-decoration: none; - font-family: var(--ck-w1-font-family-btn-txt); - font-size: var(--ck-w1-font-size-btn-txt); - color: var(--primary-color); -} -#ldcweb-cn .ldcweb-banner-btns .ldcweb-banner-btns-btn:hover{ - color: var(--ck-w1-color-btn-txt-hover); - background-color: var(--ck-w1-color-btn-hover); -} -.ldcweb-btn{ - position: fixed; - left: var(--ldcweb-cn-position-left); - bottom: var(--ldcweb-cn-position-bottom); - z-index: 9999999999; - background-color: white; - padding: 13px; - border-radius: 100%; - cursor: pointer; - box-shadow: var(--shadow-color); - width: 34px; - height: 34px; -} -.ldcweb-btn-icon path { - fill: var(--secondary-color); -} -.ldcweb-btn-icon circle { - fill: var(--secondary-color); -} -.visibility{ - display: none !important; -} - -/* MODAL */ -#ldcweb-cn-modal { - display: flex; - align-items: center; - justify-content: center; - width: 100%; - height: 100%; - z-index: 200; - opacity: 1; -} -#ldcweb-cn-modal .modal-wrapper{ - position: relative; - background-color: var(--ck-bg-color-modal-wrapper); - max-height: 100vh; -} -#ldcweb-cn-modal .modal-wrapper > div:not(:first-of-type){ - width: 100%; - align-items: flex-end; -} -#ldcweb-cn-modal .modal-title{ - padding: 0px 20px 0px 20px; -} -#ldcweb-cn-modal .modal-title *{ - text-align: justify; - margin: 0; -} -#ldcweb-cn-modal .modal-title .description, #ldcweb-cn-modal .modal-btns{ - display: flex; - flex-direction: column; - align-items: center; - font-weight: normal; - line-height: initial; -} -#ldcweb-cn-modal .modal-title .description, #ldcweb-cn-modal .modal-btns p, #ldcweb-cn-modal .modal-btns a, #ldcweb-cn-modal .modal-title > .subTitle{ - font-family: var(--ck-w2-font-family-txt); - font-size: var(--ck-w2-font-size-txt); - color: var(--ck-w2-color-txt); -} -/* TITLE */ -#ldcweb-cn-modal .modal-title .title{ - font-family: var(--ck-w2-font-family-title); - font-size: var(--ck-w2-font-size-title); - font-weight: bold; - color: var(--ck-w2-color-title); -} -#ldcweb-cn-modal .modal-title > .subTitle{ - color: var(--ck-w2-color-title); - margin-bottom: 6px; -} -#ldcweb-cn-modal .modal-title .title, #ldcweb-cn-modal .modal-title > .subTitle{ - text-align: center; -} -#ldcweb-cn-modal .modal-title a{width: fit-content;} - -/* DETAILS */ -#ldcweb-cn-modal .modal-details{ - width: 100%; - height: 200px; - overflow-y: scroll; - margin: 6px 0; -} -#ldcweb-cn-modal .modal-details ul{ - display: flex; - flex-direction: column; - padding: 0 20px; - list-style: none; -} -#ldcweb-cn-modal .modal-details li > div{ - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: center; - margin: 10px 0; - padding: 20px; - border-radius: 20px; - border: 1px solid var(--ck-bgcolor-list); -} -#ldcweb-cn-modal .modal-details li span, -#ldcweb-cn-modal .modal-details li a, -#ldcweb-cn-modal .modal-details li label{ - font-family: var(--ck-font-family-list); - font-size: var(--ck-font-size-list); - color: var(--ck-color-list); -} -#ldcweb-cn-modal .modal-details .ldcweb-cn-name{ - color: var(--ck-color-title); -} -#ldcweb-cn-modal .modal-details .ldcweb-cn-infos{ - display: flex; - flex-direction: column; - flex: 1; -} -#ldcweb-cn-modal .modal-details .ldcweb-cn-infos span:first-of-type{ - font-size: calc(var(--ck-font-size-list) * 1.25); - font-weight: bold; -} -#ldcweb-cn-modal .modal-details .ldcweb-cn-infos .ldcweb-cn-description{ - color: var(--ck-w2-color-txt); -} -#ldcweb-cn-modal .modal-details .ldcweb-cn-infos a{width: fit-content;} -#ldcweb-cn-modal .modal-details .ldcweb-cn-buttons{ - display: flex; - justify-content: space-around; - width: 200px; - margin-top: 6px; -} -#ldcweb-cn-modal .modal-details .ldcweb-cn-buttons div:first-of-type, -#ldcweb-cn-modal .modal-details .ldcweb-cn-buttons div:last-of-type{ - transition: all .3s; -} -#ldcweb-cn-modal .modal-details .ldcweb-cn-buttons div:first-of-type{ - background: var(--ck-color-accept); -} -#ldcweb-cn-modal .modal-details .ldcweb-cn-buttons div:last-of-type{ - background: var(--ck-color-deny); -} -#ldcweb-cn-modal .modal-details .ldcweb-cn-buttons div{ - width: 60px; - display: table; - text-align: center; -} -#ldcweb-cn-modal .modal-details .ldcweb-cn-buttons div:first-of-type input:checked ~ label, -#ldcweb-cn-modal .modal-details .ldcweb-cn-buttons div:first-of-type input ~label.active{ - background-color: var(--ck-color-deny-hover); -} -#ldcweb-cn-modal .modal-details .ldcweb-cn-buttons div:last-of-type input:checked ~ label, -#ldcweb-cn-modal .modal-details .ldcweb-cn-buttons div:last-of-type input ~ label.active{ - background-color: var(--ck-color-accept-hover); -} -#ldcweb-cn-modal .modal-details .ldcweb-cn-buttons input{display: none;} -#ldcweb-cn-modal .modal-details .ldcweb-cn-buttons label{ - display: block; - color: var(--ck-color-txt); - transition: color .3s; - padding: 6px 20px; - cursor: pointer; -} - -/* MEDIA QUERIES */ -@media (max-width: 535px) { - .ldcweb-banner-content, #ldcweb-cn .ldcweb-banner-btns{ - flex-direction: column; - } - #ldcweb-cn .ldcweb-banner-btns .ldcweb-banner-btn-flex, #ldcweb-cn .ldcweb-banner-btns .ldcweb-banner-btn-personalize{ - width: 100%; - } - #ldcweb-cn .ldcweb-banner-btns .ldcweb-banner-btn-flex .ldcweb-banner-btn-deny, - #ldcweb-cn .ldcweb-banner-btns .ldcweb-banner-btn-flex .ldcweb-banner-btn-accept{ - width: 50%; - } - .ldcweb-banner-btn-accept{ - border-left: 1px solid gray; - border-right: none; - } - #ldcweb-cn .ldcweb-cn-banner{ - left: 0; - bottom: 0; - } - #ldcweb-cn .ldcweb-cn-banner{ - width: 100%; - max-height: 100vh; - border-top-left-radius: 10px; - border-top-right-radius: 10px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - } - .ldcweb-banner-details-open { - height: auto; - } - #ldcweb-cn .ldcweb-banner-title p{ - text-align: center; - } -} -@media (max-width: 1024px) { - :root{ - --ldcweb-cn-position-bottom: 120px; - } -} -@media (max-width: 479px) { - :root{ - --ldcweb-cn-position-left: 10px; - --ldcweb-cn-position-bottom: 100px; - } -} \ No newline at end of file diff --git a/content/themes/ldc/css/cookies-ldc.min.css b/content/themes/ldc/css/cookies-ldc.min.css new file mode 100644 index 00000000..6b373952 --- /dev/null +++ b/content/themes/ldc/css/cookies-ldc.min.css @@ -0,0 +1 @@ +.cn-cookie-link{cursor:pointer}.cn-link{display:contents;color:#ff4e4e}:root{--cs-primary-color: var()}#cn-wrapper *{box-sizing:border-box}#cn-wrapper *::before{display:none}#cn-wrapper button{display:inline-block;padding:.2rem .5rem;border:0;margin:0;appearance:none;background:#fcfcfc;color:#000;cursor:pointer;font-family:"Barlow",sans-serif;font-size:1rem;line-height:1;text-align:center;text-decoration:none;transition:background 250ms ease-in-out,transform 150ms ease}#cn-wrapper button:hover,#cn-wrapper button:focus{background:#e3e3e3;color:#000}#cn-wrapper button:focus{outline:1px solid;outline-color:#000;outline-offset:-4px}#cn-wrapper button:active{transform:scale(0.99)}#cn-wrapper .cn-nav #cn-settings-banner,#cn-wrapper .cn-nav #cn-accept-banner,#cn-wrapper .cn-nav #cn-deny-banner,#cn-wrapper #cn-banner .cn-modal-top-line #cn-close-modal{display:flex;height:3rem;flex-direction:column;align-items:center;justify-content:center;padding:0;background-color:#fcfcfc;color:#000;font-family:"Barlow",sans-serif;font-size:1rem}#cn-wrapper .cn-nav #cn-settings-banner:hover,#cn-wrapper .cn-nav #cn-accept-banner:hover,#cn-wrapper .cn-nav #cn-deny-banner:hover,#cn-wrapper #cn-banner .cn-modal-top-line #cn-close-modal:hover,#cn-wrapper .cn-nav #cn-settings-banner:focus,#cn-wrapper .cn-nav #cn-accept-banner:focus,#cn-wrapper .cn-nav #cn-deny-banner:focus,#cn-wrapper #cn-banner .cn-modal-top-line #cn-close-modal:focus{background-color:#e3e3e3;color:#000}#cn-wrapper .cn-nav #cn-settings-banner:focus,#cn-wrapper .cn-nav #cn-accept-banner:focus,#cn-wrapper .cn-nav #cn-deny-banner:focus,#cn-wrapper #cn-banner .cn-modal-top-line #cn-close-modal:focus{outline-color:#000}.cn-modal-bg{position:fixed;z-index:1030;top:0;left:0;width:100vw;height:100dvh;background-color:rgba(0,0,0,.6);cursor:pointer;opacity:0;transition:.3s;visibility:hidden}.cn-modal-bg-active{cursor:default}.cn-open .cn-modal-bg{opacity:1;visibility:visible}.cn-disabled{pointer-events:none}#cn-wrapper{position:fixed;z-index:1050;top:0;left:0;width:100vw;height:100dvh;pointer-events:none}#cn-wrapper #cn-cookie-btn{position:fixed;right:auto;bottom:.5rem;left:.5rem;width:2.4rem;height:2.4rem;padding:.3rem;border-radius:100%;background-color:#fff;box-shadow:0 .1rem 1rem rgba(0,0,0,.35);cursor:pointer;pointer-events:auto}@media(min-width: 535px){#cn-wrapper #cn-cookie-btn{right:auto;bottom:-1.5rem;left:-1.5rem;width:3rem;height:3rem;padding:.5rem;transition:all 1s 6s}#cn-wrapper #cn-cookie-btn:hover,#cn-wrapper #cn-cookie-btn:focus{right:auto;bottom:.5rem;left:.5rem;transition:all 1s}}#cn-wrapper #cn-cookie-btn:focus{outline-color:#ff1b1b;outline-offset:.1rem;outline-width:.2rem}#cn-wrapper #cn-cookie-btn-icon path{fill:#ff4e4e}#cn-wrapper #cn-cookie-btn-icon circle{fill:#ff4e4e}#cn-wrapper #cn-banner{position:absolute;z-index:1050;top:0;bottom:0;left:0;display:flex;width:100vw;max-height:100dvh;flex-direction:column;align-items:center;justify-content:space-between;padding:0;border-radius:0;margin:auto;margin-bottom:0;background-color:#fff;box-shadow:0 .1rem 1rem rgba(0,0,0,.35);line-height:initial;opacity:0;pointer-events:none;transition:.3s;user-select:none;visibility:hidden}#cn-wrapper #cn-banner .cn-modal-top-line{align-self:end}#cn-wrapper #cn-banner .cn-modal-top-line #cn-close-modal{width:4rem;height:3rem;border-bottom-left-radius:.5rem}@media(min-width: 535px){#cn-wrapper #cn-banner .cn-modal-top-line #cn-close-modal{border-top-right-radius:.5rem}}#cn-wrapper #cn-banner>*{pointer-events:all}@media(min-width: 535px){#cn-wrapper #cn-banner{right:auto;bottom:calc(0.5rem + 60px);left:0;width:30rem;max-height:29rem;border-radius:.5rem}#cn-wrapper #cn-banner.cn-modal-page{max-height:41rem}}#cn-wrapper #cn-li-template{display:none}#cn-wrapper .d-none{display:none !important}#cn-wrapper .cn-content{flex-basis:100%;flex-grow:1;padding:.8rem;overflow-y:auto}@media(min-width: 535px){#cn-wrapper .cn-content{flex-grow:0}}#cn-wrapper .cn-content .cn-switch{position:relative;display:inline-block;overflow:hidden;width:4.2rem;height:2.4rem;box-sizing:content-box;cursor:pointer}#cn-wrapper .cn-content .cn-switch:focus,#cn-wrapper .cn-content .cn-switch:focus-visible{border-width:.1rem;border-style:solid;border-color:#ff4e4e}#cn-wrapper .cn-content .cn-switch input{display:none}#cn-wrapper .cn-content .cn-switch input+span{position:absolute;border-radius:2rem;background:#b7b7b7;inset:0}#cn-wrapper .cn-content .cn-switch input+span::before{position:absolute;top:50%;left:.21rem;display:inline-block;width:1.8rem;height:1.8rem;border-radius:50%;background:#fff;content:"";transform:translateY(-50%);transition:all .5s}#cn-wrapper .cn-content .cn-switch input:indeterminate+span{background:#b7b7b7}#cn-wrapper .cn-content .cn-switch input:indeterminate+span::before{left:1.08rem}#cn-wrapper .cn-content .cn-switch input:checked+span{background:#ff4e4e}#cn-wrapper .cn-content .cn-switch input:checked+span::before{left:2.16rem}#cn-wrapper .cn-content .cn-banner-content{display:flex;min-height:100%;flex-direction:column;color:#646464;font-family:"Barlow",sans-serif;font-size:1rem}@media(min-width: 535px){#cn-wrapper .cn-content .cn-banner-content{flex-flow:row wrap;align-items:center}#cn-wrapper .cn-content .cn-banner-content .cn-banner-img{width:33%}#cn-wrapper .cn-content .cn-banner-content .cn-banner-text{width:66%}}#cn-wrapper .cn-content .cn-banner-content .cn-banner-img{text-align:center}#cn-wrapper .cn-content .cn-banner-content .cn-banner-img img{width:90%;object-fit:contain}#cn-wrapper .cn-content .cn-banner-content .cn-banner-text .cn-banner-title{color:#ff4e4e;font-family:"Satisfy",sans-serif;font-size:2.4rem;font-weight:bold;line-height:inherit;text-align:left}#cn-wrapper .cn-content .cn-banner-content .cn-banner-text .cn-banner-para-p{margin:6px 0;text-align:justify}#cn-wrapper .cn-content .cn-modal-container{position:relative;display:flex;overflow:auto;flex-direction:column;align-items:center}#cn-wrapper .cn-content .cn-modal-container ul{display:flex;flex-direction:column;padding:0;margin:0;list-style:none}#cn-wrapper .cn-content .cn-modal-container .cn-cookie-wrapper{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:20px;border:1px solid #e4e4e4;border-radius:20px;margin:10px 0}#cn-wrapper .cn-content .cn-modal-container span{color:#ff4e4e;font-family:"Barlow",sans-serif;font-size:1rem}#cn-wrapper .cn-content .cn-modal-container a{font-family:"Barlow",sans-serif;font-size:1rem}#cn-wrapper .cn-content .cn-modal-container label{color:#ff4e4e;font-family:"Barlow",sans-serif;font-size:1rem}#cn-wrapper .cn-content .cn-modal-container .cn-cookie-name{color:#ff4e4e}#cn-wrapper .cn-content .cn-modal-container .cn-cookie-infos{display:flex;width:100%;flex:1;flex-direction:column}#cn-wrapper .cn-content .cn-modal-container .cn-cookie-infos span:first-of-type{font-size:calc(1rem*1.25);font-weight:bold}#cn-wrapper .cn-content .cn-modal-container .cn-cookie-infos .cn-cookie-description{color:#646464}#cn-wrapper .cn-content .cn-modal-container .cn-cookie-infos a{width:fit-content}#cn-wrapper .cn-nav{display:flex;overflow:hidden;width:100%;height:6rem;flex-shrink:0;flex-wrap:wrap;align-items:center;border-top:1px solid #808080}#cn-wrapper .cn-nav #cn-deny-banner{width:50%}#cn-wrapper .cn-nav #cn-accept-banner{width:50%;border-right:1px solid #808080;border-left:1px solid #808080}#cn-wrapper .cn-nav #cn-settings-banner{width:100%;border-top:1px solid #808080}@media(min-width: 535px){#cn-wrapper .cn-nav{height:3rem;flex-wrap:initial;border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}#cn-wrapper .cn-nav #cn-deny-banner{width:33.33%}#cn-wrapper .cn-nav #cn-accept-banner{width:33.33%}#cn-wrapper .cn-nav #cn-settings-banner{width:33.33%;border-top:initial}}.cn-open{overflow:hidden !important}.cn-open #cn-wrapper #cn-banner{opacity:1;visibility:visible}@media(min-width: 535px){.cn-open #cn-wrapper #cn-banner{right:auto;left:.5rem}}@media(min-width: 535px){.cn-open #cn-wrapper #cn-cookie-btn{right:auto;bottom:.5rem;left:.5rem;transition:all 1s}} diff --git a/content/themes/ldc/footer.php b/content/themes/ldc/footer.php index aa8ee40d..19f98fec 100644 --- a/content/themes/ldc/footer.php +++ b/content/themes/ldc/footer.php @@ -32,7 +32,7 @@ global $tp; - Politique de confidentialité - - Gestion des cookies + Gestion des cookies - Copyright LDC ©

@@ -50,7 +50,7 @@ global $tp; - Privacy policy - - Cookie settings + Cookie settings - Copyright LDC ©

@@ -77,279 +77,9 @@ global $tp; back-to-top + + - -

- - - - - - - - - - - - - - - - - -
-
-
- Logo -
-
- -
-

Le site internet ldc utilise des cookies !

-
-

Nous utilisons des cookies pour nous assurer du bon fonctionnement de notre site et à des fins analytiques. - En poursuivant votre navigation sur ce site ou en fermant ce bandeau, vous consentez à l’utilisation de ces - cookies.

- -
-

The ldc website uses cookies !

-
-

We use cookies to ensure the proper functioning of our site and for analytical purposes. - By continuing to browse this site or by closing this banner, you consent to the use of these - cookies.

- -
-
-
- -

Si vous refusez l'utilisation des cookies, vos informations ne seront pas suivies lors de votre visite sur ce site. - Un cookie sera utilisé dans votre navigateur afin de se souvenir de ne pas suivre vos préférences. Certaines fonctionnalités ne seront - pas accessibles. Vous pouvez changer d’avis et modifier votre consentement à tout moment en revenant sur ce site. - Pour en savoir plus sur les cookies que nous utilisons, consultez notre charte de confidentialité.

- -

If you decline the use of cookies, your information will not be tracked when you visit this site. - A cookie will be used in your browser to remember not to track your preferences. Some features will not be - not be accessible. You can change your mind and modify your consent at any time by returning to this site. - To learn more about the cookies we use, visit our privacy policy.

- -
-
- -

Plus de détails...

- -

More details...

- -
-
- -
-
-
-
- - TOUT REFUSER - - REFUSE ALL - -
- -
-
- - PERSONNALISER - - CUSTOMIZE - -
-
-
-
- - - - \ No newline at end of file + diff --git a/content/themes/ldc/functions.php b/content/themes/ldc/functions.php index b66b58e9..e2efeb07 100644 --- a/content/themes/ldc/functions.php +++ b/content/themes/ldc/functions.php @@ -96,11 +96,20 @@ function load_js_css() { wp_enqueue_style('fonts', get_template_directory_uri() . '/fonts/stylesheet.css'); wp_enqueue_style('swiper', get_template_directory_uri() . '/css/swiper.min.css'); - wp_enqueue_style('cookie', get_template_directory_uri() . '/css/cookies-ldc.css'); wp_enqueue_style('fancybox', get_template_directory_uri() . '/css/jquery.fancybox.min.css'); wp_enqueue_style('styles', get_stylesheet_uri()); - wp_enqueue_style('media-styles', get_template_directory_uri() . '/css/media.css'); + $_style_media = '/css/media.css'; + wp_enqueue_style('media-styles', get_template_directory_uri() . $_style_media, [], filemtime(get_template_directory() . $_style_media)); + // * COOKIES + $_style_cookies = '/css/cookies-ldc.min.css'; + wp_enqueue_style('cookie', get_template_directory_uri() . $_style_cookies, [], filemtime(get_template_directory() . $_style_cookies)); + $_js_cookies = '/js/ldcweb-cn.min.js'; + wp_enqueue_script('cookie', get_template_directory_uri() . $_js_cookies, [], null, filemtime(get_template_directory() . $_js_cookies)); + $_style_inline_cookies = '/css/cn-inline-buttons.css'; + wp_enqueue_style('inline-cookie', get_template_directory_uri() . $_style_inline_cookies, [], filemtime(get_template_directory() . $_style_inline_cookies)); + $_js_inline_cookies = '/js/cn-inline-buttons.js'; + wp_enqueue_script('inline-cookie', get_template_directory_uri() . $_js_inline_cookies, ['cookie'], filemtime(get_template_directory() . $_js_inline_cookies), true); /* wp_deregister_script('jquery'); wp_register_script('jquery', get_template_directory_uri() . '/js/jquery-1.11.1.min.js'); @@ -122,7 +131,6 @@ function load_js_css() wp_enqueue_script('chart-js', get_template_directory_uri() . '/js/Chart.js', array(), null, false); wp_enqueue_script('swiper', get_template_directory_uri() . '/js/swiper.min.js', array('jquery'), null, true); - wp_enqueue_script('cookie', get_template_directory_uri() . '/js/ldcweb-cn.js', array('jquery'), null, true); wp_enqueue_script('fancybox', get_template_directory_uri() . '/js/jquery.fancybox.min.js', array('jquery'), null, true); //wp_enqueue_script('tagcanvas',get_template_directory_uri() . '/js/jquery.tagcanvas.min.js',array('jquery'),null,true); wp_enqueue_script('tagcanvas', get_template_directory_uri() . '/js/tagcanvas.min.js', array('jquery'), null, true); @@ -576,7 +584,7 @@ function registerMailJobAlert() die(); } - $secret = "6LePZvAUAAAAAHW0Upj3jRH9wTzGrMO1aWpg9ICn"; + $secret = getenv('RECAPTCHA_V3_SECRET'); if (isset($_SERVER["HTTP_X_FORWARDED_FOR"]) && $_SERVER["HTTP_X_FORWARDED_FOR"] != "") { if (strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ',')) { $explode = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); diff --git a/content/themes/ldc/js/cn-inline-buttons.js b/content/themes/ldc/js/cn-inline-buttons.js new file mode 100644 index 00000000..7c23fefe --- /dev/null +++ b/content/themes/ldc/js/cn-inline-buttons.js @@ -0,0 +1,26 @@ +document.addEventListener("DOMContentLoaded", function () { + function handle(e) { + e.preventDefault(); + const cookieEl = e.target.parentElement; + window.WebCookieNotice.acceptCookie(cookieEl.dataset.cookieName); + cookieEl.classList.add("d-none"); + } + + if (!window.WebCookieNotice) { + console.debug("Missing WebCookieNotice on window"); + return; + } + window.listenInlineCnButtons = () => { + const cookieInlineActivation = + document.getElementsByClassName("cn-cookie-activate"); + [...cookieInlineActivation].forEach((cookieEl) => { + const cookieBtnActivation = cookieEl.querySelector("button"); + if (!cookieBtnActivation) { + throw new Error("Invalid template cookie button"); + } + cookieBtnActivation.removeEventListener("click", handle); + cookieBtnActivation.addEventListener("click", handle); + }); + }; + window.listenInlineCnButtons(); +}); diff --git a/content/themes/ldc/js/ldcweb-cn.js b/content/themes/ldc/js/ldcweb-cn.js deleted file mode 100644 index d4fe09e9..00000000 --- a/content/themes/ldc/js/ldcweb-cn.js +++ /dev/null @@ -1,372 +0,0 @@ -/** - * LDC Service Web - * Version 1.3 - */ - - class LdcwebCn { - constructor(config) { - this.config = config; - this.cookieContainer = document.getElementById("ldcweb-cn"); - this.bannerContainer = document.querySelector(".ldcweb-cn-banner"); - this.bannerBtn = document.querySelector(".ldcweb-banner-btnDetails-p"); - this.ldcwebBtn = document.querySelector(".ldcweb-btn"); - this.ldcwebBannerParaP = document.querySelector(".ldcweb-banner-para-p"); - this.ldcwebBannerContent = document.querySelector(".ldcweb-banner-content"); - this.ldcwebBannerDetails = document.querySelector(".ldcweb-banner-details"); - this.ldcwebBannerBtnDetails = document.querySelector(".ldcweb-banner-btnDetails"); - this.modalContainer = document.getElementById("ldcweb-cn-modal"); - this.acceptAllBtnBanner = document.getElementById("ldcweb-cn-accept-banner"); - this.denyAllBtnBanner = document.getElementById("ldcweb-cn-deny-banner"); - this.personalizeBtn = document.getElementsByClassName("ldcweb-cn-personalize"); - this.personalizeBtnBanner = document.querySelector(".ldcweb-cn-personalize") - this.changeBtn = document.getElementsByClassName("ldcweb-cn-change"); - this.cookiesList = document.getElementById("ldcweb-cn-list"); - this.cookieLink = document.querySelector(".ldcweb-cn-cookie-link"); - this.modalDetails = document.querySelector('.modal-details'); - this.template = document.getElementById("template").cloneNode(true); - this.modalBtnBoolean = 0; - this.bannerBtnTextBoolean = 0; - document.getElementById("template").remove(); - - let cookies = this.getLDCWebCookie("ldcwebcn-init"); - if (cookies === undefined) { - let newCookie = []; - - for (const [key, value] of Object.entries(this.config)) { - newCookie.push(key + "=wait"); - } - - this.saveLDCWebCookie(newCookie); - } else { - let test = cookies.split(","); - test.forEach((elm) => { - let test = elm.split("="); - if (test[1] === "wait") { - } - else{ - this.bannerContainer.classList.add("ldcweb-cn-banner-open"); - } - }); - } - let accept = function (e) { - e.preventDefault(); - for (const [key, value] of Object.entries(this.config)) { - this.addCookie(key, value); - } - for (let acceptLabel of this.cookieContainer.querySelectorAll( - ".accept > label" - )) { - acceptLabel.classList.add("active"); - } - for (let denyLabel of this.cookieContainer.querySelectorAll( - ".deny > label" - )) { - denyLabel.classList.remove("active"); - } - this.updateAllCookiesButtonsActiveStatus(); - this.bannerContainer.classList.add("ldcweb-cn-banner-open"); - }.bind(this); - this.acceptAllBtnBanner.addEventListener("click", accept); - - let deny = function (e) { - e.preventDefault(); - for (const [key, value] of Object.entries(this.config)) { - this.removeCookie(key, value); - } - for (let acceptLabel of this.cookieContainer.querySelectorAll( - ".accept > label" - )) { - acceptLabel.classList.remove("active"); - } - for (let denyLabel of this.cookieContainer.querySelectorAll( - ".deny > label" - )) { - denyLabel.classList.add("active"); - } - this.updateAllCookiesButtonsActiveStatus(); - this.bannerContainer.classList.add("ldcweb-cn-banner-open"); - }.bind(this); - this.denyAllBtnBanner.addEventListener("click", deny); - - let openLdcwebCookies = function(e) { - e.preventDefault(); - this.bannerContainer.classList.remove("ldcweb-cn-banner-open"); - this.ldcwebBannerContent.classList.add("visibility"); - this.ldcwebBannerDetails.classList.add("visibility"); - this.ldcwebBannerBtnDetails.classList.add("visibility"); - this.modalContainer.classList.remove("visibility"); - this.personalizeBtnBanner.innerHTML = this.personalizeBtnBanner.getAttribute("data-open-modal"); - this.modalBtnBoolean = 1; - this.modalDetails.scrollTop = 0; - this.openModal() - }.bind(this) - this.cookieLink.addEventListener("click", openLdcwebCookies); - - let hideModal = function(e) { - e.preventDefault(); - this.ldcwebBannerContent.classList.toggle("visibility"); - this.ldcwebBannerDetails.classList.toggle("visibility"); - this.ldcwebBannerBtnDetails.classList.toggle("visibility"); - this.modalContainer.classList.toggle("visibility"); - this.setCookieList(); - }.bind(this) - this.personalizeBtnBanner.addEventListener("click", hideModal); - - let changeBtnPersonalize = function(e){ - e.preventDefault(); - this.modalDetails.scrollTop = 0; - if(this.modalBtnBoolean === 0){ - this.personalizeBtnBanner.innerHTML = this.personalizeBtnBanner.getAttribute("data-open-modal"); - this.modalBtnBoolean = 1; - } - else { - this.personalizeBtnBanner.innerHTML = this.personalizeBtnBanner.getAttribute("data-close-modal"); - this.modalBtnBoolean = 0; - } - }.bind(this); - this.personalizeBtnBanner.addEventListener("click", changeBtnPersonalize); - - this.setListenerOnChange(); - - let cookie = this.getLDCWebCookie("ldcwebcn-init"); - let test = cookie.split(","); - test.forEach((elm) => { - let test = elm.split("="); - if (test[1] === "true") { - this.config[test[0]].script(); - } - }); - - this.updateAllCookiesButtonsActiveStatus(); - - let changePara = function(e) { - e.preventDefault(); - this.ldcwebBannerDetails.classList.toggle("ldcweb-banner-details-open"); - this.bannerBtn.classList.toggle("ldcweb-banner-btnDetails-p-open"); - if(this.bannerBtnTextBoolean === 0){ - e.target.innerHTML = e.target.getAttribute("data-open"); - this.ldcwebBannerParaP.innerHTML = this.ldcwebBannerParaP.getAttribute("data-open"); - this.ldcwebBannerDetails.style.height = this.ldcwebBannerDetails.children[0].clientHeight + "px" - this.bannerBtnTextBoolean = 1; - } - else{ - e.target.innerHTML = e.target.getAttribute("data-close"); - this.ldcwebBannerParaP.innerHTML = this.ldcwebBannerParaP.getAttribute("data-close"); - this.ldcwebBannerDetails.style.height = "0px" - this.bannerBtnTextBoolean = 0; - } - }.bind(this); - this.bannerBtn.addEventListener("click", changePara); - - let resetVue = function(e){ - e.preventDefault(); - this.bannerContainer.classList.toggle("ldcweb-cn-banner-open") - if(!this.bannerContainer.classList.contains("ldcweb-cn-banner-open")){ - this.ldcwebBannerContent.classList.remove("visibility"), - this.ldcwebBannerDetails.classList.remove("visibility"), - this.ldcwebBannerBtnDetails.classList.remove("visibility"), - this.modalContainer.classList.add("visibility"); - this.personalizeBtnBanner.innerHTML = this.personalizeBtnBanner.getAttribute("data-close-modal"); - this.modalBtnBoolean = 0; - } - }.bind(this); - this.ldcwebBtn.addEventListener("click", resetVue); - } - - setCookieList() { - this.cookiesList.innerHTML = ""; - let cookiesSite = this.getLDCWebCookie("ldcwebcn-init"); - let acceptInputEvent = function (acceptLabel, denyLabel, key, value) { - return function (e) { - acceptLabel.classList.add("active"); - denyLabel.classList.remove("active"); - this.updateAllCookiesButtonsActiveStatus(); - this.addCookie(key, value); - }.bind(this, [acceptLabel, denyLabel, key, value]); - }; - let denyInputEvent = function (acceptLabel, denyLabel, key, value) { - return function (e) { - acceptLabel.classList.remove("active"); - denyLabel.classList.add("active"); - this.updateAllCookiesButtonsActiveStatus(); - this.removeCookie(key, value); - }.bind(this, [acceptLabel, denyLabel, key, value]); - }; - - for (const [key, value] of Object.entries(this.config)) { - let cookie = document.createElement("li"); - cookie.append(this.template.children.item(0).cloneNode(true)); - let name = cookie.querySelector("span.ldcweb-cn-name"); - let description = cookie.querySelector("span.ldcweb-cn-description"); - let link = cookie.querySelector("a.ldcweb-cn-link"); - let acceptInput = cookie.querySelector(".accept > input"); - let denyInput = cookie.querySelector(".deny > input"); - let acceptLabel = cookie.querySelector(".accept > label"); - let denyLabel = cookie.querySelector(".deny > label"); - - name.textContent = value.name; - description.textContent = value.description; - link.textContent = value.labelLink; - link.setAttribute("href", value.link); - acceptInput.id = key + "1"; - acceptInput.name = key; - acceptInput.dataset.name = key; - acceptLabel.htmlFor = key + "1"; - denyInput.id = key + "2"; - denyInput.name = key; - denyInput.dataset.name = key; - denyLabel.htmlFor = key + "2"; - - acceptInput.addEventListener( - "click", - acceptInputEvent.apply(this, [acceptLabel, denyLabel, key, value]) - ); - denyInput.addEventListener( - "click", - denyInputEvent.apply(this, [acceptLabel, denyLabel, key, value]) - ); - - this.cookiesList.append(cookie); - - let cookiesArray = cookiesSite.split(","); - for (const cookieEl of cookiesArray) { - let name = cookieEl.slice(0, cookieEl.indexOf("=")); - let status = cookieEl.slice(cookieEl.indexOf("=") + 1); - if (name === key) { - acceptLabel.classList.remove("active"); - denyLabel.classList.remove("active"); - switch (status) { - case "true": - acceptLabel.classList.add("active"); - break; - case "false": - denyLabel.classList.add("active"); - break; - } - } - } - } - this.cookieContainer.classList.add("ldcweb-cn-banner-open"); - this.setListenerOnChange(); - } - - updateAllCookiesButtonsActiveStatus() { - let acceptsButtons = this.cookieContainer.querySelectorAll("div.accept > label"); - let deniesButtons = this.cookieContainer.querySelectorAll("div.deny > label"); - let activeAcceptsButtons = this.cookieContainer.querySelectorAll("div.accept > label.active"); - let activeDeniesButtons = this.cookieContainer.querySelectorAll("div.deny > label.active"); - - if (acceptsButtons.length && acceptsButtons.length === activeAcceptsButtons.length) { - } - if (deniesButtons.length && deniesButtons.length === activeDeniesButtons.length) { - } - } - - addCookie(key, value) { - if (value.script) { - value.script(); - } - this.changeStatus(key, "true"); - } - - removeCookie(key, value) { - for (let cookieName of value.cookies) { - this.deleteBrowserCookie(cookieName, "/", "." + location.host); - } - if (document.getElementById(key)) { - document.getElementById(key).remove(); - } - this.changeStatus(key, "false"); - } - setListenerOnChange() { - this.changeBtn = document.getElementsByClassName("ldcweb-cn-change"); - let itemClick = function (item) { - return function () { - this.changeStatus( - item.getAttribute("data-name"), - item.getAttribute("data-status") - ); - }.bind(this); - }; - for (let item of this.changeBtn) { - this.addEvent(item, "click", itemClick.bind(this, [item])); - } - } - - changeStatus(name, status) { - let newCookie = []; - - let cookie = this.getLDCWebCookie("ldcwebcn-init"); - let test = cookie.split(","); - test.forEach((elm) => { - let test = elm.split("="); - if (test[0] === name) { - newCookie.push(name + "=" + status); - if (status === "false") { - this.config[test[0]].cookies.forEach((elm) => { - let cookies = this.getLDCWebCookie(elm); - if (cookies !== undefined) { - document.cookie = - elm + - "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; domain=" + - document.domain + - "; path=/"; - document.cookie = - elm + - "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; domain=." + - document.domain + - "; path=/"; - } - }); - } - } else { - newCookie.push(elm); - } - }); - - this.saveLDCWebCookie(newCookie); - } - - deleteBrowserCookie(name, path, domain) { - if (this.getLDCWebCookie(name)) { - document.cookie = - name + - "=" + - (path ? ";path=" + path : "") + - (domain ? ";domain=" + domain : "") + - ";expires=Thu, 01 Jan 1970 00:00:01 GMT"; - } - } - - getLDCWebCookie(name) { - let matches = document.cookie.match( - new RegExp( - "(?:^|; )" + - name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, "\\$1") + - "=([^;]*)" - ) - ); - return matches ? decodeURIComponent(matches[1]) : undefined; - } - - addEvent(element, evnt, funct) { - if (element.attachEvent) return element.attachEvent("on" + evnt, funct); - else return element.addEventListener(evnt, funct, false); - } - - saveLDCWebCookie(content) { - let date = new Date(); - let newDate = new Date(date.setMonth(date.getMonth() + 13)); - document.cookie = - "ldcwebcn-init=" + - content + - "; expires=" + - newDate.toUTCString() + - "; path=/;"; - } - - openModal() { - this.setCookieList(); - this.updateAllCookiesButtonsActiveStatus(); - } - } \ No newline at end of file diff --git a/content/themes/ldc/js/ldcweb-cn.min.js b/content/themes/ldc/js/ldcweb-cn.min.js index ee280e4c..92a480e5 100644 --- a/content/themes/ldc/js/ldcweb-cn.min.js +++ b/content/themes/ldc/js/ldcweb-cn.min.js @@ -1 +1 @@ -class LdcwebCn{constructor(e){this.config=e,this.cookieContainer=document.getElementById("ldcweb-cn"),this.bannerContainer=document.getElementById("ldcweb-banner"),this.modalContainer=document.getElementById("ldcweb-cn-modal"),this.modalCloseBtn=document.getElementById("close-link"),this.acceptAllBtnBanner=document.getElementById("ldcweb-cn-accept-banner"),this.acceptAllBtn=document.getElementById("ldcweb-cn-accept"),this.denyAllBtnBanner=document.getElementById("ldcweb-cn-deny-banner"),this.denyAllBtn=document.getElementById("ldcweb-cn-deny"),this.personalizeBtn=document.getElementsByClassName("ldcweb-cn-personalize"),this.changeBtn=document.getElementsByClassName("ldcweb-cn-change"),this.cookiesList=document.getElementById("ldcweb-cn-list"),this.cookieLink=document.querySelector('.footer__copyright [href="#cookie"]'),this.template=document.getElementById("template").cloneNode(!0),document.getElementById("template").remove();let t=this.getLDCWebCookie("ldcwebcn-init");if(void 0===t){let e=[];for(const[t,i]of Object.entries(this.config))e.push(t+"=wait");this.saveLDCWebCookie(e),this.cookieContainer.classList.add("open-banner")}else{t.split(",").forEach(e=>{"wait"===e.split("=")[1]&&this.cookieContainer.classList.add("open-banner")})}this.modalCloseBtn.addEventListener("click",function(e){e.preventDefault();let t=this.getLDCWebCookie("ldcwebcn-init").split(","),i=!0;for(let e of t)if(-1!==e.indexOf("=wait")){i=!1;break}i?(this.cookieContainer.classList.remove("open-modal"),this.cookieContainer.classList.remove("open-banner")):alert("Vous devez renseigner votre choix pour tous les cookies, svp.")}.bind(this));let i=function(e){e.preventDefault();for(const[e,t]of Object.entries(this.config))this.addCookie(e,t);for(let e of this.cookieContainer.querySelectorAll(".accept > label"))e.classList.add("active");for(let e of this.cookieContainer.querySelectorAll(".deny > label"))e.classList.remove("active");this.updateAllCookiesButtonsActiveStatus(),this.cookieContainer.classList.remove("open-modal"),this.cookieContainer.classList.remove("open-banner")}.bind(this);this.acceptAllBtnBanner.addEventListener("click",i),this.acceptAllBtn.addEventListener("click",i);let n=function(e){e.preventDefault();for(const[e,t]of Object.entries(this.config))this.removeCookie(e,t);for(let e of this.cookieContainer.querySelectorAll(".accept > label"))e.classList.remove("active");for(let e of this.cookieContainer.querySelectorAll(".deny > label"))e.classList.add("active");this.updateAllCookiesButtonsActiveStatus(),this.cookieContainer.classList.remove("open-modal"),this.cookieContainer.classList.remove("open-banner")}.bind(this);this.denyAllBtnBanner.addEventListener("click",n),this.denyAllBtn.addEventListener("click",n),this.cookieLink.addEventListener("click",function(e){e.preventDefault(),this.setCookieList(),this.updateAllCookiesButtonsActiveStatus()}.bind(this));for(let e of this.personalizeBtn)this.addEvent(e,"click",function(){this.setCookieList()}.bind(this));this.setListenerOnChange(),this.getLDCWebCookie("ldcwebcn-init").split(",").forEach(e=>{let t=e.split("=");"true"===t[1]&&this.config[t[0]].script()}),this.updateAllCookiesButtonsActiveStatus()}setCookieList(){this.cookiesList.innerHTML="";let e=this.getLDCWebCookie("ldcwebcn-init");for(const[t,i]of Object.entries(this.config)){let n=document.createElement("li");n.append(this.template.children.item(0).cloneNode(!0));let o=n.querySelector("span.ldcweb-cn-name"),s=n.querySelector("span.ldcweb-cn-description"),c=n.querySelector("a.ldcweb-cn-link"),l=n.querySelector(".accept > input"),a=n.querySelector(".deny > input"),d=n.querySelector(".accept > label"),r=n.querySelector(".deny > label");o.textContent=i.name,s.textContent=i.description,c.textContent="Politique de confidentialité",c.setAttribute("href",i.link),l.id=t+"1",l.name=t,l.dataset.name=t,d.htmlFor=t+"1",a.id=t+"2",a.name=t,a.dataset.name=t,r.htmlFor=t+"2",l.addEventListener("click",function(e){d.classList.add("active"),r.classList.remove("active"),this.updateAllCookiesButtonsActiveStatus(),this.addCookie(t,i)}.bind(this)),a.addEventListener("click",function(e){d.classList.remove("active"),r.classList.add("active"),this.updateAllCookiesButtonsActiveStatus(),this.removeCookie(t,i)}.bind(this)),this.cookiesList.append(n),e.split(",").forEach(e=>{let i=e.slice(0,e.indexOf("=")),n=e.slice(e.indexOf("=")+1);if(i===t)switch(d.classList.remove("active"),r.classList.remove("active"),n){case"true":d.classList.add("active");break;case"false":r.classList.add("active")}"wait"===n&&this.cookieContainer.classList.add("open-banner")})}this.cookieContainer.classList.add("open-modal"),this.setListenerOnChange()}updateAllCookiesButtonsActiveStatus(){let e=this.cookieContainer.querySelectorAll("div.accept > label"),t=this.cookieContainer.querySelectorAll("div.deny > label"),i=this.cookieContainer.querySelectorAll("div.accept > label.active"),n=this.cookieContainer.querySelectorAll("div.deny > label.active");this.acceptAllBtn.classList.remove("active"),this.denyAllBtn.classList.remove("active"),e.length&&e.length===i.length&&this.acceptAllBtn.classList.add("active"),t.length&&t.length===n.length&&this.denyAllBtn.classList.add("active")}addCookie(e,t){t.script&&t.script(),this.changeStatus(e,"true")}removeCookie(e,t){for(let e of t.cookies)this.deleteBrowserCookie(e,"/","."+location.host);document.getElementById(e)&&document.getElementById(e).remove(),this.changeStatus(e,"false")}setListenerOnChange(){this.changeBtn=document.getElementsByClassName("ldcweb-cn-change");for(let e of this.changeBtn)this.addEvent(e,"click",function(){this.changeStatus(e.getAttribute("data-name"),e.getAttribute("data-status"))}.bind(this))}changeStatus(e,t){let i=[];this.getLDCWebCookie("ldcwebcn-init").split(",").forEach(n=>{let o=n.split("=");o[0]===e?(i.push(e+"="+t),"false"===t&&this.config[o[0]].cookies.forEach(e=>{void 0!==this.getLDCWebCookie(e)&&(document.cookie=e+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC; domain="+document.domain+"; path=/",document.cookie=e+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC; domain=."+document.domain+"; path=/")})):i.push(n)}),this.saveLDCWebCookie(i)}deleteBrowserCookie(e,t,i){this.getLDCWebCookie(e)&&(document.cookie=e+"="+(t?";path="+t:"")+(i?";domain="+i:"")+";expires=Thu, 01 Jan 1970 00:00:01 GMT")}getLDCWebCookie(e){let t=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,"\\$1")+"=([^;]*)"));return t?decodeURIComponent(t[1]):void 0}addEvent(e,t,i){return e.attachEvent?e.attachEvent("on"+t,i):e.addEventListener(t,i,!1)}saveLDCWebCookie(e){let t=new Date,i=new Date(t.setMonth(t.getMonth()+13));document.cookie="ldcwebcn-init="+e+"; expires="+i.toUTCString()+";"}} \ No newline at end of file +!function(){var e,t;!function(e){e.true="true",e.false="false",e.wait="wait"}(e||(e={})),function(e){e.lax="lax",e.strict="strict",e.none="none"}(t||(t={}));const o={cookieName:"cn-init",cookieTimeLife:6,cookieExpirationName:"_expiration",cookiePolicies:{sameSite:t.lax,secure:!1},restrictCloseModal:!0};var i=new Map([["youtube",["NID","ENID","_Secure-ENID","VISITOR_INFO1_LIVE","YEC","__Secure-YEC","YSC","GEUP","PREF","pm_sess","CGIC","SOCS","GPS","yt-player-bandwidth","yt-player-headers-readable"]],["recaptcha",["NID","_grecaptcha","__Secure-3PAPISID","__Secure-3PSID","__Secure-3PSIDCC","_GRECAPTCHA","rc::c","rc::b","rc::a","itsec-recaptcha-opt-in-*"]],["vimeo",["vuid","__utmt_player"]],["matomo",["_pk*","_pk_ref","_pk_cvar","_pk_id","_pk_ses","_pk_hsr","piwik_ignore","_pk_uid","_pk_ref","_pk_cvar","_pk_id","_pk_ses","_pk_hsr","mtm_consent","matomo_ignore","matomo_sessid"]]]);class s{static has(e){return this.getCookies().has(e)}static get(e){return this.getCookies().get(e)}static set(e,t,o=null,i=null){let s=`${e}=${t};path=/${location.hostname?`;domain=${location.hostname}`:""}`;o&&(s+=`;expires=${o.toUTCString()}`),i&&(s+=`;sameSite=${i.sameSite}${i.secure?";secure":""}`),document.cookie=s}static getAllStartingWith(e){const t=this.getCookies();for(const o of t.keys())o.startsWith(e)||t.delete(o);return t}static markForDeletion(e){s.has(e)||console.debug(`No document cookie named ${e}`),document.cookie=`${e}=;path=/;expires=Thu, 01 Jan 1970 00:00:01 GMT`,document.cookie=`${e}=;path=/${location.hostname?`;domain=.${location.hostname}`:""};expires=Thu, 01 Jan 1970 00:00:01 GMT`,document.cookie=`${e}=;path=/${location.hostname?`;domain=${location.hostname}`:""};expires=Thu, 01 Jan 1970 00:00:01 GMT`}static getCookies(){const e=new Map;return document.cookie.split(";").filter((e=>e)).forEach((t=>{const o=t.split(/=(.*)/s).filter((e=>e));e.set(o[0].trim(),o[1].trim())})),e}}window.DocumentCookie=s;window.CookieNotice=class{constructor(t){this.config=t,this.cookieName=o.cookieName,this.cookieTimeLife=o.cookieTimeLife,this.cookieExpirationName=o.cookieExpirationName,this.cookiePolicies=o.cookiePolicies,this.restrictCloseModal=o.restrictCloseModal,this.cookieExpirationDate=new Date,this.domElList={},[...Object.keys(this.config)].forEach((e=>{this.config[e].cookies=[...new Set([...this.config[e].cookies,...i.get(e)??[]])]})),this.cookieExpirationDate=this.getCnCookieInfo().date,this.initDomElements(),this.setupEvents(),(this.configHasChanged()||this.configHasExpired())&&(this.resetCnCookie(),this.openCookieModalToBannerPage()),this.updateRestrictCloseModal(),this.getCnCookieInfo().values.forEach(((t,o)=>{switch(t){case e.wait:this.openCookieModalToBannerPage();break;case e.true:this.acceptCookie(o);break;case e.false:default:this.denyCookie(o)}}))}acceptAllCookies(){[...this.getCnCookieInfo().values.keys()].forEach((e=>this.acceptCookie(e)))}acceptCookie(t){this.setCnCookieStatus(t,e.true),this.setCookieSwitchButton(t,e.true)}denyAllCookies(){[...this.getCnCookieInfo().values.keys()].forEach((e=>this.denyCookie(e)))}denyCookie(t){this.setCnCookieStatus(t,e.false),this.setCookieSwitchButton(t,e.false)}denyAllWaitingCookies(){this.getCnCookieInfo().values.forEach(((t,o)=>{t!==e.wait||this.persistCnCookie(o,e.false)})),this.updateRestrictCloseModal()}getCookieConfig(e){const t=Object.entries(this.config).find((t=>t[0]===e))?.[1];if(void 0===t)throw new Error(`Cookie options ${e} not found in list`);return t}configHasExpired(){return this.cookieExpirationDate.getTime()<(new Date).getTime()}configHasChanged(){const e=this.getCnCookieInfo().values;return e.size!==Object.keys(this.config).length||[...e.keys()].join(".")!==Object.keys(this.config).join(".")}invertCookieStatus(t){switch(t){case e.true:case e.wait:return e.false;case e.false:return e.true;default:throw new Error(`Un handled cookie status ${t}`)}}getNewExpirationDate(){const e=new Date;return e.setMonth(this.cookieExpirationDate.getMonth()+this.cookieTimeLife),e}getCnCookieInfo(){const e=this.getCnCookieValues(),t=e.get(this.cookieExpirationName)??this.getNewExpirationDate();return e.delete(this.cookieExpirationName),{name:this.cookieName,values:e,date:t,cookiePolicies:this.cookiePolicies}}getCnCookieStatus(e){const t=this.getCnCookieInfo().values.get(e);if(void 0===t)throw new Error(`Cookie options ${e} not found in list`);return t}setCnCookieStatus(t,o){const i=this.getCookieConfig(t);this.persistCnCookie(t,o),o!==e.true?o!==e.false?this.persistCnCookie(t,e.wait):i.fallback&&i.fallback():i.script()}persistCnCookieList(t){const o=Array.from(t.entries()).map((([t,o])=>(o===e.false&&this.getCookieConfig(t).cookies.forEach((e=>{[...s.getAllStartingWith(e.replace(/\*+$/,"")).keys()].forEach((e=>s.markForDeletion(e)))})),`${t}=${o}`)));this.cookieExpirationDate=this.getNewExpirationDate(),o.push(`${this.cookieExpirationName}=${this.cookieExpirationDate.getTime()}`),s.set(this.cookieName,o.join(","),this.cookieExpirationDate,this.cookiePolicies)}getCnCookieValues(){const e=(s.get(this.cookieName)??"").split(",").filter((e=>e)).map((e=>e.split(/=|(?:->)/s))),t=new Map;return e.forEach((e=>{const o=e[0],i=e[1];if(o!==this.cookieExpirationName)t.set(e[0],e[1]);else{let o=new Date;o.setMonth(this.cookieExpirationDate.getMonth()+this.cookieTimeLife);try{const e=Number.parseInt(i);isNaN(e)||(o=new Date(e))}finally{t.set(e[0],o)}}})),t}resetCnCookie(){const t=new Map;Object.entries(this.config).forEach((([o])=>t.set(o,e.wait))),this.persistCnCookieList(t)}persistCnCookie(e,t){const o=this.getCnCookieInfo().values;s.markForDeletion(this.cookieName),o.set(e,t),this.persistCnCookieList(o),this.updateRestrictCloseModal()}addEvent(e,t,o){e.addEventListener(t,o.bind(this),!1)}addEventPrevent(e,t,o){e.addEventListener(t,(e=>{e.preventDefault(),o.call(this,e)}),!1)}addEventKbdValidate(e,t){this.addEvent(e,"keydown",(e=>{const o=e;" "!=o.key&&"Space"!=o.code&&32!=o.keyCode&&"Enter"!=o.key&&"Enter"!=o.code&&13!=o.keyCode||(t.call(this,o),e.preventDefault())}))}setCookieSwitchButton(t,o){const i=document.getElementById(`${t}-switch`),s=i?.querySelector("input");i&&s&&(s.indeterminate=o===e.wait,s.checked=o===e.true,i.ariaChecked=o===e.wait?e.false:o)}updateRestrictCloseModal(){const t=this.getDomEl("cookieCloseModalBtn"),o=this.getDomEl("modalBg");this.restrictCloseModal=!!Array.from(this.getCnCookieInfo().values.values()).includes(e.wait),this.restrictCloseModal?t.classList.add("d-none"):t.classList.remove("d-none"),this.restrictCloseModal?o.classList.add("cn-modal-bg-active"):o.classList.remove("cn-modal-bg-active")}toggleCookieModal(){document.body.classList.contains("cn-open")?this.closeCookieModal():this.openCookieModalToBannerPage()}openCookieModalToBannerPage(){this.openCookieModalToCookiePage(),this.toggleCookieModalPages()}openCookieModalToCookiePage(){document.body.classList.add("cn-open"),this.resetCookieModal(),this.getDomEl("bannerContent").classList.add("d-none"),this.getDomEl("modalContainer").classList.remove("d-none"),this.getDomEl("bannerContainer").classList.add("cn-modal-page"),this.getDomEl("modalContainer").scrollTop=0,this.setupCookieModalList(),this.setTabIndex()}closeCookieModal(){if(this.updateRestrictCloseModal(),this.restrictCloseModal)throw new Error("You need to accept or refuse all cookies");document.body.classList.remove("cn-open"),this.isOnBannerPage()||(this.getDomEl("bannerContent").classList.toggle("d-none"),this.getDomEl("modalContainer").classList.toggle("d-none"),this.getDomEl("bannerContainer").classList.remove("cn-modal-page")),this.unsetTabIndex(),this.setupCookieModalList()}setTabIndex(){document.documentElement.setAttribute("tabindex","-1"),setTimeout((()=>{const e='a[href], button, [role="button"], input, embed, object, iframe, textarea, select, details, [tabindex]:not([tabindex="-1"])',t=this.getDomEl("cookieContainer");[...document.body.querySelectorAll(e)].filter((e=>!e.hasAttribute("disabled")&&!e.getAttribute("aria-hidden")&&!t.contains(e))).forEach((e=>{e.setAttribute("tabindex","-1"),e.classList.add("cn-disabled")})),[...t.querySelectorAll(e)].filter((e=>!(e.hasAttribute("disabled")||e.getAttribute("aria-hidden")||!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)||t.contains(e)))).forEach((e=>{e.setAttribute("tabindex","0"),e.classList.remove("cn-disabled")})),this.getDomEl("cookieShowModalBtn").setAttribute("tabindex","-1")}),500)}unsetTabIndex(){document.documentElement.setAttribute("tabindex","0"),setTimeout((()=>{document.body.querySelectorAll(".cn-disabled").forEach((e=>{e.setAttribute("tabindex","0"),e.classList.remove("cn-disabled")})),this.getDomEl("cookieShowModalBtn").setAttribute("tabindex","0")}),500)}resetCookieModal(){const e=this.getDomEl("customizeBtn");if(this.getDomEl("bannerContent").classList.remove("d-none"),this.getDomEl("modalContainer").classList.add("d-none"),this.getDomEl("bannerContainer").classList.remove("cn-modal-page"),!e.dataset.openModal)throw new Error("Cannot find attribut data-open-modal");e.innerHTML=e.dataset.openModal}setupCookieModalList(){this.getDomEl("cookiesUnorderedList").innerHTML="",Object.entries(this.config).forEach((([t,o])=>{if(this.initDomCookieSwitch(t,o),!s.has(this.cookieName))return;let i=e.wait;try{i=this.getCnCookieStatus(t)}finally{this.setCookieSwitchButton(t,i)}}))}switchToModalPageOrClose(){this.isOnBannerPage()?this.toggleCookieModalPages():this.closeCookieModal()}toggleCookieModalPages(){this.getDomEl("bannerContent").classList.toggle("d-none"),this.getDomEl("modalContainer").classList.toggle("d-none"),this.getDomEl("bannerContainer").classList.toggle("cn-modal-page"),this.isOnBannerPage()||(this.getDomEl("bannerContainer").classList.add("cn-modal-page"),this.denyAllWaitingCookies()),this.setTabIndex(),this.setupCookieModalList(),this.toggleCustomizeBtn()}toggleCustomizeBtn(){const e=this.getDomEl("customizeBtn"),t=this.getDomEl("customizeBtn").dataset;this.getDomEl("modalContainer").scrollTop=0,this.getDomEl("bannerContent").classList.contains("d-none")?(e.innerHTML=t.openModal,e.title=t.openModal):(e.innerHTML=t.closeModal,e.title=t.closeModal)}isOnBannerPage(){return this.getDomEl("modalContainer").classList.contains("d-none")}setupEvents(){this.addEventPrevent(this.getDomEl("modalBg"),"click",this.closeCookieModal),this.addEventPrevent(this.getDomEl("cookieCloseModalBtn"),"click",this.closeCookieModal),this.addEventPrevent(this.getDomEl("acceptAllBtn"),"click",(()=>{this.acceptAllCookies(),this.closeCookieModal()})),this.addEventPrevent(this.getDomEl("denyAllBtn"),"click",(()=>{this.denyAllCookies(),this.closeCookieModal()})),this.addEventPrevent(this.getDomEl("customizeBtn"),"click",this.switchToModalPageOrClose),this.addEventPrevent(this.getDomEl("cookieShowModalBtn"),"click",this.toggleCookieModal),this.getDomEl("cookieLinkShowCustomizeModalList").forEach((e=>{this.addEventPrevent(e,"click",this.openCookieModalToCookiePage),this.addEventKbdValidate(e,this.openCookieModalToCookiePage)}))}getDomEl(e){return this.domElList[e]}initDomCookieSwitch(t,o){const i=document.createElement("li"),s=this.getDomEl("template").children.item(0);if(null===s)throw new Error("Cannot find child item");i.append(s.cloneNode(!0));const n=i.querySelector("span.cn-cookie-name"),a=i.querySelector("span.cn-cookie-description"),c=i.querySelector(".cn-cookie-link"),l=i.querySelector(".cn-switch"),r=i.querySelector(".cn-switch > input");r.indeterminate=!0,r.checked=!1,n.textContent=o.name,a.id=`${t}-desc`,a.textContent=o.description,c.textContent=o.labelLink,c.setAttribute("href",o.link),l.id=`${t}-switch`,l.name=t,l.dataset.name=t,l.setAttribute("aria-labelledby",`${t}-desc`),l.setAttribute("aria-describedby",`${t}-desc`);const d=t=>{let o=e.wait;try{o=this.getCnCookieStatus(t)}finally{this.setCnCookieStatus(t,this.invertCookieStatus(o))}};this.addEvent(r,"click",(()=>d(t))),this.addEventKbdValidate(l,(()=>r.click())),this.getDomEl("cookiesUnorderedList").append(i)}initDomElements(){const e=document.createElement("div");e.classList.add("cn-modal-bg"),document.body.append(e),this.domElList.modalBg=e,this.domElList.cookieLinkShowCustomizeModalList=document.querySelectorAll(".cn-cookie-link");Object.entries({"div#cn-wrapper":"cookieContainer","button#cn-cookie-btn":"cookieShowModalBtn","button#cn-close-modal":"cookieCloseModalBtn","div#cn-banner":"bannerContainer","div.cn-banner-content":"bannerContent","div.cn-modal-container":"modalContainer","button#cn-accept-banner":"acceptAllBtn","button#cn-deny-banner":"denyAllBtn","button#cn-settings-banner":"customizeBtn","ul#cn-modal-list":"cookiesUnorderedList","div#cn-li-template":"template"}).forEach((e=>{const t=e[0],o=e[1];let i=this.domElList[o];if(i=document.querySelector(t),!i)throw new Error(`Cannot find dom element ${t}`);this.domElList={...this.domElList,[o]:i}}));const t=this.domElList.template.cloneNode(!0);this.domElList.template.remove(),this.domElList.template=t}}}(); diff --git a/content/themes/ldc/js/script.js b/content/themes/ldc/js/script.js index 6b142344..6359b141 100644 --- a/content/themes/ldc/js/script.js +++ b/content/themes/ldc/js/script.js @@ -26,8 +26,6 @@ $(document).ready(function () { }); }*/ - $(document).find('input').attr('autocomplete', 'new-password'); - $(window).scroll(function () { if ($(this).scrollTop() > 0) { $('.header').addClass('fixed'); diff --git a/content/themes/ldc/package-lock.json b/content/themes/ldc/package-lock.json new file mode 100644 index 00000000..528f00f4 --- /dev/null +++ b/content/themes/ldc/package-lock.json @@ -0,0 +1,241 @@ +{ + "name": "ldc", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "ldc", + "version": "1.0.0", + "license": "MIT", + "devDependencies": { + "@ldc-web/cookie-notice": "^6.0.1", + "sass": "^1.77.4" + } + }, + "node_modules/@ldc-web/cookie-notice": { + "version": "6.0.1", + "resolved": "https://lab.s-web.fr/api/v4/projects/50/packages/npm/@ldc-web/cookie-notice/-/@ldc-web/cookie-notice-6.0.1.tgz", + "integrity": "sha1-cpqBtzjutcgrzXCcyoAVsv9oBpo=", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/immutable": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz", + "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/sass": { + "version": "1.77.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.4.tgz", + "integrity": "sha512-vcF3Ckow6g939GMA4PeU7b2K/9FALXk2KF9J87txdHzXbUF9XRQRwSxcAs/fGaTnJeBFd7UoV22j3lzMLdM0Pw==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + } + } +} diff --git a/content/themes/ldc/package.json b/content/themes/ldc/package.json new file mode 100644 index 00000000..e2175396 --- /dev/null +++ b/content/themes/ldc/package.json @@ -0,0 +1,17 @@ +{ + "name": "ldc", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "prod": "npm run cookieNotice", + "cookieNotice": "npx sass --style=compressed --no-source-map ./sass/_cookies-notice.scss css/cookies-ldc.min.css && cp node_modules/@ldc-web/cookie-notice/dist/browser/cookie-cn.js js/ldcweb-cn.min.js" + }, + "author": "", + "license": "MIT", + "devDependencies": { + "@ldc-web/cookie-notice": "^6.0.1", + "sass": "^1.77.4" + } +} diff --git a/content/themes/ldc/page-finance.php b/content/themes/ldc/page-finance.php index 254077cd..f0ec2ca9 100644 --- a/content/themes/ldc/page-finance.php +++ b/content/themes/ldc/page-finance.php @@ -101,7 +101,7 @@ $general_meetings = get_field('general_meetings'); @@ -110,7 +110,7 @@ $general_meetings = get_field('general_meetings'); @@ -567,7 +567,6 @@ $general_meetings = get_field('general_meetings'); ', $dividend_history['fields'] ,''); die; $title_nums = array(); ?> $f) : ?> @@ -597,13 +596,6 @@ $general_meetings = get_field('general_meetings');
- - - \ No newline at end of file + diff --git a/content/themes/ldc/page-press.php b/content/themes/ldc/page-press.php index c54d4958..664b51e0 100644 --- a/content/themes/ldc/page-press.php +++ b/content/themes/ldc/page-press.php @@ -22,7 +22,7 @@ $form = get_field('contact_form');
- +
@@ -32,7 +32,7 @@ $form = get_field('contact_form'); $category = 'press'; ?>
-
+
@@ -44,9 +44,7 @@ $form = get_field('contact_form');
- : + :
@@ -54,9 +52,8 @@ $form = get_field('contact_form');
-
✖ +
+ ✖
@@ -79,11 +76,11 @@ $form = get_field('contact_form');

- + - +

@@ -92,65 +89,61 @@ $form = get_field('contact_form');
+
+
+ +
+
:
- - + +
*
- +
*
- +
*
- +
*
- +
*
- +
*
- +
*
- +
@@ -159,22 +152,25 @@ $form = get_field('contact_form');
*
- +
-
+
+ + Les informations recueillies à partir de ce formulaire sont traitées par le Responsable de Traitement pour donner suite à votre demande de contact. Pour connaître vos droits, vous pouvez consulter
la Charte de confidentialité
+ + The information collected from this form is processed by the Data Controller to respond to your contact request. To know your rights, you can consult
the Confidentiality Charter
+ +
+
*
@@ -194,97 +190,66 @@ $form = get_field('contact_form');
+ ['Vous devez activer les cookies recaptcha', 'You must enable recaptcha cookies'], + 'succeed' => ['Message envoyé !', 'Message sent !'], + 'invalid_email' => ['Le format de l\'adresse email est invalide.', 'The email address format is invalid.'], + 'error' => ['Une erreur est survenue, veuillez recharger la page.', 'An error has occurred, please reload the page.'] + ]; + ?> + + -
@@ -292,12 +257,10 @@ $form = get_field('contact_form');
- diff --git a/content/themes/ldc/partials/inline-cookie.php b/content/themes/ldc/partials/inline-cookie.php new file mode 100644 index 00000000..63b2ae7d --- /dev/null +++ b/content/themes/ldc/partials/inline-cookie.php @@ -0,0 +1,22 @@ + ['Vous devez accepter les cookies reCaptcha pour utiliser les formulaires.', 'You must accept reCaptcha cookies to use the forms.'], + 'line2' => ['Acceptez ce cookie pour utiliser les formulaires', 'Accept this cookie to use the forms'], + 'btn' => ['Autoriser', 'Authorize'] +]; + +$i18n_cn = function ($key) use ($i18NCnList) { + return nl2br(ICL_LANGUAGE_CODE === 'fr' ? $i18NCnList[$key][0] : $i18NCnList[$key][1]); +}; +$e_i18n_cn = function ($key) use ($i18NCnList, $i18n_cn) { + // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + echo $i18n_cn($key); +}; +?> + + + + + + + diff --git a/content/themes/ldc/partials/menu-rejoin-en.php b/content/themes/ldc/partials/menu-rejoin-en.php index ccecf195..43a8202c 100644 --- a/content/themes/ldc/partials/menu-rejoin-en.php +++ b/content/themes/ldc/partials/menu-rejoin-en.php @@ -43,6 +43,11 @@ ?>
+
+
+ +
+
Activate the alerts to receive by email the new offers corresponding to your criteria.
@@ -50,7 +55,7 @@
@@ -59,8 +64,8 @@
Type of contract
@@ -70,7 +75,7 @@
@@ -82,11 +87,7 @@
- + The information collected from this form is processed by the Data Controller to respond to your contact request. To know your rights, you can consult
the Confidentiality Charter
@@ -134,46 +135,60 @@ $("#dr-form").on('submit', function(e) { e.preventDefault(); - let metiers = $("#dr-metiers"); - let contrats = $("#dr-contrats"); - let temps = $("#dr-temps"); - let email = $("#dr-email"); - let agree = $("#dr-agree"); + const emailRegex = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; - grecaptcha.ready(function() { - grecaptcha.execute('6LePZvAUAAAAABs8uGHxhSkJVPVs4yCJ3amJ1HpX', { - action: 'submit' - }).then(function(token) { - if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email.val())) { - $.ajax({ - url: ajaxurl, - type: 'POST', - dataType: 'json', - data: { - 'action': 'registerMailJobAlert', - 'metiers': metiers.val(), - 'types': contrats.val(), - 'temps': temps.val(), - 'email': email.val(), - 'token': token - }, - success: function(result) { - if (result === "ok") { - alert('Job alert registered!'); - metiers.val('all'); - contrats.val('all'); - temps.val('all'); - email.val(''); - agree.attr('checked', false); - } else { - alert(result); - } - } - }); - } else { - alert('Invalid email address!'); + const metiers = $("#dr-metiers"); + const contrats = $("#dr-contrats"); + const temps = $("#dr-temps"); + const email = $("#dr-email"); + const agree = $("#dr-agree"); + + const reset = () => { + metiers.val('all'); + contrats.val('all'); + temps.val('all'); + email.val(''); + agree.attr('checked', false); + }; + + const emailIsValid = emailRegex.test(email.val()); + + if (!window.__CN_Recaptcha_Loaded_Callback) { + console.warn('You must enable recaptcha cookies'); + alert('You must enable recaptcha cookies'); + return; + } + if (!emailIsValid) { + alert('The email address format is invalid.'); + return; + } + + let processing = true; + window.__CN_Recaptcha_Loaded_Callback('submit', (token) => $.ajax({ + url: ajaxurl, + type: 'POST', + dataType: 'json', + data: { + 'action': 'registerMailJobAlert', + 'metiers': metiers.val(), + 'types': contrats.val(), + 'temps': temps.val(), + 'email': email.val(), + 'token': token } - }); - }); + }) + .done((response, textStatus, jqXHR) => { + if (response === "ok") { + alert('Job alert registered !'); + reset(); + } else { + alert(response); + } + }) + .fail((jqXHR, textStatus, errorThrown) => { + alert('An error occurred'); + }) + .always(() => processing = false) + ); }); diff --git a/content/themes/ldc/partials/menu-rejoin-fr.php b/content/themes/ldc/partials/menu-rejoin-fr.php index 3ea19c56..185720b4 100644 --- a/content/themes/ldc/partials/menu-rejoin-fr.php +++ b/content/themes/ldc/partials/menu-rejoin-fr.php @@ -43,6 +43,11 @@ ?>
+
+
+ +
+
Activez les alertes pour recevoir par email les nouvelles offres correspondant à vos critères
@@ -50,7 +55,7 @@
@@ -59,8 +64,8 @@
Type de contrat
@@ -70,7 +75,7 @@
@@ -82,11 +87,7 @@
- + Les informations recueillies à partir de ce formulaire sont traitées par le Responsable de Traitement pour donner suite à votre demande de contact. Pour connaître vos droits, vous pouvez consulter
la Charte de confidentialité
@@ -134,46 +135,58 @@ $("#dr-form").on('submit', function(e) { e.preventDefault(); - let metiers = $("#dr-metiers"); - let contrats = $("#dr-contrats"); - let temps = $("#dr-temps"); - let email = $("#dr-email"); - let agree = $("#dr-agree"); + const emailRegex = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; - grecaptcha.ready(function() { - grecaptcha.execute('6LePZvAUAAAAABs8uGHxhSkJVPVs4yCJ3amJ1HpX', { - action: 'submit' - }).then(function(token) { - if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email.val())) { - $.ajax({ - url: ajaxurl, - type: 'POST', - dataType: 'json', - data: { - 'action': 'registerMailJobAlert', - 'metiers': metiers.val(), - 'types': contrats.val(), - 'temps': temps.val(), - 'email': email.val(), - 'token': token - }, - success: function(result) { - if (result === "ok") { - alert('Alerte job enregistrée !'); - metiers.val('all'); - contrats.val('all'); - temps.val('all'); - email.val(''); - agree.attr('checked', false); - } else { - alert(result); - } - } - }); - } else { - alert('Adresse email invalide !'); + const metiers = $("#dr-metiers"); + const contrats = $("#dr-contrats"); + const temps = $("#dr-temps"); + const email = $("#dr-email"); + + const reset = () => { + metiers.val('all'); + contrats.val('all'); + temps.val('all'); + email.val(''); + }; + + const emailIsValid = emailRegex.test(email.val()); + + if (!window.__CN_Recaptcha_Loaded_Callback) { + console.warn('Vous devez activer les cookies recaptcha'); + alert('Vous devez activer les cookies recaptcha'); + return; + } + if (!emailIsValid) { + alert('Le format de l\'adresse email est invalide.'); + return; + } + + let processing = true; + window.__CN_Recaptcha_Loaded_Callback('submit', (token) => $.ajax({ + url: ajaxurl, + type: 'POST', + dataType: 'json', + data: { + 'action': 'registerMailJobAlert', + 'metiers': metiers.val(), + 'types': contrats.val(), + 'temps': temps.val(), + 'email': email.val(), + 'token': token } - }); - }); + }) + .done((response, textStatus, jqXHR) => { + if (response === "ok") { + alert('Alerte job enregistrée !'); + reset(); + } else { + alert(response); + } + }) + .fail((jqXHR, textStatus, errorThrown) => { + alert('Une erreur est survenue'); + }) + .always(() => processing = false) + ); }); diff --git a/content/themes/ldc/partials/recaptcha-form.php b/content/themes/ldc/partials/recaptcha-form.php new file mode 100644 index 00000000..d7919bf0 --- /dev/null +++ b/content/themes/ldc/partials/recaptcha-form.php @@ -0,0 +1,41 @@ + diff --git a/content/themes/ldc/sass/_cookies-notice.scss b/content/themes/ldc/sass/_cookies-notice.scss new file mode 100644 index 00000000..d54d37a2 --- /dev/null +++ b/content/themes/ldc/sass/_cookies-notice.scss @@ -0,0 +1,26 @@ +@use "sass:color"; + +// * Cookie Notice +$ck-primary-color: #646464; +$ck-secondary-color: #ff4e4e; +$ck-background-color: #ffffff; +$ck-list-background-color: #e4e4e4; +$ck-borders-color: #808080; +$ck-title-font: "Satisfy", sans-serif; +$ck-title-size: 2.4rem; +$ck-text-font: "Barlow", sans-serif; +$ck-text-size: 1rem; +$cn-cookie-modal-max-height-desktop: 41rem; +// Buttons +$cn-button-bg-color: #fcfcfc; + +.cn-cookie-link { + cursor: pointer; +} +.cn-link { + display: contents; + color: $ck-secondary-color; +} + +// * VENDOR +@import "./../node_modules/@ldc-web/cookie-notice/src/scss/themes/standard.scss";