feat: анти-спам блокировка повторной отправки на главной (cooldown по spam_interval_min)
- index.html/index.js: экран подтверждения отправки с обратным отсчётом - локальный запрет повторной отправки через localStorage (по настройке spam_interval_min) - server.js: отдаём spam_interval_min в public-settings (default 30) - Dockerfile: timeout для apk add, чтобы сборка не зависала на недоступном зеркале - docker-compose.yml: отключаем cloudflared сервис (закомментирован)
This commit is contained in:
@@ -63,6 +63,12 @@ textarea{resize:vertical;min-height:160px;font-family:inherit;line-height:1.5}
|
||||
.toast.show{opacity:1}
|
||||
.toast.error{background:#dc2626}
|
||||
|
||||
.sent-panel{width:100%;max-width:900px;margin:32px auto 0;background:var(--card);border:2px solid var(--accent);border-radius:var(--radius);padding:40px 32px;display:none;flex-direction:column;gap:20px;align-items:center;text-align:center;box-shadow:0 8px 24px rgba(37,99,235,.18)}
|
||||
.sent-check{width:88px;height:88px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:2.6rem}
|
||||
.sent-panel h2{font-size:1.6rem;font-weight:700;letter-spacing:-.02em;color:var(--text)}
|
||||
.sent-panel p{font-size:1.05rem;color:var(--muted);max-width:520px}
|
||||
.sent-timer{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:14px 20px;font-size:1rem;font-weight:600;color:var(--text)}
|
||||
|
||||
nav{position:fixed;top:16px;right:16px;display:flex;gap:8px}
|
||||
nav a{color:var(--muted);text-decoration:none;font-size:.8rem;padding:6px 12px;border-radius:8px;transition:color .15s}
|
||||
nav a:hover{color:var(--text)}
|
||||
@@ -132,6 +138,13 @@ nav a:hover{color:var(--text)}
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div class="sent-panel" id="sentPanel">
|
||||
<div class="sent-check">✓</div>
|
||||
<h2 id="sentTitle">Запись отправлена!</h2>
|
||||
<p id="sentText">Спасибо! Твоя запись уже передана преподавателю.</p>
|
||||
<div class="sent-timer" id="sentTimer"></div>
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="f-left" id="footerLeft"></div>
|
||||
<div class="f-right" id="footerRight"></div>
|
||||
|
||||
Reference in New Issue
Block a user