Skip to content

Instantly share code, notes, and snippets.

@davidhellmann
Created November 9, 2019 15:51
Show Gist options
  • Save davidhellmann/4c785a0ed8347aed24bc60e5d95fd636 to your computer and use it in GitHub Desktop.
Save davidhellmann/4c785a0ed8347aed24bc60e5d95fd636 to your computer and use it in GitHub Desktop.
<script>
function getCookie(name) {
var value = "; " + document.cookie;
var parts = value.split("; " + name + "=");
if (parts.length === 2) return parts.pop().split(";").shift();
}
// Get klaro cookie
var klaroCurrent;
var klaroCookie;
var klaroCallback = function (consent, app) {
console.log("User consent for app " + app.name + ": consent=" + consent);
cookieChanged()
};
var getKlaroCookie = function () {
klaroCookie = getCookie('klaro');
}
var setCurrentCookie = function () {
klaroCurrent = JSON.parse(klaroCookie);
}
getKlaroCookie()
if (klaroCookie) {
setCurrentCookie()
}
var klaroConfig = {
elementID: 'klaro',
cookieName: 'klaro',
cookieExpiresAfterDays: 365,
privacyPolicy: '/#privacy',
lang: 'en',
default: true,
mustConsent: false,
translations: {
en: {
consentModal: {
title: '{{ 'translate.klaro.consentModal.title' | t }}',
description: '{{ 'translate.klaro.consentModal.description' | t }}',
privacyPolicy: {
name: '{{ 'translate.klaro.privacyPolicy.name' | t }}',
text: '{{ 'translate.klaro.privacyPolicy.text' | t }}'
}
},
consentNotice: {
changeDescription: '{{ 'translate.klaro.consentNotice.changeDescription' | t }}',
description: '{{ 'translate.klaro.consentNotice.description' | t }}',
learnMore: '{{ 'translate.klaro.consentNotice.learnMore' | t }}'
},
privacyPolicy: {
text: '{{ 'translate.klaro.privacyPolicy.text' | t }}',
name: '{{ 'translate.klaro.privacyPolicy.name' | t }}',
},
ok: '{{ 'translate.klaro.ok' | t }}',
save: '{{ 'translate.klaro.save' | t }}',
decline: '{{ 'translate.klaro.decline' | t }}',
close: '{{ 'translate.klaro.close' | t }}',
app: {
disableAll: {
title: '{{ 'translate.klaro.app.disableAll.title' | t }}',
description: '{{ 'translate.klaro.app.disableAll.description' | t }}'
},
optOut: {
title: '{{ 'translate.klaro.app.optOut.title' | t }}',
description: '{{ 'translate.klaro.app.optOut.description' | t }}'
},
required: {
title: '{{ 'translate.klaro.app.required.title' | t }}',
description: '{{ 'translate.klaro.app.required.description' | t }}'
},
purposes: '{{ 'translate.klaro.app.purposes' | t }}',
purpose: '{{ 'translate.klaro.app.purpose' | t }}'
},
poweredBy: '{{ 'translate.klaro.poweredBy' | t }}',
purposes: {
statistics: '{{ 'translate.klaro.purposes.statistics' | t }}',
externalmedia: '{{ 'translate.klaro.purposes.externalmedia' | t }}',
},
googleAnalytics: {
description: '{{ 'translate.klaro.apps.googleAnalytics.description' | t }}',
},
youtube: {
description: '{{ 'translate.klaro.apps.youtube.description' | t }}',
},
},
},
apps: [
{
name: 'googleAnalytics',
title: 'Google Analytics',
purposes: ['statistics'],
callback: klaroCallback,
},
{
name: 'youtube',
title: 'Youtube',
purposes: ['externalmedia'],
callback: klaroCallback,
},
],
};
// Check if cookie settings changed
// Reload page if changed
function cookieChanged() {
if (klaroCurrent) {
var klaroNew = JSON.parse(getCookie('klaro'));
if (JSON.stringify(klaroCurrent) !== JSON.stringify(klaroNew)) {
location.reload();
}
}
}
{{ craft.twigpack.includeFile("@webroot/dist/js/klaro.js") }}
window.addEventListener('load', function () {
var buttons = document.querySelector('.cn-ok');
if (buttons) {
buttons.addEventListener('click', function () {
location.reload();
})
}
})
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment