From 2a88020c104d474ac7effa05b5451be949a0050d Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Wed, 8 Apr 2015 20:14:25 +0200 Subject: [PATCH] [FIX] website: language change selector Correct lang cookie setting when the main layout has not updated. --- addons/website/controllers/main.py | 7 +++++-- addons/website/static/src/js/website.js | 13 ++++++++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/addons/website/controllers/main.py b/addons/website/controllers/main.py index 34945e4b987..1489a2a04b3 100644 --- a/addons/website/controllers/main.py +++ b/addons/website/controllers/main.py @@ -52,8 +52,11 @@ class Website(openerp.addons.web.controllers.main.Home): return super(Website, self).web_login(*args, **kw) @http.route('/website/lang/', type='http', auth="public", website=True, multilang=False) - def change_lang(self, lang, r, **kwargs): - redirect = werkzeug.utils.redirect(r or '/%s' % lang, 303) + def change_lang(self, lang, r='/', **kwargs): + if lang == 'default': + lang = request.website.default_lang_code + r = '/%s%s' % (lang, r or '/') + redirect = werkzeug.utils.redirect(r or ('/%s' % lang), 303) redirect.set_cookie('website_lang', lang) return redirect diff --git a/addons/website/static/src/js/website.js b/addons/website/static/src/js/website.js index 6364550778a..ac1e771a8b4 100644 --- a/addons/website/static/src/js/website.js +++ b/addons/website/static/src/js/website.js @@ -350,6 +350,17 @@ }); }); + if (!$('.js_change_lang').length) { + // in case template is not up to date... + var links = $('ul.js_language_selector li a:not([data-oe-id])'); + var m = $(_.min(links, function(l) { return $(l).attr('href').length; })).attr('href'); + links.each(function() { + var t = $(this).attr('href'); + var l = (t === m) ? "default" : t.split('/')[1]; + $(this).data('lang', l).addClass('js_change_lang'); + }); + } + $(document).on('click', '.js_change_lang', function(e) { e.preventDefault(); @@ -361,7 +372,7 @@ hash: location.hash }; location.href = _.str.sprintf("/website/lang/%(lang)s?r=%(url)s%(hash)s", redirect); - }) + }); /* ----- KANBAN WEBSITE ---- */ $('.js_kanban').each(function () {