302 lines
11 KiB
PHP
302 lines
11 KiB
PHP
{{-- blade-formatter-disable --}}
|
||
@php
|
||
|
||
$site_name = Str::ucfirst(config('app.name'));
|
||
$logo_picture_url = asset('picture string path');
|
||
$logo_title_text = __('Logo du site :name', ['name' => $site_name]);
|
||
$logo_alt_text = __('Logo :name', ['name' => $site_name]);
|
||
|
||
$strings = (object)[
|
||
'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_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 ($cookieName, $text, $subtext = '') {
|
||
return <<<SCRIPT
|
||
(() => {
|
||
const cookieActivate = document.createElement("span");
|
||
cookieActivate.classList.add("cn-cookie-activate");
|
||
cookieActivate.dataset.cookieName = '{$cookieName}';
|
||
|
||
const childSpan = document.createElement("span");
|
||
const childSpanSpan = document.createElement("span");
|
||
const childSpanSmall = document.createElement("span");
|
||
childSpanSpan.textContent = '{$text}';
|
||
childSpanSmall.textContent = '{$subtext}';
|
||
childSpan.appendChild(childSpanSpan);
|
||
childSpan.appendChild(childSpanSmall);
|
||
|
||
const childBtn = document.createElement("button");
|
||
childBtn.classList.add('btn','btn-secondary');
|
||
childBtn.textContent = 'Autoriser';
|
||
|
||
cookieActivate.appendChild(childSpan);
|
||
cookieActivate.appendChild(childBtn);
|
||
return cookieActivate;
|
||
})
|
||
SCRIPT;
|
||
};
|
||
|
||
$cookies = [];
|
||
|
||
// YOUTUBE
|
||
$cookies['youtube'] = [
|
||
'name' => 'VIDEOS - Youtube',
|
||
'description' => __('Les cookies déposés via les services de partage de vidéo ont pour finalité de permettre à l’utilisateur de visionner directement sur le site le contenu multimédia.'),
|
||
'link' => 'https://policies.google.com/technologies/cookies?hl=fr&utm_source=ucb',
|
||
'labelLink' => __('En savoir +'),
|
||
'cookies' => ['NID', 'VISITOR_INFO1_LIVE', 'YSC']
|
||
];
|
||
|
||
$cookies['youtube']['script'] = <<<SCRIPT
|
||
function () {
|
||
let youtubeVids = document.getElementsByClassName('cn-youtube');
|
||
for (let item of youtubeVids) {
|
||
let id = item.dataset.id;
|
||
let e = document.createElement('iframe');
|
||
e.src = "https://www.youtube.com/embed/" + id;
|
||
e.width = "640";
|
||
e.height = "360";
|
||
e.frameBorder = "0";
|
||
e.allow = "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture";
|
||
e.allowFullscreen = true;
|
||
item.innerHTML = "";
|
||
item.appendChild(e);
|
||
}
|
||
}
|
||
SCRIPT;
|
||
$cookies['youtube']['fallback'] = <<<FALLBACK
|
||
function () {
|
||
let youtubeVids = document.getElementsByClassName('cn-youtube');
|
||
for (let item of youtubeVids) {
|
||
let a = document.createElement('a');
|
||
a.innerText = 'Autoriser';
|
||
a.classList.add('cn-cookie-link');
|
||
a.setAttribute('role', 'button');
|
||
a.onclick = function () {
|
||
WebCookieNotice.openCookieModalToCookiePage();
|
||
};
|
||
let e = document.createElement('p');
|
||
e.innerHTML = 'Youtube est désactivé. ';
|
||
item.innerHTML = "";
|
||
e.appendChild(a);
|
||
item.appendChild(e);
|
||
}
|
||
}
|
||
FALLBACK;
|
||
|
||
// VIMEO
|
||
$cookies['vimeo'] = [
|
||
'name' => 'VIDEOS - Vimeo',
|
||
'description' => __('Les cookies déposés via les services de partage de vidéo ont pour finalité de permettre à l’utilisateur de visionner directement sur le site le contenu multimédia.'),
|
||
'link' => 'https://vimeo.com/cookie_policy',
|
||
'labelLink' => __('En savoir +'),
|
||
'cookies' => ['NID', 'VISITOR_INFO1_LIVE', 'YSC']
|
||
];
|
||
|
||
$cookies['vimeo']['script'] = <<<SCRIPT
|
||
function () {
|
||
let vimeoVids = document.getElementsByClassName('cn-vimeo');
|
||
for (let item of vimeoVids) {
|
||
let id = item.dataset.id;
|
||
let e = document.createElement('iframe');
|
||
e.src = "https://player.vimeo.com/video/" + id;
|
||
e.width = "640";
|
||
e.height = "360";
|
||
e.frameBorder = "0";
|
||
e.allow = "autoplay; fullscreen; picture-in-picture";
|
||
e.allowFullscreen = true;
|
||
item.innerHTML = "";
|
||
item.appendChild(e);
|
||
}
|
||
}
|
||
SCRIPT;
|
||
$cookies['vimeo']['fallback'] = <<<FALLBACK
|
||
function () {
|
||
let vimeoVids = document.getElementsByClassName('cn-vimeo');
|
||
for (let item of vimeoVids) {
|
||
let a = document.createElement('a');
|
||
a.innerText = 'Autoriser';
|
||
a.classList.add('cn-cookie-link');
|
||
a.setAttribute('role', 'button');
|
||
a.onclick = function () {
|
||
WebCookieNotice.openCookieModalToCookiePage();
|
||
};
|
||
let e = document.createElement('p');
|
||
e.innerHTML = 'Vimeo est désactivé. ';
|
||
item.innerHTML = "";
|
||
e.appendChild(a);
|
||
item.appendChild(e);
|
||
}
|
||
}
|
||
FALLBACK;
|
||
|
||
// RECAPTCHA
|
||
$cookies['recaptcha'] = [
|
||
'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['recaptcha']['script'] = <<<SCRIPT
|
||
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');
|
||
document.getElementById('contact-form').inert = false;
|
||
}
|
||
});
|
||
|
||
}
|
||
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');
|
||
document.getElementById('contact-form').inert = true;
|
||
}
|
||
});
|
||
}
|
||
FALLBACK;
|
||
|
||
// ANALYCTICS
|
||
$analyticKey = config('services.google.analytics.id');
|
||
$cookies['analytics'] = [
|
||
'name' => __('cookie-notice.custom.analytics.title'),
|
||
'description' => __('cookie-notice.custom.analytics.description'),
|
||
'link' => 'https://policies.google.com/privacy',
|
||
'labelLink' => __('En savoir +'),
|
||
'cookies' => [
|
||
'_ga',
|
||
'_gat_gtag_' . str_replace("-", "_", $analyticKey),
|
||
'_gid'
|
||
]
|
||
];
|
||
|
||
$cookies['analytics']['script'] = <<<SCRIPT
|
||
function () {
|
||
(function (d, t) {
|
||
var g = d.createElement(t),
|
||
s = d.getElementsByTagName(t)[0];
|
||
g.src = 'https://www.googletagmanager.com/gtag/js?id={$analyticKey}';
|
||
g.id = 'analytics';
|
||
s.parentNode.insertBefore(g, s)
|
||
}(document, 'script'));
|
||
|
||
window.dataLayer = window.dataLayer || [];
|
||
|
||
function gtag() {
|
||
dataLayer.push(arguments);
|
||
}
|
||
gtag('js', new Date());
|
||
|
||
gtag('config', '{$analyticKey}');
|
||
}
|
||
SCRIPT;
|
||
|
||
// MATOMO
|
||
$cookies['matomo'] = [
|
||
'name' => __('cookie-notice.custom.matomo.title'),
|
||
'description' => __('cookie-notice.custom.matomo.description'),
|
||
'link' => 'https://fr.matomo.org/gdpr-analytics/',
|
||
'labelLink' => __('En savoir +'),
|
||
'cookies' => ['_pk']
|
||
];
|
||
|
||
$cookies['matomo']['script'] = <<<SCRIPT
|
||
function () {
|
||
var _paq = window._paq = window._paq || [];
|
||
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
|
||
_paq.push(['trackPageView']);
|
||
_paq.push(['enableLinkTracking']);
|
||
(function() {
|
||
var u="//yl.s-web.fr/";
|
||
_paq.push(['setTrackerUrl', u+'rainbow']);
|
||
_paq.push(['setSiteId', '
|
||
SCRIPT;
|
||
$cookies['matomo']['script'] .= config("services.matomo.site_id");
|
||
$cookies['matomo']['script'] .= <<<SCRIPT
|
||
']);
|
||
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
|
||
g.async=true; g.src=u+'unicorn'; s.parentNode.insertBefore(g,s);
|
||
})();
|
||
}
|
||
SCRIPT;
|
||
|
||
@endphp
|
||
|
||
{{-- INCLUDE TEMPLATE --}}
|
||
@include('vendor.cookie-notice-templates.standard', compact(
|
||
'site_name', 'logo_picture_url', 'logo_alt_text',
|
||
'logo_title_text', 'strings'
|
||
))
|
||
|
||
@push('scripts')
|
||
<script nonce="{{ $nonce ?? '' }}">
|
||
document.addEventListener('DOMContentLoaded', function () {
|
||
window.WebCookieNotice = {};
|
||
@foreach($cookies as $index_name => $cookie)
|
||
window.WebCookieNotice['{{ $index_name }}'] = {};
|
||
window.WebCookieNotice['{{ $index_name }}'].tmp = {};
|
||
// SCRIPT
|
||
window.WebCookieNotice['{{ $index_name }}'].tmp.script = {!! strip_tags($cookie['script']) !!};
|
||
@php unset($cookie['script']); @endphp
|
||
// FALLBACK
|
||
@if(isset($cookie['fallback']))
|
||
window.WebCookieNotice['{{ $index_name }}'].tmp.fallback = {!! strip_tags($cookie['fallback']) !!};
|
||
@php unset($cookie['fallback']); @endphp
|
||
@endif
|
||
window.WebCookieNotice['{{ $index_name }}'].conf = @json($cookie);
|
||
window.WebCookieNotice['{{ $index_name }}'].conf.script = window.WebCookieNotice['{{ $index_name }}'].tmp.script;
|
||
window.WebCookieNotice['{{ $index_name }}'].conf.fallback = window.WebCookieNotice['{{ $index_name }}'].tmp.fallback;
|
||
window.WebCookieNotice['{{ $index_name }}'] = window.WebCookieNotice['{{ $index_name }}'].conf;
|
||
@endforeach
|
||
window.WebCookieNotice = new window.CookieNotice(window.WebCookieNotice);
|
||
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();
|
||
});
|
||
</script>
|
||
@endpush
|