1const cookieControlGeneral = "cookie_consent_general"; 2const cookieControlFunctionality = "cookie_consent_functionality"; 3const cookieControlAnalysis = "cookie_consent_analysis"; 4 5$(document).ready(function () { 6 /* Check if banner's cookies has to be shown or not */ 7 checkCookiesBannerVisibility(); 8 9 /* Load snippets */ 10 loadSnippets(); 11 12 /* Handle Modals Checkboxes */ 13 handleModalCheckBoxes(); 14 $(".js-checkbox-cookie-consent").change((e) => { 15 handleCheckBoxesLabels(e.currentTarget); 16 }); 17 18 /* Handle cookies */ 19 $(".js-cookies-accept").click(() => { 20 acceptCookies(); 21 }); 22 23 $(".js-cookies-reject").click(() => { 24 rejectCookies(); 25 }); 26}); 27 28//Función para obtener el valor de una cookie 29function getCookie(cname) { 30 var name = cname + "="; 31 var decodedCookie = decodeURIComponent(document.cookie); 32 var ca = decodedCookie.split(';'); 33 for (var i = 0; i < ca.length; i++) { 34 var c = ca[i]; 35 while (c.charAt(0) === ' ') { 36 c = c.substring(1); 37 } 38 if (c.indexOf(name) === 0) { 39 var val = c.substring(name.length, c.length); 40 return val; 41 } 42 } 43 return ""; 44} 45 46/* Function to handle checkboxes status reading consent cookies */ 47const handleModalCheckBoxes = () => { 48 const necessary_checkbox = document.getElementById("necessary-check"); 49 if (necessary_checkbox) { 50 handleCheckBoxesLabels(necessary_checkbox); 51 } 52 53 const funct_checkbox = document.getElementById("functionality-check"); 54 if (funct_checkbox) { 55 funct_checkbox.checked = readCookie(cookieControlFunctionality) !== "false"; 56 handleCheckBoxesLabels(funct_checkbox); 57 } 58 59 const analysis_checkbox = document.getElementById("analysis-check"); 60 if (analysis_checkbox) { 61 analysis_checkbox.checked = readCookie(cookieControlAnalysis) !== "false"; 62 handleCheckBoxesLabels(analysis_checkbox); 63 } 64} 65 66/* Function to handle checkboxes text (active/inactive) */ 67const handleCheckBoxesLabels = (checkbox_elem) => { 68 const sibling_label = checkbox_elem.nextElementSibling; 69 sibling_label.innerHTML = checkbox_elem.checked ? sibling_label.dataset.active : sibling_label.dataset.inactive; 70} 71 72/* Check types of cookies has been accepted by user */ 73const getAcceptedCookieTypes = () => { 74 let accepted_cookies = []; 75 if (readCookie(cookieControlGeneral) === "true") accepted_cookies.push("necessary"); 76 if (readCookie(cookieControlFunctionality) === "true") accepted_cookies.push("functionality"); 77 if (readCookie(cookieControlAnalysis) === "true") accepted_cookies.push("analysis"); 78 return accepted_cookies; 79}; 80 81/* Load cookies snippets */ 82const loadSnippets = () => { 83 const cookies_grouped = groupCookieBy( 84 mapCookiesElements(document.getElementsByClassName("js-cookie")), 85 "tagUuid" 86 ); 87 for (const key in cookies_grouped) { 88 const mtag_elem = document.getElementById("mTag-" + key); 89 const load_snippet = [...new Set(cookies_grouped[key].map(cookie => cookie.type))].every( 90 cookie_type => getAcceptedCookieTypes().includes(cookie_type) 91 ); 92 if (load_snippet) { 93 const original_snippet = mtag_elem.querySelector("script"); 94 let new_snippet = original_snippet.cloneNode(true); 95 new_snippet.setAttribute("type", "text/javascript"); 96 original_snippet.closest(".js-cookies-wrapper").before(new_snippet); 97 } 98 } 99} 100 101/* Group Cookies by key */ 102const groupCookieBy = (array, key) => { 103 return array.reduce((acc, current) => { 104 acc[current[key]] = acc[current[key]] || []; 105 acc[current[key]].push(current); 106 return acc; 107 }, []); 108}; 109 110/* Function to show cookies banner */ 111const checkCookiesBannerVisibility = () => { 112 if (!readCookie(cookieControlGeneral)) { 113 //$(".js-cookies-banner").show(); 114 setCookieBanner(); 115 if($('#myModal').length>0) 116 $('#myModal').hide(); 117 }else{ 118 119 var cookieName = $("input[name=cookiePopUp]").val(); 120 // Mostramos el popup si está la cookie a false 121 if (getCookie(cookieName)=='false' || getCookie(cookieName)=='') {
122 $('#myModal').show(); 123 }else if(getCookie(cookieName)=='true'){ 124 $('#myModal').hide(); 125 } 126 127 } 128 function setCookieBanner(){ 129 document.body.classList.add('has-cookie-banner'); 130 var cookiecont = document.querySelector('.js-cookies-banner'); 131 cookiecont.classList.add('is-visible') 132 var lastFsable = document.querySelector('.js-cookies-configure'); 133 lastFsable.addEventListener('keydown', function(e){ 134 if (!e.shiftKey && e.key == 'Tab' && document.activeElement === lastFsable) { 135 e.preventDefault(); 136 var modalConfig = document.querySelector('.cookies-panel'); 137 if (modalConfig.getBoundingClientRect().height > 0){ 138 modalConfig.setAttribute('tabindex', '-1'); 139 modalConfig.focus(); 140 } else { 141 document.querySelector('.js-cookies-accept').focus(); 142 } 143 } 144 }); 145 } 146 147} 148 149/* Function triggered when cookies are accepted via "js-cookies-accept" button */ 150const acceptCookies = () => { 151 152 removeAllCookies(); 153 createControlCookie(cookieControlGeneral, true); 154 155 const cookies = mapCookiesElements(document.getElementsByClassName("js-cookie")); 156 157 /* Strictly necessary cookies */ 158 createCookiesByType(cookies, "necessary"); 159 160 /* Functionality cookies */ 161 const funct_checkbox = document.getElementById("functionality-check"); 162 createControlCookie(cookieControlFunctionality, funct_checkbox.checked); 163 if (funct_checkbox.checked) createCookiesByType(cookies, "functionality"); 164 165 /* Analysis cookies */ 166 const analysis_checkbox = document.getElementById("analysis-check"); 167 createControlCookie(cookieControlAnalysis, analysis_checkbox.checked); 168 if (analysis_checkbox.checked) createCookiesByType(cookies, "analysis"); 169 170 document.body.classList.remove('has-cookie-banner'); 171 var cookiecont = document.querySelector('.js-cookies-banner'); 172 cookiecont.classList.remove('is-visible') 173 174 location.reload(); 175} 176 177const rejectCookies = () => { 178 179 removeAllCookies(); 180 //reject all cookies 181 createControlCookie(cookieControlGeneral, true); 182 createControlCookie(cookieControlFunctionality, false); 183 createControlCookie(cookieControlAnalysis, false); 184 185 document.body.classList.remove('has-cookie-banner'); 186 var cookiecont = document.querySelector('.js-cookies-banner'); 187 cookiecont.classList.remove('is-visible') 188 189 location.reload(); 190} 191 192/* const showCookiesModal = () => { 193 $("#js-cookies-panel").addClass("show"); 194} */ 195 196/* Map every HTML elements to cookies object */ 197const mapCookiesElements = (cookies_elements) => { 198 return Array.from(cookies_elements) 199 .map((cookieElement) => mapCookie(jQuery(cookieElement))) 200 .filter(cookie => cookie.enabled); 201} 202 203/* Map HTML element to Cookie Object */ 204const mapCookie = (element) => { 205 let expires = ""; 206 if (element.data("maxage")) { 207 let maxAge = element.data("maxage"); 208 maxAge = isNaN(maxAge) && maxAge.includes(",") ? parseInt(maxAge.replace(",", "")) : maxAge; 209 const date = new Date(); 210 date.setTime(date.getTime() + (maxAge * 1e3)); 211 expires = date.toUTCString(); 212 } 213 214 return { 215 "name": element.data("name"), 216 "value": element.data("value"), 217 "type": element.data("type"), 218 "enabled": element.data("enabled"), 219 "expires": expires, 220 "domain": element.data("domain"), 221 "path": element.data("path"), 222 "tagUuid": element.data("taguuid"), 223 "secure": element.data("secure") 224 }; 225} 226 227/* Create control cookie */ 228const createControlCookie = (name, value) => { 229 document.cookie = 230 name + "=" + value + ";" + 231 "domain=" + window.location.hostname + "; " + 232 "path=/"; 233} 234 235const createCookiesByType = (cookies, type) => { 236 cookies.filter(cookie =>
236 cookie.type === type).forEach((cookie) => { 237 document.cookie = 238 cookie.name + "=" + (cookie.value || "") + "; " + 239 "expires=" + cookie.expires + "; " + 240 "domain=" + cookie.domain + "; " + 241 "path=" + cookie.path + "; "; 242 }); 243} 244 245/* Remove all cookies */ 246const removeAllCookies = () => { 247 const cookies = document.cookie.split(";"); 248 for (let i = 0; i < cookies.length; i++) { 249 const cookie = cookies[i]; 250 const eqPos = cookie.indexOf("="); 251 const name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie; 252 document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT"; 253 } 254} 255 256/* Remove specific cookie */ 257const removeCookie = (cookieName) => { 258 document.cookie = cookie.name + "=; Max-Age=-99999999;" 259} 260 261/* Get cookie by name */ 262const readCookie = (name) => { 263 const name_EQ = name + "="; 264 const ca = document.cookie.split(';'); 265 for (var i = 0; i < ca.length; i++) { 266 var c = ca[i]; 267 while (c.charAt(0) == ' ') c = c.substring(1, c.length); 268 if (c.indexOf(name_EQ) == 0) return c.substring(name_EQ.length, c.length); 269 } 270 return null; 271} 272 273 274//Funcion para crear las cookies de los popups 275function createCookiePopUp(input, tipoCookieConsentimiento){ 276 if (readCookie(tipoCookieConsentimiento)=="true") { 277 var date = new Date(); 278 date.setTime(date.getTime()+(7*24*60*60*1000)); 279 var expires = "; expires="+date.toGMTString(); 280 var cookie = document.getElementsByName(input); 281 if(cookie.length>0){ 282 var nombreCookie = cookie[0].value; 283 var marcado = cookie[0].checked; 284 var pathname = window.location.pathname; 285 self.document.cookie = nombreCookie+"="+marcado+expires+";path="+pathname+";"; 286 } 287 } 288} 289 290//Funcion para crear las cookies de los popups 291function createCookiePopUpYear(input, tipoCookieConsentimiento){ 292 if (readCookie(tipoCookieConsentimiento)=="true") { 293 var date = new Date(); 294 date.setTime(date.getTime()+(365*24*60*60*1000)); 295 var expires = "; expires="+date.toGMTString(); 296 297 var cookie = document.getElementsByName(input); 298 if(cookie.length>0){ 299 var nombreCookie = cookie[0].value; 300 var marcado = cookie[0].checked; 301 var pathname = window.location.pathname; 302 self.document.cookie = nombreCookie+"="+marcado+expires+";path="+pathname+";"; 303 } 304 } 305 //cierra la modal 306 document.getElementById('myModal').style.visibility = "hidden"; 307} 308 309//Funcion para obtener el valor de una cookie 310function getCookie(cname) { 311 var name = cname + "="; 312 var decodedCookie = decodeURIComponent(document.cookie); 313 var ca = decodedCookie.split(';'); 314 for (var i = 0; i < ca.length; i++) { 315 var c = ca[i]; 316 while (c.charAt(0) === ' ') { 317 c = c.substring(1); 318 } 319 if (c.indexOf(name) === 0) { 320 var val = c.substring(name.length, c.length); 321 return val; 322 } 323 } 324 return ""; 325}
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.