Merge pull request #76 from expsa/odex_theme_branch

feat: Add user menu functionality and remove obsolete language switcher
This commit is contained in:
Tahir Hassan 2026-01-06 15:29:34 +04:00 committed by GitHub
commit 5562529468
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 12 additions and 70 deletions

View File

@ -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,

View File

@ -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");

View File

@ -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");

View File

@ -7,7 +7,6 @@
-->
<!-- Template 1: Modern Card Design -->
<template id="login_template_modern_page" name="Modern Login Template"
inherit_id="website.login_layout" active="False">