1/** 2 * 3 * JQUERY EU COOKIE LAW POPUPS 4 * version 1.0.1 5 * 6 * Code on Github: 7 * https://github.com/wimagguc/jquery-eu-cookie-law-popup 8 * 9 * To see a live demo, go to: 10 * http://www.wimagguc.com/2015/03/jquery-eu-cookie-law-popup/ 11 * 12 * by Richard Dancsi 13 * http://www.wimagguc.com/ 14 * 15 */ 16 17(function($) { 18 19// for ie9 doesn't support debug console >>> 20if (!window.console) window.console = {}; 21if (!window.console.log) window.console.log = function () { }; 22// ^^^ 23 24$.fn.euCookieLawPopup = (function() { 25 26 var _self = this; 27 28 /////////////////////////////////////////////////////////////////////////////////////////////// 29 // PARAMETERS (MODIFY THIS PART) ////////////////////////////////////////////////////////////// 30 _self.params = { 31 cookiePolicyUrl : 'http://www.wimagguc.com/?cookie-policy', 32 popupPosition : 'top', 33 colorStyle : 'default', 34 compactStyle : false, 35 popupTitle : 'This website is using cookies', 36 popupText : 'We use cookies to ensure that we give you the best experience on our website. If you continue without changing your settings, we\'ll assume that you are happy to receive all cookies on this website.', 37 buttonContinueTitle : 'Continue', 38 buttonLearnmoreTitle : 'Learn more', 39 buttonLearnmoreOpenInNewWindow : true, 40 agreementExpiresInDays : 30, 41 autoAcceptCookiePolicy : false, 42 htmlMarkup : null 43 }; 44 45 /////////////////////////////////////////////////////////////////////////////////////////////// 46 // VARIABLES USED BY THE FUNCTION (DON'T MODIFY THIS PART) //////////////////////////////////// 47 _self.vars = { 48 INITIALISED : false, 49 HTML_MARKUP : null, 50 COOKIE_NAME : 'EU_COOKIE_LAW_CONSENT' 51 }; 52 53 /////////////////////////////////////////////////////////////////////////////////////////////// 54 // PRIVATE FUNCTIONS FOR MANIPULATING DATA //////////////////////////////////////////////////// 55 56 // Overwrite default parameters if any of those is present 57 var parseParameters = function(object, markup, settings) { 58 59 if (object) { 60 var className = $(object).attr('class') ? $(object).attr('class') : ''; 61 if (className.indexOf('eupopup-top') > -1) { 62 _self.params.popupPosition = 'top'; 63 } 64 else if (className.indexOf('eupopup-fixedtop') > -1) { 65 _self.params.popupPosition = 'fixedtop'; 66 } 67 else if (className.indexOf('eupopup-bottomright') > -1) { 68 _self.params.popupPosition = 'bottomright'; 69 } 70 else if (className.indexOf('eupopup-bottomleft') > -1) { 71 _self.params.popupPosition = 'bottomleft'; 72 } 73 else if (className.indexOf('eupopup-bottom') > -1) { 74 _self.params.popupPosition = 'bottom'; 75 } 76 else if (className.indexOf('eupopup-block') > -1) { 77 _self.params.popupPosition = 'block'; 78 } 79 if (className.indexOf('eupopup-color-default') > -1) { 80 _self.params.colorStyle = 'default'; 81 } 82 else if (className.indexOf('eupopup-color-inverse') > -1) { 83 _self.params.colorStyle = 'inverse'; 84 } 85 if (className.indexOf('eupopup-style-compact') > -1) { 86 _self.params.compactStyle = true; 87 } 88 } 89 90 if (markup) { 91 _self.params.htmlMarkup = markup; 92 } 93 94 if (settings) { 95 if (typeof settings.cookiePolicyUrl !== 'undefined') { 96 _self.params.cookiePolicyUrl = settings.cookiePolicyUrl; 97 } 98 if (typeof settings.popupPosition !== 'undefined') { 99 _self.params.popupPosition = settings.popupPosition; 100 } 101 if (typeof settings.colorStyle !== 'undefined') { 102 _self.params.colorStyle = settings.colorStyle; 103 } 104 if (typeof settings.popupTitle !== 'undefined') { 105 _self.params.popupTitle = settings.popupTitle; 106 } 107 if (typeof settings.popupText !== 'undefined') { 108 _self.params.popupText = settings.popupText; 109 } 110 if (typeof settings.buttonContinueTitle !== 'undefined') { 111 _self.params.buttonContinueTitle = settings.buttonContinueTitle; 112 } 113 if (typeof settings.buttonLearnmoreTitle !== 'undefined') { 114 _self.params.buttonLearnmoreTitle = settings.buttonLearnmoreTitle; 115 } 116 if (typeof settings.buttonLearnmoreOpenInNewWindow !== 'undefined') { 117 _self.params.buttonLearnmoreOpenInNewWindow = settings.buttonLearnmoreOpenInNewWindow; 118 } 119 if (typeof settings.agreementExpiresInDays !== 'undefined') { 120 _self.params.agreementExpiresInDays = settings.agreementExpiresInDays; 121 } 122 if (typeof settings.autoAcceptCookiePolicy !== 'undefined') { 123 _self.params.autoAcceptCookiePolicy = settings.autoAcceptCookiePolicy; 124 } 125 if (typeof settings.htmlMarkup !== 'undefined') { 126 _self.params.htmlMarkup = settings.htmlMarkup; 127 } 128 } 129 130 }; 131 132 var createHtmlMarkup = function() { 133 134 if (_self.params.htmlMarkup) { 135 return _self.params.htmlMarkup; 136 } 137 138 var html = 139 '<div class="eupopup-container' + 140 ' eupopup-container-' + _self.params.popupPosition + 141 (_self.params.compactStyle ? ' eupopup-style-compact' : '') + 142 ' eupopup-color-' + _self.params.colorStyle + '">' + 143 '<div class="eupopup-head">' + _self.params.popupTitle + '</div>' + 144 '<div class="eupopup-body">' + _self.params.popupText + '</div>' + 145 '<div class="eupopup-buttons">' + 146 '<a href="#" class="eupopup-button eupopup-button_1">' + _self.params.buttonContinueTitle + '</a>' + 147 '<a href="' + _self.params.cookiePolicyUrl + '"' + 148 (_self.params.buttonLearnmoreOpenInNewWindow ? ' target=_blank ' : '') + 149 ' class="eupopup-button eupopup-button_2">
149' + _self.params.buttonLearnmoreTitle + '</a>' + 150 '<div class="clearfix"></div>' + 151 '</div>' + 152 '<a href="#" class="eupopup-closebutton">x</a>' + 153 '</div>'; 154 155 return html; 156 }; 157 158 // Storing the consent in a cookie 159 var setUserAcceptsCookies = function(consent) { 160 var d = new Date(); 161 var expiresInDays = _self.params.agreementExpiresInDays * 24 * 60 * 60 * 1000; 162 d.setTime( d.getTime() + expiresInDays ); 163 var expires = "expires=" + d.toGMTString(); 164 document.cookie = _self.vars.COOKIE_NAME + '=' + consent + "; " + expires + ";path=/"; 165 166 $(document).trigger("user_cookie_consent_changed", {'consent' : consent}); 167 }; 168 169 // Let's see if we have a consent cookie already 170 var userAlreadyAcceptedCookies = function() { 171 var userAcceptedCookies = false; 172 var cookies = document.cookie.split(";"); 173 for (var i = 0; i < cookies.length; i++) { 174 var c = cookies[i].trim(); 175 if (c.indexOf(_self.vars.COOKIE_NAME) == 0) { 176 userAcceptedCookies = c.substring(_self.vars.COOKIE_NAME.length + 1, c.length); 177 } 178 } 179 180 return userAcceptedCookies; 181 }; 182 183 var hideContainer = function() { 184 // $('.eupopup-container').slideUp(200); 185 $('.eupopup-container').animate({ 186 opacity: 0, 187 height: 0 188 }, 200, function() { 189 $('.eupopup-container').hide(0); 190 }); 191 }; 192 193 /////////////////////////////////////////////////////////////////////////////////////////////// 194 // PUBLIC FUNCTIONS ////////////////////////////////////////////////////////////////////////// 195 var publicfunc = { 196 197 // INITIALIZE EU COOKIE LAW POPUP ///////////////////////////////////////////////////////// 198 init : function(settings) { 199 200 parseParameters( 201 $(".eupopup").first(), 202 $(".eupopup-markup").html(), 203 settings); 204 205 // No need to display this if user already accepted the policy 206 if (userAlreadyAcceptedCookies()) { 207 return; 208 } 209 210 // We should initialise only once 211 if (_self.vars.INITIALISED) { 212 return; 213 } 214 _self.vars.INITIALISED = true; 215 216 // Markup and event listeners >>> 217 _self.vars.HTML_MARKUP = createHtmlMarkup(); 218 219 if ($('.eupopup-block').length > 0) { 220 $('.eupopup-block').append(_self.vars.HTML_MARKUP); 221 } else { 222 $('BODY').append(_self.vars.HTML_MARKUP); 223 } 224 225 $('.eupopup-button_1').click(function() { 226 setUserAcceptsCookies(true); 227 hideContainer(); 228 return false; 229 }); 230 $('.eupopup-closebutton').click(function() { 231 setUserAcceptsCookies(false); 232 hideContainer(); 233 return false; 234 }); 235 // ^^^ Markup and event listeners 236 237 // Ready to start! 238 $('.eupopup-container').show(); 239 240 // In case it's alright to just display the message once 241 if (_self.params.autoAcceptCookiePolicy) { 242 setUserAcceptsCookies(true); 243 } 244 245 } 246 247 }; 248 249 return publicfunc; 250}); 251 252$(document).ready( function() { 253 if ($(".eupopup").length > 0) { 254 $(document).euCookieLawPopup().init({ 255 'info' : 'YOU_CAN_ADD_MORE_SETTINGS_HERE', 256 'popupTitle' : 'This website is using cookies. ', 257 'popupText' : 'We use them to give you the best experience. If you continue using our website, we\'ll assume that you are happy to receive all cookies on this website.' 258 }); 259 } 260}); 261 262$(document).bind("user_cookie_consent_changed", function(event, object) { 263 console.log("User cookie consent changed: " + $(object).attr('consent') ); 264}); 265 266}(jQuery));
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.