New module EU Cookie Compliance
This commit is contained in:
parent
37c335e3cc
commit
262f0b730b
12 changed files with 1112 additions and 0 deletions
165
modules/eu-cookie-compliance/js/eu_cookie_compliance.js
Normal file
165
modules/eu-cookie-compliance/js/eu_cookie_compliance.js
Normal file
|
@ -0,0 +1,165 @@
|
|||
Drupal.behaviors.eu_cookie_compliance_popup = function(context) {
|
||||
$('body').not('.sliding-popup-processed').addClass('sliding-popup-processed').each(function() {
|
||||
try {
|
||||
var enabled = Drupal.settings.eu_cookie_compliance.popup_enabled;
|
||||
if(!enabled) {
|
||||
return;
|
||||
}
|
||||
if (!Drupal.eu_cookie_compliance.cookiesEnabled()) {
|
||||
return;
|
||||
}
|
||||
var status = Drupal.eu_cookie_compliance.getCurrentStatus();
|
||||
var clicking_confirms = Drupal.settings.eu_cookie_compliance.popup_clicking_confirmation;
|
||||
var agreed_enabled = Drupal.settings.eu_cookie_compliance.popup_agreed_enabled;
|
||||
var popup_hide_agreed = Drupal.settings.eu_cookie_compliance.popup_hide_agreed;
|
||||
if (status == 0) {
|
||||
var next_status = 1;
|
||||
if (clicking_confirms) {
|
||||
$('a, input[type=submit]').bind('click.eu_cookie_compliance', function(){
|
||||
if(!agreed_enabled) {
|
||||
Drupal.eu_cookie_compliance.setStatus(1);
|
||||
next_status = 2;
|
||||
}
|
||||
Drupal.eu_cookie_compliance.changeStatus(next_status);
|
||||
});
|
||||
}
|
||||
|
||||
$('.agree-button').click(function(){
|
||||
if(!agreed_enabled) {
|
||||
Drupal.eu_cookie_compliance.setStatus(1);
|
||||
next_status = 2;
|
||||
}
|
||||
Drupal.eu_cookie_compliance.changeStatus(next_status);
|
||||
});
|
||||
|
||||
Drupal.eu_cookie_compliance.createPopup(Drupal.settings.eu_cookie_compliance.popup_html_info);
|
||||
} else if(status == 1) {
|
||||
Drupal.eu_cookie_compliance.createPopup(Drupal.settings.eu_cookie_compliance.popup_html_agreed);
|
||||
if (popup_hide_agreed) {
|
||||
$('a, input[type=submit]').bind('click.eu_cookie_compliance_hideagreed', function(){
|
||||
Drupal.eu_cookie_compliance.changeStatus(2);
|
||||
});
|
||||
}
|
||||
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
catch(e) {
|
||||
return;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Drupal.eu_cookie_compliance = {};
|
||||
|
||||
Drupal.eu_cookie_compliance.createPopup = function(html) {
|
||||
var popup = $(html)
|
||||
.attr({"id": "sliding-popup"})
|
||||
.height(Drupal.settings.eu_cookie_compliance.popup_height)
|
||||
.width(Drupal.settings.eu_cookie_compliance.popup_width)
|
||||
.hide();
|
||||
if(Drupal.settings.eu_cookie_compliance.popup_position) {
|
||||
popup.prependTo("body");
|
||||
var height = popup.height();
|
||||
popup.show()
|
||||
.attr({"class": "sliding-popup-top"})
|
||||
.css({"top": -1 * height})
|
||||
.animate({top: 0}, Drupal.settings.eu_cookie_compliance.popup_delay);
|
||||
} else {
|
||||
popup.appendTo("body");
|
||||
height = popup.height();
|
||||
popup.show()
|
||||
.attr({"class": "sliding-popup-bottom"})
|
||||
.css({"bottom": -1 * height})
|
||||
.animate({bottom: 0}, Drupal.settings.eu_cookie_compliance.popup_delay);
|
||||
}
|
||||
Drupal.eu_cookie_compliance.attachEvents();
|
||||
}
|
||||
|
||||
Drupal.eu_cookie_compliance.attachEvents = function() {
|
||||
var clicking_confirms = Drupal.settings.eu_cookie_compliance.popup_clicking_confirmation;
|
||||
var agreed_enabled = Drupal.settings.eu_cookie_compliance.popup_agreed_enabled;
|
||||
$('.find-more-button').click(function(){
|
||||
window.open(Drupal.settings.eu_cookie_compliance.popup_link);
|
||||
});
|
||||
$('.agree-button').click(function(){
|
||||
var next_status = 1;
|
||||
if(!agreed_enabled) {
|
||||
Drupal.eu_cookie_compliance.setStatus(1);
|
||||
next_status = 2;
|
||||
}
|
||||
if (clicking_confirms) {
|
||||
$('a, input[type=submit]').unbind('click.eu_cookie_compliance');
|
||||
}
|
||||
Drupal.eu_cookie_compliance.changeStatus(next_status);
|
||||
});
|
||||
$('.hide-popup-button').click(function(){
|
||||
Drupal.eu_cookie_compliance.changeStatus(2);
|
||||
});
|
||||
}
|
||||
|
||||
Drupal.eu_cookie_compliance.getCurrentStatus = function() {
|
||||
var search = 'cookie-agreed-'+Drupal.settings.eu_cookie_compliance.popup_language+'=';
|
||||
var offset = document.cookie.indexOf(search);
|
||||
if (offset < 0) {
|
||||
return 0;
|
||||
}
|
||||
offset += search.length;
|
||||
var end = document.cookie.indexOf(';', offset);
|
||||
if (end == -1) {
|
||||
end = document.cookie.length;
|
||||
}
|
||||
var value = document.cookie.substring(offset, end);
|
||||
return parseInt(value);
|
||||
}
|
||||
|
||||
Drupal.eu_cookie_compliance.changeStatus = function(value) {
|
||||
var status = Drupal.eu_cookie_compliance.getCurrentStatus();
|
||||
if (status == value) return;
|
||||
if(Drupal.settings.eu_cookie_compliance.popup_position) {
|
||||
$(".sliding-popup-top").animate({top: $("#sliding-popup").height() * -1}, Drupal.settings.eu_cookie_compliance.popup_delay, function () {
|
||||
if(status == 0) {
|
||||
$("#sliding-popup").html(Drupal.settings.eu_cookie_compliance.popup_html_agreed).animate({top: 0}, Drupal.settings.eu_cookie_compliance.popup_delay);
|
||||
Drupal.eu_cookie_compliance.attachEvents();
|
||||
}
|
||||
if(status == 1) {
|
||||
$("#sliding-popup").remove();
|
||||
}
|
||||
})
|
||||
} else {
|
||||
$(".sliding-popup-bottom").animate({bottom: $("#sliding-popup").height() * -1}, Drupal.settings.eu_cookie_compliance.popup_delay, function () {
|
||||
if(status == 0) {
|
||||
$("#sliding-popup").html(Drupal.settings.eu_cookie_compliance.popup_html_agreed).animate({bottom: 0}, Drupal.settings.eu_cookie_compliance.popup_delay)
|
||||
Drupal.eu_cookie_compliance.attachEvents();
|
||||
}
|
||||
if(status == 1) {
|
||||
$("#sliding-popup").remove();
|
||||
}
|
||||
;})
|
||||
}
|
||||
Drupal.eu_cookie_compliance.setStatus(value);
|
||||
}
|
||||
|
||||
Drupal.eu_cookie_compliance.setStatus = function(status) {
|
||||
var date = new Date();
|
||||
date.setDate(date.getDate() + 100);
|
||||
document.cookie = "cookie-agreed-"+Drupal.settings.eu_cookie_compliance.popup_language + "="+status+";expires=" + date.toUTCString() + ";path=" + Drupal.settings.basePath;
|
||||
}
|
||||
|
||||
Drupal.eu_cookie_compliance.hasAgreed = function() {
|
||||
var status = Drupal.eu_cookie_compliance.getCurrentStatus();
|
||||
if(status == 1 || status == 2) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
Drupal.eu_cookie_compliance.cookiesEnabled = function() {
|
||||
var cookieEnabled = (navigator.cookieEnabled) ? true : false;
|
||||
if (typeof navigator.cookieEnabled == "undefined" && !cookieEnabled) {
|
||||
document.cookie="testcookie";
|
||||
cookieEnabled = (document.cookie.indexOf("testcookie") != -1) ? true : false;
|
||||
}
|
||||
return (cookieEnabled);
|
||||
}
|
Reference in a new issue