summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js/widgets')
-rw-r--r--addons/web/static/src/js/widgets/switch_company_menu.js81
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;
});