diff --git a/odex30_base/odex_sidebar_backend_theme/static/src/js/menu_item.js b/odex30_base/odex_sidebar_backend_theme/static/src/js/menu_item.js index b84f5eb..7d05b1f 100644 --- a/odex30_base/odex_sidebar_backend_theme/static/src/js/menu_item.js +++ b/odex30_base/odex_sidebar_backend_theme/static/src/js/menu_item.js @@ -52,5 +52,13 @@ export class MenuItem extends Component { selectMenu(menu) { this.menuService.selectMenu(menu); + try { + // استخدم xmlid إذا كان موجودًا، وإلا استخدم name كمعرّف ثابت + const uniqueId = menu.xmlid || menu.name || menu.id; + localStorage.setItem('odex_sidebar_active_menu', uniqueId); + console.log('Saved menu:', uniqueId, menu.name); + } catch (e) { + console.error('Storage error:', e); + } } } diff --git a/odex30_base/odex_sidebar_backend_theme/static/src/js/sidebar_menu.js b/odex30_base/odex_sidebar_backend_theme/static/src/js/sidebar_menu.js index d90d079..9ab2595 100644 --- a/odex30_base/odex_sidebar_backend_theme/static/src/js/sidebar_menu.js +++ b/odex30_base/odex_sidebar_backend_theme/static/src/js/sidebar_menu.js @@ -77,12 +77,19 @@ export class SidebarMenu extends Component { loadMenus() { const allMenus = this.menuService.getAll(); const clonedMenus = structuredClone(allMenus); + + // أنشئ خرائط بناءً على xmlid و name أيضًا const menuMap = new Map(clonedMenus.map(menu => [menu.id, menu])); + const menuMapByXmlId = new Map(clonedMenus.map(menu => [menu.xmlid || menu.name, menu])); + const parentMap = new Map(); let finalMenuTree = []; for (const menu of clonedMenus) { if (menu.children) { - menu.children = menu.children.map(childId => menuMap.get(childId)).filter(Boolean); + menu.children = menu.children.map(childId => { + parentMap.set(childId, menu.id); + return menuMap.get(childId); + }).filter(Boolean); } else { menu.children = []; } @@ -94,6 +101,32 @@ export class SidebarMenu extends Component { finalMenuTree = rootMenu.children; } + try { + const activeId = localStorage.getItem('odex_sidebar_active_menu'); + console.log('Restored menu ID:', activeId); + + // ابحث أولاً بـ xmlid/name، ثم بـ id + let targetMenu = menuMapByXmlId.get(activeId) || menuMap.get(activeId); + + if (targetMenu) { + let currentId = targetMenu.id; + while (parentMap.has(currentId)) { + const parentId = parentMap.get(currentId); + const parentMenu = menuMap.get(parentId); + if (parentMenu) { + parentMenu.isOpen = true; + currentId = parentId; + } else { + break; + } + } + } else { + console.warn('Active menu not found in map:', activeId); + } + } catch (e) { + console.error('Storage error:', e); + } + this.state.menus.splice(0, this.state.menus.length, ...finalMenuTree); } }