From d17cadabf09f3cf17b7028617b73c6f4a6a99eb4 Mon Sep 17 00:00:00 2001 From: gsinghpal Date: Sun, 17 May 2026 13:38:25 -0400 Subject: [PATCH] feat(portal): sidebar shell template + portal.portal_layout inherit fp_portal_shell wraps every /my/* page (FP custom + Odoo default) in a sticky-sidebar shell with no per-template edits. Sidebar markup is a separate fp_portal_sidebar template that reads fp_sidebar_items + fp_partner_display_name from the page context. Approach D ($0 re-emit) used instead of plan's unbalanced-xpath approach: position="replace" on //div[@id='wrap'] with $0 inside
causes Odoo's Python inheritance engine to re-emit the original #wrap node (verified in tools/template_inheritance.py lines 162-169). Every xpath block is well-formed XML. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../fusion_plating_portal/__manifest__.py | 1 + .../views/fp_portal_shell.xml | 106 ++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 fusion_plating/fusion_plating_portal/views/fp_portal_shell.xml diff --git a/fusion_plating/fusion_plating_portal/__manifest__.py b/fusion_plating/fusion_plating_portal/__manifest__.py index 375b896a..43b3f8ce 100644 --- a/fusion_plating/fusion_plating_portal/__manifest__.py +++ b/fusion_plating/fusion_plating_portal/__manifest__.py @@ -55,6 +55,7 @@ Copyright (c) 2026 Nexa Systems Inc. All rights reserved. 'security/fp_portal_security.xml', 'security/ir.model.access.csv', 'data/fp_sequence_data.xml', + 'views/fp_portal_shell.xml', 'views/fp_portal_macros.xml', 'views/fp_quote_request_views.xml', 'views/fp_portal_dashboard.xml', diff --git a/fusion_plating/fusion_plating_portal/views/fp_portal_shell.xml b/fusion_plating/fusion_plating_portal/views/fp_portal_shell.xml new file mode 100644 index 00000000..7b296663 --- /dev/null +++ b/fusion_plating/fusion_plating_portal/views/fp_portal_shell.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + +