PageSourceSearch

https://www.ewv-kontrollsysteme.de/wp-content/themes/custom-ewv/cookieconsent/cookie_script.js?ver=1

js ewv-kontrollsysteme.de collected 2026-10-07 12:06:05 UTC 19,240 bytes, 508 lines download raw bytes

1// Die folgenden Variablen sind je nach Kunde anzupassen:
2
3/* Die ersten drei Parameter der folgenden Arrays sind alle gleich
4    [0] Name des Dienstes. 
5    [1] Boolean, ob der Dienst verwendet wird
6    [2] Startwert des Dienstes '✓' | '-' wird in Localstorage gespeichert
7        und ist bis auf techn. notwendige eigentlich immer '-'
8    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
9    Drittanbietercookies
10    [3] Die URL der iframes, die erstmal verhindert werden sollen
11    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12    Trackingcookies
13    [3] die ID für den zu verwendenden Dienst
14    [4] die URL für das Tracking (Matomo)
15*/
16
17//Name,aktiv,default in localstorage,iframe-url
18var drittanbietercookies = [
19    ['facebook', false, '-', 'facebook.com'],
20    ['gmaps',  false, '-', 'google.com/maps'],
21    ['pinterest', false, '-', 'pinterest.com'],
22    ['vimeo', false, '-', 'vimeo.com'],
23    ['youtube', false, '-', 'youtube-nocookie.com']
24];
25
26// Name,aktiv,default in localstorage,piwikid/gtag-manager-id/pixelid,piwikurl
27var trackingcookies = [
28    ['matomo', false, '-','',''],
29    ['googleanalytics', false, '-', ''],
30    ['gtag',false,'-',''],
31    ['metapixel', false, '-', '']
32];
33
34//Name,aktiv,default in localstorage
35var einstellungen = [
36    ['kontrast', true, '-']
37];
38
39
40//Link zum Impressum
41var impressumlink = "/impressum";
42//Link zum Datenschutz
43var datenschutzlink = "/datenschutz";
44//Link zur Barrierefreiheitserklärung
45var barrierefreiheitserklink = "/barrierefreiheitserklaerung";
46
47
48/* *********************************************
49 * **** Ab hier ist nichts mehr anzupassen  ****
50 * *********************************************
51*/
52/* enthält das HTML Template für die coookiebar */
53var cookiebar;
54var cookiebarButton = false;
55var policyModal = false;
56var cookiebarModal = false;
57
58var _paq = _paq || []; // Matomo Config-Array
59
60var templatepath = "";
61var pathArray = new URL(document.currentScript.src).pathname.split('/');
62for (i = 0; i < (pathArray.length - 1); i++) {
63    if (pathArray[i] == '')
64        continue;
65    templatepath += "/";
66    templatepath += pathArray[i];
67}
68/* Das High Contrast CSS file*/
69let contrast = document.createElement("link");
70    contrast.type = "text/css";
71    contrast.rel = "stylesheet";
72    contrast.id ="high_contrast";
73    contrast.href = templatepath + "/kontrast.css";
74
75addHeadCss(templatepath + '/cookie_style.css');
76
77/* bei DOMContentLoaded sind die iframes und deren Inhalte noch nicht geladen */
78document.addEventListener('DOMContentLoaded', function () {
79    // Drittanbieter iFrames werden automatisch erkannt, in Divs mit den
80    // passenden Klassen gehüllt, src-Attribute geleert:
81    // passende Thumbnails werden per Ajax-Request geladen
82    showdialog=ccinit();
83   
84    let getcookiebar = fetchCookieBar(templatepath);
85
86    Promise.resolve(getcookiebar).then(function () {
87        let bodyElement = document.querySelector('body');
88        bodyElement.insertAdjacentHTML("afterbegin", cookiebar);
89        console.log(cookiebar);
90        cookiebarButton = document.getElementById('cookiebarbutton');
91        cookiebarModal = document.getElementById('cookiebar');
92        if(cookiebarModal){
93            cookiebarModal.addEventListener('show.bs.modal', event => {
94                cookiebaranpassen();
95                 if(cookiebarButton)
96                    cookiebarButton.classList.add('d-none');
97            })
98            cookiebarModal.addEventListener('hide.bs.modal', event => {
99                 if(cookiebarButton)
100                    cookiebarButton.classList.remove('d-none');
101            })
102        }    
103        policyModal = document.getElementById('cookiepolicy');
104        if(policyModal){
105            policyModal.addEventListener('show.bs.modal', event => {
106                 if(cookiebarButton)
107                    cookiebarButton.classList.add('d-none');
108                cookiepolicyanpassen();
109            })
110            policyModal.addEventListener('hide.bs.modal', event => {
111                 if(cookiebarButton)
112                    cookiebarButton.classList.remove('d-none');
113            })
114        }
115        if (showdialog) {
116            bootstrap.Modal.getOrCreateInstance(cookiebarModal).show()
117        }
118
119    });
120});
121
122function ccinit() {
123    let showdialog=false;
124    drittanbietercookies.forEach(function (provider) {
125        if (provider[1]) {
126            temp = provider[2];
127            provider[2] = localStorage.getItem(provider[0] + " consent");
128            if( provider[2] == null ){
129                showdialog = true;
130                provider[2] = temp;
131            }
132            if (provider[2] != '✓') {
133                let iframes = document.querySelectorAll("iframe[src*='" + provider[3] + "']");
134                iframes.forEach(function (iframe) {
135                    let div = document.createElement("div");
136                    div.classList.add(provider[0]);
137
138                    iframe.parentNode.insertBefore(div, iframe);
139                    div.appendChild(iframe);
140
141                    iframe.removeAttribute("src");
142
143                    fetch(templatepath + "/cookie_thumbnails.html")
144                        .then(function (response) {
145                            if (!response.ok) {
146                                throw new Error('Network response was not okay');
147                            }
148                            return response.text();
149                        })
150                        .then(function (data) {
151                            let tempDiv = document.createElement('div');
152                            tempDiv.innerHTML = data;
153                            let thumbnail = tempDiv.querySelector("#" + provider[0] + "thumbnail");
154                            if (thumbnail) {
155                                div.appendChild(thumbnail);
156                                let img = thumbnail.querySelector("img");
157                                if (img) {
158                                    img.src = templatepath + "/img/" + provider[0] + ".png";
159                                }
160                            }
161                        })
162                        .catch(function (error) {
163                            console.error('There has been a problem with your fetch function', error.message);
164                        });
165                });
166            }
167        }
168    });
169    trackingcookies.forEach(function (provider) {
170        if (provider[1]) {
171            temp = provider[2];
172            provider[2] = localStorage.getItem(provider[0] + " consent");
173            if( provider[2] == null ){
174                showdialog = true;
175                provider[2] = temp;
176            }
177            if (provider[2] == '✓') {
178                switch (provider[0]) {
179                    case 'matomo':
180                        startMatomo(provider[3], provider[4]);
181                        break;
182                    case 'googleanalytics':
183                        startGoogleAnalytics(provider[3]);
184                        break;
185                    case 'gtag':
186                        startGoogleTagManager(provider[3]);
187                        break;
188                    case 'metapixel':
189                        startMetapixel(provider[3]);
190                        break;
191                }
192            }    
193        }
194    });
195    einstellungen.forEach(function (provider) {
196        if (provider[1]) {
197            temp = provider[2];
198            provider[2] = localStorage.getItem(provider[0]);
199            if( provider[2] == null ){
200                showdialog = true;
201                localStorage.setItem(provider[0], temp);
202                provider[2] = temp;
203            }
204            if(provider[2] == "✓"){
205                toggleKontrast();
206            }
207        }
208    });
209    return showdialog;
210}
211
212function toggleKontrast(){
213    var buttontext;
214    if(document.getElementById('high_contrast') === null ){
215        document.body.insertAdjacentElement('beforeend',contrast);
216        localStorage.setItem('kontrast', "✓");
217        buttontext = "Normaler Kontrast";
218    } else {
219        contrast.remove();                
220        localStorage.setItem('kontrast', "-");
221        buttontext = "Hoher Kontrast";
222    }
223    let button = document.getElementById('b-kontrasttoggle')
224    if(button){
225        button.textContent = buttontext;
226    }
227}
228
229// Lädt das CSS-Stylesheet in den Head
230function addHeadCss(fileName) {
231    var link = document.createElement("link");
232    link.type = "text/css";
233    link.rel = "stylesheet";
234    link.href = fileName;
235    document.head.appendChild(link);
236}
237
238function startGoogleTagManager(googleTagManagerId) {
239    let commentstart = document.createComment("Google Tag Manager");
240    let commentend = document.createComment("End Google Tag Manager");
241    let script = document.createElement('script');
242    script.type = 'text/javascript';
243    script.text = "(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','"+googleTagManagerId+"');";
244    script.prepend(commentstart);
245    script.append(commentend);
246    document.head.appendChild(script);
247    // Jetzt noch den noscript Teil
248    let noscript = document.createElement('noscript');
249    let iframe = document.createElement('iframe');
250    iframe.setAttribute("src", "https://www.googletagmanager.com/ns.html?id="+googleTagManagerId+"\"");
251    iframe.setAttribute("width","0");
252    iframe.setAttribute("height","0");
253    iframe.setAttribute("style", "display:none;visibility:hidden");
254    noscript.append(iframe);
255    noscript.prepend(commentstart.cloneNode());
256    noscript.append(commentend.cloneNode());
257    document.body.insertAdjacentElement('afterbegin', noscript);
258}
259
260function startGoogleAnalytics(googleAnalyticsId) {
261    let commentstart = document.createComment("Google Analytics");
262    let commentend = document.createComment("End Google Analytics");
263    let script = document.createElement('script');
264    script.type = 'text/javascript';
265    script.text = "window.ga=window.ga || function() { (ga.q=ga.q||[]).push(arguments) };ga.l=+new Date; ga('create',\"" + googleAnalyticsId + "\", 'auto'); ga('set', 'anonymizeIp', true); ga('send', 'pageview'); var gascript = document.createElement('script'); gascript.async = true; gascript.src = 'https://www.google-analytics.com/analytics.js'; document.getElementsByTagName('head')[0].appendChild(gascript, document.getElementsByTagName('head')[0]);";
266    script.prepend(commentstart);
267    script.append(commentend);
268    document.head.appendChild(script);
269}
270
271function startMetapixel(metapixelId) {
272    let commentstart = document.createComment("Meta Pixel");
273    let commentend = document.createComment("End Meta Pixel");
274    let script = document.createElement('script');
275    script.type = 'text/javascript';
276    script.text = " !function (f, b, e, v, n, t, s) { if (f.fbq) return; n = f.fbq = function () { n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments) }; if (!f._fbq) f._fbq = n; n.push = n; n.loaded = !0; n.version = '2.0'; n.queue = []; t = b.createElement(e); t.async = !0; t.src = v; s = b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t, s) } (window, document, 'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '" + metapixelId + "'); fbq('track', 'PageView');"
277    script.prepend(commentstart);
278    script.append(commentend);
279    document.head.appendChild(script);
280}
281
282function startMatomo(piwiksiteid, piwikurl) {
283    _paq.push(['rememberConsentGiven']);
284    _paq.push(['trackPageView']);
285    _paq.push(['enableLinkTracking']);
286    (function () {
287        var u = (("https:" == document.location.protocol) ? "https" : "http") + "://" + piwikurl;
288        _paq.push(['setTrackerUrl', u + 'js/']);
289        _paq.push(['setSiteId', piwiksiteid]);
290        var d = document,
291            g = d.createElement('script'),
292            s = d
293                .getElementsByTagName('script')[0];
294        g.type = 'text/javascript';
295        g.async = true;
296        g.defer = true;
297        g.src = u + 'js/';
298        s.parentNode.insertBefore(g, s);
299    })();
300}
301
302function cookiebaranpassen() {
303    document.querySelectorAll(".cb-intros").forEach(function (element) {
304        element.classList.add('d-none');
305    })
306    if (drittanbietercookies.some(provider => (provider[1])) || trackingcookies.some(provider => (provider[1]))) {
307        let element = document.getElementById('cb-intro1');
308        if (element) {
309            element.classList.remove('d-none')
310        }
311    }
312    else {
313        document.getElementById('b-notwendig').classList.add('d-none');
314        document.getElementById('b-akzeptieren').setAttribute('value', 'Ok');
315        document.getElementById('cb-intro2').classList.remove('d-none');
316    }
317    if(!einstellungen.some(provider => (provider[1]))){
318        document.getElementById('div-barrierefreiheit').classList.add('d-none');
319    } else{
320        einstellungen.forEach(function (provider) {
321            if (provider[1]) {
322                switch(provider[0]){
323                    case 'kontrast':
324                        const kontrastState = localStorage.getItem('kontrast');
325                        let button = document.getElementById('b-kontrasttoggle');
326                        if (button) {
327                            if (kontrastState === "✓") {
328                                button.textContent = 'Normaler Kontrast';
329                            } else {
330                                button.textContent = 'Hoher Kontrast';
331                            }
332                        }
333                        break;
334                }
335            }
336        })
337    }
338    document.getElementById('impressum_cookie').href = impressumlink;
339    document.getElementById('datenschutz_cookie').href = datenschutzlink;
340    document.getElementById('barrierefreiheitserk_cookie').href = barrierefreiheitserklink;
341}
342
343function cookiepolicyanpassen() {
344    if (!drittanbietercookies.some(provider => (provider[1]))) {
345        document.getElementById('div-drittanbieter').remove();
346    } else {
347        drittanbietercookies.forEach(function (provider) {
348            if (!provider[1]) {
349                let providers = 'li-' + provider[0];
350                let elementToRemove = document.getElementById(providers);
351                if (elementToRemove) {
352                    elementToRemove.parentNode.removeChild(elementToRemove);
353                }
354            }
355        });
356    }
357    if (!trackingcookies.some(provider => (provider[1]))) {
358        document.getElementById('div-tracking').remove();
359    } else {
360        trackingcookies.forEach(function (provider) {
361            if (!provider[1]) {
362                let tracking = 'div-' + provider[0];
363                let elementToRemove = document.getElementById(tracking);
364                if (elementToRemove) {
365                    elementToRemove.parentNode.removeChild(elementToRemove);
366                }
367            }
368        });
369    }
370    checkboxes();
371}
372
373function checkboxes() {
374    var myproperty = "checked";
375    var result = null;
376    drittanbietercookies.forEach(function (provider) {
377        if (provider[1]) {
378            if (result == null) {
379                result = provider[2];
380            }
381            if (provider[2] != result) {
382                myproperty = "indeterminate";
383            }
384
385            let policyCheckbox = document.getElementById('cb-' + provider[0]);
386            if (policyCheckbox != null) {
387                if (provider[2] == "✓") {
388                    policyCheckbox.checked = true;
389                }
390                else {
391                    policyCheckbox.checked = false;
392                }
393            }
394        }
395    });
396
397    let cbDrittanbieter = document.getElementById('cb-drittanbieter');
398    if (cbDrittanbieter) {
399        let value = (result === '✓' || myproperty === 'indeterminate') ? true : false;
400        cbDrittanbieter.checked = value;
401    }
402
403    myproperty = "checked";
404    result = null;
405    trackingcookies.forEach(function (provider) {
406        if (provider[1]) {
407            if (result == null) {
408                result = provider[2];
409            }
410            if (provider[2] != result) {
411                myproperty = "indeterminate";
412            }
413            let checkbox = document.getElementById('cb-' + provider[0]);
414            if (checkbox != null) {
415                if (provider[2] == "✓") {
416                    checkbox.checked = true;
417                }
418                else {
419                    checkbox.checked = false;
420                }
421            }
422        }
423    });
424}
425
426function alleakzeptierenclick() {
427    val = "✓";
428    drittanbietercookies.forEach(function (provider) {
429        if (provider[1]) {
430            provider[2] = val;
431            localStorage.setItem(provider[0] + " consent", val);
432        }
433    });
434    trackingcookies.forEach(function (provider) {
435        if (provider[1]) {
436            provider[2] = val;
437            localStorage.setItem(provider[0] + " consent", val);
438        }
439    });
440    location.reload();
441}
442
443function alleablehnenclick() {
444    val = "-";
445    drittanbietercookies.forEach(function (provider) {
446        if (provider[1]) {
447            provider[2] = val;
448            localStorage.setItem(provider[0] + " consent", val);
449        }
450    });
451    trackingcookies.forEach(function (provider) {
452        if (provider[1]) {
453            provider[2] = val;
454            localStorage.setItem(provider[0] + " consent", val);
455        }
456    });
457    location.reload();
458}
459
460function checkboxclick(element) {
461    // Die Checkboxen heissen cb_xxx
462    var myelement = drittanbietercookies.filter(provider => (provider[0] == element.id.substr(3) && provider[1]));
463    var mytracking = trackingcookies.filter(provider => (provider[0] == element.id.substr(3) && provider[1]));
464    myelement = myelement.concat(mytracking);
465    myelement.forEach(function (provider) {
466        if (element.checked) {
467            provider[2] = "✓";
468        } else {
469            provider[2] = "-";
470        }
471    });
472}
473
474function anwendenclick() {
475    drittanbietercookies.forEach(function (provider) {
476        if (provider[1]) {
477            localStorage.setItem(provider[0] + " consent", provider[2]);
478        }
479    });
480    trackingcookies.forEach(function (provider) {
481        if (provider[1]) {
482            localStorage.setItem(provider[0] + " consent", provider[2]);
483        }
484    });
485    location.reload();
486}
487
488function thumbnailclick() {
489    if(policyModal){
490        bootstrap.Modal.getOrCreateInstance(policyModal).show()
491    }
492}
493
494function fetchCookieBar(templatepath) {
495    return fetch(templatepath + '/cookie_bar.html')
496        .then(function (response) {
497            if (!response.ok) {
498                throw new Error('Network response was not okay')
499            }
500            return response.text();
501        })
502        .then(function (data) {
503            cookiebar = data;
504        })
505        .catch(function (error) {
506            console.error('There has been a problem with your fetch function', error.message)
507        });
508}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.