mirror of
https://github.com/andrey271192/amnezia_web.git
synced 2026-09-20 14:41:59 +00:00
fix: restore panel boot after PRO refactor
hydratePanelPromoFooter was removed in 90f9443 but still called at
module load, causing ReferenceError and leaving login/app hidden.
Restore footer hydration; drop yellow promo strip from panel UI.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1666,6 +1666,54 @@ function initThemeSwitch() {
|
||||
}
|
||||
}
|
||||
|
||||
/** Ссылки доната в подвале панели (`GET /api/panel/footer`). */
|
||||
function wirePanelPromoAnchor(el, url, label) {
|
||||
const u = typeof url === "string" ? url.trim() : "";
|
||||
const lb = typeof label === "string" ? label.trim() : "";
|
||||
if (!el || !u || !lb) {
|
||||
if (el) {
|
||||
el.classList.add("hidden");
|
||||
el.removeAttribute("href");
|
||||
el.textContent = "";
|
||||
}
|
||||
return false;
|
||||
}
|
||||
el.href = u;
|
||||
el.textContent = lb;
|
||||
el.classList.remove("hidden");
|
||||
return true;
|
||||
}
|
||||
|
||||
async function hydratePanelPromoFooter() {
|
||||
const gap1 = document.getElementById("footer-promo-gap1");
|
||||
const aDonF = document.getElementById("footer-promo-donate");
|
||||
const fSepDO = document.getElementById("footer-promo-sep-donate-ozon");
|
||||
const aOzonF = document.getElementById("footer-promo-ozon");
|
||||
const fSepOT = document.getElementById("footer-promo-sep-ozon-tg");
|
||||
const aTgF = document.getElementById("footer-promo-telegram");
|
||||
|
||||
try {
|
||||
const r = await fetch("/api/panel/footer", { credentials: "same-origin" });
|
||||
if (!r.ok) return;
|
||||
const j = await r.json().catch(() => null);
|
||||
if (!j || typeof j !== "object") return;
|
||||
|
||||
wirePanelPromoAnchor(aDonF, j.donateUrl, j.donateLabel);
|
||||
wirePanelPromoAnchor(aOzonF, j.ozonUrl, j.ozonLabel);
|
||||
wirePanelPromoAnchor(aTgF, j.telegramUrl, j.telegramLabel);
|
||||
|
||||
const footerD = aDonF && !aDonF.classList.contains("hidden");
|
||||
const footerO = aOzonF && !aOzonF.classList.contains("hidden");
|
||||
const footerT = aTgF && !aTgF.classList.contains("hidden");
|
||||
|
||||
if (gap1) gap1.classList.toggle("hidden", !(footerD || footerO || footerT));
|
||||
if (fSepDO) fSepDO.classList.toggle("hidden", !(footerD && (footerO || footerT)));
|
||||
if (fSepOT) fSepOT.classList.toggle("hidden", !(footerO && footerT));
|
||||
} catch {
|
||||
/* офлайн или сбой — в HTML уже дефолтные ссылки подвала */
|
||||
}
|
||||
}
|
||||
|
||||
function initMtprotoLinkCopy() {
|
||||
if (!mtprotoLinkCopyBtn) return;
|
||||
mtprotoLinkCopyBtn.addEventListener("click", async () => {
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;600;700&family=JetBrains+Mono:wght@400;600&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="/styles.css?v=1.2.29">
|
||||
<link rel="stylesheet" href="/styles.css?v=1.2.30">
|
||||
<script>
|
||||
(function () {
|
||||
try {
|
||||
@@ -23,21 +23,6 @@
|
||||
</script>
|
||||
</head>
|
||||
<body class="page">
|
||||
<aside id="panel-promo-strip" class="panel-promo-strip" role="complementary" aria-label="Поддержка и донат">
|
||||
<div class="panel-promo-strip-inner">
|
||||
<p id="panel-promo-subtitle" class="panel-promo-subtitle muted">Поддержите через Boosty (или вашу ссылку), Ozon СБП и Telegram — те же ссылки внизу панели. На пользовательские лендинги это не выводится.</p>
|
||||
<div class="panel-promo-links">
|
||||
<a class="panel-promo-a panel-promo-github-fixed" href="https://github.com/andrey271192/amnezia_web" target="_blank" rel="noopener noreferrer">⭐ GitHub</a>
|
||||
<span class="panel-promo-sep" aria-hidden="true">·</span>
|
||||
<a id="panel-strip-donate" class="panel-promo-a" href="https://boosty.to/andrey27/donate" target="_blank" rel="noopener noreferrer">Поддержать проект</a>
|
||||
<span id="panel-strip-sep-donate-ozon" class="panel-promo-sep" aria-hidden="true">·</span>
|
||||
<a id="panel-strip-ozon" class="panel-promo-a" href="https://finance.ozon.ru/apps/sbp/ozonbankpay/019dc200-2a5d-7931-a619-782d285f6798" target="_blank" rel="noopener noreferrer">Донат · Ozon СБП</a>
|
||||
<span id="panel-strip-sep-ozon-tg" class="panel-promo-sep" aria-hidden="true">·</span>
|
||||
<a id="panel-strip-telegram" class="panel-promo-a" href="https://t.me/lot_andrey" target="_blank" rel="noopener noreferrer">Telegram‑канал спонсора</a>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
<div id="login-gate" class="gate hidden" aria-hidden="true">
|
||||
<div class="gate-card">
|
||||
<p class="eyebrow">Панель сервера</p>
|
||||
@@ -334,7 +319,7 @@
|
||||
<a id="footer-promo-telegram" class="support-promo-link" href="https://t.me/lot_andrey" target="_blank" rel="noopener noreferrer">Telegram‑канал спонсора</a>
|
||||
</div>
|
||||
<p class="support-blurb">
|
||||
AWG‑клиенты, статусы и MTProto‑прокси. Жёлтая шапка поддержки совпадает с подвалом; текст ссылок может подтягиваться с сервера. На пользовательских лендингах блоков поддержки нет.
|
||||
AWG‑клиенты, статусы и MTProto‑прокси. Ссылки поддержки — в подвале; подписи могут подтягиваться с сервера.
|
||||
</p>
|
||||
</footer>
|
||||
|
||||
@@ -372,6 +357,6 @@
|
||||
</div>
|
||||
</dialog>
|
||||
|
||||
<script src="/app.js?v=1.2.29" type="module"></script>
|
||||
<script src="/app.js?v=1.2.30" type="module"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user