110 lines
2.9 KiB
JavaScript
110 lines
2.9 KiB
JavaScript
/**
|
|
* UserFeedback Admin Exclusion Banner
|
|
* Handles display and dismissal of admin exclusion notice
|
|
*/
|
|
(function() {
|
|
'use strict';
|
|
|
|
// Configuration from PHP
|
|
var config = window.userfeedback_banner_config || {};
|
|
|
|
// LocalStorage key for dismissal
|
|
var DISMISSAL_KEY = 'userfeedback_admin_banner_dismissed';
|
|
|
|
/**
|
|
* Check if banner was previously dismissed
|
|
*/
|
|
function isBannerDismissed() {
|
|
try {
|
|
return localStorage.getItem(DISMISSAL_KEY) === 'true';
|
|
} catch (e) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Mark banner as dismissed
|
|
*/
|
|
function dismissBanner() {
|
|
try {
|
|
localStorage.setItem(DISMISSAL_KEY, 'true');
|
|
} catch (e) {
|
|
// localStorage not available, banner will show again on refresh
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Hide banner with animation
|
|
*/
|
|
function hideBanner() {
|
|
var banner = document.getElementById('userfeedback-admin-banner');
|
|
if (!banner) {
|
|
return;
|
|
}
|
|
|
|
banner.classList.remove('userfeedback-admin-banner--visible');
|
|
setTimeout(function() {
|
|
banner.style.display = 'none';
|
|
}, 300);
|
|
}
|
|
|
|
/**
|
|
* Initialize and show banner
|
|
*/
|
|
function initBanner() {
|
|
// Check if already dismissed
|
|
if (isBannerDismissed()) {
|
|
return;
|
|
}
|
|
|
|
var banner = document.getElementById('userfeedback-admin-banner');
|
|
if (!banner) {
|
|
return;
|
|
}
|
|
|
|
// Populate content from config
|
|
var title = banner.querySelector('.userfeedback-admin-banner__title');
|
|
var message = banner.querySelector('.userfeedback-admin-banner__message');
|
|
var learnMore = banner.querySelector('.userfeedback-admin-banner__learn-more');
|
|
var closeBtn = banner.querySelector('.userfeedback-admin-banner__close');
|
|
|
|
if (title && config.title) {
|
|
title.textContent = config.title;
|
|
}
|
|
|
|
if (message && config.message) {
|
|
message.textContent = config.message;
|
|
}
|
|
|
|
if (learnMore && config.learn_more_url) {
|
|
learnMore.href = config.learn_more_url;
|
|
}
|
|
|
|
// Handle close button
|
|
if (closeBtn) {
|
|
closeBtn.addEventListener('click', function(e) {
|
|
e.preventDefault();
|
|
hideBanner();
|
|
dismissBanner();
|
|
});
|
|
}
|
|
|
|
// Show banner with fade-in animation after a short delay
|
|
setTimeout(function() {
|
|
banner.style.display = 'block';
|
|
// Trigger reflow for animation
|
|
banner.offsetHeight;
|
|
setTimeout(function() {
|
|
banner.classList.add('userfeedback-admin-banner--visible');
|
|
}, 10);
|
|
}, 500);
|
|
}
|
|
|
|
// Initialize on DOM ready
|
|
if (document.readyState === 'loading') {
|
|
document.addEventListener('DOMContentLoaded', initBanner);
|
|
} else {
|
|
initBanner();
|
|
}
|
|
})();
|