Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 43 additions & 21 deletions src/2ClickIframePrivacy.js
Original file line number Diff line number Diff line change
Expand Up @@ -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.<br />'
},
{
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.<br />'
},
{
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.<br />'
}
);
Expand All @@ -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 +'<a href="#foo" onclick="_2ClickIframePrivacy.EnableContent(\''+ type +'\', \''+ selclass +'\'); return false;">Inhalt anzeigen</a>';
wrapper.innerHTML = text +'<a href="#foo" onclick="_2ClickIframePrivacy.EnableContent(\''+ type +'\'); return false;">'+config.showContentLabel+'</a>';
if(config.enableCookies){
wrapper.innerHTML = wrapper.innerHTML + '<br /><input type="checkbox" name="remind-\''+ selclass +'\'" /> <label>Auswahl merken</label>';
wrapper.innerHTML = wrapper.innerHTML + '<br /><input type="checkbox" name="remind-\''+ type +'\'" /> <label>'+config.rememberChoiceLabel+'</label>';
}
if(config.privacyPolicyUrl){
wrapper.innerHTML = wrapper.innerHTML + '<br /><a href="'+config.privacyPolicyUrl+'">'+config.privacyPolicyLabel+'</a>';
}
wrapper.innerHTML = '<p>' + wrapper.innerHTML + '</p>';
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){
Expand All @@ -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;

Expand All @@ -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");
}
Expand All @@ -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++) {
Expand Down