PageSourceSearch

https://www.abaltolecce.com/wp-content/plugins/cookieadmin-pro/assets/js/consent.js?ver=1.1.9

js abaltolecce.com collected 2026-10-05 22:21:19 UTC 7,985 bytes, 260 lines download raw bytes

1(function(){
2	window.addEventListener('cookieadmin_before_consent_display', function(){
3		if(cookieadmin_pro_handle_gpc()){
4			cookieadmin_policy.hide_banner = true;
5		}
6	});
7	
8	// Handle click on blocked content to accept and show
9	document.addEventListener('click', function(e){
10		var blockedElement = e.target.closest('.cookieadmin-content-blocker');
11		if(blockedElement){			
12			const category = blockedElement.getAttribute('data-cookieadmin-category');
13			var preference = {};
14
15			if(cookieadmin_is_obj(cookieadmin_is_consent) && cookieadmin_is_consent.action){
16				preference = cookieadmin_is_consent.action;
17			}
18
19			if(category){
20
21				if(preference.reject && ((preference.reject === true) || (preference.reject === 'true'))){
22					preference = {};
23				}
24
25				preference[category] = 'true';
26				if(preference.functional && preference.marketing && preference.analytics){
27					preference = {accept : 'true'};
28				}
29				var gpc_message = cookieadmin_pro_vars.gpc_alert_load_content ? cookieadmin_pro_vars.gpc_alert_load_content : '';
30				if(cookieadmin_pro_set_consent(preference, 365, gpc_message)){
31					cookieadmin_pro_enable_blocked_content(preference);
32				}
33			}
34		}
35	});
36})()
37
38function cookieadmin_pro_set_consent(prefrenc, days, gpc_message = '') {
39	
40	// Handling GPC override, preventing GPC signal
41	if(cookieadmin_pro_vars && cookieadmin_pro_vars.respect_gpc){
42		if(!cookieadmin_pro_handle_set_gpc(gpc_message)){
43			return false;
44		}
45	}
46
47	const data = 'action=cookieadmin_pro_ajax_handler&cookieadmin_act=save_consent' +
48		'&cookieadmin_preference=' + encodeURIComponent(JSON.stringify(Object.keys(prefrenc)));
49
50
51	let payload = data;
52	if (cookieadmin_is_obj(cookieadmin_is_consent) && !!cookieadmin_is_consent.consent) {
53		payload += '&cookieadmin_consent_id=' + cookieadmin_is_consent.consent;
54	}
55
56	// Make async request — don't block or wait
57	const xhttp = new XMLHttpRequest();
58
59	xhttp.open('POST', cookieadmin_pro_vars.ajax_url, true); // true = async
60
61	xhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
62
63	xhttp.onload = function () {
64		if(this.status === 200){
65			try {
66				const parsed = JSON.parse(this.responseText);
67				if (parsed.success && parsed.data && parsed.data.response) {
68					cookieadmin_save_consent_cookie(prefrenc, days, parsed.data.response);
69					
70					// Showing override option if we have GPC enabled.
71					if(cookieadmin_pro_vars && cookieadmin_pro_vars.respect_gpc){
72						var overrideEle = document.getElementById('cookieadmin_gpc_override');
73						
74						if(overrideEle){
75							overrideEle.style.display = 'block';
76						}
77					}
78
79					// Enable blocked content after consent
80					cookieadmin_pro_enable_blocked_content(prefrenc);
81				}
82			} catch (e) {
83				console.error("Invalid JSON response:", e);
84			}
85		}
86	};
87
88	xhttp.onerror = function () {
89		console.error("AJAX request failed");
90	};
91
92	xhttp.send(payload);
93
94	// Immediately return
95	return true;
96}
97
98function cookieadmin_pro_enable_blocked_content(prefrenc){
99	const blockedElements = document.querySelectorAll('.cookieadmin-content-blocker');
100	
101	blockedElements.forEach(function(element){
102		const category = element.getAttribute('data-cookieadmin-category');
103		
104		if(!category){
105			return;
106		}
107
108		// Check if user has consented to this category
109		const hasCategoryConsent = prefrenc.hasOwnProperty(category) && (prefrenc[category] === true || prefrenc[category] === 'true');
110		
111		// Check if user accepted all (accept: true means all categories)
112		const hasAcceptAll = prefrenc.hasOwnProperty('accept') && (prefrenc.accept === true || prefrenc.accept === 'true');
113		
114		if(hasCategoryConsent || hasAcceptAll){
115			cookieadmin_pro_replace_blocked_element(element);
116		}
117	});
118}
119
120function cookieadmin_pro_replace_blocked_element(element){
121	const placeholder = element;
122	
123	placeholder.removeAttribute('style');
124	placeholder.querySelectorAll('.cookieadmin-content-thumbnail').forEach(e => e.remove());
125	placeholder.querySelectorAll('.cookieadmin-accept-content').forEach(e => e.remove());
126
127	const iframe = placeholder.getElementsByTagName('iframe')[0];
128	if(iframe && iframe.dataset.cookieadminSrc){
129		iframe.src = iframe.dataset.cookieadminSrc;
130		iframe.removeAttribute('data-cookieadmin-src');
131	}
132}
133
134// Decided if GPC is enabled and if user has enabled the override when saving preference
135function cookieadmin_pro_handle_set_gpc(message){
136	var consentData = cookieadmin_is_cookie("cookieadmin_consent");
137	if (consentData && consentData.respect_gpc) {
138		var override = document.getElementById('cookieadmin-override_gpc');
139		
140		if(!override || !override.checked){
141			alert(message ? message : (cookieadmin_pro_vars.gpc_alert ? cookieadmin_pro_vars.gpc_alert : 'Please accept override GPC before saving preference.'));
142			return false;
143		}
144	}
145
146	return true;
147}
148
149// GPC (Global Privacy Control) Detection and Handling
150function cookieadmin_pro_check_gpc(){
151	// Check if respect_gpc setting is enabled
152	if(!cookieadmin_pro_vars || !cookieadmin_pro_vars.respect_gpc){
153		return false;
154	}
155
156	// Check navigator.globalPrivacyControl property (browser-level GPC signal)
157	if(typeof navigator !== 'undefined' && typeof navigator.globalPrivacyControl !== 'undefined'){
158		if(navigator.globalPrivacyControl === true || navigator.globalPrivacyControl === 'true'){
159			return true;
160		}
161	}
162
163	// Check if GPC was detected server-side (Sec-GPC header)
164	if(cookieadmin_pro_vars && cookieadmin_pro_vars.gpc_enabled){
165		return true;
166	}
167
168	return false;
169}
170
171function cookieadmin_pro_handle_gpc(){
172	// Check if GPC is enabled and should be respected
173	if(!cookieadmin_pro_check_gpc()){
174		return false;
175	}
176	
177	// Handling visibility of Override option in Cookie Customizer modal
178	var overRideEle = document.getElementById('cookieadmin_gpc_override');
179	var consentData = cookieadmin_is_cookie("cookieadmin_consent");
180
181	if(overRideEle){
182		overRideEle.style.display = (consentData && consentData.respect_gpc === true) ? '' : 'none';
183	}
184
185	// Check if consent was already saved
186	if(consentData){
187		return false;
188	}
189
190	// Apply auto-reject consent for GPC users
191	// Only allow necessary/functional cookies, reject analytics and marketing
192	const gpc_preferences = {
193		'functional': true,
194		'respect_gpc': true,
195	};
196
197	// Set consent for 365 days
198	cookieadmin_pro_set_consent(gpc_preferences, 365);
199
200	// Show GPC honored message if banner element exists
201	cookieadmin_pro_show_gpc_message();
202
203	return true;
204}
205
206function cookieadmin_pro_show_gpc_message() {
207	
208	var toast = document.getElementById('cookieadmin-gpc-toast');
209    
210	if(!toast){
211		return;
212	}
213	
214	closeBtn = toast.querySelector('button');
215	
216	if(!closeBtn){
217		return;
218	}
219	
220	// Add hover effects for the close button
221	closeBtn.addEventListener('mouseenter', () => closeBtn.style.opacity = '1');
222	closeBtn.addEventListener('mouseleave', () => closeBtn.style.opacity = '0.7');
223
224	// Add click event to remove the toast with a fade-out animation
225	closeBtn.addEventListener('click', () => {
226		toast.style.opacity = '0';
227		toast.style.transform = 'translateY(20px)';
228		toast.style.transition = 'opacity 0.3s ease, transform 0.3s ease, visibility 0s 0.3s';
229		toast.style.visibility = 'hidden';
230		setTimeout(() => {
231			if (document.body.contains(toast)) {
232				document.body.removeChild(toast);
233			}
234		}, 300); // Wait for transition to finish
235	});
236
237	// Trigger the fade-in animation
238	requestAnimationFrame(() => {
239		toast.style.visibility = 'visible';
240		toast.style.opacity = '1';
241		toast.style.transform = 'translateY(0)';
242		toast.style.transition = 'opacity 0.3s ease, transform 0.3s ease, visibility 0s';
243	});
244
245	// Auto-hide after 10 seconds
246	setTimeout(() => {
247		if(document.body.contains(toast)){
248			toast.style.opacity = '0';
249			toast.style.transform = 'translateY(20px)';
250			toast.style.transition = 'opacity 0.3s ease, transform 0.3s ease, visibility 0s 0.3s';
251			toast.style.visibility = 'hidden';
252			setTimeout(() => {
253				if (document.body.contains(toast)) {
254					document.body.removeChild(toast);
255				}
256			}, 300);
257		}
258	}, 10000);
259}
260

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.