Update.
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{% block title %}Admin Panel{% endblock %} - MyWebdav</title>
|
||||
<link rel="stylesheet" href="/static/css/admin.css">
|
||||
<link rel="icon" type="image/png" href="/static/icons/icon-192x192.png">
|
||||
{% block extra_css %}{% endblock %}
|
||||
</head>
|
||||
<body>
|
||||
<div class="admin-container">
|
||||
<header class="admin-header">
|
||||
<div class="header-left">
|
||||
<button class="hamburger-btn" id="sidebar-toggle" aria-label="Toggle sidebar">
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
</button>
|
||||
<div class="admin-logo">
|
||||
<span class="logo-icon">◆</span>
|
||||
<span class="logo-text">My<span class="logo-accent">Webdav</span></span>
|
||||
<span class="admin-badge">Admin</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<span class="admin-user">{{ session.username }}</span>
|
||||
<a href="/manage/logout" class="btn btn-outline">Logout</a>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="admin-body">
|
||||
<aside class="admin-sidebar" id="admin-sidebar">
|
||||
<nav class="sidebar-nav">
|
||||
<a href="/manage/" class="nav-item {% if request.url.path == '/manage/' %}active{% endif %}">
|
||||
<span class="nav-icon">📊</span>
|
||||
<span class="nav-text">Dashboard</span>
|
||||
</a>
|
||||
<a href="/manage/users" class="nav-item {% if '/manage/users' in request.url.path %}active{% endif %}">
|
||||
<span class="nav-icon">👥</span>
|
||||
<span class="nav-text">Users</span>
|
||||
</a>
|
||||
<a href="/manage/payments" class="nav-item {% if '/manage/payments' in request.url.path %}active{% endif %}">
|
||||
<span class="nav-icon">💳</span>
|
||||
<span class="nav-text">Payments</span>
|
||||
</a>
|
||||
<a href="/manage/settings" class="nav-item {% if '/manage/settings' in request.url.path %}active{% endif %}">
|
||||
<span class="nav-icon">⚙️</span>
|
||||
<span class="nav-text">Settings</span>
|
||||
</a>
|
||||
</nav>
|
||||
<div class="sidebar-footer">
|
||||
<a href="/" class="nav-item">
|
||||
<span class="nav-icon">🌐</span>
|
||||
<span class="nav-text">View Site</span>
|
||||
</a>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
<div class="sidebar-overlay" id="sidebar-overlay"></div>
|
||||
|
||||
<main class="admin-main">
|
||||
{% if request.query_params.get('success') %}
|
||||
<div class="alert alert-success">Changes saved successfully.</div>
|
||||
{% endif %}
|
||||
{% if request.query_params.get('error') %}
|
||||
<div class="alert alert-error">
|
||||
{% if request.query_params.get('error') == 'csrf' %}
|
||||
Security token expired. Please try again.
|
||||
{% elif request.query_params.get('error') == 'not_found' %}
|
||||
Item not found.
|
||||
{% else %}
|
||||
An error occurred. Please try again.
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if request.query_params.get('deleted') %}
|
||||
<div class="alert alert-success">Item deleted successfully.</div>
|
||||
{% endif %}
|
||||
{% block content %}{% endblock %}
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const sidebarToggle = document.getElementById('sidebar-toggle');
|
||||
const sidebar = document.getElementById('admin-sidebar');
|
||||
const overlay = document.getElementById('sidebar-overlay');
|
||||
|
||||
function toggleSidebar() {
|
||||
sidebar.classList.toggle('open');
|
||||
overlay.classList.toggle('visible');
|
||||
document.body.classList.toggle('sidebar-open');
|
||||
}
|
||||
|
||||
sidebarToggle.addEventListener('click', toggleSidebar);
|
||||
overlay.addEventListener('click', toggleSidebar);
|
||||
|
||||
document.querySelectorAll('.nav-item').forEach(item => {
|
||||
item.addEventListener('click', () => {
|
||||
if (window.innerWidth < 768) {
|
||||
sidebar.classList.remove('open');
|
||||
overlay.classList.remove('visible');
|
||||
document.body.classList.remove('sidebar-open');
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{% block extra_js %}{% endblock %}
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user