Add complete user and reseller panel JS — all pages fully implemented

User panel (user.js): dashboard with usage rings, domains+SSL, email accounts+forwarders, databases, FTP, SSL manager, PHP switcher, cron jobs, file manager (edit/upload/chmod), stats
Reseller panel (reseller.js): dashboard, accounts list+search+suspend/terminate, create account form, packages CRUD, DNS zones editor
Both panels: dynamic sidebar nav using nova-icons.svg sprite, inline auth guard

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-07 06:08:32 +00:00
parent e3b166803a
commit 870ec062f0
4 changed files with 1140 additions and 115 deletions
+4 -3
View File
@@ -72,7 +72,7 @@ svg.ring circle { transition: stroke-dashoffset .5s; }
</head>
<body>
<div class="panel-layout" id="app" style="display:none">
<div class="panel-layout" id="main-layout" style="display:none">
<aside class="sidebar" id="sidebar">
<div class="sidebar-brand">
<svg class="logo-icon" viewBox="0 0 40 40" fill="none">
@@ -86,7 +86,7 @@ svg.ring circle { transition: stroke-dashoffset .5s; }
</svg>
<span class="logo-text">Nova<strong>CPX</strong></span>
</div>
<nav>
<nav id="sidebar-nav">
<div class="sidebar-section">
<div class="sidebar-section-label">My Account</div>
<a href="#" class="sidebar-link active" data-page="home">
@@ -196,9 +196,10 @@ svg.ring circle { transition: stroke-dashoffset .5s; }
</div>
<script src="/assets/js/nova.js"></script>
<script src="/assets/js/user.js"></script>
<script>
(async () => {
// Inline login on port 8880
// Legacy inline login form fallback (user.js handles auth-check div)
const loginForm = document.getElementById('login-form');
if (loginForm) {
loginForm.addEventListener('submit', async e => {