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 // Suppression du bouton fermer (croix) 153 // '<a href="#" class="eupopup-closebutton">x</a>' + 154 '</div>'; 155 156 return html; 157 }; 158 159 // Storing the consent in a cookie 160 var setUserAcceptsCookies = function(consent) { 161 var d = new Date(); 162 var expiresInDays = _self.params.agreementExpiresInDays * 24 * 60 * 60 * 1000; 163 d.setTime( d.getTime() + expiresInDays ); 164 var expires = "expires=" + d.toGMTString(); 165 document.cookie = _self.vars.COOKIE_NAME + '=' + consent + "; " + expires + ";path=/"; 166 167 $(document).trigger("user_cookie_consent_changed", {'consent' : consent}); 168 }; 169 170 // Let's see if we have a consent cookie already 171 var userAlreadyAcceptedCookies = function() { 172 var userAcceptedCookies = false; 173 var cookies = document.cookie.split(";"); 174 for (var i = 0; i < cookies.length; i++) { 175 var c = cookies[i].trim(); 176 if (c.indexOf(_self.vars.COOKIE_NAME) == 0) { 177 userAcceptedCookies = c.substring(_self.vars.COOKIE_NAME.length + 1, c.length); 178 } 179 } 180 181 return userAcceptedCookies; 182 }; 183 184 var hideContainer = function() { 185 // $('.eupopup-container').slideUp(200); 186 $('.eupopup-container').animate({ 187 opacity: 0, 188 height: 0 189 }, 200, function() { 190 $('.eupopup-container').hide(0); 191 }); 192 }; 193 194 /////////////////////////////////////////////////////////////////////////////////////////////// 195 // PUBLIC FUNCTIONS ////////////////////////////////////////////////////////////////////////// 196 var publicfunc = { 197 198 // INITIALIZE EU COOKIE LAW POPUP ///////////////////////////////////////////////////////// 199 init : function(settings) { 200 201 parseParameters( 202 $(".eupopup").first(), 203 $(".eupopup-markup").html(), 204 settings); 205 206 // No need to display this if user already accepted the policy 207 if (userAlreadyAcceptedCookies()) { 208 return; 209 } 210 211 // We should initialise only once 212 if (_self.vars.INITIALISED) { 213 return; 214 } 215 _self.vars.INITIALISED = true; 216 217 // Markup and event listeners >>> 218 _self.vars.HTML_MARKUP = createHtmlMarkup(); 219 220 if ($('.eupopup-block').length > 0) { 221 $('.eupopup-block').append(_self.vars.HTML_MARKUP); 222 } else { 223 $('BODY').append(_self.vars.HTML_MARKUP); 224 } 225 226 $('.eupopup-button_1').click(function() { 227 setUserAcceptsCookies(true); 228 hideContainer(); 229 return false; 230 }); 231 $('.eupopup-closebutton').click(function() { 232 //setUserAcceptsCookies(true); 233 hideContainer(); 234 return false; 235 }); 236 // ^^^ Markup and event listeners 237 238 // Ready to start! 239 $('.eupopup-container').show(); 240 241 // In case it's alright to just display the message once 242 if (_self.params.autoAcceptCookiePolicy) { 243 setUserAcceptsCookies(true); 244 } 245 246 } 247 248 }; 249 250 return publicfunc; 251}); 252 253$(document).ready( function() { 254 if ($(".eupopup").length > 0) { 255 $(document).euCookieLawPopup().init({ 256 'info' : 'YOU_CAN_ADD_MORE_SETTINGS_HERE', 257 'popupTitle' : 'This website is using cookies. ', 258 '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.' 259 }); 260 } 261}); 262 263$(document).bind("user_cookie_consent_changed", function(event, object) { 264 console.log("User cookie consent changed: " + $(object).attr('consent') ); 265}); 266 267}(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.