68 lines
3.5 KiB
HTML
68 lines
3.5 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="zh-CN">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1">
|
|
<title>WriteServer - Blog CMS</title>
|
|
<style>
|
|
:root{color-scheme:dark;--bg:#0f172a;--card:#1e293b;--text:#e2e8f0;--muted:#94a3b8;--accent:#38bdf8;--accent-hover:#7dd3fc;--danger:#fca5a5;--success:#86efac;--line:#334155}
|
|
*{box-sizing:border-box;margin:0;padding:0}
|
|
body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;min-height:100vh;padding:24px}
|
|
.container{max-width:900px;margin:0 auto}
|
|
h1{font-size:22px;font-weight:700;margin-bottom:4px}
|
|
.sub{font-size:14px;color:var(--muted);margin-bottom:24px}
|
|
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-bottom:24px}
|
|
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:20px}
|
|
.card-title{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:0.5px;margin-bottom:6px}
|
|
.card-value{font-size:28px;font-weight:700}
|
|
.card-value.blue{color:var(--accent)}
|
|
.links{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px}
|
|
a.btn{display:inline-block;padding:10px 20px;border-radius:8px;font-size:14px;font-weight:600;text-decoration:none;transition:all 0.15s}
|
|
a.btn-primary{background:var(--accent);color:#0f172a}
|
|
a.btn-primary:hover{background:var(--accent-hover)}
|
|
a.btn-secondary{background:transparent;border:1px solid var(--line);color:var(--text)}
|
|
a.btn-secondary:hover{background:rgba(255,255,255,0.05)}
|
|
.status{display:flex;align-items:center;gap:8px;font-size:14px;margin-bottom:16px}
|
|
.dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
|
|
.dot.green{background:var(--success);box-shadow:0 0 6px var(--success)}
|
|
.quick{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
|
|
.ql{padding:5px 12px;border-radius:6px;background:rgba(255,255,255,0.04);border:1px solid var(--line);color:var(--accent);text-decoration:none;font-size:12px;font-weight:500}
|
|
.ql:hover{background:rgba(255,255,255,0.08)}
|
|
.footer{margin-top:32px;text-align:center;font-size:12px;color:var(--muted)}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<h1>WriteServer</h1>
|
|
<p class="sub">Blog CMS - Go Edition</p>
|
|
<div class="status"><div class="dot green"></div><span>Server running</span></div>
|
|
<div class="grid">
|
|
<div class="card"><div class="card-title">Posts</div><div class="card-value blue" id="posts">-</div></div>
|
|
<div class="card"><div class="card-title">RSS Feeds</div><div class="card-value" id="feeds">-</div></div>
|
|
<div class="card"><div class="card-title">Links</div><div class="card-value" id="links">-</div></div>
|
|
<div class="card"><div class="card-title">Recycle Bin</div><div class="card-value" id="recycle">-</div></div>
|
|
</div>
|
|
<div class="links">
|
|
<a class="btn btn-primary" href="http://localhost:8017/">Open Admin Panel</a>
|
|
<a class="btn btn-secondary" href="/api/posts">API: Posts</a>
|
|
<a class="btn btn-secondary" href="/api/stats">API: Stats</a>
|
|
</div>
|
|
<div class="quick">
|
|
<a class="ql" href="/api/recycle">Recycle Bin</a>
|
|
<a class="ql" href="/api/rss/feeds">RSS Feeds</a>
|
|
<a class="ql" href="/api/rss/links">Links</a>
|
|
</div>
|
|
<div class="footer">WriteServer - Go</div>
|
|
</div>
|
|
<script>
|
|
fetch('/api/stats').then(r=>r.json()).then(d=>{
|
|
document.getElementById('posts').textContent=d.posts||0;
|
|
document.getElementById('feeds').textContent=d.feeds||0;
|
|
document.getElementById('links').textContent=d.links||0;
|
|
});
|
|
fetch('/api/recycle').then(r=>r.json()).then(d=>{
|
|
document.getElementById('recycle').textContent=Array.isArray(d.items)?d.items.length:0;
|
|
});
|
|
</script>
|
|
</body>
|
|
</html> |