Merge pull request #89 from expsa/odex_sidebar_menu_updates

Odex sidebar menu updates
This commit is contained in:
Tahir Hassan 2026-01-20 14:24:44 +04:00 committed by GitHub
commit 2780caf8b3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 31 additions and 14 deletions

View File

@ -67,7 +67,6 @@ window.expertThemeApplyColors = async function() {
root.style.setProperty(property, value); root.style.setProperty(property, value);
} }
}); });
console.log('Expert Theme colors applied successfully!');
} }
} catch (error) { } catch (error) {
console.error('Error applying Expert Theme colors:', error); console.error('Error applying Expert Theme colors:', error);

View File

@ -31,6 +31,7 @@
'base', 'base',
], ],
'data': [ 'data': [
'data/system_parameters.xml',
'views/res_config_settings.xml', 'views/res_config_settings.xml',
], ],
'assets': { 'assets': {

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo noupdate="1">
<record id="odex_sidebar_backend_theme2_backend_odex_support_team_link" model="ir.config_parameter">
<field name="key">odex_sidebar_backend_theme2.odex_support_team_link</field>
<field name="value">https://odex.sa/support</field>
</record>
</odoo>

View File

@ -98,5 +98,10 @@ class ResConfigSettings(models.TransientModel):
sidebar_enabled = IrConfigParam.get_param('odex_sidebar_backend_theme2.sidebar_menu_enable') == 'True' sidebar_enabled = IrConfigParam.get_param('odex_sidebar_backend_theme2.sidebar_menu_enable') == 'True'
sidebar_icon_url = IrConfigParam.get_param('odex_sidebar_backend_theme2.sidebar_menu_icon_url') sidebar_icon_url = IrConfigParam.get_param('odex_sidebar_backend_theme2.sidebar_menu_icon_url')
uncollapsed_sidebar_overlay = IrConfigParam.get_param('odex_sidebar_backend_theme2.uncollapsed_sidebar_overlay') == 'True' uncollapsed_sidebar_overlay = IrConfigParam.get_param('odex_sidebar_backend_theme2.uncollapsed_sidebar_overlay') == 'True'
support_team_link = IrConfigParam.get_param('odex_sidebar_backend_theme2.odex_support_team_link') or 'https://odex.sa/support'
return {'sidebar_enabled': sidebar_enabled, 'sidebar_icon_url': sidebar_icon_url, 'uncollapsed_sidebar_overlay': uncollapsed_sidebar_overlay} return {'sidebar_enabled': sidebar_enabled,
'sidebar_icon_url': sidebar_icon_url,
'uncollapsed_sidebar_overlay': uncollapsed_sidebar_overlay,
'support_team_link': support_team_link
}

View File

@ -41,7 +41,6 @@ export class MenuItem extends Component {
// Use xmlid if available, otherwise use name as a stable identifier // Use xmlid if available, otherwise use name as a stable identifier
const uniqueId = menu.xmlid || menu.name || menu.id; const uniqueId = menu.xmlid || menu.name || menu.id;
localStorage.setItem('odex_sidebar_active_menu', uniqueId); localStorage.setItem('odex_sidebar_active_menu', uniqueId);
console.log('Saved menu:', uniqueId, menu.name);
} catch (e) { } catch (e) {
console.error('Storage error:', e); console.error('Storage error:', e);
} }

View File

@ -20,8 +20,6 @@ export function loadSidebarCSS() {
} }
); );
console.log('Fetched sidebar CSS:', css);
if (css && css.trim()) { if (css && css.trim()) {
// Create a style element and inject the CSS // Create a style element and inject the CSS
const style = document.createElement('style'); const style = document.createElement('style');
@ -29,7 +27,7 @@ export function loadSidebarCSS() {
style.id = 'sidebar-dynamic-css'; style.id = 'sidebar-dynamic-css';
style.innerHTML = css; style.innerHTML = css;
document.head.appendChild(style); document.head.appendChild(style);
console.log('Sidebar CSS injected successfully'); console.error('Error loading sidebar CSS:', error);
} }
} catch (error) { } catch (error) {
console.error('Error loading sidebar CSS:', error); console.error('Error loading sidebar CSS:', error);
@ -45,9 +43,9 @@ export function loadSidebarCSS() {
} }
// Initialize on module load // Initialize on module load
registry.category("web_tour.tours").add("sidebar_css_loader", { // registry.category("web_tour.tours").add("sidebar_css_loader", {
steps: [], // steps: [],
}); // });
// Auto-load CSS on page load // Auto-load CSS on page load
loadSidebarCSS(); loadSidebarCSS();

View File

