[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
This commit is contained in:
Arthur Detroux (ard)
2022-06-24 10:28:06 +02:00
committed by qsm-odoo
parent e5b094b683
commit f1e5f377f8
@@ -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);