Merge branch 'develop' into trunk
This commit is contained in:
commit
1c67975317
15 changed files with 486 additions and 980 deletions
|
|
@ -59,7 +59,8 @@ class SecureHeaders
|
|||
'frame-src ' . implode(' ', [
|
||||
'https://www.google.com/recaptcha/',
|
||||
'https://recaptcha.google.com/recaptcha/',
|
||||
'https://www.google.com/maps/'
|
||||
'https://www.google.com/maps/',
|
||||
'https://www.youtube.com/'
|
||||
]) . ';',
|
||||
"font-src 'self' data: https://fonts.gstatic.com;",
|
||||
// ! Using CKEditor will must have unsafe-inline style
|
||||
|
|
|
|||
8
package-lock.json
generated
8
package-lock.json
generated
|
|
@ -11,7 +11,7 @@
|
|||
"@fortawesome/free-regular-svg-icons": "latest",
|
||||
"@fortawesome/free-solid-svg-icons": "latest",
|
||||
"@fortawesome/vue-fontawesome": "^3.0.3",
|
||||
"@ldc-web/cookie-notice": "^3.0.8",
|
||||
"@ldc-web/cookie-notice": "^6.0.1",
|
||||
"@rushstack/eslint-patch": "^1.3.2",
|
||||
"@sipec/vue3-tags-input": "^3.0.4",
|
||||
"@types/bootstrap": "^5.2.7",
|
||||
|
|
@ -2435,9 +2435,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@ldc-web/cookie-notice": {
|
||||
"version": "3.0.8",
|
||||
"resolved": "https://lab.s-web.fr/api/v4/projects/50/packages/npm/@ldc-web/cookie-notice/-/@ldc-web/cookie-notice-3.0.8.tgz",
|
||||
"integrity": "sha1-FOc6hEv1L9NOnRDOdyBnbIsd31A=",
|
||||
"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/@nodelib/fs.scandir": {
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
"@fortawesome/free-regular-svg-icons": "latest",
|
||||
"@fortawesome/free-solid-svg-icons": "latest",
|
||||
"@fortawesome/vue-fontawesome": "^3.0.3",
|
||||
"@ldc-web/cookie-notice": "^3.0.8",
|
||||
"@ldc-web/cookie-notice": "^6.0.1",
|
||||
"@rushstack/eslint-patch": "^1.3.2",
|
||||
"@sipec/vue3-tags-input": "^3.0.4",
|
||||
"@types/bootstrap": "^5.2.7",
|
||||
|
|
|
|||
|
|
@ -3,41 +3,45 @@
|
|||
// * Version 3.0.8
|
||||
// phpcs:disable
|
||||
return [
|
||||
'button_customize_cookies' => 'Personnaliser les cookies',
|
||||
'button_forbid' => 'Interdire',
|
||||
'button_allow' => 'Autoriser',
|
||||
'button_forbid_all' => 'Tout refuser',
|
||||
'button_allow_all' => 'Tout accepter',
|
||||
'button_customize' => 'Personnaliser',
|
||||
'button_back' => 'Retour',
|
||||
'banner_title' => 'Le site internet :site_name utilise des cookies !',
|
||||
'banner_text_open' => 'Ce site web stocke les cookies sur votre ordinateur. :site_name utilise ces informations afin d’améliorer et de personnaliser votre expérience de navigation, ainsi que pour l’analyse et les indicateurs concernant nos visiteurs à la fois sur ce site web et sur d’autres supports. Vous pouvez cliquer sur « Accepter » si vous consentez à l’utilisation de ces cookies.',
|
||||
'banner_text' => '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’utilisationde ces cookies.',
|
||||
'banner_details' => '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.',
|
||||
'banner_details_link' =>
|
||||
'Pour en savoir plus sur les cookies que nous utilisons, consultez notre charte de confidentialité.',
|
||||
'banner_details_link_title' => 'Charte de confidentialité',
|
||||
'banner_more_details' => 'Plus de détails...',
|
||||
'banner_less_details' => 'Moins de détails...',
|
||||
'Panel_title' => 'Panneau de gestion des cookies',
|
||||
'Panel_subtitle' => 'Le respect de votre vie privée est notre priorité',
|
||||
'Panel_details' => 'Les fonctionnalités de ce site s’appuient sur des services proposés par des tiers. Si vous acceptez, ces tiers déposeront des cookies qui vous permettront de visualiser sur le site du contenu hébergé par ces tiers. Via ces cookies, ces tiers collecteront et utiliseront vos données de navigation pour des finalités qui leur sont propres, conformément à leur politique de confidentialité (lien ci-dessous). Cette page vous permet de donner ou de retirer votre consentement, soit globalement soit service par service.',
|
||||
'button_customize_cookies' => 'Personnaliser les cookies',
|
||||
'button_close_cookies' => 'Fermer la fenêtre des cookies',
|
||||
'button_toggle_cookie' => 'Autoriser ou refuser',
|
||||
'button_forbid_all' => 'Tout refuser',
|
||||
'button_allow_all' => 'Tout accepter',
|
||||
'button_allow' => 'Autoriser',
|
||||
'button_forbid_all_title' => 'Refuser tous les cookies et fermer le panneau des cookies',
|
||||
'button_allow_all_title' => 'Accepter tous les cookies et fermer le panneau des cookies',
|
||||
'button_customize' => 'Personnaliser',
|
||||
'button_validate_and_close' => 'Valider et fermer',
|
||||
'button_title_open_new_tab' => 'Ouvrir le lien dans un nouvel onglet',
|
||||
'banner_title' => 'Le site internet :site_name utilise des cookies !',
|
||||
'banner_text' => '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.',
|
||||
'modal_title' => 'Fenêtre de gestion de cookies',
|
||||
'panel_content' => 'Contenu du panneau des cookies',
|
||||
'picture_cookie_title' => 'Image d’un bon gros cookie',
|
||||
'navigation_title' => 'Navigation du panneau des cookies',
|
||||
|
||||
'custom' => [
|
||||
'frame' => 'Vous devez autoriser les cookies :type pour voir cet élément',
|
||||
'recaptcha' => [
|
||||
'name' => 'API - reCAPTCHA',
|
||||
'description' => 'Les cookies qui sont déposés via le recaptcha sur les formulaires ont pour but d\'empêcher la soumission des formulaires par des robots.',
|
||||
'warning' => 'Vous devez accepter les cookies recaptcha pour utiliser les formulaires.'
|
||||
'title' => '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.',
|
||||
'labelLink' => 'En savoir +',
|
||||
'warning' => 'Vous devez accepter les cookies reCAPTCHA pour envoyer le formulaire',
|
||||
],
|
||||
'matomo' => [
|
||||
'name' => 'Mesure d\'audience - MATOMO',
|
||||
'description' => 'Service d\'analyse d\'audience.'
|
||||
'matomo' => [
|
||||
'title' => 'Matomo',
|
||||
'description' => 'Les services de mesure d’audience permettent de générer des statistiques de fréquentation utiles à l’amélioration du site.',
|
||||
'labelLink' => 'En savoir +',
|
||||
],
|
||||
|
||||
'youtube' => [
|
||||
'name' => 'VIDEOS - Youtube',
|
||||
'name' => 'VIDEOS - Youtube',
|
||||
'description' => 'Les cookies placés par des services de partages de vidéos ont pour but d\'autoriser les utilisateurs à voir le contenu directement depuis ce site.',
|
||||
'labelLink' => 'En savoir plus'
|
||||
'labelLink' => 'En savoir +',
|
||||
'warning' => 'Youtube est désactivé'
|
||||
],
|
||||
]
|
||||
];
|
||||
|
|
|
|||
|
|
@ -44,3 +44,13 @@ h6 {
|
|||
h1 {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.cn-cookie-activate {
|
||||
.small-text {
|
||||
color: #000000b3
|
||||
}
|
||||
|
||||
button {
|
||||
min-width: fit-content;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
629
resources/sass/fo/vendor/_ldcweb-cookies.scss
vendored
629
resources/sass/fo/vendor/_ldcweb-cookies.scss
vendored
|
|
@ -1,629 +0,0 @@
|
|||
/**
|
||||
* LDC Service Web Cookies
|
||||
* Version 2.1.0
|
||||
*/
|
||||
|
||||
/* stylelint-disable selector-max-compound-selectors */
|
||||
/* stylelint-disable max-nesting-depth */
|
||||
|
||||
/* DEBUT DU PARAMETRAGE */
|
||||
/* - Choix des FONTS */
|
||||
/* - Changement des couleurs et des polices */
|
||||
|
||||
/* PARTIE A RENSEIGNER */
|
||||
$primary-color: #fc9c00;
|
||||
$secondary-color: #da002b;
|
||||
$background-color: #fff;
|
||||
$shadow-color: 0 0.1rem 1rem rgb(0 0 0 / 35%);
|
||||
$title-font: "Amatic SC", sans-serif;
|
||||
$line-height-title: 1;
|
||||
$title-size: 25px;
|
||||
$text-font: "Poppins-Regular", sans-serif;
|
||||
$text-size: 14px;
|
||||
$accept-color: #3a3;
|
||||
$deny-color: #a33;
|
||||
|
||||
/* Position et animation des cookies */
|
||||
$ldcweb-cn-position-left: 20px; /* Distance par rapport à la gauche de la fenêtre */
|
||||
$ldcweb-cn-position-right: auto; /* Distance par rapport à la droite de la fenêtre */
|
||||
$ldcweb-cn-animation-left: 0; /* Position gauche de base des cookies */
|
||||
$ldcweb-cn-animation-right: auto; /* Position droite de base des cookies */
|
||||
$ldcweb-cn-position-bottom: 20px; /* Distance par rapport au bas de la fenêtre */
|
||||
$ldcweb-cn-z-index: 200;
|
||||
|
||||
/* PARTIE A RENSEIGNER FACULTATIF */
|
||||
/* FENETRE D'ACCUEIL */
|
||||
$ck-bg-color: #fff;
|
||||
|
||||
/* Title settings */
|
||||
$ck-w1-bgcolor-title: $background-color;
|
||||
$ck-w1-font-family-title: $title-font;
|
||||
$ck-w1-font-size-title: $title-size;
|
||||
$ck-w1-color-title: $secondary-color;
|
||||
|
||||
/* Text settings */
|
||||
$ck-w1-font-family-txt: $text-font;
|
||||
$ck-w1-font-size-txt: $text-size;
|
||||
$ck-w1-color-txt: $primary-color;
|
||||
$ck-w1-color-href-hover: $secondary-color;
|
||||
|
||||
/* Button settings */
|
||||
$ck-w1-color-btn: $secondary-color;
|
||||
$ck-w1-color-btn-hover: $secondary-color;
|
||||
$ck-w1-font-family-btn-txt: $text-font;
|
||||
$ck-w1-font-size-btn-txt: $text-size;
|
||||
$ck-w1-color-btn-txt: #fff;
|
||||
$ck-w1-color-btn-txt-hover: #fff;
|
||||
$ck-w1-color-btn-border: transparent;
|
||||
$ck-w1-color-btn-border-hover: transparent;
|
||||
|
||||
/* FENETRE DE PERSONNALISATION */
|
||||
$ck-bg-color-modal-wrapper: #fff;
|
||||
/* Title settings */
|
||||
$ck-w2-bgcolor-title: $background-color;
|
||||
$ck-w2-font-family-title: $title-font;
|
||||
$ck-w2-font-size-title: $title-size;
|
||||
$ck-w2-color-title: $secondary-color;
|
||||
|
||||
/* Text settings */
|
||||
$ck-w2-font-family-txt: $text-font;
|
||||
$ck-w2-font-size-txt: $text-size;
|
||||
$ck-w2-color-txt: $primary-color;
|
||||
$ck-w2-color-href-hover: #000;
|
||||
|
||||
/* Accept/Deny btn settings */
|
||||
$ck-color-accept: #808080;
|
||||
$ck-color-accept-hover: $accept-color;
|
||||
$ck-color-deny: #808080;
|
||||
$ck-color-deny-hover: $deny-color;
|
||||
$ck-color-txt: #fff;
|
||||
$ck-color-txt-hover: #fff;
|
||||
|
||||
/* Cookies list settings */
|
||||
$ck-bgcolor-list: #e4e4e4;
|
||||
$ck-font-family-list: $text-font;
|
||||
$ck-font-size-list: $text-size;
|
||||
$ck-color-list: #000;
|
||||
$ck-color-title: $secondary-color;
|
||||
|
||||
/* Scroll bar */
|
||||
$ck-scroll-bgcolor: $primary-color;
|
||||
$ck-scroll-barcolor: $secondary-color;
|
||||
/* FIN DU PARAMETRAGE */
|
||||
|
||||
/* MOBILE FIRST */
|
||||
#template {
|
||||
display: none;
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
button {
|
||||
border: 0;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
#ldcweb-cn {
|
||||
&::before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
&.open-banner {
|
||||
display: flex;
|
||||
|
||||
.ldcweb-cn-banner {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
&.open-modal {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
p {
|
||||
color: $ck-w1-color-txt;
|
||||
font-family: $ck-w1-font-family-txt;
|
||||
font-size: $ck-w1-font-size-txt;
|
||||
}
|
||||
|
||||
a {
|
||||
color: $ck-w1-color-txt;
|
||||
font-family: $ck-w1-font-family-txt;
|
||||
font-size: $ck-w1-font-size-txt;
|
||||
text-decoration: underline;
|
||||
transition: 0s;
|
||||
}
|
||||
|
||||
.ldcweb-cn-banner {
|
||||
position: fixed;
|
||||
z-index: $ldcweb-cn-z-index;
|
||||
right: $ldcweb-cn-animation-right;
|
||||
bottom: calc($ldcweb-cn-position-bottom + 60px);
|
||||
left: $ldcweb-cn-animation-left;
|
||||
display: flex;
|
||||
overflow: auto;
|
||||
overflow: hidden;
|
||||
width: 475px;
|
||||
height: auto;
|
||||
max-height: 80vh;
|
||||
flex-direction: column;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
padding: 0;
|
||||
padding-top: 20px;
|
||||
margin: 0;
|
||||
background-color: $ck-bg-color;
|
||||
border-radius: 10px;
|
||||
box-shadow: $shadow-color;
|
||||
line-height: initial;
|
||||
opacity: 0;
|
||||
transition: 0.3s;
|
||||
user-select: none;
|
||||
visibility: hidden;
|
||||
|
||||
&-open {
|
||||
right: $ldcweb-cn-position-right;
|
||||
left: $ldcweb-cn-position-left;
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
}
|
||||
}
|
||||
|
||||
.ldcweb-banner {
|
||||
&-img {
|
||||
display: flex;
|
||||
width: 150px;
|
||||
height: auto;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding-right: 20px;
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
&-text {
|
||||
flex: 2;
|
||||
}
|
||||
|
||||
&-title {
|
||||
p {
|
||||
color: $ck-w1-color-title;
|
||||
font-family: $ck-w1-font-family-title;
|
||||
font-size: $ck-w1-font-size-title;
|
||||
font-weight: bold;
|
||||
line-height: $line-height-title;
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
|
||||
&-para-p {
|
||||
margin: 6px 0;
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
&-btn-details {
|
||||
width: 100%;
|
||||
margin: 0 0 20px;
|
||||
}
|
||||
|
||||
&-btn-details-p {
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
color: $secondary-color;
|
||||
cursor: pointer;
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
&-btns {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
flex: 1;
|
||||
flex-direction: row;
|
||||
cursor: pointer;
|
||||
|
||||
.ldcweb-banner-btn {
|
||||
&-flex {
|
||||
display: flex;
|
||||
width: 66.5%;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-top: 1px solid #808080;
|
||||
text-align: center;
|
||||
|
||||
div {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.ldcweb-cn-accept {
|
||||
color: $secondary-color;
|
||||
font-weight: bolder;
|
||||
}
|
||||
}
|
||||
|
||||
&s-btn {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background-color: $background-color;
|
||||
color: $primary-color;
|
||||
font-family: $ck-w1-font-family-btn-txt;
|
||||
font-size: $ck-w1-font-size-btn-txt;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
|
||||
&:hover {
|
||||
background-color: $ck-w1-color-btn-hover;
|
||||
color: $ck-w1-color-btn-txt-hover;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&-content {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
&-details {
|
||||
display: flex;
|
||||
overflow: hidden;
|
||||
height: 0;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
align-items: flex-start;
|
||||
justify-content: center;
|
||||
padding: 0 20px;
|
||||
text-align: justify;
|
||||
transition: 0.3s;
|
||||
}
|
||||
|
||||
&-details-open {
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
&-btn-personalize {
|
||||
width: 33.5%;
|
||||
border-top: 1px solid #808080;
|
||||
}
|
||||
|
||||
&-btn-accept {
|
||||
border-right: 1px solid #808080;
|
||||
border-left: 1px solid #808080;
|
||||
}
|
||||
}
|
||||
|
||||
&-modal {
|
||||
z-index: 200;
|
||||
display: flex;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
opacity: 1;
|
||||
|
||||
&-wrapper {
|
||||
position: relative;
|
||||
display: flex;
|
||||
overflow: auto;
|
||||
max-height: 100vh;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
|
||||
> div {
|
||||
&:not(:first-of-type) {
|
||||
width: 100%;
|
||||
align-items: flex-end;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&-title {
|
||||
padding: 0 20px;
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
.title {
|
||||
color: $ck-w2-color-title;
|
||||
font-family: $ck-w2-font-family-title;
|
||||
font-size: $ck-w2-font-size-title;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
margin-bottom: 6px;
|
||||
color: $ck-w2-color-txt;
|
||||
color: $ck-w2-color-title;
|
||||
font-family: $ck-w2-font-family-txt;
|
||||
font-size: $ck-w2-font-size-txt;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.description {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
color: $ck-w2-color-txt;
|
||||
font-family: $ck-w2-font-family-txt;
|
||||
font-size: $ck-w2-font-size-txt;
|
||||
font-weight: normal;
|
||||
line-height: initial;
|
||||
}
|
||||
}
|
||||
|
||||
&-btns {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
font-weight: normal;
|
||||
line-height: initial;
|
||||
|
||||
p {
|
||||
color: $ck-w2-color-txt;
|
||||
font-family: $ck-w2-font-family-txt;
|
||||
font-size: $ck-w2-font-size-txt;
|
||||
}
|
||||
|
||||
a {
|
||||
color: $ck-w2-color-txt;
|
||||
font-family: $ck-w2-font-family-txt;
|
||||
font-size: $ck-w2-font-size-txt;
|
||||
}
|
||||
}
|
||||
|
||||
&-details {
|
||||
width: 100%;
|
||||
height: 153px;
|
||||
margin: 6px 0;
|
||||
overflow-y: auto;
|
||||
|
||||
ul {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 20px;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
li {
|
||||
> div {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 20px;
|
||||
border: 1px solid $ck-bgcolor-list;
|
||||
margin: 10px 0;
|
||||
border-radius: 20px;
|
||||
}
|
||||
|
||||
span {
|
||||
color: $ck-color-list;
|
||||
font-family: $ck-font-family-list;
|
||||
font-size: $ck-font-size-list;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: $ck-color-list;
|
||||
font-family: $ck-font-family-list;
|
||||
font-size: $ck-font-size-list;
|
||||
}
|
||||
|
||||
label {
|
||||
color: $ck-color-list;
|
||||
font-family: $ck-font-family-list;
|
||||
font-size: $ck-font-size-list;
|
||||
}
|
||||
}
|
||||
|
||||
.ldcweb-cn {
|
||||
&-name {
|
||||
color: $ck-color-title;
|
||||
}
|
||||
|
||||
&-infos {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
flex: 1;
|
||||
flex-direction: column;
|
||||
|
||||
span {
|
||||
&:first-of-type {
|
||||
font-size: calc($ck-font-size-list * 1.25);
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
.ldcweb-cn-description {
|
||||
color: $ck-w2-color-txt;
|
||||
}
|
||||
|
||||
a {
|
||||
width: fit-content;
|
||||
}
|
||||
}
|
||||
|
||||
&-buttons {
|
||||
display: flex;
|
||||
width: 200px;
|
||||
justify-content: space-around;
|
||||
margin-top: 6px;
|
||||
|
||||
div {
|
||||
display: table;
|
||||
margin: 0.5em;
|
||||
text-align: center;
|
||||
|
||||
&:first-of-type {
|
||||
background: $ck-color-accept;
|
||||
transition: all 0.3s;
|
||||
|
||||
input {
|
||||
&:checked {
|
||||
~ {
|
||||
label {
|
||||
background-color: $ck-color-deny-hover;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
~ label.active {
|
||||
background-color: $ck-color-deny-hover;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:last-of-type {
|
||||
background: $ck-color-deny;
|
||||
transition: all 0.3s;
|
||||
|
||||
input {
|
||||
&:checked {
|
||||
~ {
|
||||
label {
|
||||
background-color: $ck-color-accept-hover;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
~ {
|
||||
label.active {
|
||||
background-color: $ck-color-accept-hover;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
input {
|
||||
display: none;
|
||||
}
|
||||
|
||||
label {
|
||||
display: block;
|
||||
width: 100px;
|
||||
padding: 6px 20px;
|
||||
color: $ck-color-txt;
|
||||
cursor: pointer;
|
||||
transition: color 0.3s;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ldcweb-btn {
|
||||
position: fixed;
|
||||
z-index: $ldcweb-cn-z-index;
|
||||
right: $ldcweb-cn-position-right;
|
||||
bottom: $ldcweb-cn-position-bottom;
|
||||
left: $ldcweb-cn-position-left;
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
padding: 8px;
|
||||
background-color: #fff;
|
||||
border-radius: 100%;
|
||||
box-shadow: $shadow-color;
|
||||
cursor: pointer;
|
||||
|
||||
&-icon {
|
||||
path {
|
||||
fill: $secondary-color;
|
||||
}
|
||||
|
||||
circle {
|
||||
fill: $secondary-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.visibility {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.btn-autorize {
|
||||
cursor: pointer;
|
||||
fill: $secondary-color;
|
||||
}
|
||||
|
||||
.ldcweb-cn-cookie-link {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@media (max-width: 535px) {
|
||||
#ldcweb-cn {
|
||||
.ldcweb-banner {
|
||||
&-btns {
|
||||
flex-direction: column;
|
||||
|
||||
.ldcweb-banner-btn-flex {
|
||||
width: 100%;
|
||||
|
||||
.ldcweb-banner-btn-deny {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.ldcweb-banner-btn-accept {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.ldcweb-banner-btn-personalize {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
&-title {
|
||||
p {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
&-img {
|
||||
padding: 0 0 20px;
|
||||
}
|
||||
|
||||
&-btn-accept {
|
||||
border-right: 0;
|
||||
border-left: 1px solid #808080;
|
||||
}
|
||||
|
||||
&-details-open {
|
||||
height: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.ldcweb-cn-banner {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
max-height: 100vh;
|
||||
border-bottom-left-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-top-left-radius: 10px;
|
||||
border-top-right-radius: 10px;
|
||||
|
||||
&-content {
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,45 +1,46 @@
|
|||
import { dom, library, config } from "@fortawesome/fontawesome-svg-core";
|
||||
import { config, dom, library } from "@fortawesome/fontawesome-svg-core";
|
||||
import { faCirclePlay } from "@fortawesome/free-regular-svg-icons";
|
||||
import {
|
||||
faEraser,
|
||||
faArrowLeftLong,
|
||||
faPlus,
|
||||
faTrash,
|
||||
faEye,
|
||||
faFolderOpen,
|
||||
faCrop,
|
||||
faQuestionCircle,
|
||||
faCheck,
|
||||
faUndoAlt,
|
||||
faRedoAlt,
|
||||
faSyncAlt,
|
||||
faSearchPlus,
|
||||
faSearchMinus,
|
||||
faArrowLeft,
|
||||
faArrowRight,
|
||||
faArrowUp,
|
||||
faArrowDown,
|
||||
faArrowsAltH,
|
||||
faArrowsAltV,
|
||||
faWandMagic,
|
||||
faPencil,
|
||||
faTimes,
|
||||
faBackspace,
|
||||
faSearch,
|
||||
faArrowRightFromBracket,
|
||||
faArrowAltCircleDown,
|
||||
faArrowAltCircleUp,
|
||||
faArrowDown,
|
||||
faArrowLeft,
|
||||
faArrowLeftLong,
|
||||
faArrowRight,
|
||||
faArrowRightFromBracket,
|
||||
faArrowUp,
|
||||
faArrowsAltH,
|
||||
faArrowsAltV,
|
||||
faBackspace,
|
||||
faBan,
|
||||
faCheck,
|
||||
faChevronLeft,
|
||||
faChevronRight,
|
||||
faCircleNotch,
|
||||
faSliders,
|
||||
faCircleCheck,
|
||||
faCircleExclamation,
|
||||
faCircleInfo,
|
||||
faCircleNotch,
|
||||
faCircleXmark,
|
||||
faCopy,
|
||||
faListUl,
|
||||
faBan,
|
||||
faCrop,
|
||||
faEraser,
|
||||
faEye,
|
||||
faEyeSlash,
|
||||
faCircleExclamation,
|
||||
faCircleInfo
|
||||
faFolderOpen,
|
||||
faListUl,
|
||||
faPencil,
|
||||
faPlus,
|
||||
faQuestionCircle,
|
||||
faRedoAlt,
|
||||
faSearch,
|
||||
faSearchMinus,
|
||||
faSearchPlus,
|
||||
faSliders,
|
||||
faSyncAlt,
|
||||
faTimes,
|
||||
faTrash,
|
||||
faUndoAlt,
|
||||
faWandMagic
|
||||
} from "@fortawesome/free-solid-svg-icons";
|
||||
|
||||
config.autoReplaceSvg = false;
|
||||
|
|
@ -86,5 +87,6 @@ library.add(faChevronRight);
|
|||
library.add(faCircleXmark);
|
||||
library.add(faCircleNotch);
|
||||
library.add(faSliders);
|
||||
library.add(faCirclePlay);
|
||||
|
||||
dom.watch();
|
||||
|
|
|
|||
|
|
@ -1,23 +1,27 @@
|
|||
<footer class="site-footer mb-3 mt-5 position-relative">
|
||||
<footer class="site-footer position-relative mb-3 mt-5">
|
||||
<!-- reassurance block -->
|
||||
<div class="py-4 bckg-red reassurances position-relative">
|
||||
<div class="container d-md-flex align-items-center">
|
||||
<div class="flex-shrink-0 offset-lg-2 text-uppercase">
|
||||
<p class="font-amatic font-amatic-45">{{ __('Choisir') }}<span class="d-block">{{ __('les volailles') }}</span><span class="d-block">{{ __('Lionor, c\'est...') }}</span></p>
|
||||
<div class="bckg-red reassurances position-relative py-4">
|
||||
<div class="d-md-flex align-items-center container">
|
||||
<div class="offset-lg-2 text-uppercase flex-shrink-0">
|
||||
<p class="font-amatic font-amatic-45">{{ __('Choisir') }}<span class="d-block">{{ __('les volailles') }}</span><span
|
||||
class="d-block">{{ __('Lionor, c\'est...') }}</span></p>
|
||||
</div>
|
||||
<div class="d-md-flex flex-grow-1 text-center">
|
||||
<div class="col mx-4 reassurance-item">
|
||||
<img src="{{ Vite::asset('resources/assets/images/Check.svg') }}" alt="Une case cochée surmontée d'une crète de poulet" class="img-fluid">
|
||||
<div class="col reassurance-item mx-4">
|
||||
<img class="img-fluid" src="{{ Vite::asset('resources/assets/images/Check.svg') }}"
|
||||
alt="Une case cochée surmontée d'une crète de poulet">
|
||||
<p class="font-amatic font-amatic-40">{{ __('Soutenir') }}</p>
|
||||
<p>{{ __('L\'emploi local et les éleveurs régionaux') }}</p>
|
||||
</div>
|
||||
<div class="col mx-4 reassurance-item">
|
||||
<img src="{{ Vite::asset('resources/assets/images/Check.svg') }}" alt="Une case cochée surmontée d'une crète de poulet" class="img-fluid">
|
||||
<div class="col reassurance-item mx-4">
|
||||
<img class="img-fluid" src="{{ Vite::asset('resources/assets/images/Check.svg') }}"
|
||||
alt="Une case cochée surmontée d'une crète de poulet">
|
||||
<p class="font-amatic font-amatic-40">{{ __('Choisir la fraîcheur') }}</p>
|
||||
<p>{{ __('Et consommer des produits de proximité') }}</p>
|
||||
</div>
|
||||
<div class="col mx-4 reassurance-item">
|
||||
<img src="{{ Vite::asset('resources/assets/images/Check.svg') }}" alt="Une case cochée surmontée d'une crète de poulet" class="img-fluid">
|
||||
<div class="col reassurance-item mx-4">
|
||||
<img class="img-fluid" src="{{ Vite::asset('resources/assets/images/Check.svg') }}"
|
||||
alt="Une case cochée surmontée d'une crète de poulet">
|
||||
<p class="font-amatic font-amatic-40">{{ __('Goûter la qualité') }}</p>
|
||||
<p>{{ __('D\'un bout à l\'autre de la filière') }}</p>
|
||||
</div>
|
||||
|
|
@ -27,9 +31,10 @@
|
|||
<!-- END reassurance block -->
|
||||
|
||||
<div class="container py-4">
|
||||
<div class="d-md-flex ">
|
||||
<div class="d-md-flex">
|
||||
<a class="d-flex align-items-center" href="{{ route('home') }}">
|
||||
<img src="{{ Vite::asset('resources/assets/images/logo.png') }}" alt="Logo de la société Lionor" class="branding img-fluid">
|
||||
<img class="branding img-fluid" src="{{ Vite::asset('resources/assets/images/logo.png') }}"
|
||||
alt="Logo de la société Lionor">
|
||||
</a>
|
||||
|
||||
<div class="mx-md-4">
|
||||
|
|
@ -39,14 +44,15 @@
|
|||
{{ __('59189 Steenbecque') }}<br>
|
||||
</address>
|
||||
|
||||
<a href="tel:0328436055" title="{{ __('Contact téléphonique') }}" class="fw-bold">{{ __('03 28 43 60 55') }}</a>
|
||||
<a class="fw-bold" href="tel:0328436055" title="{{ __('Contact téléphonique') }}">{{ __('03 28 43 60 55') }}</a>
|
||||
|
||||
<div class="socials d-md-flex align-items-center my-2">
|
||||
<p class="small grey">{{ __('Suivez-nous sur les réseaux sociaux') }}</p>
|
||||
<ul class="socials-list ms-3 pe-3">
|
||||
<li class="social-item">
|
||||
<a href="https://www.facebook.com/people/Lionor/100063507206404/" title="{{ __('Page Facebook de lionor') }}">
|
||||
<img src="{{ Vite::asset('resources/assets/images/Facebook.svg') }}" alt="Le F de Facebook surmonté dune crète de poulet">
|
||||
<img src="{{ Vite::asset('resources/assets/images/Facebook.svg') }}"
|
||||
alt="Le F de Facebook surmonté dune crète de poulet">
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
@ -57,7 +63,8 @@
|
|||
<a href="{{ route('contact.show') }}" title="{{ __('Page de contact') }}">{{ __('Nous contacter') }}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ route('contact.show') }}" title="{{ __('Page de contact service consommateurs') }}">{{ __('Service consommateurs') }}</a>
|
||||
<a href="{{ route('contact.show') }}"
|
||||
title="{{ __('Page de contact service consommateurs') }}">{{ __('Service consommateurs') }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
@ -65,27 +72,30 @@
|
|||
<h2 class="text-uppercase font-dkmoonlight font-dkmoonlight-34">{{ __('Nos certifications') }}</h2>
|
||||
<ul class="certifications-list d-flex align-items-center">
|
||||
<li class="certification-item mx-1">
|
||||
<img src="{{ Vite::asset('resources/assets/images/Criteres-qualite.png') }}" alt="Logo de la certification Critères qualité certifiés">
|
||||
<img src="{{ Vite::asset('resources/assets/images/Criteres-qualite.png') }}"
|
||||
alt="Logo de la certification Critères qualité certifiés">
|
||||
</li>
|
||||
<li class="certification-item mx-1">
|
||||
<img src="{{ Vite::asset('resources/assets/images/Volaille-francaise.png') }}" alt="Logo de la certification Volailles françaises">
|
||||
<img src="{{ Vite::asset('resources/assets/images/Volaille-francaise.png') }}"
|
||||
alt="Logo de la certification Volailles françaises">
|
||||
</li>
|
||||
<li class="certification-item mx-1">
|
||||
<img src="{{ Vite::asset('resources/assets/images/Saveur-en-or.png') }}" alt="Logo de la certification Saveurs en Or">
|
||||
<img src="{{ Vite::asset('resources/assets/images/Saveur-en-or.png') }}"
|
||||
alt="Logo de la certification Saveurs en Or">
|
||||
</li>
|
||||
<li class="certification-item mx-1">
|
||||
{{-- <li class="certification-item mx-1">
|
||||
<img src="{{ Vite::asset('resources/assets/images/100LOCAL-V2.png') }}" alt="Logo 100% local">
|
||||
</li>
|
||||
</li> --}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="copyright text-center small">
|
||||
<p class="copyright small text-center">
|
||||
<a href="{{ route('policies') }}" title="Politique des données personnelles">{{ __('Politique des données personnelles') }}</a>
|
||||
<span>/</span>
|
||||
<a href="{{ route('legals') }}" title="Mentions légales">{{ __('Mentions légales') }}</a>
|
||||
<span>/</span>
|
||||
<a href="#cookies" class="ldcweb-cn-cookie-link">{{ __('Cookies') }}</a>
|
||||
<a class="cn-cookie-link" href="#cookies">{{ __('Cookies') }}</a>
|
||||
</p>
|
||||
</footer>
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -1,14 +1,6 @@
|
|||
@php $uniqueID = uniqid(); @endphp
|
||||
<a
|
||||
class="video-frame position-relative w-100"
|
||||
href="{{ $link }}"
|
||||
data-type="{{ $type }}"
|
||||
data-frame="{{ route('front.frame', ['frame' => $type]) }}"
|
||||
target="_blank">
|
||||
<img
|
||||
class="img-fluid img-cut"
|
||||
src="{{ $picture }}"
|
||||
alt="{{ $alt }}"
|
||||
title="{{ $title }}">
|
||||
<i class="youtube-play-button position-absolute top-50 left-50 fa-regular fa-circle-play"></i>
|
||||
<a class="position-relative" data-fancybox href="#brand-video-{{ $uniqueID }}">
|
||||
<img class="img-fluid img-cut" src="{{ $picture }}" title="{{ $picture_title }}" alt="{{ $picture_alt }}">
|
||||
<i class="youtube-play-button position-absolute top-50 left-50 fa-regular fa-circle-play rounded-circle bg-white p-2"></i>
|
||||
</a>
|
||||
<div class="cn-{{ $type }}" id="brand-video-{{ $uniqueID }}" data-id="{{ $link }}" style="display: none;"></div>
|
||||
|
|
|
|||
|
|
@ -6,158 +6,197 @@
|
|||
|
||||
@section('content')
|
||||
|
||||
<div class="g-0 pb-md-5 position-relative hero">
|
||||
<div class="position-relative hero-fix-height">
|
||||
<img src="{{ Vite::asset('resources/assets/images/Panoramique1.jpg') }}" alt="Des poulets dans un élevage" class="img-fluid">
|
||||
</div>
|
||||
<!-- breadcrumb -->
|
||||
<div class="container breadcrumb-obj small mt-3">
|
||||
<div class="row">
|
||||
<div class="col-12 d-flex ">
|
||||
<p class="fst-italic me-2">Vous êtes ici</p>
|
||||
@include('modules/breadcrumb/breadcrumb-body')
|
||||
<div class="g-0 pb-md-5 position-relative hero">
|
||||
<div class="position-relative hero-fix-height">
|
||||
<img class="img-fluid" src="{{ Vite::asset('resources/assets/images/Panoramique1.jpg') }}" alt="Des poulets dans un élevage">
|
||||
</div>
|
||||
<!-- breadcrumb -->
|
||||
<div class="breadcrumb-obj small container mt-3">
|
||||
<div class="row">
|
||||
<div class="col-12 d-flex">
|
||||
<p class="fst-italic me-2">Vous êtes ici</p>
|
||||
@include('modules/breadcrumb/breadcrumb-body')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END breadcrumb -->
|
||||
</div>
|
||||
|
||||
<div class="container pt-lg-5 position-relative">
|
||||
<div class="row">
|
||||
<section class="col-md-8 offset-md-2 stripes">
|
||||
<h1 class="text-uppercase text-center font-amatic font-amatic-48">{{ __('Besoin d\'une information ?') }}<span class="font-amatic-red">{{ __('contactez-nous !') }}</span></h1>
|
||||
</section>
|
||||
<!-- END breadcrumb -->
|
||||
</div>
|
||||
|
||||
<div class="container mt-4">
|
||||
<div class="pt-lg-5 position-relative container">
|
||||
<div class="row">
|
||||
<div class="col">@include('modules.flash-messages')</div>
|
||||
<section class="col-md-8 offset-md-2 stripes">
|
||||
<h1 class="text-uppercase font-amatic font-amatic-48 text-center">{{ __('Besoin d\'une information ?') }}<span
|
||||
class="font-amatic-red">{{ __('contactez-nous !') }}</span></h1>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- GRID -->
|
||||
<div class="row g-3 mt-4">
|
||||
<div class="col-md-6">
|
||||
<img src="{{ Vite::asset('resources/assets/images/poulet-label.jpg') }}" alt="Un poulet roux avec un sticker 100% local" class="img-fluid">
|
||||
<div class="container mt-4">
|
||||
<div class="row">
|
||||
<div class="col">@include('modules.flash-messages')</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<form id="contact-form" class="row g-3" action="{{ route('contact.submit') }}" method="post">
|
||||
@csrf
|
||||
<div class="col-md-12 d-flex align-items-center">
|
||||
<label for="inputPassword4" class="form-label me-4 fw-bold">{{ __('Civilité') }} *</label>
|
||||
@foreach (App\Enums\CivilityEnum::toArray() as $civility)
|
||||
<div class="form-check mx-3">
|
||||
<input id="flexRadio{{ $civility->label . $civility->value }}" class="form-check-input" type="radio" name="civility" value="{{$civility->value}}" @if ((old('civility') ?? 1)==$civility->value) checked @endif>
|
||||
<label class="form-check-label" for="flexRadio{{ $civility->label . $civility->value }}">
|
||||
{{ $civility->label }}
|
||||
</label>
|
||||
|
||||
<!-- GRID -->
|
||||
<div class="row g-3 mt-4">
|
||||
<div class="col-md-6">
|
||||
<img class="img-fluid" src="{{ Vite::asset('resources/assets/images/poulet-label.jpg') }}"
|
||||
alt="Un poulet roux avec un sticker 100% local">
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="mb-4">
|
||||
<span
|
||||
class="cn-cookie-activate d-flex flex-column flex-lg-row text-lg-start justify-content-center align-items-center rounded-3 border-primary mx-auto w-fit border border-2 bg-white px-3 py-2 text-center"
|
||||
data-cookie-name="recaptcha">
|
||||
<span>
|
||||
<p class="text-primary fs-6 fw-bold lh-sm">
|
||||
{{ __('Vous devez accepter les cookies reCaptcha pour utiliser les formulaires.') }}
|
||||
</p>
|
||||
<p class="fs-6 small-text lh-sm">{{ __('Acceptez ce cookie pour utiliser le formulaire') }}</p>
|
||||
</span>
|
||||
<button class="btn btn-outline-primary rounded-2 fs-6 fw-bold ms-3 px-4 py-3"
|
||||
id="recaptcha-accept">{{ __('AUTORISER') }} </button>
|
||||
</span>
|
||||
</div>
|
||||
<form class="row g-3" id="contact-form" action="{{ route('contact.submit') }}" method="post">
|
||||
@csrf
|
||||
<div class="col-md-12 d-flex align-items-center flex-wrap">
|
||||
<label class="form-label fw-bold me-4" for="inputPassword4">{{ __('Civilité') }} *</label>
|
||||
@foreach (App\Enums\CivilityEnum::toArray() as $civility)
|
||||
<div class="form-check mx-3">
|
||||
<input class="form-check-input" id="flexRadio{{ $civility->label . $civility->value }}" name="civility"
|
||||
type="radio" value="{{ $civility->value }}" @if ((old('civility') ?? 1) == $civility->value) checked @endif>
|
||||
<label class="form-check-label" for="flexRadio{{ $civility->label . $civility->value }}">
|
||||
{{ $civility->label }}
|
||||
</label>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<input id="inputNom4" class="form-control" type="text" name="lastname" value="{{ old('lastname') }}" placeholder="{{ __('Nom *') }}" required>
|
||||
@include('modules.input-error', ['inputName' => 'lastname'])
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="inputPrenom4" name="firstname" value="{{ old('firstname') }}" placeholder="{{ __('Prénom *') }}" required>
|
||||
@include('modules.input-error', ['inputName' => 'firstname'])
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<input type="mail" class="form-control" id="inputMail4" name="email" value="{{ old('email') }}" placeholder="{{ __('Adresse e-mail *') }}" required>
|
||||
@include('modules.input-error', ['inputName' => 'email'])
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<input type="telephone" class="form-control" id="inputTelephone4" name="phone" value="{{ old('phone') }}" placeholder="{{ __('Téléphone') }}">
|
||||
@include('modules.input-error', ['inputName' => 'phone'])
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<input type="text" class="form-control" id="inputAddress" name="address" value="{{ old('address') }}" placeholder="{{ __('Adresse *') }}" required>
|
||||
@include('modules.input-error', ['inputName' => 'address'])
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="inputVille4" name="city" value="{{ old('city') }}" placeholder="{{ __('Ville *') }}" required>
|
||||
@include('modules.input-error', ['inputName' => 'city'])
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="inputPostal4" name="postcode" value="{{ old('postcode') }}" placeholder="{{ __('Code postal *') }}" required>
|
||||
@include('modules.input-error', ['inputName' => 'postcode'])
|
||||
</div>
|
||||
|
||||
<div class="col-md-12">
|
||||
<div class="separator"></div>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<input type="text" class="form-control" id="inputAddress" name="subject" value="{{ old('subject') }}" placeholder="{{ __('Objet de la demande *') }}" required>
|
||||
@include('modules.input-error', ['inputName' => 'subject'])
|
||||
</div>
|
||||
|
||||
<div class="col-md-12">
|
||||
<textarea class="form-control" id="exampleFormControlTextarea1" rows="10" name="message" placeholder="{{ __('Écrivez votre message *') }}" required>{{ old('message') }}</textarea>
|
||||
@include('modules.input-error', ['inputName' => 'message'])
|
||||
</div>
|
||||
|
||||
<div class="col-md-12">
|
||||
<p class="small">{{ __('Les informations que vous nous communiquez sont collectées et traitées par Lionor, responsable de traitement selon les finalités définies dans notre Charte de confidentialité. Ces informations sont destinées au personnel de Lionor et peuvent être partagées avec ses sous-traitants.
|
||||
A tout moment, vous pouvez retirer votre consentement. Pour toute information complémentaire concernant vos données personnelles et vos droits, merci de consulter notre ') }}<a href="{{ route('policies') }}" title="Politique des données personnelles">{{ __('Charte de confidentialité') }}</a>.</p>
|
||||
<div class="form-check">
|
||||
<input id="flexCheckDefault" class="form-check-input" type="checkbox" name="rgpd" value="1" required>
|
||||
<label class="form-check-label fst-italic small" for="flexCheckDefault">
|
||||
{{ __('J\'autorise Lionor à traiter mes données personnelles conformément à la ') }}<a href="{{ route('policies') }}" title="Politique des données personnelles">{{ __('Charte de confidentialité') }}</a>. *
|
||||
</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="inputNom4" name="lastname" type="text" value="{{ old('lastname') }}"
|
||||
placeholder="{{ __('Nom *') }}" required>
|
||||
@include('modules.input-error', ['inputName' => 'lastname'])
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="inputPrenom4" name="firstname" type="text" value="{{ old('firstname') }}"
|
||||
placeholder="{{ __('Prénom *') }}" required>
|
||||
@include('modules.input-error', ['inputName' => 'firstname'])
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="inputMail4" name="email" type="mail" value="{{ old('email') }}"
|
||||
placeholder="{{ __('Adresse e-mail *') }}" required>
|
||||
@include('modules.input-error', ['inputName' => 'email'])
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="inputTelephone4" name="phone" type="telephone" value="{{ old('phone') }}"
|
||||
placeholder="{{ __('Téléphone') }}">
|
||||
@include('modules.input-error', ['inputName' => 'phone'])
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<input class="form-control" id="inputAddress" name="address" type="text" value="{{ old('address') }}"
|
||||
placeholder="{{ __('Adresse *') }}" required>
|
||||
@include('modules.input-error', ['inputName' => 'address'])
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="inputVille4" name="city" type="text" value="{{ old('city') }}"
|
||||
placeholder="{{ __('Ville *') }}" required>
|
||||
@include('modules.input-error', ['inputName' => 'city'])
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" id="inputPostal4" name="postcode" type="text" value="{{ old('postcode') }}"
|
||||
placeholder="{{ __('Code postal *') }}" required>
|
||||
@include('modules.input-error', ['inputName' => 'postcode'])
|
||||
</div>
|
||||
@include('modules.input-error', ['inputName' => 'rgpd'])
|
||||
</div>
|
||||
|
||||
<div class="col-md-12">
|
||||
<div class="row flex-column flex-lg-row small">
|
||||
<div class="col-md-6 fst-italic pb-5 pb-lg-0">
|
||||
<div id="r_captcha" class="flex justify-center"></div>
|
||||
<div class="col-md-12">
|
||||
<div class="separator"></div>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<input class="form-control" id="inputAddress" name="subject" type="text" value="{{ old('subject') }}"
|
||||
placeholder="{{ __('Objet de la demande *') }}" required>
|
||||
@include('modules.input-error', ['inputName' => 'subject'])
|
||||
</div>
|
||||
|
||||
<div class="col-md-12">
|
||||
<textarea class="form-control" id="exampleFormControlTextarea1" name="message" rows="10"
|
||||
placeholder="{{ __('Écrivez votre message *') }}" required>{{ old('message') }}</textarea>
|
||||
@include('modules.input-error', ['inputName' => 'message'])
|
||||
</div>
|
||||
|
||||
<div class="col-md-12">
|
||||
<p class="small">
|
||||
{{ __('Les informations que vous nous communiquez sont collectées et traitées par Lionor, responsable de traitement selon les finalités définies dans notre Charte de confidentialité. Ces informations sont destinées au personnel de Lionor et peuvent être partagées avec ses sous-traitants.
|
||||
A tout moment, vous pouvez retirer votre consentement. Pour toute information complémentaire concernant vos données personnelles et vos droits, merci de consulter notre ') }}<a
|
||||
href="{{ route('policies') }}"
|
||||
title="Politique des données personnelles">{{ __('Charte de confidentialité') }}</a>.</p>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" id="flexCheckDefault" name="rgpd" type="checkbox" value="1" required>
|
||||
<label class="form-check-label fst-italic small" for="flexCheckDefault">
|
||||
{{ __('J\'autorise Lionor à traiter mes données personnelles conformément à la ') }}<a
|
||||
href="{{ route('policies') }}"
|
||||
title="Politique des données personnelles">{{ __('Charte de confidentialité') }}</a>. *
|
||||
</label>
|
||||
</div>
|
||||
<div class="col-md-6 text-center text-lg-end">
|
||||
<button type="submit" class="g-recaptcha btn btn-primary text-uppercase mb-2" data-sitekey="{{ config('services.google.recaptcha.public') }}">{{ __('Envoyer >') }}</button>
|
||||
<p class="fst-italic ms-1">{{ __('* Champs obligatoire') }}</p>
|
||||
@include('modules.input-error', ['inputName' => 'rgpd'])
|
||||
</div>
|
||||
|
||||
<div class="col-md-12">
|
||||
<div class="row flex-column flex-lg-row small">
|
||||
<div class="col-md-6 fst-italic pb-lg-0 pb-5">
|
||||
<div class="flex justify-center" id="r_captcha"></div>
|
||||
</div>
|
||||
<div class="col-md-6 text-lg-end text-center">
|
||||
<button class="g-recaptcha btn btn-primary text-uppercase mb-2" type="submit">{{ __('Envoyer >') }}</button>
|
||||
<p class="fst-italic ms-1">{{ __('* Champs obligatoire') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<a id="recaptcha-warning" href="#" class="cn-cookie-link" rel="nofollow">
|
||||
<strong class="text-red-600 text-underline text-bold text-normal">
|
||||
{{ __('cookie-notice.custom.recaptcha.warning') }}
|
||||
</strong>
|
||||
</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container mt-4">
|
||||
<div class="row">
|
||||
<div class="col">@include('modules.flash-messages')</div>
|
||||
<div class="container mt-4">
|
||||
<div class="row">
|
||||
<div class="col">@include('modules.flash-messages')</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
|
||||
@push('scripts')
|
||||
<script nonce="{{ $nonce }}">
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
window.__CN_Recaptcha = function() {
|
||||
(function(d, t) {
|
||||
let g = d.createElement(t),
|
||||
s = d.getElementsByTagName(t)[0];
|
||||
g.src = 'https://www.google.com/recaptcha/api.js?render=explicit&onload=__CN_Recaptcha_Loaded';
|
||||
s.parentNode.insertBefore(g, s)
|
||||
}(document, 'script'));
|
||||
};
|
||||
window.__CN_Recaptcha_Loaded = function() {
|
||||
grecaptcha.render('r_captcha', {
|
||||
'sitekey': "{{ config('services.google.recaptcha.public') }}"
|
||||
<script nonce="{{ $nonce }}">
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.getElementById("recaptcha-accept").addEventListener('click', function(e) {
|
||||
e.preventDefault();
|
||||
window.WebCookieNotice.acceptCookie('recaptcha');
|
||||
});
|
||||
document.getElementById('recaptcha-warning').remove();
|
||||
document.getElementById('contact-form').inert = false;
|
||||
};
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
const initFormCaptcha = () => {
|
||||
const newDiv = document.createElement("div");
|
||||
newDiv.classList.add('g-recaptcha');
|
||||
document.getElementById('r_captcha').appendChild(newDiv);
|
||||
document.getElementById('contact-form').inert = true;
|
||||
};
|
||||
window.__CN_Recaptcha = function() {
|
||||
initFormCaptcha();
|
||||
(function(d, t) {
|
||||
let g = d.createElement(t),
|
||||
s = d.getElementsByTagName(t)[0];
|
||||
g.src = 'https://www.google.com/recaptcha/api.js?render=explicit&onload=__CN_Recaptcha_Loaded';
|
||||
s.parentNode.insertBefore(g, s)
|
||||
}(document, 'script'));
|
||||
};
|
||||
window.__CN_Recaptcha_Reset = function() {
|
||||
document.querySelector('#r_captcha > div')?.remove();
|
||||
initFormCaptcha();
|
||||
};
|
||||
window.__CN_Recaptcha_Loaded = function() {
|
||||
document.getElementById('contact-form').inert = false;
|
||||
grecaptcha.render(document.querySelector('#r_captcha > div'), {
|
||||
'sitekey': "{{ config('services.google.recaptcha.public') }}"
|
||||
});
|
||||
};
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
|
|
|
|||
|
|
@ -1,16 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{{ __('Autorisation nécessaire') }}</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1 style="padding: 1rem; background-color: rgb(153, 153, 153); color: #FFF; position: absolute; top:50%; left: 50%; transform:translateX(-50%) translateY(-50%);">
|
||||
{{ __('cookie-notice.custom.frame', [
|
||||
'type' => $frame
|
||||
]) }}
|
||||
</h1>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -6,8 +6,7 @@
|
|||
@section('canonical', route('recipes.show', ['publishedRecipe' => $recipeModel]))
|
||||
@section('ogPicture', asset($recipeModel->picture))
|
||||
|
||||
@section('breadcrumb',
|
||||
request()->route()->getName())
|
||||
@section('breadcrumb', request()->route()->getName())
|
||||
|
||||
@section('content')
|
||||
|
||||
|
|
@ -34,7 +33,7 @@
|
|||
<div class="recipe-wrap container">
|
||||
<!-- DESCRIPTION RECETTE -->
|
||||
<div class="row g-5 mb-5">
|
||||
<div class="col-md-6 cn-youtube">
|
||||
<div class="col-md-6">
|
||||
@if ($recipeModel->youtube_video_id)
|
||||
@php
|
||||
$video_value = $recipeModel->youtube_video_id ?? null;
|
||||
|
|
@ -42,8 +41,8 @@
|
|||
$player = 'UNDEFINED';
|
||||
$link = null;
|
||||
$picture = '/' . $recipeModel->picture;
|
||||
$alt = $recipeModel->picture_alt;
|
||||
$title = $recipeModel->picture_title;
|
||||
$picture_alt = $recipeModel->picture_alt;
|
||||
$picture_title = $recipeModel->picture_title;
|
||||
|
||||
switch (true) {
|
||||
// YOUTUBE
|
||||
|
|
@ -61,10 +60,10 @@
|
|||
@endphp
|
||||
@include('fo.modules.video-frame', [
|
||||
'type' => $player,
|
||||
'title' => $title,
|
||||
'picture_title' => $picture_title,
|
||||
'link' => $link,
|
||||
'picture' => $picture,
|
||||
'alt' => $alt,
|
||||
'picture_alt' => $picture_alt,
|
||||
])
|
||||
@else
|
||||
<img class="img-fluid img-cut" src="{{ asset($recipeModel->picture) }}"
|
||||
|
|
|
|||
176
resources/views/vendor/cn-cookies.blade.php
vendored
176
resources/views/vendor/cn-cookies.blade.php
vendored
|
|
@ -1,31 +1,78 @@
|
|||
{{-- blade-formatter-disable --}}
|
||||
@php
|
||||
|
||||
$site_name = Str::ucfirst(config('app.name'));
|
||||
$logo_picture_url = Vite::asset('resources/assets/images/logo.png');
|
||||
$logo_alt_text = "Logo {$site_name}";
|
||||
$logo_title_text = __('Logo du site :name', ['name' => $site_name]);
|
||||
$logo_alt_text = __('Logo :name', ['name' => $site_name]);
|
||||
|
||||
$confidentiality_page_url = route('policies');
|
||||
|
||||
$strings = (object)[
|
||||
'button_customize_cookies' => __('cookie-notice.button_customize_cookies'),
|
||||
'button_forbid' => __('cookie-notice.button_forbid'),
|
||||
'button_allow' => __('cookie-notice.button_allow'),
|
||||
'button_forbid_all' => Str::upper(__('cookie-notice.button_forbid_all')),
|
||||
'button_allow_all' => Str::upper(__('cookie-notice.button_allow_all')),
|
||||
'button_customize' => Str::upper(__('cookie-notice.button_customize')),
|
||||
'button_back' => Str::upper(__('cookie-notice.button_back')),
|
||||
'banner_title' => __('cookie-notice.banner_title', ['site_name' => $site_name]),
|
||||
'banner_text_open' => __('cookie-notice.banner_text_open', ['site_name' => $site_name]),
|
||||
'banner_text' => __('cookie-notice.banner_text'),
|
||||
'banner_details' => __('cookie-notice.banner_details'),
|
||||
'banner_details_link' => __('cookie-notice.banner_details_link'),
|
||||
'banner_details_link_title' => __('cookie-notice.banner_details_link_title'),
|
||||
'banner_more_details' => __('cookie-notice.banner_more_details'),
|
||||
'banner_less_details' => __('cookie-notice.banner_less_details'),
|
||||
'Panel_title' => __('cookie-notice.Panel_title'),
|
||||
'Panel_subtitle' => __('cookie-notice.Panel_subtitle'),
|
||||
'Panel_details' => __('cookie-notice.Panel_details'),
|
||||
'modal_title' => __('cookie-notice.modal_title'),
|
||||
'button_customize_cookies' => __('cookie-notice.button_customize_cookies'),
|
||||
'button_close_cookies' => __('cookie-notice.button_close_cookies'),
|
||||
'button_title_open_new_tab' => __('cookie-notice.button_title_open_new_tab'),
|
||||
'button_toggle_cookie' => __('cookie-notice.button_toggle_cookie'),
|
||||
'button_forbid_all' => Str::upper(__('cookie-notice.button_forbid_all')),
|
||||
'button_allow_all' => Str::upper(__('cookie-notice.button_allow_all')),
|
||||
'button_allow' => __('cookie-notice.button_allow'),
|
||||
'button_customize' => Str::upper(__('cookie-notice.button_customize')),
|
||||
'button_forbid_all_title' => __('cookie-notice.button_forbid_all_title'),
|
||||
'button_allow_all_title' => __('cookie-notice.button_allow_all_title'),
|
||||
'button_validate_and_close' => Str::upper(__('cookie-notice.button_validate_and_close')),
|
||||
'banner_title' => __('cookie-notice.banner_title', ['site_name' => $site_name]),
|
||||
'banner_text' => __('cookie-notice.banner_text'),
|
||||
'panel_content' => __('cookie-notice.panel_content'),
|
||||
'picture_cookie_title' => __('cookie-notice.picture_cookie_title'),
|
||||
'navigation_title' => __('cookie-notice.navigation_title'),
|
||||
];
|
||||
|
||||
$cookieInline = function ($translations, $cookieName, $text, $subtext = '') {
|
||||
return <<<SCRIPT
|
||||
(() => {
|
||||
const cookieActivate = document.createElement("span");
|
||||
cookieActivate.classList.add(
|
||||
"cn-cookie-activate",
|
||||
"d-flex",
|
||||
"flex-column",
|
||||
"flex-lg-row",
|
||||
"text-lg-start",
|
||||
"justify-content-center",
|
||||
"align-items-center",
|
||||
"rounded-3",
|
||||
"border-primary",
|
||||
"mx-auto",
|
||||
"w-fit",
|
||||
"border",
|
||||
"border-2",
|
||||
"bg-white",
|
||||
"px-3",
|
||||
"py-2",
|
||||
"text-center"
|
||||
);
|
||||
cookieActivate.dataset.cookieName = '{$cookieName}';
|
||||
|
||||
const childSpan = document.createElement("span");
|
||||
const childSpanSpan = document.createElement("span");
|
||||
const childSpanSmall = document.createElement("span");
|
||||
childSpanSpan.textContent = '{$text}';
|
||||
childSpanSpan.classList.add("text-primary", "fs-6", "fw-bold", "lh-sm")
|
||||
childSpanSmall.textContent = '{$subtext}';
|
||||
childSpan.appendChild(childSpanSpan);
|
||||
childSpan.appendChild(childSpanSmall);
|
||||
|
||||
const childBtn = document.createElement("button");
|
||||
childBtn.classList.add("btn", "btn-outline-primary", "rounded-2", "fs-6", "fw-bold", "ms-3", "px-4", "py-3");
|
||||
childBtn.textContent = '{$translations->button_allow}';
|
||||
|
||||
cookieActivate.appendChild(childSpan);
|
||||
cookieActivate.appendChild(childBtn);
|
||||
return cookieActivate;
|
||||
})
|
||||
SCRIPT;
|
||||
};
|
||||
|
||||
$cookies = [];
|
||||
|
||||
// YOUTUBE
|
||||
|
|
@ -34,29 +81,59 @@ $cookies['youtube'] = [
|
|||
'description' => __('cookie-notice.custom.youtube.description'),
|
||||
'labelLink' => __('cookie-notice.custom.youtube.labelLink'),
|
||||
'link' => 'https://policies.google.com/technologies/cookies?hl=fr&utm_source=ucb',
|
||||
'cookies' => ['NID', 'VISITOR_INFO1_LIVE', 'YSC']
|
||||
'cookies' => [
|
||||
"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"
|
||||
]
|
||||
];
|
||||
$inlineYt = $cookieInline(
|
||||
$strings,
|
||||
'youtube',
|
||||
__('cookie-notice.custom.youtube.warning')
|
||||
);
|
||||
|
||||
$cookies['youtube']['script'] = <<<SCRIPT
|
||||
function () {
|
||||
window.__CN_VIDEO = window.__CN_VIDEO ?? {};
|
||||
window.__CN_VIDEO.youtube = true;
|
||||
let youtubeVids = document.getElementsByClassName('cn-youtube');
|
||||
for (let item of youtubeVids) {
|
||||
console.log(item);
|
||||
let id = item.dataset.id.replace('watch?v=', 'embed/');
|
||||
let title = item.dataset.title;
|
||||
let e = document.createElement('iframe');
|
||||
e.classList.add('mw-100');
|
||||
e.src = id;
|
||||
e.width = item.dataset.width ?? "720";
|
||||
e.height = item.dataset.height ?? "405";
|
||||
e.frameBorder = "0";
|
||||
e.title = title;
|
||||
e.allow = "autoplay; fullscreen; picture-in-picture";
|
||||
e.allowFullscreen = true;
|
||||
item.innerHTML = "";
|
||||
item.appendChild(e);
|
||||
}
|
||||
}
|
||||
SCRIPT;
|
||||
$cookies['youtube']['fallback'] = <<<FALLBACK
|
||||
function () {
|
||||
window.__CN_VIDEO = window.__CN_VIDEO ?? {};
|
||||
window.__CN_VIDEO.youtube = false;
|
||||
let youtubeVids = document.getElementsByClassName('cn-youtube');
|
||||
for (let item of youtubeVids) {
|
||||
item.innerHTML = "";
|
||||
item.appendChild({$inlineYt}());
|
||||
setTimeout(() => listenInlineCnButtons(), 500);
|
||||
}
|
||||
}
|
||||
FALLBACK;
|
||||
|
||||
// RECAPTCHA
|
||||
$cookies['recaptcha'] = [
|
||||
'name' => __('cookie-notice.custom.recaptcha.name'),
|
||||
'name' => __('cookie-notice.custom.recaptcha.title'),
|
||||
'description' => __('cookie-notice.custom.recaptcha.description'),
|
||||
'link' => 'https://policies.google.com/privacy',
|
||||
'labelLink' => __('En savoir +'),
|
||||
'cookies' => ['NID', '__Secure-3PAPISID', '__Secure-3PSID', '__Secure-3PSIDCC']
|
||||
'cookies' => [
|
||||
"NID", "_grecaptcha", "__Secure-3PAPISID", "__Secure-3PSID", "__Secure-3PSIDCC",
|
||||
"_GRECAPTCHA", "rc::c", "rc::b", "rc::a", "itsec-recaptcha-opt-in-*"
|
||||
]
|
||||
];
|
||||
|
||||
$cookies['recaptcha']['script'] = <<<SCRIPT
|
||||
|
|
@ -64,16 +141,36 @@ function () {
|
|||
if (window.__CN_Recaptcha) {
|
||||
window.__CN_Recaptcha();
|
||||
}
|
||||
[...document.getElementsByClassName('cn-cookie-activate')].forEach(function(el) {
|
||||
if (el.dataset.cookieName === 'recaptcha') {
|
||||
el.classList.add('d-none');
|
||||
}
|
||||
});
|
||||
}
|
||||
SCRIPT;
|
||||
$cookies['recaptcha']['fallback'] = <<<FALLBACK
|
||||
function () {
|
||||
if (window.__CN_Recaptcha_Reset) {
|
||||
window.__CN_Recaptcha_Reset();
|
||||
}
|
||||
[...document.getElementsByClassName('cn-cookie-activate')].forEach(function(el) {
|
||||
if (el.dataset.cookieName === 'recaptcha') {
|
||||
el.classList.remove('d-none');
|
||||
}
|
||||
});
|
||||
}
|
||||
FALLBACK;
|
||||
|
||||
// MATOMO
|
||||
$cookies['matomo'] = [
|
||||
'name' => __('cookie-notice.custom.matomo.name'),
|
||||
'name' => __('cookie-notice.custom.matomo.title'),
|
||||
'description' => __('cookie-notice.custom.matomo.description'),
|
||||
'link' => 'https://fr.matomo.org/gdpr-analytics/',
|
||||
'labelLink' => __('En savoir +'),
|
||||
'cookies' => ['_pk']
|
||||
'link' => 'https://fr.matomo.org/gdpr-analytics/',
|
||||
'labelLink' => __('En savoir +'),
|
||||
'cookies' => [
|
||||
"_pk*", "piwik_ignore", "_pk_uid", "_pk_ref", "_pk_cvar", "_pk_id", "_pk_ses", "_pk_hsr",
|
||||
"mtm_consent", "matomo_ignore", "matomo_sessid"
|
||||
]
|
||||
];
|
||||
|
||||
$cookies['matomo']['script'] = <<<SCRIPT
|
||||
|
|
@ -125,6 +222,25 @@ document.addEventListener('DOMContentLoaded', function () {
|
|||
window.WebCookieNotice['{{ $index_name }}'] = window.WebCookieNotice['{{ $index_name }}'].conf;
|
||||
@endforeach
|
||||
window.WebCookieNotice = new window.CookieNotice(window.WebCookieNotice);
|
||||
|
||||
function 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.addEventListener("click", (e) => {
|
||||
e.preventDefault();
|
||||
if (cookieEl.dataset.cookieName) {
|
||||
window.WebCookieNotice.acceptCookie(cookieEl.dataset.cookieName);
|
||||
cookieEl.classList.add("d-none");
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
<div id="cn-wrapper" tabindex="-1" role="dialog">
|
||||
<div id="cn-wrapper" title="{{ $strings->modal_title }}" role="alertdialog" tabindex="-1">
|
||||
<button id="cn-cookie-btn" title="{{ $strings->button_customize_cookies }}">
|
||||
{{-- COOKIE SVG --}}
|
||||
<svg viewBox="0 0 28 28" xmlns="http://www.w3.org/2000/svg">
|
||||
<title>{{ $strings->picture_cookie_title }}</title>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M14.0001 2.93383C14.0001 4.16622 14.6159 5.25477 15.5567 5.90849C15.3526 6.46423 15.2412 7.06473 15.2412 7.69126C15.2412 10.5472 17.5564 12.8624 20.4123 12.8624C21.0807 12.8624 21.7195 12.7356 22.3059 12.5047C22.9456 13.527 24.0817 14.2069 25.3766 14.2069C26.1872 14.2069 26.9357 13.9404 27.539 13.4903C27.5453 13.6594 27.5484 13.8294 27.5484 14C27.5484 21.4826 21.4826 27.5484 14 27.5484C6.51748 27.5484 0.45166 21.4826 0.45166 14C0.45166 6.51748 6.51748 0.45166 14 0.45166C14.3209 0.45166 14.6391 0.462811 14.9543 0.484747C14.3618 1.12929 14.0001 1.98931 14.0001 2.93383ZM21.2176 2.53212C21.2195 2.54914 21.2213 2.56619 21.2229 2.58328C21.2569 2.58864 21.2909 2.59433 21.3247 2.60035C21.2891 2.57745 21.2534 2.5547 21.2176 2.53212ZM25.5171 6.86104C25.523 6.89745 25.5285 6.93399 25.5336 6.97066C25.5512 6.97141 25.5687 6.97228 25.5861 6.97328C25.5633 6.93574 25.5403 6.89833 25.5171 6.86104ZM12.5247 2.09283C12.4748 2.38291 12.4487 2.68118 12.4487 2.98553C12.4487 4.33316 12.9591 5.56158 13.7972 6.48802C13.7266 6.87842 13.6898 7.28054 13.6898 7.69126C13.6898 11.404 16.6996 14.4137 20.4123 14.4137C20.8725 14.4137 21.3219 14.3675 21.7562 14.2794C22.689 15.1941 23.9669 15.7582 25.3766 15.7582C25.5439 15.7582 25.7094 15.7503 25.8726 15.7347C25.0321 21.5385 20.0368 25.9971 14.0001 25.9971C7.37431 25.9971 2.00305 20.6258 2.00305 14.0001C2.00305 7.87378 6.59498 2.82 12.5247 2.09283Z"
|
||||
fill="#FF4E4E" />
|
||||
|
|
@ -18,54 +19,38 @@
|
|||
{{-- BANNER --}}
|
||||
<div id="cn-banner" tabindex="-1">
|
||||
<div class="cn-modal-top-line">
|
||||
<button id="cn-close-modal">X</button>
|
||||
<button id="cn-close-modal" title="{{ $strings->button_close_cookies }}">X</button>
|
||||
</div>
|
||||
{{-- CONTENT VIEW --}}
|
||||
<div class="cn-content">
|
||||
<div class="cn-content" title="{{ $strings->panel_content }}" tabindex="0">
|
||||
{{-- 1ST PAGE BANNER --}}
|
||||
<div class="cn-banner-content">
|
||||
<div class="cn-banner-img">
|
||||
<img src="{{ $logo_picture_url }}" alt="{{ $logo_alt_text }}">
|
||||
<img src="{{ $logo_picture_url }}" title="{{ $logo_title_text }}" alt="{{ $logo_alt_text }}">
|
||||
</div>
|
||||
<div class="cn-banner-text">
|
||||
<div class="cn-banner-title">
|
||||
<span>{!! nl2br(e($strings->banner_title)) !!}</span>
|
||||
</div>
|
||||
<div class="cn-banner-para-p">
|
||||
<p class="cn-banner-para-p-close">{!! nl2br(e($strings->banner_text)) !!}</p>
|
||||
<p class="cn-banner-para-p-open d-none">{!! nl2br(e($strings->banner_text_open)) !!}</p>
|
||||
<p>{!! nl2br(e($strings->banner_text)) !!}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cn-banner-details">
|
||||
<p>
|
||||
{!! nl2br(e($strings->banner_details)) !!}<br>
|
||||
<a href="{{ $confidentiality_page_url }}" title="{{ $strings->banner_details_link_title }}">{{ $strings->banner_details_link }}</a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="cn-banner-btn-details">
|
||||
<button class="cn-banner-btn-details-p" data-open="{{ $strings->banner_less_details }}" data-close="{{ $strings->banner_more_details }}">{!!
|
||||
nl2br(e($strings->banner_more_details))
|
||||
!!}</button>
|
||||
</div>
|
||||
</div>
|
||||
{{-- 2ND PAGE CUSTOMIZE PANEL --}}
|
||||
<div class="cn-modal-container d-none">
|
||||
<p class="cn-modal-title" aria-level="h2">{{ $strings->Panel_title }}</p>
|
||||
<p class="cn-modal-subtitle">{!! nl2br(e($strings->Panel_subtitle)) !!}</p>
|
||||
<p class="cn-modal-description">{!! nl2br(e($strings->Panel_details)) !!}</p>
|
||||
<div class="cn-modal-wrapper">
|
||||
{{-- COOKIES LIST --}}
|
||||
<ul id="cn-modal-list"></ul>
|
||||
</div>
|
||||
{{-- COOKIES LIST --}}
|
||||
<ul id="cn-modal-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
{{-- NAV BAR --}}
|
||||
<div class="cn-nav">
|
||||
<button id="cn-deny-banner" class="cn-banner-btn cn-deny">{{ $strings->button_forbid_all }}</button>
|
||||
<button id="cn-accept-banner" class="cn-banner-btn cn-accept">{{ $strings->button_allow_all }}</button>
|
||||
<button id="cn-settings-banner" class="cn-banner-btn cn-custom" data-open-modal="{{ $strings->button_back }}" data-close-modal="{{ $strings->button_customize }}">{{
|
||||
$strings->button_customize
|
||||
}}</button>
|
||||
<div class="cn-nav" title="{{ $strings->navigation_title }}" role="navigation">
|
||||
<button class="cn-banner-btn cn-deny" id="cn-deny-banner"
|
||||
title="{{ $strings->button_forbid_all_title }}">{{ $strings->button_forbid_all }}</button>
|
||||
<button class="cn-banner-btn cn-accept" id="cn-accept-banner"
|
||||
title="{{ $strings->button_allow_all_title }}">{{ $strings->button_allow_all }}</button>
|
||||
<button class="cn-banner-btn cn-custom" id="cn-settings-banner" data-open-modal="{{ $strings->button_validate_and_close }}"
|
||||
data-close-modal="{{ $strings->button_customize }}">{{ $strings->button_customize }}</button>
|
||||
</div>
|
||||
|
||||
{{-- COOKIE LIST LI TEMPLATE --}}
|
||||
|
|
@ -74,17 +59,14 @@
|
|||
<div class="cn-cookie-infos">
|
||||
<span class="cn-cookie-name">#name</span>
|
||||
<span class="cn-cookie-description">#description</span>
|
||||
<a class="cn-cookie-link">#link</a>
|
||||
<a class="cn-cookie-link" title="{{ $strings->button_title_open_new_tab }}" target="blank">#link</a>
|
||||
</div>
|
||||
<div class="cn-cookie-buttons">
|
||||
<div class="deny">
|
||||
<input type="radio" id="" name="" data-name="" data-status="false">
|
||||
<label for="" role="button" tabindex="0">{{ $strings->button_forbid }}</label>
|
||||
</div>
|
||||
<div class="accept">
|
||||
<input type="radio" id="" name="" data-name="" data-status="true">
|
||||
<label for="" role="button" tabindex="0">{{ $strings->button_allow }}</label>
|
||||
</div>
|
||||
<label class="cn-switch" title="{{ $strings->button_toggle_cookie }}" role="checkbox"
|
||||
aria-label="{{ $strings->button_toggle_cookie }}" aria-checked="undefined" tabindex="0">
|
||||
<input type="checkbox" tabindex="-1" />
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -12,46 +12,42 @@ Route::namespace('\App\Http\Controllers\Fo')->middleware(['throttle:credentials'
|
|||
Route::get('/', [HomeController::class, 'index'])->name('home');
|
||||
|
||||
Route::prefix('/nos-engagements')
|
||||
->group(function () {
|
||||
Route::view('/', 'fo.pages.engagments')->name('engagments');
|
||||
});
|
||||
->group(function () {
|
||||
Route::view('/', 'fo.pages.engagments')->name('engagments');
|
||||
});
|
||||
Route::view('/100-pour-100-local', 'fo.pages.local')->name('local');
|
||||
|
||||
Route::get('/recettes', [RecipesController::class, 'index'])->name('recipes.index');
|
||||
Route::prefix('/recette')
|
||||
->name('recipes.')
|
||||
->group(function () {
|
||||
Route::get('/{publishedRecipe:slug}', [RecipesController::class, 'show'])->name('show');
|
||||
});
|
||||
->name('recipes.')
|
||||
->group(function () {
|
||||
Route::get('/{publishedRecipe:slug}', [RecipesController::class, 'show'])->name('show');
|
||||
});
|
||||
|
||||
Route::prefix('/gammes')
|
||||
->name('ranges.')
|
||||
->group(function () {
|
||||
Route::get('/', [ProductsController::class, 'index'])->name('index');
|
||||
Route::get('/{publishedRange:slug}/produits', [ProductsController::class, 'products'])->name('products');
|
||||
});
|
||||
->name('ranges.')
|
||||
->group(function () {
|
||||
Route::get('/', [ProductsController::class, 'index'])->name('index');
|
||||
Route::get('/{publishedRange:slug}/produits', [ProductsController::class, 'products'])->name('products');
|
||||
});
|
||||
|
||||
Route::prefix('/produit')
|
||||
->name('products.')
|
||||
->group(function () {
|
||||
Route::get('/{publishedProduct:slug}', [ProductsController::class, 'show'])->name('show');
|
||||
});
|
||||
->name('products.')
|
||||
->group(function () {
|
||||
Route::get('/{publishedProduct:slug}', [ProductsController::class, 'show'])->name('show');
|
||||
});
|
||||
|
||||
Route::prefix('/contactez-nous')
|
||||
->name('contact.')
|
||||
->group(function () {
|
||||
Route::get('/', [ContactController::class, 'index'])->name('show');
|
||||
Route::post('/mail', [ContactController::class, 'contactSubmit'])->name('submit');
|
||||
});
|
||||
->name('contact.')
|
||||
->group(function () {
|
||||
Route::get('/', [ContactController::class, 'index'])->name('show');
|
||||
Route::post('/mail', [ContactController::class, 'contactSubmit'])->name('submit');
|
||||
});
|
||||
|
||||
Route::view('/ou-nous-trouver', 'fo.pages.map')->name('map');
|
||||
Route::view('/politique-de-donnees-personnelles', 'fo.pages.policies')->name('policies');
|
||||
Route::view('/mentions-legales', 'fo.pages.legals')->name('legals');
|
||||
|
||||
// * IFRAME COOKIES
|
||||
Route::get('/frame/{frame}', fn (string $frame) => view('fo.pages.frame', ['frame' => $frame]))
|
||||
->where('frame', '[a-z]+')->name('front.frame');
|
||||
|
||||
// * ROUTES TO GET SHOPS FOR MARKET FINDER
|
||||
Route::get('/api/shops', [ShopController::class, 'index'])->name('shops.index');
|
||||
Route::get('/api/shops/search', [ShopController::class, 'getNearest'])->name('shops.nearest');
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue