Files
2026-08-14 10:55:06 +08:00

108 lines
4.8 KiB
PHP

<?php
// 前台页面公共页脚。
if (!defined('IN_APP')) { http_response_code(403); exit('Forbidden'); }
?>
</main>
<footer class="site-footer">
<div class="container footer-inner">
<div class="footer-brand">
<i class="fas fa-store"></i> <?= h(SITE_NAME) ?>
<p><?= __('footer.brand_slogan') ?></p>
</div>
<div class="footer-links">
<a href="index.php"><?= __('footer.nav_home') ?></a>
<a href="index.php#products"><?= __('footer.nav_all') ?></a>
<a href="cart.php"><?= __('footer.nav_cart') ?></a>
<a href="ticket.php"><?= __('footer.nav_ticket') ?></a>
<a href="announcements.php"><?= __('footer.nav_announce') ?></a>
<a href="mytickets.php"><?= __('footer.nav_mytickets') ?></a>
<a href="myorders.php"><?= __('footer.nav_myorders') ?></a>
</div>
</div>
<div class="footer-copy">
<p>&copy; <?= date('Y') ?> <?= h(SITE_NAME) ?>. <?= __('footer.copyright') ?></p>
</div>
</footer>
<script src="assets/app.js?v=<?= $cssVer ?>"></script>
<script>
// 主题切换:写入 cookie 并即时切换 data-theme
(function () {
var btn = document.getElementById('themeToggle');
if (!btn) return;
// 初始化:根据当前主题设置正确图标(解决首次加载深色模式图标不匹配问题)
(function initThemeIcon() {
var current = document.documentElement.getAttribute('data-theme');
if (current === 'dark') {
btn.querySelector('i').className = 'fas fa-sun';
}
})();
btn.addEventListener('click', function () {
var root = document.documentElement;
var next = root.getAttribute('data-theme') === 'dark' ? 'light' : 'dark';
root.setAttribute('data-theme', next);
document.cookie = 'fnw_theme=' + next + ';path=/;max-age=31536000';
btn.querySelector('i').className = next === 'dark' ? 'fas fa-sun' : 'fas fa-moon';
});
})();
// 头像卡片:点击切换、点击外部关闭
(function () {
var btn = document.getElementById('avatarBtn');
var card = document.getElementById('userCard');
if (!btn || !card) return;
card.hidden = true; // 初始化兜底隐藏
btn.addEventListener('click', function (e) {
e.stopPropagation();
card.hidden = !card.hidden;
btn.setAttribute('aria-expanded', card.hidden ? 'false' : 'true');
});
document.addEventListener('click', function (e) {
if (!card.hidden && !card.contains(e.target) && !btn.contains(e.target)) {
card.hidden = true;
btn.setAttribute('aria-expanded', 'false');
}
});
})();
// 移动端导航:汉堡菜单展开/收起
(function () {
var toggle = document.getElementById('navToggle');
var links = document.getElementById('navLinks');
if (!toggle || !links) return;
toggle.addEventListener('click', function (e) {
e.stopPropagation();
var open = links.classList.toggle('open');
toggle.setAttribute('aria-expanded', open ? 'true' : 'false');
});
// 点击菜单内链接后自动收起
links.addEventListener('click', function (e) {
if (e.target.closest('a')) links.classList.remove('open');
});
document.addEventListener('click', function (e) {
if (!links.contains(e.target) && !toggle.contains(e.target)) {
links.classList.remove('open');
}
});
})();
// 发货信息:显示/隐藏敏感凭据(登录密码)
(function () {
document.querySelectorAll('.reveal-btn').forEach(function (btn) {
btn.addEventListener('click', function () {
var span = btn.previousElementSibling;
if (!span || !span.classList.contains('secret')) return;
var real = span.getAttribute('data-secret') || '';
if (btn.textContent === '显示') {
span.textContent = real;
btn.textContent = '隐藏';
} else {
span.textContent = real ? '●'.repeat(Math.max(6, real.length)) : '—';
btn.textContent = '显示';
}
});
});
})();
</script>
</body>
</html>