Add admin management features and MongoDB setup scripts
- Created .vscode/settings.json for Python environment configuration. - Added run.sh script for MongoDB installation and project setup. - Implemented admin chat interface in admin_chats.html. - Developed invoice management interface in admin_invoices.html. - Created license management interface in admin_licenses.html. - Added support ticket management interface in admin_tickets.html. - Implemented user management interface in admin_users.html. - Developed user chat interface in chat.html. - Created user invoice overview in my_invoices.html. - Developed user license overview in my_licenses.html. - Added support ticket creation and tracking in tickets.html. - Created test.sh script for MongoDB setup.
This commit is contained in:
+114
-4
@@ -25,6 +25,8 @@
|
||||
--accent: #f28c28;
|
||||
--radius-md: 14px;
|
||||
--shadow-sm: 0 10px 30px rgba(17, 35, 50, 0.08);
|
||||
--shell-gutter: clamp(12px, 2.2vw, 34px);
|
||||
--shell-max-width: 100vw;
|
||||
}
|
||||
* { box-sizing: border-box; }
|
||||
|
||||
@@ -40,16 +42,39 @@
|
||||
var(--bg-main);
|
||||
}
|
||||
|
||||
h1, h2, h3, h4 {
|
||||
h1 {
|
||||
margin: 0;
|
||||
font-family: "Space Grotesk", system-ui, sans-serif;
|
||||
line-height: 1.08;
|
||||
font-size: clamp(1.75rem, 4.5vw, 4.2rem);
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin: 0;
|
||||
font-family: "Space Grotesk", system-ui, sans-serif;
|
||||
line-height: 1.08;
|
||||
font-size: clamp(1.4rem, 3.2vw, 3rem);
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin: 0;
|
||||
font-family: "Space Grotesk", system-ui, sans-serif;
|
||||
line-height: 1.08;
|
||||
font-size: clamp(1.1rem, 2.5vw, 2rem);
|
||||
}
|
||||
|
||||
h4 {
|
||||
margin: 0;
|
||||
font-family: "Space Grotesk", system-ui, sans-serif;
|
||||
line-height: 1.08;
|
||||
font-size: clamp(1rem, 1.8vw, 1.5rem);
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0;
|
||||
line-height: 1.55;
|
||||
color: var(--text-soft);
|
||||
font-size: clamp(0.95rem, 1.2vw, 1.1rem);
|
||||
}
|
||||
|
||||
a {
|
||||
@@ -63,7 +88,7 @@
|
||||
}
|
||||
|
||||
.site-shell {
|
||||
width: min(1240px, calc(100% - 2rem));
|
||||
width: min(var(--shell-max-width), calc(100% - (var(--shell-gutter) * 2)));
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
@@ -134,6 +159,56 @@
|
||||
background: linear-gradient(120deg, #0b5b89 0%, #0b4262 100%);
|
||||
}
|
||||
|
||||
.nav-dropdown {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.nav-dropdown > summary {
|
||||
list-style: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.nav-dropdown > summary::-webkit-details-marker {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.nav-dropdown > summary::after {
|
||||
content: "▾";
|
||||
margin-left: 0.45rem;
|
||||
font-size: 0.72rem;
|
||||
color: #57798f;
|
||||
}
|
||||
|
||||
.nav-dropdown[open] > summary::after {
|
||||
content: "▴";
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: calc(100% + 0.45rem);
|
||||
min-width: 220px;
|
||||
padding: 0.5rem;
|
||||
border-radius: 12px;
|
||||
border: 1px solid #ccdae5;
|
||||
background: #ffffff;
|
||||
box-shadow: 0 12px 24px rgba(16, 44, 62, 0.15);
|
||||
display: grid;
|
||||
gap: 0.35rem;
|
||||
z-index: 40;
|
||||
}
|
||||
|
||||
.dropdown-menu a {
|
||||
padding: 0.5rem 0.65rem;
|
||||
border-radius: 8px;
|
||||
font-weight: 600;
|
||||
color: #1a4865;
|
||||
}
|
||||
|
||||
.dropdown-menu a:hover {
|
||||
background: #f3f8fc;
|
||||
}
|
||||
|
||||
.main-wrap {
|
||||
padding: 2rem 0 3.4rem;
|
||||
}
|
||||
@@ -174,6 +249,12 @@
|
||||
padding: 0.42rem 0.72rem;
|
||||
font-size: 0.85rem;
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
right: auto;
|
||||
left: 0;
|
||||
min-width: 200px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
{% endblock %}
|
||||
@@ -190,11 +271,40 @@
|
||||
</div>
|
||||
<div class="nav-actions">
|
||||
{% if 'username' in session %}
|
||||
<a class="nav-btn" href="{{ url_for('blog') }}">Blog</a>
|
||||
<a class="nav-btn" href="{{ url_for('appointments') }}">Termin anfragen</a>
|
||||
|
||||
<details class="nav-dropdown">
|
||||
<summary class="nav-btn">Nutzerbereich</summary>
|
||||
<div class="dropdown-menu">
|
||||
<a href="{{ url_for('my_licenses') }}">Meine Lizenzen</a>
|
||||
<a href="{{ url_for('my_invoices') }}">Meine Rechnungen</a>
|
||||
<a href="{{ url_for('user_chat') }}">Chat mit Admin</a>
|
||||
<a href="{{ url_for('user_tickets') }}">Support Tickets</a>
|
||||
</div>
|
||||
</details>
|
||||
|
||||
<details class="nav-dropdown">
|
||||
<summary class="nav-btn">Inhalte</summary>
|
||||
<div class="dropdown-menu">
|
||||
<a href="{{ url_for('blog') }}">Blog</a>
|
||||
</div>
|
||||
</details>
|
||||
|
||||
{% if session.get('is_admin') %}
|
||||
<a class="nav-btn" href="{{ url_for('admin_dashboard') }}">Admin</a>
|
||||
<details class="nav-dropdown">
|
||||
<summary class="nav-btn">Admin</summary>
|
||||
<div class="dropdown-menu">
|
||||
<a href="{{ url_for('admin_dashboard') }}">Dashboard</a>
|
||||
<a href="{{ url_for('admin_users') }}">Userverwaltung</a>
|
||||
<a href="{{ url_for('admin_licenses') }}">Lizenzverwaltung</a>
|
||||
<a href="{{ url_for('admin_invoices') }}">Rechnungsverwaltung</a>
|
||||
<a href="{{ url_for('admin_chats') }}">Admin-Chat</a>
|
||||
<a href="{{ url_for('admin_tickets') }}">Support-Center</a>
|
||||
<a href="{{ url_for('admin_blog') }}">Blog verwalten</a>
|
||||
</div>
|
||||
</details>
|
||||
{% endif %}
|
||||
|
||||
<a class="nav-btn" href="{{ url_for('logout') }}">Logout</a>
|
||||
{% else %}
|
||||
<a class="nav-btn" href="{{ url_for('blog') }}">Blog</a>
|
||||
|
||||
Reference in New Issue
Block a user