From fd2a572d06c4b0607f7e8c2859d979200c669d62 Mon Sep 17 00:00:00 2001 From: A R R R Associates Date: Wed, 5 Aug 2026 06:48:05 +0530 Subject: [PATCH] Reorganize partner menu and retain dashboard views --- .../components/partner_navigation_v2.html | 204 +++++++++++++++--- 1 file changed, 170 insertions(+), 34 deletions(-) diff --git a/app/ui/templates/components/partner_navigation_v2.html b/app/ui/templates/components/partner_navigation_v2.html index b19403c..415a2fb 100644 --- a/app/ui/templates/components/partner_navigation_v2.html +++ b/app/ui/templates/components/partner_navigation_v2.html @@ -1,7 +1,8 @@ {% if navigation_render_location_v2|default('page') == 'global-host' or not global_role_navigation_host_v2|default(false) %} {# - UI/UX V2 Phase 1D.7 — Partner client and engagement creation entry points. - Presentation only. Existing routes and route-level permissions remain authoritative. + Partner operations navigation. + Presentation only: all links use existing production routes and route-level permissions remain authoritative. + Existing Partner dashboard tabs are retained and organised under their operational modules. #} {% set _partner_path = request.url.path %} {% set _partner_tab = request.query_params.get('tab', 'overview') %} @@ -10,68 +11,203 @@ { 'label': 'Dashboard', 'visible': true, - 'active': _partner_path.startswith('/partner/dashboard'), + 'active': _partner_path.startswith('/partner/dashboard') and _partner_tab in ['overview', 'branch-work'], 'children': [ - {'label': 'Overview', 'url': '/partner/dashboard?tab=overview', 'active': _partner_path.startswith('/partner/dashboard') and _partner_tab == 'overview'}, - {'label': 'Branch Work', 'url': '/partner/dashboard?tab=branch-work', 'active': _partner_path.startswith('/partner/dashboard') and _partner_tab == 'branch-work'}, - {'label': 'Clients', 'url': '/partner/dashboard?tab=clients', 'active': _partner_path.startswith('/partner/dashboard') and _partner_tab == 'clients'}, - {'label': 'Staff', 'url': '/partner/dashboard?tab=staff', 'active': _partner_path.startswith('/partner/dashboard') and _partner_tab == 'staff'}, - {'label': 'Review', 'url': '/partner/dashboard?tab=review', 'active': _partner_path.startswith('/partner/dashboard') and _partner_tab == 'review'}, - {'label': 'Billing', 'url': '/partner/dashboard?tab=billing', 'active': _partner_path.startswith('/partner/dashboard') and _partner_tab == 'billing'}, - {'label': 'Reports', 'url': '/partner/dashboard?tab=reports', 'active': _partner_path.startswith('/partner/dashboard') and _partner_tab == 'reports'}, - {'label': 'Wizards', 'url': '/partner/dashboard?tab=wizards', 'active': _partner_path.startswith('/partner/dashboard') and _partner_tab == 'wizards'} + { + 'label': 'Overview Matrix', + 'url': '/partner/dashboard?tab=overview', + 'active': _partner_path.startswith('/partner/dashboard') and _partner_tab == 'overview' + }, + { + 'label': 'Branch Work', + 'url': '/partner/dashboard?tab=branch-work', + 'active': _partner_path.startswith('/partner/dashboard') and _partner_tab == 'branch-work' + } ] }, { 'label': 'Review Board', - 'url': '/partner/reviews', 'visible': true, - 'active': _partner_path.startswith('/partner/reviews') + 'active': _partner_path.startswith('/partner/reviews') or (_partner_path.startswith('/partner/dashboard') and _partner_tab in ['review', 'escalations']), + 'children': [ + { + 'label': 'Review Overview', + 'url': '/partner/dashboard?tab=review', + 'active': _partner_path.startswith('/partner/dashboard') and _partner_tab == 'review' + }, + { + 'label': 'Reviews', + 'url': '/partner/reviews', + 'active': _partner_path.startswith('/partner/reviews') + }, + { + 'label': 'Escalations & Ageing', + 'url': '/partner/dashboard?tab=escalations', + 'active': _partner_path.startswith('/partner/dashboard') and _partner_tab == 'escalations' + } + ] }, { - 'label': 'My Clients', + 'label': 'Clients', 'visible': true, - 'active': _partner_path.startswith('/partner/clients') or _partner_path.startswith('/clients'), + 'active': (_partner_path.startswith('/partner/dashboard') and _partner_tab == 'clients') or _partner_path.startswith('/partner/clients') or _partner_path.startswith('/clients') or _partner_path.startswith('/documents/permanent'), 'children': [ - {'label': 'Client Portfolio', 'url': '/partner/clients', 'active': _partner_path.startswith('/partner/clients')}, - {'label': 'Add Client', 'url': '/clients/new', 'active': _partner_path == '/clients/new'} + { + 'label': 'Client Overview', + 'url': '/partner/dashboard?tab=clients', + 'active': _partner_path.startswith('/partner/dashboard') and _partner_tab == 'clients' + }, + { + 'label': 'Clients List', + 'url': '/partner/clients', + 'active': _partner_path.startswith('/partner/clients') + }, + { + 'label': 'Add Client', + 'url': '/clients/new', + 'active': _partner_path == '/clients/new' + }, + { + 'label': 'Permanent Docs', + 'url': '/documents/permanent', + 'active': _partner_path.startswith('/documents/permanent') + } ] }, { 'label': 'Engagements', 'visible': true, - 'active': _partner_path.startswith('/services/engagements'), + 'active': _partner_path.startswith('/services/engagements') or _partner_path.startswith('/services/bulk-imports'), 'children': [ - {'label': 'All Engagements', 'url': '/services/engagements', 'active': _partner_path == '/services/engagements'}, - {'label': 'Assign Service', 'url': '/services/engagements/new', 'active': _partner_path == '/services/engagements/new'} + { + 'label': 'All Engagements', + 'url': '/services/engagements', + 'active': _partner_path == '/services/engagements' or (_partner_path.startswith('/services/engagements/') and _partner_path != '/services/engagements/new' and _partner_path != '/services/engagements/bulk-new') + }, + { + 'label': 'Assign Services', + 'url': '/services/engagements/new', + 'active': _partner_path == '/services/engagements/new' + }, + { + 'label': 'Bulk Setup', + 'url': '/services/engagements/bulk-new', + 'active': _partner_path == '/services/engagements/bulk-new' + }, + { + 'label': 'Bulk Excel', + 'url': '/services/bulk-imports', + 'active': _partner_path.startswith('/services/bulk-imports') + } ] }, { 'label': 'Staff', 'visible': true, - 'active': _partner_path.startswith('/employees'), + 'active': (_partner_path.startswith('/partner/dashboard') and _partner_tab == 'staff') or _partner_path.startswith('/employees'), 'children': [ - {'label': 'Staff List', 'url': '/employees', 'active': _partner_path == '/employees'}, - {'label': 'Add Staff', 'url': '/employees/new', 'active': _partner_path == '/employees/new'} + { + 'label': 'Workload', + 'url': '/partner/dashboard?tab=staff', + 'active': _partner_path.startswith('/partner/dashboard') and _partner_tab == 'staff' + }, + { + 'label': 'Staff List', + 'url': '/employees', + 'active': _partner_path == '/employees' or (_partner_path.startswith('/employees/') and _partner_path != '/employees/new') + }, + { + 'label': 'Add Staff', + 'url': '/employees/new', + 'active': _partner_path == '/employees/new' + } ] }, - { - 'label': 'Documents', - 'url': '/documents', - 'visible': true, - 'active': _partner_path.startswith('/documents') - }, { 'label': 'Billing', - 'url': '/billing', 'visible': true, - 'active': _partner_path.startswith('/billing') + 'active': (_partner_path.startswith('/partner/dashboard') and _partner_tab == 'billing') or _partner_path.startswith('/billing'), + 'children': [ + { + 'label': 'Billing Overview', + 'url': '/partner/dashboard?tab=billing', + 'active': _partner_path.startswith('/partner/dashboard') and _partner_tab == 'billing' + }, + { + 'label': 'New Invoice', + 'url': '/billing/new', + 'active': _partner_path == '/billing/new' or _partner_path == '/billing/invoices/new' + }, + { + 'label': 'Generate Bills', + 'url': '/billing/generate', + 'active': _partner_path == '/billing/generate' + }, + { + 'label': 'Fee Structure', + 'url': '/billing/fee-structures/list', + 'active': _partner_path == '/billing/fee-structures/list' + }, + { + 'label': 'Fee Templates', + 'url': '/billing/fee-structures/template', + 'active': false + }, + { + 'label': 'Bulk Fee Import', + 'url': '/billing/fee-structures/import', + 'active': _partner_path.startswith('/billing/fee-structures/import') + }, + { + 'label': 'Payments', + 'url': '/billing/payments', + 'active': _partner_path.startswith('/billing/payments') or (_partner_path.startswith('/billing/') and _partner_path.endswith('/payments/new')) + }, + { + 'label': 'Bill Settings', + 'url': '/billing/settings', + 'active': _partner_path.startswith('/billing/settings') + } + ] }, { - 'label': 'Bank Analyzer', - 'url': '/tools/bank-statement-analyzer', + 'label': 'Reports', 'visible': true, - 'active': _partner_path.startswith('/tools/bank-statement-analyzer') + 'active': _partner_path.startswith('/partner/dashboard') and _partner_tab == 'reports', + 'children': [ + { + 'label': 'Reports Centre', + 'url': '/partner/dashboard?tab=reports', + 'active': _partner_path.startswith('/partner/dashboard') and _partner_tab == 'reports' + } + ] + }, + { + 'label': 'Tools', + 'visible': true, + 'active': (_partner_path.startswith('/partner/dashboard') and _partner_tab == 'wizards') or _partner_path.startswith('/tools/bank-statement-analyzer') or _partner_path.startswith('/documents/storage-nodes') or _partner_path.startswith('/documents/storage-jobs'), + 'children': [ + { + 'label': 'Bank Analyzer', + 'url': '/tools/bank-statement-analyzer', + 'active': _partner_path.startswith('/tools/bank-statement-analyzer') + }, + { + 'label': 'Storage Nodes', + 'url': '/documents/storage-nodes', + 'active': _partner_path.startswith('/documents/storage-nodes') + }, + { + 'label': 'Storage Jobs', + 'url': '/documents/storage-jobs', + 'active': _partner_path.startswith('/documents/storage-jobs') + }, + { + 'label': 'Setup Wizards', + 'url': '/partner/dashboard?tab=wizards', + 'active': _partner_path.startswith('/partner/dashboard') and _partner_tab == 'wizards' + } + ] }, { 'label': 'Alerts',