First Commit

This commit is contained in:
marco
2026-09-01 09:22:30 -03:00
commit a43ae23eb4
407 changed files with 36138 additions and 0 deletions
+130
View File
@@ -0,0 +1,130 @@
window.cookieConsent = {
storageKey: 'gprompt_cookie_consent',
bannerId: 'cookieConsentBanner',
preferencesModalId: 'cookieConsentPreferences',
init() {
if (!this.hasConsented()) {
this.showBanner();
}
},
hasConsented() {
try {
return localStorage.getItem(this.storageKey) !== null;
} catch (e) {
return false;
}
},
getConsents() {
try {
const stored = localStorage.getItem(this.storageKey);
return stored ? JSON.parse(stored) : null;
} catch (e) {
return null;
}
},
showBanner() {
const banner = document.getElementById(this.bannerId);
if (banner) {
banner.style.display = 'block';
document.body.style.paddingBottom = banner.offsetHeight + 'px';
}
},
hideBanner() {
const banner = document.getElementById(this.bannerId);
if (banner) {
banner.style.display = 'none';
document.body.style.paddingBottom = '';
}
},
showPreferences() {
const modalEl = document.getElementById(this.preferencesModalId);
if (modalEl) {
const modal = new bootstrap.Modal(modalEl);
modal.show();
const consents = this.getConsents();
if (consents) {
document.getElementById('cookieStatistics').checked = !!consents.statistics;
document.getElementById('cookieMarketing').checked = !!consents.marketing;
document.getElementById('cookiePreferences').checked = !!consents.preferences;
}
}
},
acceptAll() {
const consents = {
necessary: true,
statistics: true,
marketing: true,
preferences: true,
};
this.save(consents);
this.hideBanner();
},
reject() {
const consents = {
necessary: true,
statistics: false,
marketing: false,
preferences: false,
};
this.save(consents);
this.hideBanner();
},
savePreferences() {
const consents = {
necessary: true,
statistics: document.getElementById('cookieStatistics').checked,
marketing: document.getElementById('cookieMarketing').checked,
preferences: document.getElementById('cookiePreferences').checked,
};
this.save(consents);
this.hideBanner();
const modalEl = document.getElementById(this.preferencesModalId);
if (modalEl) {
const modal = bootstrap.Modal.getInstance(modalEl);
if (modal) {
modal.hide();
}
}
},
save(consents) {
try {
localStorage.setItem(this.storageKey, JSON.stringify(consents));
} catch (e) {
console.warn('localStorage is not available');
}
fetch('/cookie-consent', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content'),
},
body: JSON.stringify({ consents }),
}).catch(() => {
// Silently fail - consent saved locally
});
},
};
if (document.readyState === 'interactive' || document.readyState === 'complete') {
window.cookieConsent.init();
} else {
document.addEventListener('DOMContentLoaded', function() {
window.cookieConsent.init();
});
}