From f1e5f377f8109bdfcc18190b01f6c2cc8a50dade Mon Sep 17 00:00:00 2001 From: "Arthur Detroux (ard)" Date: Mon, 4 Apr 2022 11:09:55 +0200 Subject: [PATCH] [IMP] website: redirect to backend in edit mode with an url param The redirect helper js script can now redirect directly to the backend in edit mode if it has the ?enable_editor. See merge commit for more information. task-2687506 --- addons/website/static/src/js/content/redirect.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/addons/website/static/src/js/content/redirect.js b/addons/website/static/src/js/content/redirect.js index 8f4e765302a..8c1a030e93e 100644 --- a/addons/website/static/src/js/content/redirect.js +++ b/addons/website/static/src/js/content/redirect.js @@ -20,11 +20,19 @@ document.addEventListener('DOMContentLoaded', () => { if (!window.frameElement) { const websiteId = document.documentElement.dataset.websiteId; const {pathname, search} = window.location; + const params = new URLSearchParams(search); + const enableEditor = params.get('enable_editor'); + params.delete('enable_editor'); + let newSearch = params.toString(); + if (newSearch) { + newSearch = '?' + newSearch; + } + const backendPath = `/web#action=website.website_preview&path=${encodeURIComponent(`${pathname}${newSearch}`)}&website_id=${websiteId}`; - const autoredirectToBackendAction = false; + const autoredirectToBackendAction = !!enableEditor; if (autoredirectToBackendAction) { document.body.innerHTML = ''; - window.location.replace(`/web#action=website.website_preview&path=${encodeURIComponent(`${pathname}${search}`)}&website_id=${websiteId}`); + window.location.replace(`${backendPath}${enableEditor ? '&enable_editor=1' : ''}`); } else { // FIXME this UI does not respect access rights yet but we will // probably end up doing it in XML instead of JS anyway. @@ -50,7 +58,7 @@ document.addEventListener('DOMContentLoaded', () => { frontendToBackendNavEl.appendChild(backendAppsButtonEl); const backendEditButtonEl = document.createElement('a'); - backendEditButtonEl.href = `/web#action=website.website_preview&path=${encodeURIComponent(`${pathname}${search}`)}&website_id=${websiteId}`; + backendEditButtonEl.href = `${backendPath}&enable_editor=1`; backendEditButtonEl.textContent = _t("Edit"); backendEditButtonEl.title = _t("Edit your page content"); backendEditButtonEl.classList.add('o_frontend_to_backend_edit_btn'); @@ -60,7 +68,7 @@ document.addEventListener('DOMContentLoaded', () => { frontendToBackendNavEl.appendChild(backendEditButtonEl); if (editInBackendUserDropdownLinkEl) { - editInBackendUserDropdownLinkEl.href = backendEditButtonEl.href; + editInBackendUserDropdownLinkEl.href = backendPath; } document.body.appendChild(frontendToBackendNavEl);