diff --git a/addons/website/models/ir_ui_view.py b/addons/website/models/ir_ui_view.py index 3d412566e41..6a8856f269a 100644 --- a/addons/website/models/ir_ui_view.py +++ b/addons/website/models/ir_ui_view.py @@ -244,19 +244,19 @@ class View(models.Model): if 'main_object' not in qcontext: qcontext['main_object'] = self - domain_based_info = {'website_id': '', 'name': _('Domain Based')} - force_website_id = request.session.get('force_website_id', False) - if force_website_id: - selected_website = Website.browse(force_website_id) - qcontext['multi_website_selected_website'] = {'website_id': selected_website.id, 'name': selected_website.name} - else: - qcontext['multi_website_selected_website'] = domain_based_info + cur = Website.get_current_website() + qcontext['multi_website_websites_current'] = {'website_id': cur.id, 'name': cur.name, 'domain': cur.domain} + qcontext['multi_website_websites'] = [ + {'website_id': website.id, 'name': website.name, 'domain': website.domain} + for website in Website.search([]) if website != cur + ] - qcontext['multi_website_websites'] = [{'website_id': website.id, 'name': website.name} for website in Website.search([])] - qcontext['multi_website_websites'] += [domain_based_info] - - qcontext['multi_website_companies'] = [{'company_id': comp.id, 'name': comp.name} for comp in self.env.user.company_ids] - qcontext['multi_website_current_company'] = {'company_id': self.env.user.company_id.id, 'name': self.env.user.company_id.name} + cur_company = self.env.user.company_id + qcontext['multi_website_companies_current'] = {'company_id': cur_company.id, 'name': cur_company.name} + qcontext['multi_website_companies'] = [ + {'company_id': comp.id, 'name': comp.name} + for comp in self.env.user.company_ids if comp != cur_company + ] qcontext.update(dict( self._context.copy(), diff --git a/addons/website/static/src/js/content/website_root.js b/addons/website/static/src/js/content/website_root.js index 56f3e5c152d..facfb53d73c 100644 --- a/addons/website/static/src/js/content/website_root.js +++ b/addons/website/static/src/js/content/website_root.js @@ -304,14 +304,29 @@ var WebsiteRoot = BodyManager.extend({ */ _multiWebsiteSwitch: function (ev) { var website_id_to_switch_to = ev.currentTarget.getAttribute('website-id'); + + // need to force in each case, even if domain is set + // Website 1: localhost; Website 2: 0.0.0.0; website 3: - + // when you switch 3 <--> 1, you need to force the website + this._rpc({ route: '/website/force_website', params: { website_id: website_id_to_switch_to || false, }, }).then(function () { - window.location.reload(true); + var website_domain = ev.currentTarget.getAttribute('domain'); + if (website_domain && window.location.hostname !== website_domain) { + // if domain unchanged, this line will do a nop while we need to refresh + // the page to load the new forced website. + window.location.hostname = website_domain; + } + else { + window.location.reload(true); + } }); + + }, _multiCompanySwitch: function (ev) { diff --git a/addons/website/views/website_navbar_templates.xml b/addons/website/views/website_navbar_templates.xml index 8c6450c99bc..285dcb03a2f 100644 --- a/addons/website/views/website_navbar_templates.xml +++ b/addons/website/views/website_navbar_templates.xml @@ -77,12 +77,11 @@
  • -
  • - +
  • +
  • - +