Fix duplicate badges, custom logout modal, cache bust v3
- Remove duplicate badges on md, parser, placeholder pages - Custom logout modal (blur overlay, confirm/cancel buttons) - Replace native confirm() with styled modal - Cache bust shared.js?v=3
This commit is contained in:
parent
89345551ef
commit
06d9adf7d5
@ -5,7 +5,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Конвертер изображений — WA Dev Tools</title>
|
||||
<script src="/vendor/tailwind.js"></script>
|
||||
<script src="/shared.js?v=2"></script>
|
||||
<script src="/shared.js?v=3"></script>
|
||||
<link href="/vendor/fonts.css" rel="stylesheet">
|
||||
<link href="/shared.css" rel="stylesheet">
|
||||
<script>window.WA_TOOL_ID = 'compress';</script>
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<title>Format Converter — WA Dev Tools</title>
|
||||
<script src="/vendor/tailwind.js"></script>
|
||||
<script>window.WA_TOOL_ID = 'converter';</script>
|
||||
<script src="/shared.js?v=2"></script>
|
||||
<script src="/shared.js?v=3"></script>
|
||||
<link href="/vendor/fonts.css" rel="stylesheet">
|
||||
<link href="/shared.css" rel="stylesheet">
|
||||
<script src="/vendor/marked.min.js"></script>
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<title>WA Dev Tools — Панель</title>
|
||||
<script src="/vendor/tailwind.js"></script>
|
||||
<script>window.WA_TOOL_ID = 'home';</script>
|
||||
<script src="/shared.js?v=2"></script>
|
||||
<script src="/shared.js?v=3"></script>
|
||||
<link href="/vendor/fonts.css" rel="stylesheet">
|
||||
<link href="/shared.css" rel="stylesheet">
|
||||
<style>
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<title>Code Editor — WA Dev Tools</title>
|
||||
<script src="/vendor/tailwind.js"></script>
|
||||
<script>window.WA_TOOL_ID = 'editor';</script>
|
||||
<script src="/shared.js?v=2"></script>
|
||||
<script src="/shared.js?v=3"></script>
|
||||
<link href="/vendor/fonts.css" rel="stylesheet">
|
||||
<link href="/shared.css" rel="stylesheet">
|
||||
<link rel="stylesheet" href="/editor.css">
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<title>Code Formatter — WA Dev Tools</title>
|
||||
<script src="/vendor/tailwind.js"></script>
|
||||
<script>window.WA_TOOL_ID = 'formatter';</script>
|
||||
<script src="/shared.js?v=2"></script>
|
||||
<script src="/shared.js?v=3"></script>
|
||||
<link href="/vendor/fonts.css" rel="stylesheet">
|
||||
<link href="/shared.css" rel="stylesheet">
|
||||
<style>
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<title>HTTP Client — WA Dev Tools</title>
|
||||
<script src="/vendor/tailwind.js"></script>
|
||||
<script>window.WA_TOOL_ID = 'httpclient';</script>
|
||||
<script src="/shared.js?v=2"></script>
|
||||
<script src="/shared.js?v=3"></script>
|
||||
<link href="/vendor/fonts.css" rel="stylesheet">
|
||||
<link href="/shared.css" rel="stylesheet">
|
||||
<link rel="stylesheet" href="/vendor/hljs-github-dark.css">
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<title>Markdown Viewer — WA Dev Tools</title>
|
||||
<script src="/vendor/tailwind.js"></script>
|
||||
<script>window.WA_TOOL_ID = 'md';</script>
|
||||
<script src="/shared.js?v=2"></script>
|
||||
<script src="/shared.js?v=3"></script>
|
||||
<link href="/vendor/fonts.css" rel="stylesheet">
|
||||
<link href="/shared.css" rel="stylesheet">
|
||||
<script src="/vendor/marked.min.js"></script>
|
||||
@ -54,12 +54,7 @@
|
||||
<div class="tool-container relative z-10 max-w-4xl mx-auto">
|
||||
|
||||
<!-- Header -->
|
||||
<div class="text-center mb-8 fade-up">
|
||||
<div class="inline-flex items-center gap-2 mb-3 px-3 py-1 rounded-full border dark:border-surface-600 border-gray-300 dark:bg-surface-800/60 bg-white/60 text-xs font-mono dark:text-gray-400 text-gray-500 tracking-wide">
|
||||
<span class="w-1.5 h-1.5 rounded-full bg-accent animate-pulse"></span>
|
||||
MD Viewer
|
||||
</div>
|
||||
<div class="page-header" style="text-align:center;">
|
||||
<div class="page-header" style="text-align:center;">
|
||||
<div class="inline-flex items-center gap-2 mb-3 px-3 py-1 rounded-full border dark:border-surface-600 border-gray-300 dark:bg-surface-800/60 bg-white/60 text-xs font-mono dark:text-gray-400 text-gray-500 tracking-wide">
|
||||
<span class="w-1.5 h-1.5 rounded-full bg-accent animate-pulse"></span>
|
||||
MD · GitHub Flavored
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<title>Парсер статей — WA Dev Tools</title>
|
||||
<script src="/vendor/tailwind.js"></script>
|
||||
<script>window.WA_TOOL_ID = 'parser';</script>
|
||||
<script src="/shared.js?v=2"></script>
|
||||
<script src="/shared.js?v=3"></script>
|
||||
<link href="/vendor/fonts.css" rel="stylesheet">
|
||||
<link href="/shared.css" rel="stylesheet">
|
||||
<style>
|
||||
@ -42,12 +42,7 @@
|
||||
<div class="tool-container relative z-10 max-w-3xl mx-auto">
|
||||
|
||||
<!-- Header -->
|
||||
<div class="text-center mb-8 fade-up">
|
||||
<div class="inline-flex items-center gap-2 mb-3 px-3 py-1 rounded-full border dark:border-surface-600 border-gray-300 dark:bg-surface-800/60 bg-white/60 text-xs font-mono dark:text-gray-400 text-gray-500 tracking-wide">
|
||||
<span class="w-1.5 h-1.5 rounded-full bg-accent animate-pulse"></span>
|
||||
URL Article Parser
|
||||
</div>
|
||||
<div class="page-header" style="text-align:center;">
|
||||
<div class="page-header" style="text-align:center;">
|
||||
<div class="inline-flex items-center gap-2 mb-3 px-3 py-1 rounded-full border dark:border-surface-600 border-gray-300 dark:bg-surface-800/60 bg-white/60 text-xs font-mono dark:text-gray-400 text-gray-500 tracking-wide">
|
||||
<span class="w-1.5 h-1.5 rounded-full bg-accent animate-pulse"></span>
|
||||
HTML · Readability · Meta
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Генератор паролей — WA Dev Tools</title>
|
||||
<script src="/vendor/tailwind.js"></script>
|
||||
<script src="/shared.js?v=2"></script>
|
||||
<script src="/shared.js?v=3"></script>
|
||||
<link href="/vendor/fonts.css" rel="stylesheet">
|
||||
<link href="/shared.css" rel="stylesheet">
|
||||
<script>window.WA_TOOL_ID = 'password';</script>
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<title>WA Dev Tools — PDF инструменты</title>
|
||||
<script src="/vendor/tailwind.js"></script>
|
||||
<script>window.WA_TOOL_ID = 'pdf';</script>
|
||||
<script src="/shared.js?v=2"></script>
|
||||
<script src="/shared.js?v=3"></script>
|
||||
<link href="/vendor/fonts.css" rel="stylesheet">
|
||||
<link href="/shared.css" rel="stylesheet">
|
||||
<style>
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<title>Placeholder — WA Dev Tools</title>
|
||||
<script src="/vendor/tailwind.js"></script>
|
||||
<script>window.WA_TOOL_ID = 'placeholder';</script>
|
||||
<script src="/shared.js?v=2"></script>
|
||||
<script src="/shared.js?v=3"></script>
|
||||
<link href="/vendor/fonts.css" rel="stylesheet">
|
||||
<link href="/shared.css" rel="stylesheet">
|
||||
<style>
|
||||
@ -41,12 +41,7 @@
|
||||
<div class="tool-container relative z-10 max-w-2xl mx-auto">
|
||||
|
||||
<!-- Header -->
|
||||
<div class="text-center mb-8 fade-up">
|
||||
<div class="inline-flex items-center gap-2 mb-3 px-3 py-1 rounded-full border dark:border-surface-600 border-gray-300 dark:bg-surface-800/60 bg-white/60 text-xs font-mono dark:text-gray-400 text-gray-500 tracking-wide">
|
||||
<span class="w-1.5 h-1.5 rounded-full bg-accent animate-pulse"></span>
|
||||
PNG · JPG · WebP
|
||||
</div>
|
||||
<div class="page-header" style="text-align:center;">
|
||||
<div class="page-header" style="text-align:center;">
|
||||
<div class="inline-flex items-center gap-2 mb-3 px-3 py-1 rounded-full border dark:border-surface-600 border-gray-300 dark:bg-surface-800/60 bg-white/60 text-xs font-mono dark:text-gray-400 text-gray-500 tracking-wide">
|
||||
<span class="w-1.5 h-1.5 rounded-full bg-accent animate-pulse"></span>
|
||||
PNG · JPG · WebP
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<title>Redirect Analyzer — WA Dev Tools</title>
|
||||
<script src="/vendor/tailwind.js"></script>
|
||||
<script>window.WA_TOOL_ID = 'redirects';</script>
|
||||
<script src="/shared.js?v=2"></script>
|
||||
<script src="/shared.js?v=3"></script>
|
||||
<link href="/vendor/fonts.css" rel="stylesheet">
|
||||
<link href="/shared.css" rel="stylesheet">
|
||||
<style>
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<title>HTML Sanitizer — WA Dev Tools</title>
|
||||
<script src="/vendor/tailwind.js"></script>
|
||||
<script>window.WA_TOOL_ID = 'sanitizer';</script>
|
||||
<script src="/shared.js?v=2"></script>
|
||||
<script src="/shared.js?v=3"></script>
|
||||
<link href="/vendor/fonts.css" rel="stylesheet">
|
||||
<link href="/shared.css" rel="stylesheet">
|
||||
<style>
|
||||
|
||||
@ -102,6 +102,20 @@ body {
|
||||
.wa-btn:disabled { opacity:0.5;cursor:not-allowed }
|
||||
.wa-card { background:var(--surface-700);border:1px solid var(--surface-600);border-radius:12px;padding:20px;transition:background .3s,border-color .3s }
|
||||
|
||||
/* Modal overlay */
|
||||
.wa-modal-overlay { position:fixed;inset:0;background:rgba(0,0,0,.5);backdrop-filter:blur(4px);z-index:1000;display:flex;align-items:center;justify-content:center;animation:fadeIn .15s ease-out }
|
||||
.wa-modal { background:var(--surface-700);border:1px solid var(--surface-600);border-radius:16px;padding:28px 24px;max-width:340px;width:90%;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.3);animation:slideUp .2s ease-out }
|
||||
.wa-modal h3 { font-size:17px;font-weight:700;color:var(--text-primary);margin-bottom:6px }
|
||||
.wa-modal p { font-size:13px;color:var(--text-muted);margin-bottom:20px }
|
||||
.wa-modal-actions { display:flex;gap:8px }
|
||||
.wa-modal-actions button { flex:1;padding:10px;border-radius:8px;font-family:'Manrope',sans-serif;font-weight:600;font-size:14px;cursor:pointer;border:none;transition:all .15s }
|
||||
.wa-modal-cancel { background:var(--surface-600);color:var(--text-secondary) }
|
||||
.wa-modal-cancel:hover { background:var(--surface-800) }
|
||||
.wa-modal-danger { background:#ef4444;color:#fff }
|
||||
.wa-modal-danger:hover { background:#dc2626 }
|
||||
@keyframes fadeIn { from{opacity:0} to{opacity:1} }
|
||||
@keyframes slideUp { from{opacity:0;transform:translateY(8px)} to{opacity:1;transform:translateY(0)} }
|
||||
|
||||
/* Top header (public pages: landing, auth, status) */
|
||||
.top-header { position:fixed;top:0;left:0;right:0;height:56px;background:var(--surface-800);border-bottom:1px solid var(--surface-600);display:flex;align-items:center;padding:0 24px;z-index:50;backdrop-filter:blur(12px) }
|
||||
.top-logo { font-size:18px;font-weight:800;color:var(--text-primary);text-decoration:none;display:flex;align-items:center;gap:8px }
|
||||
|
||||
@ -123,9 +123,7 @@ async function _loadUser() {
|
||||
container.style.display = 'block';
|
||||
|
||||
avatar.addEventListener('click', () => {
|
||||
if (confirm('Выйти из аккаунта?')) {
|
||||
window.location.href = '/auth/logout';
|
||||
}
|
||||
_showLogoutModal(user.name || user.email);
|
||||
});
|
||||
|
||||
// Show admin links for admin users
|
||||
@ -137,6 +135,24 @@ async function _loadUser() {
|
||||
} catch {}
|
||||
}
|
||||
|
||||
/* Logout modal */
|
||||
function _showLogoutModal(userName) {
|
||||
const overlay = document.createElement('div');
|
||||
overlay.className = 'wa-modal-overlay';
|
||||
overlay.innerHTML = `<div class="wa-modal">
|
||||
<h3>Выход из аккаунта</h3>
|
||||
<p>${userName}</p>
|
||||
<div class="wa-modal-actions">
|
||||
<button class="wa-modal-cancel" id="modalCancel">Отмена</button>
|
||||
<button class="wa-modal-danger" id="modalLogout">Выйти</button>
|
||||
</div>
|
||||
</div>`;
|
||||
document.body.appendChild(overlay);
|
||||
overlay.querySelector('#modalCancel').addEventListener('click', () => overlay.remove());
|
||||
overlay.querySelector('#modalLogout').addEventListener('click', () => { window.location.href = '/auth/logout'; });
|
||||
overlay.addEventListener('click', (e) => { if (e.target === overlay) overlay.remove(); });
|
||||
}
|
||||
|
||||
/* Theme management */
|
||||
function initTheme() {
|
||||
const html = document.documentElement;
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<title>SVG Editor — WA Dev Tools</title>
|
||||
<script src="/vendor/tailwind.js"></script>
|
||||
<script>window.WA_TOOL_ID = 'svgeditor';</script>
|
||||
<script src="/shared.js?v=2"></script>
|
||||
<script src="/shared.js?v=3"></script>
|
||||
<link href="/vendor/fonts.css" rel="stylesheet">
|
||||
<link href="/shared.css" rel="stylesheet">
|
||||
<script src="/vendor/opentype.min.js"></script>
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<title>WA Dev Tools — Видео конвертер</title>
|
||||
<script src="/vendor/tailwind.js"></script>
|
||||
<script>window.WA_TOOL_ID = 'video';</script>
|
||||
<script src="/shared.js?v=2"></script>
|
||||
<script src="/shared.js?v=3"></script>
|
||||
<link href="/vendor/fonts.css" rel="stylesheet">
|
||||
<link href="/shared.css" rel="stylesheet">
|
||||
<style>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user