diff --git a/addons/website/static/src/js/menu/translate.js b/addons/website/static/src/js/menu/translate.js index dbc45d268ef..dd12fa2914b 100644 --- a/addons/website/static/src/js/menu/translate.js +++ b/addons/website/static/src/js/menu/translate.js @@ -146,8 +146,11 @@ var TranslatePageMenu = websiteNavbarData.WebsiteNavbarActionWidget.extend({ var current = document.createElement('a'); current.href = window.location.toString(); current.search += (current.search ? '&' : '?') + 'enable_editor=1'; - // we are in translate mode, the pathname starts with '/'. By + // adding a trailing slash we can simply search for the first slash + // after the language code to remove the language part. + const startPath = (current.pathname + '/').indexOf('/', 1); + current.pathname = current.pathname.substring(startPath); var link = document.createElement('a'); link.href = '/website/lang/default'; diff --git a/addons/website/static/tests/tours/edit_translated_page.js b/addons/website/static/tests/tours/edit_translated_page.js new file mode 100644 index 00000000000..432676f475f --- /dev/null +++ b/addons/website/static/tests/tours/edit_translated_page.js @@ -0,0 +1,32 @@ +/** @odoo-module **/ + +import tour from "web_tour.tour"; + +tour.register('edit_translated_page_redirect', { + test: true, + url: '/nl/contactus', +}, [ + { + content: 'click edit master', + trigger: 'a[data-action="edit_master"]', + }, + { + content: 'check editor dashboard', + trigger: '#oe_snippets', + run: () => { + // After checking the presence of the editor dashboard, we visit a + // translated version of the homepage. The homepage is a special + // case (there is no trailing slash), so we test it separately. + location.href = '/nl'; + }, + }, + { + content: 'click edit master', + trigger: 'a[data-action="edit_master"]', + }, + { + content: 'check editor dashboard', + trigger: '#oe_snippets', + run: () => {}, + }, +]); diff --git a/addons/website/tests/test_ui.py b/addons/website/tests/test_ui.py index c42647ba849..ab56ea7a6e4 100644 --- a/addons/website/tests/test_ui.py +++ b/addons/website/tests/test_ui.py @@ -216,3 +216,8 @@ class TestUi(odoo.tests.HttpCase): 'mimetype': 'image/png', }) self.start_tour('/', 'snippet_background_edition', login='admin') + + def test_12_edit_translated_page_redirect(self): + lang = self.env['res.lang']._activate_lang('nl_NL') + self.env['website'].browse(1).write({'language_ids': [(4, lang.id, 0)]}) + self.start_tour("/nl/contactus", 'edit_translated_page_redirect', login='admin')