diff --git a/src/2ClickIframePrivacy.js b/src/2ClickIframePrivacy.js index d3a0b6a..ade8c35 100644 --- a/src/2ClickIframePrivacy.js +++ b/src/2ClickIframePrivacy.js @@ -9,22 +9,25 @@ var config = { enableCookies: true, - useSessionCookie: true + useSessionCookie: true, + cookieNamespace: '_2ClickIPEnable-', + showContentLabel: 'Inhalt anzeigen', + rememberChoiceLabel: 'Auswahl merken', + privacyPolicyLabel: 'Datenschutzerklärung', + privacyPolicyUrl: false }; + this.types = new Array( { - type: 'video', - class: 'privacy-video', + type: 'video', description: 'Zum Aktivieren des Videos bitte auf den Link klicken. Durch das Aktivieren von eingebetteten Videos werden Daten an den jeweiligen Anbieter übermittelt. Weitere Informationen können unserer Datenschutzerklärung entnommen werden.
' }, { - type: 'map', - class: 'privacy-map', + type: 'map', description: 'Zum Aktivieren der eingebetteten Karte bitte auf den Link klicken. Durch das Aktivieren werden Daten an den jeweiligen Anbieter übermittelt. Weitere Informationen können unserer Datenschutzerklärung entnommen werden.
' }, { - type: 'calendar', - class: 'privacy-calendar', + type: 'calendar', description: 'Zum Aktivieren des eingebetteten Kalenders bitte auf den Link klicken. Durch das Aktivieren werden Daten an den jeweiligen Anbieter übermittelt. Weitere Informationen können unserer Datenschutzerklärung entnommen werden.
' } ); @@ -44,26 +47,29 @@ return v ? v[2] : null; } - function wrap(el, wrapper, type, selclass, text) { + function wrap(el, wrapper, type, text) { el.parentNode.insertBefore(wrapper, el); - wrapper.className = 'privacy-msg '+selclass+'-msg'; + wrapper.className = 'privacy-msg '+type+'-msg'; wrapper.style.width = el.clientWidth+'px'; wrapper.style.height = el.clientHeight+'px'; - wrapper.innerHTML = text +'Inhalt anzeigen'; + wrapper.innerHTML = text +''+config.showContentLabel+''; if(config.enableCookies){ - wrapper.innerHTML = wrapper.innerHTML + '
'; + wrapper.innerHTML = wrapper.innerHTML + '
'; + } + if(config.privacyPolicyUrl){ + wrapper.innerHTML = wrapper.innerHTML + '
'+config.privacyPolicyLabel+''; } wrapper.innerHTML = '

' + wrapper.innerHTML + '

'; wrapper.appendChild(el); } - this.EnableContent = function (type, selclass){ + this.EnableContent = function (type){ var i; // Cookies globally enabled by config? if(config.enableCookies){ var remind = false; - var x = document.querySelectorAll('div.'+selclass+'-msg p input'); + var x = document.querySelectorAll('div.'+type+'-msg p input'); // Check if any checkbox for the selected class was checked. If so a cookie will be set for (i = 0; i < x.length; i++) { if(x[i].checked == true){ @@ -73,20 +79,20 @@ if(remind){ if(config.useSessionCookie){ - setSessionCookie('_2ClickIPEnable-'+type, '1'); + setSessionCookie(config.cookieNamespace+type, '1'); } else{ - setCookie('_2ClickIPEnable-'+type, '1', 30); + setCookie(config.cookieNamespace+type, '1', 30); } } } - var x = document.querySelectorAll('div.'+selclass+'-msg p'); + var x = document.querySelectorAll('div.'+type+'-msg p'); for (i = 0; i < x.length; i++) { x[i].parentNode.removeChild(x[i]); } - x = document.querySelectorAll('div.'+selclass+'-msg'); + x = document.querySelectorAll('div.'+type+'-msg'); for (i = 0; i < x.length; i++) { var parent = x[i].parentNode; @@ -97,7 +103,7 @@ parent.removeChild(x[i]); } - x = document.getElementsByClassName(selclass); + x = document.querySelectorAll('iframe[data-2click-type="'+type+'"]'); for (i = 0; i < x.length; i++) { x[i].src = x[i].getAttribute("data-src"); } @@ -111,17 +117,33 @@ if (typeof Userconfig.useSessionCookie !== 'undefined') { config.useSessionCookie = Userconfig.useSessionCookie; } + if (typeof Userconfig.cookieNamespace !== 'undefined') { + config.cookieNamespace = Userconfig.cookieNamespace; + } + if (typeof Userconfig.privacyPolicyUrl !== 'undefined') { + config.privacyPolicyUrl = Userconfig.privacyPolicyUrl; + } + if (typeof Userconfig.showContentLabel !== 'undefined') { + config.showContentLabel = Userconfig.showContentLabel; + } + if (typeof Userconfig.rememberChoiceLabel !== 'undefined') { + config.rememberChoiceLabel = Userconfig.rememberChoiceLabel; + } + if (typeof Userconfig.privacyPolicyLabel !== 'undefined') { + config.privacyPolicyLabel = Userconfig.privacyPolicyLabel; + } if (Array.isArray(Userconfig.CustomTypes)) { this.types = Userconfig.CustomTypes; } for (i = 0; i < this.types.length; i++) { - var selector = document.getElementsByClassName(this.types[i].class); + var selector = document.querySelectorAll('iframe[data-2click-type="'+this.types[i].type+'"]'); + var x; - if(!getCookie('_2ClickIPEnable-'+this.types[i].type)){ + if(!getCookie(config.cookieNamespace+this.types[i].type)){ for (x = 0; x < selector.length; x++) { - wrap(selector[x], document.createElement('div'), this.types[i].type, this.types[i].class, this.types[i].description); + wrap(selector[x], document.createElement('div'), this.types[i].type, this.types[i].description); } }else{ for (x = 0; x < selector.length; x++) {