diff options
Diffstat (limited to 'addons/web/static/src/js/widgets')
| -rw-r--r-- | addons/web/static/src/js/widgets/switch_company_menu.js | 81 |
1 files changed, 46 insertions, 35 deletions
diff --git a/addons/web/static/src/js/widgets/switch_company_menu.js b/addons/web/static/src/js/widgets/switch_company_menu.js index a389ee268cd..0939c8b1c8b 100644 --- a/addons/web/static/src/js/widgets/switch_company_menu.js +++ b/addons/web/static/src/js/widgets/switch_company_menu.js @@ -18,40 +18,48 @@ var _t = core._t; var SwitchCompanyMenu = Widget.extend({ template: 'SwitchCompanyMenu', events: { - 'click .dropdown-item[data-menu]': '_onClick', + 'click .dropdown-item[data-menu] div.log_into': '_onSwitchCompanyClick', + 'click .dropdown-item[data-menu] div.toggle_company': '_onToggleCompanyClick', }, /** * @override */ init: function () { + var self = this; this._super.apply(this, arguments); this.isMobile = config.device.isMobile; - this._onClick = _.debounce(this._onClick, 1500, true); + this._onSwitchCompanyClick = _.debounce(this._onSwitchCompanyClick, 1500, true); + this.allowed_company_ids = String(session.user_context.allowed_company_ids).split(','); + this.user_companies = session.user_companies.allowed_companies; + this.toggle_company = session.toggle_company; + + var hash = $.bbq.getState() + if (!hash.cids || hash.cids === undefined) { + hash.cids = String(session.user_companies.current_company[0]); + } + this.current_company = parseInt(hash.cids.split(',')[0]); + this.current_company_name = _.find(session.user_companies.allowed_companies, function (company) { + return company[0] === self.current_company; + })[1]; }, + + //-------------------------------------------------------------------------- + // Handlers + //-------------------------------------------------------------------------- + /** - * @override + * @private + * @param {MouseEvent} ev */ - start: function () { - var companiesList = ''; - if (this.isMobile) { - companiesList = '<li class="bg-info">' + - _t('Tap on the list to change company') + '</li>'; - } - else { - this.$('.oe_topbar_name').text(session.user_companies.current_company[1]); + _onSwitchCompanyClick: function (ev) { + ev.preventDefault(); + var companyID = $(ev.currentTarget).parent().data('company-id'); + var hash = $.bbq.getState() + var allowed_company_ids = _.map(hash.cids.split(','), function(company_id) {return parseInt(company_id);}); + if ($($(ev.currentTarget).parent()).find('.fa-square-o').length) { + allowed_company_ids.push(companyID); } - _.each(session.user_companies.allowed_companies, function(company) { - var a = ''; - if (company[0] === session.user_companies.current_company[0]) { - a = '<i class="fa fa-check mr8"></i>'; - } else { - a = '<span style="margin-right: 24px;"/>'; - } - companiesList += '<a role="menuitem" href="#" class="dropdown-item" data-menu="company" data-company-id="' + - company[0] + '">' + a + company[1] + '</a>'; - }); - this.$('.dropdown-menu').html(companiesList); - return this._super(); + session.setCompanies(companyID, [companyID]); }, //-------------------------------------------------------------------------- @@ -62,22 +70,25 @@ var SwitchCompanyMenu = Widget.extend({ * @private * @param {MouseEvent} ev */ - _onClick: function (ev) { - ev.preventDefault(); - var companyID = $(ev.currentTarget).data('company-id'); - this._rpc({ - model: 'res.users', - method: 'write', - args: [[session.uid], {'company_id': companyID}], - }) - .then(function() { - location.reload(); - }); + _onToggleCompanyClick: function (ev) { + var companyID = $(ev.currentTarget).parent().data('company-id'); + var hash = $.bbq.getState() + var allowed_company_ids = _.map(hash.cids.split(','), function(company_id) {return parseInt(company_id);}); + var current_company_id = allowed_company_ids[0]; + if ($(ev.currentTarget).find('.fa-square-o')) { + allowed_company_ids.push(companyID); + } else { + allowed_company_ids.splice(allowed_company_ids.indexOf(companyID), 1); + } + session.setCompanies(current_company_id, allowed_company_ids); }, + }); -if (session.user_companies) { + +if (session.display_switch_company_menu) { SystrayMenu.Items.push(SwitchCompanyMenu); } + return SwitchCompanyMenu; }); |
