From c747afc8422338de6ca92874d53688b90a8d0b29 Mon Sep 17 00:00:00 2001 From: Altahir Hassan Date: Tue, 6 Jan 2026 15:24:06 +0400 Subject: [PATCH] feat: Add user menu functionality and remove obsolete language switcher --- odex30_base/expert_theme/__manifest__.py | 1 + .../expert_theme/static/src/js/user_menu.js | 11 +++ .../static/src/js/user_menu_language.js | 69 ------------------- .../expert_theme/views/login_templates.xml | 1 - 4 files changed, 12 insertions(+), 70 deletions(-) create mode 100644 odex30_base/expert_theme/static/src/js/user_menu.js delete mode 100644 odex30_base/expert_theme/static/src/js/user_menu_language.js diff --git a/odex30_base/expert_theme/__manifest__.py b/odex30_base/expert_theme/__manifest__.py index 0f4b5e9..dca6dbc 100644 --- a/odex30_base/expert_theme/__manifest__.py +++ b/odex30_base/expert_theme/__manifest__.py @@ -49,6 +49,7 @@ 'expert_theme/static/src/language_menu/language_menu.scss', 'expert_theme/static/src/scss/intro_loader.scss', 'expert_theme/static/src/js/intro_loader.js', + 'expert_theme/static/src/js/user_menu.js', ] }, 'installable': True, diff --git a/odex30_base/expert_theme/static/src/js/user_menu.js b/odex30_base/expert_theme/static/src/js/user_menu.js new file mode 100644 index 0000000..d6b117f --- /dev/null +++ b/odex30_base/expert_theme/static/src/js/user_menu.js @@ -0,0 +1,11 @@ +/** @odoo-module **/ + +import { registry } from "@web/core/registry"; +import { _t } from "@web/core/l10n/translation"; + +const userMenuRegistry = registry.category("user_menuitems"); + +// remove documentation, support and odoo account menu items +userMenuRegistry.remove("documentation"); +userMenuRegistry.remove("support"); +userMenuRegistry.remove("odoo_account"); diff --git a/odex30_base/expert_theme/static/src/js/user_menu_language.js b/odex30_base/expert_theme/static/src/js/user_menu_language.js deleted file mode 100644 index 55dae3b..0000000 --- a/odex30_base/expert_theme/static/src/js/user_menu_language.js +++ /dev/null @@ -1,69 +0,0 @@ -/** @odoo-module **/ - -import { registry } from "@web/core/registry"; -import { session } from "@web/session"; -import { browser } from "@web/core/browser/browser"; -import { _t } from "@web/core/l10n/translation"; - -const userMenuRegistry = registry.category("user_menuitems"); - -/** - * Service to handle the language switch logic - */ -async function switchLanguage(env, langCode) { - // 1. Write the new language to the user's preference - await env.services.orm.write("res.users", [session.uid], { - lang: langCode, - }); - - // 2. Reload the page to apply changes - browser.location.reload(); -} - -/** - * Function to generate language menu items - */ -function languageSwitchItems(env) { - console.log("Generating language switcher menu items"); - const activeLanguages = session.available_languages || []; - const currentLang = session.bundle_params.lang || 'en'; - console.log("Active languages:", activeLanguages); - console.log("Current language:", userMenuRegistry); - - // Use a separator to visually group languages if you have many items - // If you prefer a flat list, you can remove the separator logic. - const items = [ - { - type: "separator", - id: "language_separator", - }, - ]; - - console.log(items); - - activeLanguages.forEach((lang) => { - // Skip adding the currently active language to the list (optional UX choice) - // OR add it but mark it as checked. Here we just add all. - const isCurrent = lang.code === currentLang; - console.log("Adding language menu item for:", lang.code, "Current:", isCurrent); - items.push({ - type: "item", - id: `lang_switch_${lang.code}`, - description: `${lang.name} ${isCurrent ? "✓" : ""}`, - callback: async () => { - if (!isCurrent) { - await switchLanguage(env, lang.code); - } - }, - }); - }); - - return items; -} - -// Add the languages to the registry -// We wrap it in a function because the registry expects a function that returns the item(s) -// userMenuRegistry.add("language_switcher", languageSwitchItems, { sequence: 10,force: true }); -userMenuRegistry.remove("documentation"); -userMenuRegistry.remove("support"); -userMenuRegistry.remove("odoo_account"); diff --git a/odex30_base/expert_theme/views/login_templates.xml b/odex30_base/expert_theme/views/login_templates.xml index ff6b42c..6726bb6 100644 --- a/odex30_base/expert_theme/views/login_templates.xml +++ b/odex30_base/expert_theme/views/login_templates.xml @@ -7,7 +7,6 @@ --> -