This commit is contained in:
2026-03-20 17:13:38 +01:00
parent 4c84735b75
commit c043ee9a52
1152 changed files with 317560 additions and 0 deletions
+238
View File
@@ -0,0 +1,238 @@
// By default, Klaro will load the config from a global "klaroConfig" variable.
// You can change this by specifying the "data-config" attribute on your
// script take, e.g. like this:
// <script src="klaro.js" data-config="myConfigVariableName" />
var klaroConfig = {
// With the 0.7.0 release we introduce a 'version' paramter that will make
// if easier for us to keep configuration files backwards-compatible in the future.
version: 1,
// You can customize the ID of the DIV element that Klaro will create
// when starting up. If undefined, Klaro will use 'klaro'.
elementID: 'klaro',
// You can override CSS style variables here. For IE11, Klaro will
// dynamically inject the variables into the CSS. If you still consider
// supporting IE9-10 (which you probably shouldn't) you need to use Klaro
// with an external stylesheet as the dynamic replacement won't work there.
styling: {
theme: ['light', 'top', 'wide'],
},
// Setting this to true will keep Klaro from automatically loading itself
// when the page is being loaded.
noAutoLoad: false,
// Setting this to true will render the descriptions of the consent
// modal and consent notice are HTML. Use with care.
htmlTexts: true,
// Setting 'embedded' to true will render the Klaro modal and notice without
// the modal background, allowing you to e.g. embed them into a specific element
// of your website, such as your privacy notice.
embedded: false,
// You can group services by their purpose in the modal. This is advisable
// if you have a large number of services. Users can then enable or disable
// entire groups of services instead of having to enable or disable every service.
groupByPurpose: true,
// How Klaro should store the user's preferences. It can be either 'cookie'
// (the default) or 'localStorage'.
storageMethod: 'cookie',
// You can customize the name of the cookie that Klaro uses for storing
// user consent decisions. If undefined, Klaro will use 'klaro'.
cookieName: 'klaro',
// You can also set a custom expiration time for the Klaro cookie.
// By default, it will expire after 120 days.
cookieExpiresAfterDays: 365,
// You can change to cookie domain for the consent manager itself.
// Use this if you want to get consent once for multiple matching domains.
// If undefined, Klaro will use the current domain.
//cookieDomain: '.github.com',
// You can change to cookie path for the consent manager itself.
// Use this to restrict the cookie visibility to a specific path.
// If undefined, Klaro will use '/' as cookie path.
//cookiePath: '/',
// Defines the default state for services (true=enabled by default).
default: false,
// If "mustConsent" is set to true, Klaro will directly display the consent
// manager modal and not allow the user to close it before having actively
// consented or declines the use of third-party services.
mustConsent: true,
// Show "accept all" to accept all services instead of "ok" that only accepts
// required and "default: true" services
acceptAll: true,
// replace "decline" with cookie manager modal
hideDeclineAll: true,
// hide "learnMore" link
hideLearnMore: false,
// show cookie notice as modal
noticeAsModal: false,
// You can also remove the 'Realized with Klaro!' text in the consent modal.
// Please don't do this! We provide Klaro as a free open source tool.
// Placing a link to our website helps us spread the word about it,
// which ultimately enables us to make Klaro! better for everyone.
// So please be fair and keep the link enabled. Thanks :)
//disablePoweredBy: true,
// you can specify an additional class (or classes) that will be added to the Klaro `div`
//additionalClass: 'my-klaro',
// You can define the UI language directly here. If undefined, Klaro will
// use the value given in the global "lang" variable. If that does
// not exist, it will use the value given in the "lang" attribute of your
// HTML tag. If that also doesn't exist, it will use 'en'.
lang: 'de',
// You can overwrite existing translations and add translations for your
// service descriptions and purposes. See `src/translations/` for a full
// list of translations that can be overwritten:
// https://github.com/KIProtect/klaro/tree/master/src/translations
// Example config that shows how to overwrite translations:
// https://github.com/KIProtect/klaro/blob/master/src/configs/i18n.js
translations: {
// translationsed defined under the 'zz' language code act as default
// translations.
zz: {
privacyPolicyUrl: '/datenschutz',
},
// If you erase the "consentModal" translations, Klaro will use the
// bundled translations.
de: {
privacyPolicyUrl: '/datenschutz',
consentModal: {
title: '<u>Cookie Consent Tool</u>',
description:
'Wir verwenden Cookies um Inhalte und Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Ich bin damit einverstanden und kann meine Einwilligung jederzeit mit Wirkung für die Zukunft widerrufen oder ändern.',
},
googleFonts: {
description: 'Web-Schriftarten von Google gehostet',
},
purposes: {
analytics: 'Besucher-Statistiken',
security: 'Sicherheit',
livechat: 'Live Chat',
advertising: 'Anzeigen von Werbung',
styling: 'Styling',
},
},
en: {
consentModal: {
title: '<u>Cookie Consent Tool</u>',
description:
'We use cookies to provide content and social media features and to analyze traffic to our website. I agree to this and can revoke or change my consent at any time with effect for the future.',
},
googleFonts: {
description: 'Web fonts hosted by Google',
},
purposes: {
analytics: 'Analytics',
security: 'Security',
livechat: 'Livechat',
advertising: 'Advertising',
styling: 'Styling',
},
},
},
// This is a list of third-party services that Klaro will manage for you.
services: [
{
name: 'twitter',
default: true,
contextualConsentOnly: true,
purposes: ['marketing'],
},
{
name: 'youtube',
default: true,
purposes: ['marketing'],
},
{
name: 'doctolib',
default: true,
purposes: ['styling'],
cookies: [
[/^__cf_bm.*$/, '/', '.doctolib.de'],
[/^_doctolib_session.*$/, '/', 'partners.doctolib.de'],
[/^cookies.js.*$/, '/', 'partners.doctolib.de'],
[/^esid.*$/, '/', 'partners.doctolib.de'],
[/^temporary_appointment_id.*$/, '/', 'partners.doctolib.de'],
[/^_doctolib_session.*$/, '/', 'www.doctolib.de'],
[/^ssid.*$/, '/', 'www.doctolib.de'],
['temporary_appointment_id', '/', 'www.doctolib.de'],
[/^_pk_.*$/, '/', 'klaro.kiprotect.com'], //for the production version
[/^_pk_.*$/, '/', 'localhost'], //for the local version
'piwik_ignore',
],
required: true,
},
{
name: 'google-tag-manager',
default: true,
purposes: ['analytics'],
onAccept: `
// we notify the tag manager about all services that were accepted. You can define
// a custom event in GTM to load the service if consent was given.
for(let k of Object.keys(opts.consents)){
if (opts.consents[k]){
let eventName = 'klaro-'+k+'-accepted'
dataLayer.push({'event': eventName})
}
}
// if consent for Google Analytics was granted we enable analytics storage
if (opts.consents[opts.vars.googleAnalyticsName || 'google-analytics']){
console.log("Google analytics usage was granted")
gtag('consent', 'update', {'analytics_storage': 'granted'})
}
// if consent for Google Ads was granted we enable ad storage
if (opts.consents[opts.vars.adStorageName || 'google-ads']){
console.log("Google ads usage was granted")
gtag('consent', 'update', {'ad_storage': 'granted'})
}
`,
onInit: `
// initialization code here (will be executed only once per page-load)
window.dataLayer = window.dataLayer || [];
window.gtag = function(){dataLayer.push(arguments)}
gtag('consent', 'default', {'ad_storage': 'denied', 'analytics_storage': 'denied'})
gtag('set', 'ads_data_redaction', true)
`,
onDecline: `
// initialization code here (will be executed only once per page-load)
window.dataLayer = window.dataLayer || [];
window.gtag = function(){dataLayer.push(arguments)}
gtag('consent', 'default', {'ad_storage': 'denied', 'analytics_storage': 'denied'})
gtag('set', 'ads_data_redaction', true)
`,
vars: {
googleAnalytics: 'google-analytics'
}
},
{
// In GTM, you should define a custom event trigger named `klaro-google-analytics-accepted` which should trigger the Google Analytics integration.
default: true,
name: 'google-analytics',
purposes: ['analytics'],
cookies: [
/^_ga(_.*)?/ // we delete the Google Analytics cookies if the user declines its use
],
}
],
};