diff --git a/wwwroot/shell.ui b/wwwroot/shell.ui index 22c9938..07b2030 100644 --- a/wwwroot/shell.ui +++ b/wwwroot/shell.ui @@ -110,10 +110,27 @@ "subwidgets": [ { "widgettype": "urlwidget", + "id": "global_menu_widget", "options": { "url": "{{entire_url('global_menu.ui')}}" } } + ], + "binds": [ + { + "wid": "app", + "event": "sage_login", + "actiontype": "script", + "target": "self", + "script": "sageReloadMenu()" + }, + { + "wid": "app", + "event": "sage_logout", + "actiontype": "script", + "target": "self", + "script": "sageReloadMenu()" + } ] }, { diff --git a/wwwroot/shell_theme.js b/wwwroot/shell_theme.js index a921acd..91044a8 100644 --- a/wwwroot/shell_theme.js +++ b/wwwroot/shell_theme.js @@ -80,6 +80,36 @@ }); } + // Reload global menu after login/logout + window.sageReloadMenu = async function() { + if (typeof bricks === 'undefined') return; + var sidebar = bricks.getWidgetById('sage_sidebar', bricks.app); + if (!sidebar) { + console.log('[Shell] sage_sidebar not found'); + return; + } + // Clear existing children + sidebar.subwidgets.forEach(function(w) { w.destroy && w.destroy(); }); + sidebar.subwidgets = []; + sidebar.el.innerHTML = ''; + // Rebuild menu urlwidget + var menuUrl = bricks.app.baseUrl + '/global_menu.ui?_webbricks_=1'; + var desc = { + "widgettype": "urlwidget", + "id": "global_menu_widget", + "options": { "url": menuUrl } + }; + try { + var w = await bricks.widgetBuild(desc, sidebar); + if (w) { + sidebar.addSubWidget(w); + console.log('[Shell] Menu reloaded'); + } + } catch(e) { + console.log('[Shell] Menu reload error:', e); + } + }; + // Run on DOM ready if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() {