diff --git a/routes/__pycache__/main.cpython-313.pyc b/routes/__pycache__/main.cpython-313.pyc index e97dc83..586c399 100644 Binary files a/routes/__pycache__/main.cpython-313.pyc and b/routes/__pycache__/main.cpython-313.pyc differ 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 @@ - -