odoo-module-colors_customiz.../static/src/js/menu.js

122 lines
5.9 KiB
JavaScript

openerp.colors_customization = function (openerp) {
var instance = openerp;
openerp.web.chrome = {};
var QWeb = instance.web.qweb,
_t = instance.web._t;
instance.web.UserMenu = instance.web.UserMenu.extend({
do_update: function () {
var res = this._super.apply(this, arguments);
var self = this;
var fct = function() {
var $avatar = self.$el.find('.oe_topbar_avatar');
$avatar.attr('src', $avatar.data('default-src'));
if (!self.session.uid)
return;
var func = new instance.web.Model("res.users").get_func("read");
var Users = new openerp.Model('res.users');
Users.query(['name'])
.filter([['id','=',self.session.uid]])
.first().then(function(user) {
var Themes = new openerp.Model('colors.customization.theme');
Themes.query(['name','remove_menu_account','remove_menu_preferences','remove_menu_about','remove_menu_help'])
.filter([['users','=',user.id]])
.first().then(function(theme) {
if (theme) {
var $account_menu = self.$el.find("a[data-menu]");
$account_menu.each(function(index,menu_obj){
if (menu_obj.getAttribute('data-menu') == 'account'){
if(theme.remove_menu_account){
menu_obj.remove();
};
};
if (menu_obj.getAttribute('data-menu') == 'settings'){
if(theme.remove_menu_preferences){
menu_obj.remove();
};
};
if (menu_obj.getAttribute('data-menu') == 'about'){
if(theme.remove_menu_about){
menu_obj.remove();
};
};
if (menu_obj.getAttribute('data-menu') == 'help'){
if(theme.remove_menu_help){
menu_obj.remove();
};
};
});
};
});
});
return self.alive(func(self.session.uid, ["name", "company_id"])).then(function(res) {
var topbar_name = res.name;
if(instance.session.debug)
topbar_name = _.str.sprintf("%s (%s)", topbar_name, instance.session.db);
if(res.company_id[0] > 1)
topbar_name = _.str.sprintf("%s (%s)", topbar_name, res.company_id[1]);
self.$el.find('.oe_topbar_name').text(topbar_name);
if (!instance.session.debug) {
topbar_name = _.str.sprintf("%s (%s)", topbar_name, instance.session.db);
}
var avatar_src = self.session.url('/web/binary/image', {model:'res.users', field: 'image_small', id: self.session.uid});
$avatar.attr('src', avatar_src);
openerp.web.bus.trigger('resize'); // Re-trigger the reflow logic
});
};
this.update_promise = this.update_promise.then(fct, fct);
},
});
instance.web.WebClient = instance.web.WebClient.extend({
init: function(parent, client_options) {
this._super(parent);
if (client_options) {
_.extend(this.client_options, client_options);
}
this._current_state = null;
this.menu_dm = new instance.web.DropMisordered();
this.action_mutex = new $.Mutex();
this.set('title_part', {"zopenerp": ""});
var self = this;
openerp.session.rpc("/web/session/get_session_info", {}).then(function(result) {
if (result.uid) {
var Users = new openerp.Model('res.users');
Users.query(['name'])
.filter([['id','=',result.uid]])
.first().then(function(user) {
var Themes = new openerp.Model('colors.customization.theme');
Themes.query(['name','meta_title'])
.filter([['users','=',user.id]])
.first().then(function(theme) {
if (theme) {
if(theme.meta_title){
self.set('title_part', {"zopenerp": theme.meta_title});
};
};
});
});
}
});
},
});
};