Es scheint, dass Sie eine Reihe von Dateien und Verzeichnissen in einem Backend-Projekt bearbeitet haben. Hier ist eine Zusammenfassung der Änderungen:
This commit is contained in:
@ -68,19 +68,19 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
|
||||
<!-- Navigation Links ohne JavaScript -->
|
||||
<div class="flex flex-wrap justify-center gap-4 mt-8">
|
||||
<a href="{{ url_for('admin_users') }}" class="inline-flex items-center px-6 py-3 bg-white/10 backdrop-blur-sm border border-white/20 rounded-xl text-white hover:bg-white/20 transition-all duration-300 hover:scale-105">
|
||||
<a href="{{ url_for('admin.users_overview') }}" class="inline-flex items-center px-6 py-3 bg-white/10 backdrop-blur-sm border border-white/20 rounded-xl text-white hover:bg-white/20 transition-all duration-300 hover:scale-105">
|
||||
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M13 7a4 4 0 11-8 0 4 4 0 018 0z"/>
|
||||
</svg>
|
||||
Benutzer verwalten
|
||||
</a>
|
||||
<a href="{{ url_for('admin_printers') }}" class="inline-flex items-center px-6 py-3 bg-white/10 backdrop-blur-sm border border-white/20 rounded-xl text-white hover:bg-white/20 transition-all duration-300 hover:scale-105">
|
||||
<a href="{{ url_for('admin.printers_overview') }}" class="inline-flex items-center px-6 py-3 bg-white/10 backdrop-blur-sm border border-white/20 rounded-xl text-white hover:bg-white/20 transition-all duration-300 hover:scale-105">
|
||||
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 17h2a2 2 0 002-2v-4a2 2 0 00-2-2H5a2 2 0 00-2 2v4a2 2 0 002 2m2 4h6a2 2 0 002-2v-4a2 2 0 00-2-2H9a2 2 0 00-2 2v4a2 2 0 002 2zm8-12V5a2 2 0 00-2-2H9a2 2 0 00-2 2v4h10z"/>
|
||||
</svg>
|
||||
Drucker verwalten
|
||||
</a>
|
||||
<a href="{{ url_for('admin_system') }}" class="inline-flex items-center px-6 py-3 bg-white/10 backdrop-blur-sm border border-white/20 rounded-xl text-white hover:bg-white/20 transition-all duration-300 hover:scale-105">
|
||||
<a href="{{ url_for('admin.system_health') }}" class="inline-flex items-center px-6 py-3 bg-white/10 backdrop-blur-sm border border-white/20 rounded-xl text-white hover:bg-white/20 transition-all duration-300 hover:scale-105">
|
||||
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"/>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"/>
|
||||
@ -105,7 +105,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
</svg>
|
||||
</div>
|
||||
<div class="text-right">
|
||||
<div class="text-2xl font-bold text-slate-900 dark:text-white">{{ stats.total_users or 0 }}</div>
|
||||
<div class="text-2xl font-bold text-slate-900 dark:text-white">{{ stats['total_users'] or 0 }}</div>
|
||||
<div class="text-sm text-slate-500 dark:text-slate-400">Registrierte Benutzer</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -120,8 +120,8 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
</svg>
|
||||
</div>
|
||||
<div class="text-right">
|
||||
<div class="text-2xl font-bold text-slate-900 dark:text-white">{{ stats.total_printers or 0 }}</div>
|
||||
<div class="text-sm text-green-500">{{ stats.online_printers or 0 }} online</div>
|
||||
<div class="text-2xl font-bold text-slate-900 dark:text-white">{{ stats['total_printers'] or 0 }}</div>
|
||||
<div class="text-sm text-green-500">{{ stats['online_printers'] or 0 }} online</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -135,8 +135,8 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
</svg>
|
||||
</div>
|
||||
<div class="text-right">
|
||||
<div class="text-2xl font-bold text-slate-900 dark:text-white">{{ stats.active_jobs or 0 }}</div>
|
||||
<div class="text-sm text-slate-500 dark:text-slate-400">{{ stats.queued_jobs or 0 }} in Warteschlange</div>
|
||||
<div class="text-2xl font-bold text-slate-900 dark:text-white">{{ stats['active_jobs'] or 0 }}</div>
|
||||
<div class="text-sm text-slate-500 dark:text-slate-400">{{ stats['total_jobs'] or 0 }} gesamt</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -150,7 +150,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
</svg>
|
||||
</div>
|
||||
<div class="text-right">
|
||||
<div class="text-2xl font-bold text-slate-900 dark:text-white">{{ stats.success_rate or 0 }}%</div>
|
||||
<div class="text-2xl font-bold text-slate-900 dark:text-white">{{ stats['online_printers'] or 0 }}</div>
|
||||
<div class="text-sm text-green-500">Stabil</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -160,7 +160,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
<!-- Navigation Tabs -->
|
||||
<div class="bg-white/80 dark:bg-slate-800/80 backdrop-blur-xl rounded-3xl border border-white/20 dark:border-slate-700/50 p-4 mb-12 shadow-xl">
|
||||
<nav class="flex flex-wrap gap-2" aria-label="Tabs">
|
||||
<a href="{{ url_for('admin_users') }}"
|
||||
<a href="{{ url_for('admin.users_overview') }}"
|
||||
class="flex items-center px-6 py-3 text-sm font-medium rounded-xl transition-all duration-300 {{ 'bg-gradient-to-r from-blue-500 to-blue-600 text-white shadow-lg' if active_tab == 'users' else 'text-slate-600 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-700/50 hover:text-slate-900 dark:hover:text-white' }}">
|
||||
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M13 7a4 4 0 11-8 0 4 4 0 018 0z"/>
|
||||
@ -168,7 +168,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
Benutzer
|
||||
</a>
|
||||
|
||||
<a href="{{ url_for('admin_printers') }}"
|
||||
<a href="{{ url_for('admin.printers_overview') }}"
|
||||
class="flex items-center px-6 py-3 text-sm font-medium rounded-xl transition-all duration-300 {{ 'bg-gradient-to-r from-blue-500 to-blue-600 text-white shadow-lg' if active_tab == 'printers' else 'text-slate-600 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-700/50 hover:text-slate-900 dark:hover:text-white' }}">
|
||||
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 17h2a2 2 0 002-2v-4a2 2 0 00-2-2H5a2 2 0 00-2 2v4a2 2 0 002 2m2 4h6a2 2 0 002-2v-4a2 2 0 00-2-2H9a2 2 0 00-2 2v4a2 2 0 002 2zm8-12V5a2 2 0 00-2-2H9a2 2 0 00-2 2v4h10z"/>
|
||||
@ -184,7 +184,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
Aufträge
|
||||
</a>
|
||||
|
||||
<a href="{{ url_for('admin_system') }}"
|
||||
<a href="{{ url_for('admin.system_health') }}"
|
||||
class="flex items-center px-6 py-3 text-sm font-medium rounded-xl transition-all duration-300 {{ 'bg-gradient-to-r from-blue-500 to-blue-600 text-white shadow-lg' if active_tab == 'system' else 'text-slate-600 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-700/50 hover:text-slate-900 dark:hover:text-white' }}">
|
||||
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"/>
|
||||
@ -193,7 +193,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
System
|
||||
</a>
|
||||
|
||||
<a href="{{ url_for('admin_logs') }}"
|
||||
<a href="{{ url_for('admin.logs_overview') }}"
|
||||
class="flex items-center px-6 py-3 text-sm font-medium rounded-xl transition-all duration-300 {{ 'bg-gradient-to-r from-blue-500 to-blue-600 text-white shadow-lg' if active_tab == 'logs' else 'text-slate-600 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-700/50 hover:text-slate-900 dark:hover:text-white' }}">
|
||||
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/>
|
||||
@ -215,13 +215,13 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
|
||||
<!-- Schnellzugriff -->
|
||||
<div class="mt-8 grid grid-cols-2 gap-4">
|
||||
<a href="{{ url_for('admin_add_user') }}" class="p-4 bg-blue-50 dark:bg-blue-900/20 rounded-xl border border-blue-200 dark:border-blue-800 hover:bg-blue-100 dark:hover:bg-blue-900/30 transition-colors">
|
||||
<a href="{{ url_for('admin.add_user_page') }}" class="p-4 bg-blue-50 dark:bg-blue-900/20 rounded-xl border border-blue-200 dark:border-blue-800 hover:bg-blue-100 dark:hover:bg-blue-900/30 transition-colors">
|
||||
<svg class="w-6 h-6 mx-auto text-blue-600 dark:text-blue-400 mb-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18 9v3m0 0v3m0-3h3m-3 0h-3m-2-5a4 4 0 11-8 0 4 4 0 018 0zM3 20a6 6 0 0112 0v1H3v-1z"/>
|
||||
</svg>
|
||||
<span class="text-sm font-medium text-blue-900 dark:text-blue-300">Benutzer hinzufügen</span>
|
||||
</a>
|
||||
<a href="{{ url_for('admin_add_printer') }}" class="p-4 bg-green-50 dark:bg-green-900/20 rounded-xl border border-green-200 dark:border-green-800 hover:bg-green-100 dark:hover:bg-green-900/30 transition-colors">
|
||||
<a href="{{ url_for('admin.add_printer_page') }}" class="p-4 bg-green-50 dark:bg-green-900/20 rounded-xl border border-green-200 dark:border-green-800 hover:bg-green-100 dark:hover:bg-green-900/30 transition-colors">
|
||||
<svg class="w-6 h-6 mx-auto text-green-600 dark:text-green-400 mb-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6v6m0 0v6m0-6h6m-6 0H6"/>
|
||||
</svg>
|
||||
@ -246,28 +246,31 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
</h3>
|
||||
|
||||
<div class="space-y-2">
|
||||
<form method="POST" action="{{ url_for('maintenance_action', action='clear_cache') }}" class="w-full">
|
||||
{{ csrf_token() }}
|
||||
<form method="POST" action="{{ url_for('admin.maintenance') }}" class="w-full">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
|
||||
<input type="hidden" name="action" value="clear_cache"/>
|
||||
<button type="submit" class="w-full px-3 py-2 bg-blue-500 text-white rounded-lg hover:bg-blue-600 transition-colors text-xs font-medium">
|
||||
🗑️ Cache leeren
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<form method="POST" action="{{ url_for('maintenance_action', action='optimize_db') }}" class="w-full">
|
||||
{{ csrf_token() }}
|
||||
<form method="POST" action="{{ url_for('admin.maintenance') }}" class="w-full">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
|
||||
<input type="hidden" name="action" value="optimize_db"/>
|
||||
<button type="submit" class="w-full px-3 py-2 bg-green-500 text-white rounded-lg hover:bg-green-600 transition-colors text-xs font-medium">
|
||||
🔧 DB optimieren
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<form method="POST" action="{{ url_for('maintenance_action', action='create_backup') }}" class="w-full">
|
||||
{{ csrf_token() }}
|
||||
<form method="POST" action="{{ url_for('admin.maintenance') }}" class="w-full">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
|
||||
<input type="hidden" name="action" value="create_backup"/>
|
||||
<button type="submit" class="w-full px-3 py-2 bg-purple-500 text-white rounded-lg hover:bg-purple-600 transition-colors text-xs font-medium">
|
||||
💾 Backup
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<a href="{{ url_for('admin_advanced_settings') }}" class="block w-full px-3 py-2 bg-slate-500 text-white rounded-lg hover:bg-slate-600 transition-colors text-xs font-medium text-center">
|
||||
<a href="{{ url_for('admin.advanced_settings') }}" class="block w-full px-3 py-2 bg-slate-500 text-white rounded-lg hover:bg-slate-600 transition-colors text-xs font-medium text-center">
|
||||
⚙️ Erweiterte Einstellungen
|
||||
</a>
|
||||
</div>
|
||||
|
@ -165,7 +165,7 @@
|
||||
|
||||
<!-- Hauptformular -->
|
||||
<div class="admin-form-container rounded-2xl p-8 transition-all duration-300">
|
||||
<form id="userForm" action="{{ url_for('admin.create_user_api') }}" method="POST" class="space-y-8">
|
||||
<form id="userForm" action="{{ url_for('admin_api.create_user_api') }}" method="POST" class="space-y-8">
|
||||
<!-- CSRF Token -->
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
|
||||
|
||||
|
@ -234,7 +234,7 @@ input:checked + .toggle-slider:before {
|
||||
|
||||
<!-- Modern Form with Glass Effect -->
|
||||
<div class="glass-card rounded-3xl p-10 shadow-2xl">
|
||||
<form method="POST" action="{{ url_for('admin.update_user_api', user_id=user.id) }}" class="space-y-8" id="userEditForm">
|
||||
<form method="POST" action="{{ url_for('admin_api.update_user_api', user_id=user.id) }}" class="space-y-8" id="userEditForm">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
|
||||
<input type="hidden" name="_method" value="PUT"/>
|
||||
|
||||
|
@ -29,7 +29,7 @@
|
||||
|
||||
<!-- Form -->
|
||||
<div class="bg-white dark:bg-slate-800 rounded-2xl shadow-xl p-8">
|
||||
<form method="POST" action="{{ url_for('admin.update_printer_api', printer_id=printer.id) }}" class="space-y-6">
|
||||
<form method="POST" action="{{ url_for('admin_api.update_printer_api', printer_id=printer.id) }}" class="space-y-6">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
|
||||
<input type="hidden" name="_method" value="PUT"/>
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user