1var Gccookiemessage = { 2 init: function (options) { 3 this.cookieName = options.cookieName || 'gccookiemessage'; 4 this.messageTimeout = options.messageTimeout || 365; 5 this.dialog = document.getElementById(this.cookieName); 6 7 if (!this.dialog) return; 8 9 this.preventEscapeClose(); 10 this.checkCookieMessage(); 11 12 var self = this; 13 GeoCMS.Content.Core.alternateDocumentReady(function () { 14 self.setCookieOptionCheck(); 15 self.setContainerEventListeners(); 16 self.setImpressumTrigger(); 17 self.setDatenschutzTrigger(); 18 }); 19 }, 20 21 preventEscapeClose: function () { 22 if (this.dialog) { 23 this.dialog.addEventListener('cancel', function (event) { 24 event.preventDefault(); 25 }); 26 this.dialog.addEventListener('keydown', function (event) { 27 if (event.key === 'Escape') { 28 event.preventDefault(); 29 } 30 }); 31 } 32 }, 33 34 setCookieMessageModalState: function (isOpen) { 35 document.body.classList.toggle('gccookiemessage-modal-open', !!isOpen); 36 }, 37 38 setCookieMessageCookie: function () { 39 let currentDate = new Date(); 40 let stopDate = new Date(currentDate.getTime() + 1000 * 60 * 60 * 24 * this.messageTimeout); 41 localStorage.setItem(this.cookieName + '_okay', 1); 42 localStorage.setItem(this.cookieName + '_expires', stopDate.toJSON()); 43 this.setCookieMessageModalState(false); 44 }, 45 46 checkCookieMessage: function () { 47 let currentDate = new Date(); 48 let currentDateStr = currentDate.toJSON(); 49 let storageDateStr = localStorage.getItem(this.cookieName + '_expires'); 50 51 if (storageDateStr && storageDateStr > currentDateStr) { 52 this.setCookieMessageModalState(false); 53 this.dialog.remove(); 54 } else { 55 if (typeof this.dialog.showModal === 'function') { 56 this.dialog.showModal(); 57 } else { 58 this.dialog.style.display = 'block'; 59 } 60 this.setCookieMessageModalState(true); 61 } 62 }, 63 64 setCookieOptionCheck: function () { 65 this.dialog.querySelectorAll('.option-element-dialog').forEach(function (element) { 66 let option = element.getAttribute('data-option-name'); 67 if (option) { 68 let option_on = element.getAttribute('data-option-on') || 1; 69 let current = localStorage.getItem(option); 70 if (current && current === option_on) { 71 element.checked = true; 72 } else { 73 element.checked = false; 74 } 75 } 76 }); 77 }, 78 79 clickHandler: function (element) { 80 let option = element.getAttribute('data-option-name'); 81 let option_on = element.getAttribute('data-option-on') || 1; 82 let current = localStorage.getItem(option); 83 if (current && current == option_on) { 84 localStorage.removeItem(option); 85 } else if (!current || current !== option_on) { 86 localStorage.setItem(option, option_on); 87 } 88 element.checked = !element.checked; 89 }, 90 91 setContainerEventListeners: function () { 92 var self = this; 93 this.dialog.querySelectorAll('.option-card').forEach(function (element) { 94 if (element.hasAttribute("data-click")) { 95 let checkbox = element.querySelector('.option-element-dialog'); 96 element.addEventListener('click', function (event) { 97 event.preventDefault(); 98 self.clickHandler(checkbox); 99 }); 100 } 101 }); 102 }, 103 104 setImpressumTrigger: function () { 105 let triggerButton = document.getElementById('trigger_impressum'); 106 if (!triggerButton || triggerButton.dataset.bound === '1') { 107 return; 108 } 109 110 triggerButton.dataset.bound = '1'; 111 triggerButton.addEventListener('click', function () { 112 let remoteButton = document.getElementById('portal_infofooter_impressum'); 113 if (remoteButton) { 114 remoteButton.click(); 115 } 116 }); 117 }, 118 119 setDatenschutzTrigger: function () { 120 let triggerButton = document.getElementById('trigger_datenschutz'); 121 if (!triggerButton || triggerButton.dataset.bound === '1') { 122 return; 123 } 124 125 triggerButton.dataset.bound = '1'; 126 triggerButton.addEventListener('click', function () { 127 let remoteButton = document.getElementById('portal_infofooter_datenschutz'); 128 if (remoteButton) { 129 remoteButton.click(); 130 } 131 }); 132 } 133};
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.