FEATURE: add binarity template - currently only homepage
This commit is contained in:
@@ -0,0 +1,150 @@
|
||||
/**
|
||||
* Cookie handling mini framework &
|
||||
* EU Cookie policy information layer
|
||||
*
|
||||
* created by binarity s.r.o
|
||||
* www.binarity.cz
|
||||
*
|
||||
* @returns {*}
|
||||
* @constructor
|
||||
*/
|
||||
var Cookies = {
|
||||
read: function(sKey) {
|
||||
return !sKey ? null : decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null;
|
||||
},
|
||||
set: function(sKey, sValue, vEnd, sPath, sDomain, bSecure) {
|
||||
if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) { return false; }
|
||||
var sExpires = "";
|
||||
if (vEnd) {
|
||||
switch (vEnd.constructor) {
|
||||
case Number:
|
||||
sExpires = vEnd === Infinity ? "; expires=Fri, 31 Dec 9999 23:59:59 GMT" : "; max-age=" + vEnd;
|
||||
break;
|
||||
case String:
|
||||
sExpires = "; expires=" + vEnd;
|
||||
break;
|
||||
case Date:
|
||||
sExpires = "; expires=" + vEnd.toUTCString();
|
||||
break;
|
||||
}
|
||||
}
|
||||
document.cookie = encodeURIComponent(sKey) + "=" + encodeURIComponent(sValue) + sExpires + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : "") + (bSecure ? "; secure" : "");
|
||||
return true;
|
||||
},
|
||||
remove: function (sKey, sPath, sDomain) {
|
||||
if (!this.has(sKey)) { return false; }
|
||||
document.cookie = encodeURIComponent(sKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT" + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : "");
|
||||
return true;
|
||||
},
|
||||
has: function (sKey) {
|
||||
if (!sKey) { return false; }
|
||||
return (new RegExp("(?:^|;\\s*)" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=")).test(document.cookie);
|
||||
},
|
||||
keys: function () {
|
||||
var aKeys = document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g, "").split(/\s*(?:\=[^;]*)?;\s*/);
|
||||
for (var nLen = aKeys.length, nIdx = 0; nIdx < nLen; nIdx++) { aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]); }
|
||||
return aKeys;
|
||||
}
|
||||
};
|
||||
|
||||
function CookiePolicy(sPrefix, sText, sMore, sMoreURL, sUnderstand, sCookieName) {
|
||||
'use strict';
|
||||
|
||||
var prefix = sPrefix || 'bineucookie_',
|
||||
cookieName = sCookieName || 'allowed_eu',
|
||||
text = sText || 'Tyto webové stránky používají k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Informace o tom, jak tyto webové stránky používáte, jsou sdíleny se společností Google. Používáním těchto webových stránek souhlasíte s použitím souborů cookie.',
|
||||
more = sMore || 'Další informace',
|
||||
more_url = sMoreURL || 'https://www.google.com/policies/technologies/cookies/',
|
||||
understand = sUnderstand || 'Rozumím',
|
||||
// DOM
|
||||
layerHolder = document.createElement('div'),
|
||||
textElement = document.createElement('p'),
|
||||
moreInfoButton = document.createElement('a'),
|
||||
okButton = document.createElement('a');
|
||||
|
||||
/**
|
||||
* This method checks whether cookie about cookies was set or not.
|
||||
* If it was set, this method additionally checks for its validity.
|
||||
*/
|
||||
this.isValidCookie = function(sKey) {
|
||||
return Cookies.has(prefix + sKey);
|
||||
};
|
||||
|
||||
/**
|
||||
* This method just adds custom styles to page header so it does not need to be all inline/
|
||||
*/
|
||||
this.addStyle = function() {
|
||||
var styleElement = document.createElement('style');
|
||||
|
||||
styleElement.id = prefix + 'style';
|
||||
styleElement.innerHTML += '#bin_eu_cookie_layer {opacity:1; position:fixed; padding:16px; left:0; top:0; width:100%; display:block; color:#f4f4f4; background-color:rgba(0,0,0,0.8); z-index:1000;}\r\n';
|
||||
styleElement.innerHTML += '#bin_eu_cookie_layer #bin-cookie-text {width:80%; float:left; display:inline-block;}\r\n';
|
||||
styleElement.innerHTML += '#bin_eu_cookie_layer .bin-button {padding: 8px; float:right;}\r\n';
|
||||
|
||||
// Responsive version
|
||||
styleElement.innerHTML += '@media screen and (max-width:980px) {\r\n';
|
||||
styleElement.innerHTML += '\t#bin_eu_cookie_layer #bin-cookie-text {width:100%;}';
|
||||
styleElement.innerHTML += '}\r\n';
|
||||
|
||||
document.head.appendChild(styleElement);
|
||||
};
|
||||
|
||||
/**
|
||||
* This method accepts eu cookie policy by setting up a cookie that will inform the script next time that the policy
|
||||
* was already accepted.
|
||||
*/
|
||||
this.acceptCookiePolicy = function() {
|
||||
var date = new Date();
|
||||
date.setFullYear(date.getFullYear() + 25);
|
||||
Cookies.set(prefix + cookieName, 1, date.toGMTString(), '/');
|
||||
|
||||
layerHolder.parentNode.removeChild(layerHolder);
|
||||
};
|
||||
|
||||
/**
|
||||
* This method adds necessary elements to the DOM
|
||||
*/
|
||||
this.addElements = function() {
|
||||
layerHolder.id = "bin_eu_cookie_layer";
|
||||
|
||||
textElement.id = "bin-cookie-text";
|
||||
textElement.textContent = text;
|
||||
|
||||
moreInfoButton.className = 'bin-button';
|
||||
moreInfoButton.textContent = more;
|
||||
moreInfoButton.href = more_url;
|
||||
moreInfoButton.target = '_blank';
|
||||
|
||||
okButton.id = 'bin-cookie-ok';
|
||||
okButton.className = 'bin-button';
|
||||
okButton.textContent = understand;
|
||||
okButton.href = 'javascript:void(0);';
|
||||
|
||||
layerHolder.appendChild(textElement);
|
||||
layerHolder.appendChild(moreInfoButton);
|
||||
layerHolder.appendChild(okButton);
|
||||
|
||||
document.body.appendChild(layerHolder);
|
||||
|
||||
okButton.addEventListener('click', this.acceptCookiePolicy);
|
||||
};
|
||||
|
||||
/**
|
||||
* Method for adding complete DOM layer to the DOM.
|
||||
*/
|
||||
this.addDOMLayer = function() {
|
||||
this.addStyle();
|
||||
this.addElements();
|
||||
};
|
||||
|
||||
/**
|
||||
* This method initializes the whole process of drawing eu cookie policy layer.
|
||||
*/
|
||||
this.init = function() {
|
||||
if(!this.isValidCookie(cookieName)) {
|
||||
this.addDOMLayer();
|
||||
}
|
||||
};
|
||||
|
||||
return this.init(); // Auto-run on setup.
|
||||
}
|
||||
Reference in New Issue
Block a user