From b96d5e4487e7dc5d3b7a25ad10a7fc068b84e067 Mon Sep 17 00:00:00 2001 From: Kobe Date: Tue, 10 Jun 2025 11:48:34 +0200 Subject: [PATCH] fix settings page --- routes/__pycache__/main.cpython-313.pyc | Bin 81888 -> 81995 bytes routes/main.py | 7 ++- static/js/events.js | 5 +++ static/js/mail-log.js | 18 +++++--- templates/main/instance_detail.html | 55 ++++++++++++++++++++++-- 5 files changed, 75 insertions(+), 10 deletions(-) diff --git a/routes/__pycache__/main.cpython-313.pyc b/routes/__pycache__/main.cpython-313.pyc index e97dc83f0bfd5781d29c2dc4d57e26cdee48b976..586c399a5ca4f4e93562c55e69038120e12f5f8b 100644 GIT binary patch delta 2105 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 QZ5bRg29v;~j%VtB01od>6951J diff --git a/routes/main.py b/routes/main.py index bc8c8ce..3ff969a 100644 --- a/routes/main.py +++ b/routes/main.py @@ -901,9 +901,14 @@ def init_routes(main_bp): def settings(): if not current_user.is_admin: flash('You do not have permission to access settings.', 'error') - return redirect(url_for('main.index')) + return redirect(url_for('main.home')) active_tab = request.args.get('tab', 'colors') + # Validate tab parameter + valid_tabs = ['colors', 'general', 'email_templates', 'mails', 'security', 'events', 'debugging', 'smtp'] + if active_tab not in valid_tabs: + active_tab = 'colors' + site_settings = SiteSettings.get_settings() company_form = CompanySettingsForm() diff --git a/static/js/events.js b/static/js/events.js index 453f527..3d7445f 100644 --- a/static/js/events.js +++ b/static/js/events.js @@ -1,4 +1,9 @@ document.addEventListener('DOMContentLoaded', function() { + // Only initialize if we're on the events tab + if (!document.getElementById('events-tab')?.classList.contains('active')) { + return; + } + // Initialize variables let currentPage = parseInt(document.getElementById('currentPage').textContent) || 1; let totalPages = parseInt(document.getElementById('totalPages').textContent) || 1; diff --git a/static/js/mail-log.js b/static/js/mail-log.js index 1152b06..ccbb011 100644 --- a/static/js/mail-log.js +++ b/static/js/mail-log.js @@ -50,13 +50,17 @@ function updateFilters() { // Build URL with current page number const currentPage = new URLSearchParams(window.location.search).get('page') || 1; - const url = `/settings/mails?page=${currentPage}&status=${status}&date_range=${dateRange}&user_id=${userId}&template_id=${templateId}`; + const url = `/settings?tab=mails&page=${currentPage}&status=${status}&date_range=${dateRange}&user_id=${userId}&template_id=${templateId}`; + + // Update URL with current filters + window.history.pushState({}, '', url); window.location.href = url; } function clearFilters() { - window.location.href = '/settings/mails'; + // Reset filters + window.location.href = '/settings?tab=mails'; } function changePage(page) { @@ -65,12 +69,16 @@ function changePage(page) { const userId = document.getElementById('userFilter').value; const templateId = document.getElementById('templateFilter').value; - window.location.href = `/settings/mails?page=${page}&status=${status}&date_range=${dateRange}&user_id=${userId}&template_id=${templateId}`; + // Update URL with new page + const url = `/settings?tab=mails&page=${page}&status=${status}&date_range=${dateRange}&user_id=${userId}&template_id=${templateId}`; + window.history.pushState({}, '', url); + + window.location.href = url; } function viewMailDetails(mailId) { const csrfToken = document.querySelector('meta[name="csrf-token"]').content; - fetch(`/settings/mails/${mailId}`, { + fetch(`/settings?tab=mails&mail_id=${mailId}`, { headers: { 'X-CSRF-Token': csrfToken } @@ -99,5 +107,5 @@ function downloadMailLog() { const userId = document.getElementById('userFilter').value; const templateId = document.getElementById('templateFilter').value; - window.location.href = `/settings/mails/download?status=${status}&date_range=${dateRange}&user_id=${userId}&template_id=${templateId}`; + window.location.href = `/settings?tab=mails&download=true&status=${status}&date_range=${dateRange}&user_id=${userId}&template_id=${templateId}`; } \ No newline at end of file diff --git a/templates/main/instance_detail.html b/templates/main/instance_detail.html index 7c6c964..76a7f64 100644 --- a/templates/main/instance_detail.html +++ b/templates/main/instance_detail.html @@ -3,6 +3,10 @@ {% block title %}{{ instance.name }} - DocuPulse{% endblock %} +{% block extra_css %} + +{% endblock %} + {% block content %} {{ header( title="Instance Details", @@ -75,10 +79,53 @@ - -
-
- + +
+
+ +
+
+
+ +
+
+ + Overview content will be available soon. +
+
+ + +
+
+ + Statistics content will be available soon. +
+
+ + +
+
+ + Settings content will be available soon. +
+
+