@ -24,6 +24,7 @@ export class SidebarMenu extends Component {
sidebarEnabled: false, sidebarEnabled: false,
sidebarMenuIconUrl: null, sidebarMenuIconUrl: null,
overlayEnabled: false, overlayEnabled: false,
supportTeamLink: null,
}); });
this.loadSidebarSetting() this.loadSidebarSetting()
@ -39,7 +40,7 @@ export class SidebarMenu extends Component {
if (this.state.overlayEnabled) { if (this.state.overlayEnabled) {
collapsedWidth = '90px'; collapsedWidth = '90px';
} }
console.log('Applying layout changes. Sidebar open:', isOpen, 'Sidebar collapsed:', isCollapsed);
if (!isCollapsed) { if (!isCollapsed) {
if (actionManager) actionManager.style.marginInlineStart = collapsedWidth; if (actionManager) actionManager.style.marginInlineStart = collapsedWidth;
if (mainNavbar) mainNavbar.style.marginInlineStart = collapsedWidth; if (mainNavbar) mainNavbar.style.marginInlineStart = collapsedWidth;
@ -48,6 +49,12 @@ export class SidebarMenu extends Component {
if (actionManager) actionManager.style.marginInlineStart = '90px'; if (actionManager) actionManager.style.marginInlineStart = '90px';
if (mainNavbar) mainNavbar.style.marginInlineStart = '90px'; if (mainNavbar) mainNavbar.style.marginInlineStart = '90px';
} }
if (!isOpen) {
// If sidebar is closed, remove margin
if (actionManager) actionManager.style.marginInlineStart = '0px';
if (mainNavbar) mainNavbar.style.marginInlineStart = '0px';
}
}; };
// Use useEffect to monitor changes in open and collapse states // Use useEffect to monitor changes in open and collapse states
@ -125,6 +132,8 @@ export class SidebarMenu extends Component {
// Load overlay setting // Load overlay setting
this.state.overlayEnabled = result.uncollapsed_sidebar_overlay === true || result.uncollapsed_sidebar_overlay === 'True'; this.state.overlayEnabled = result.uncollapsed_sidebar_overlay === true || result.uncollapsed_sidebar_overlay === 'True';
// Load support team link
this.state.supportTeamLink = result.support_team_link || 'https://odex.sa/support';
} catch (error) { } catch (error) {
console.error('Error loading sidebar setting:', error); console.error('Error loading sidebar setting:', error);
// Default to enabled if setting cannot be loaded // Default to enabled if setting cannot be loaded
@ -161,7 +170,6 @@ export class SidebarMenu extends Component {
try { try {
const activeId = localStorage.getItem('odex_sidebar_active_menu'); const activeId = localStorage.getItem('odex_sidebar_active_menu');
console.log('Restored menu ID:', activeId);
let targetMenu = menuMapByXmlId.get(activeId) || menuMap.get(activeId); let targetMenu = menuMapByXmlId.get(activeId) || menuMap.get(activeId);

View File

@ -23,7 +23,7 @@
<!-- Secondary Bottom Nav --> <!-- Secondary Bottom Nav -->
<ul class="sidebar_menu_list secondary-nav"> <ul class="sidebar_menu_list secondary-nav">
<li class="nav-item"> <li class="nav-item">
<a href="#" class="nav-link" t-att-title="state.isCollapsed ? 'Support' : ''"> <a target="_blank" t-att-href="state.supportTeamLink" class="nav-link" t-att-title="state.isCollapsed ? 'Support' : ''">
<span class="nav_icon"><i class="fa fa-question-circle"></i></span> <span class="nav_icon"><i class="fa fa-question-circle"></i></span>
<span class="nav-label">Support</span> <span class="nav-label">Support</span>
</a> </a>
@ -36,7 +36,7 @@
<div class="icon"> <div class="icon">
<i class="fa fa-question-circle"></i> <i class="fa fa-question-circle"></i>
</div> </div>
<a href="https://www.odex.sa" class="label">Support</a> <a target="_blank" t-att-href="state.supportTeamLink" class="label">Support</a>
</li> </li>
</ul> </ul>
</div> </div>
@ -45,7 +45,7 @@
<!-- Normal dropdown (when not collapsed) --> <!-- Normal dropdown (when not collapsed) -->
<ul class="dropdown_menu" t-if="!state.isCollapsed"> <ul class="dropdown_menu" t-if="!state.isCollapsed">
<li class="nav-item"> <li class="nav-item">
<a href="https://www.odex.sa" class="nav-link dropdown-title">Support</a> <a target="_blank" t-att-href="state.supportTeamLink" class="nav-link dropdown-title">Support</a>
</li> </li>
</ul> </ul>
</li> </li>