diff --git a/addons/website/__manifest__.py b/addons/website/__manifest__.py
index 9ccd70a452c..cd8d1c302f9 100644
--- a/addons/website/__manifest__.py
+++ b/addons/website/__manifest__.py
@@ -258,7 +258,6 @@
'website/static/src/components/dialog/*.xml',
'website/static/src/components/editor/editor.xml',
'website/static/src/components/fields/fields.xml',
- 'website/static/src/components/navbar/navbar.xml',
'website/static/src/components/translator/*.xml',
'website/static/src/systray_items/*.xml',
'website/static/src/xml/website.backend.xml',
diff --git a/addons/website/static/src/client_actions/website_preview/website_preview.js b/addons/website/static/src/client_actions/website_preview/website_preview.js
index f263c75ac38..db5b1dffb43 100644
--- a/addons/website/static/src/client_actions/website_preview/website_preview.js
+++ b/addons/website/static/src/client_actions/website_preview/website_preview.js
@@ -3,6 +3,8 @@
import { registry } from '@web/core/registry';
import { useService } from '@web/core/utils/hooks';
import core from 'web.core';
+import { AceEditorAdapterComponent } from '../../components/ace_editor/ace_editor';
+import { PagePropertiesDialogWrapper } from '../../components/dialog/page_properties';
import { WebsiteEditorComponent } from '../../components/editor/editor';
import { WebsiteTranslator } from '../../components/translator/translator';
import {OptimizeSEODialog} from '@website/components/dialog/seo';
@@ -256,6 +258,8 @@ WebsitePreview.components = {
WebsiteEditorComponent,
BlockIframe,
WebsiteTranslator,
+ AceEditorAdapterComponent,
+ PagePropertiesDialogWrapper,
};
registry.category('actions').add('website_preview', WebsitePreview);
diff --git a/addons/website/static/src/client_actions/website_preview/website_preview.xml b/addons/website/static/src/client_actions/website_preview/website_preview.xml
index 1aa1ee9fc74..c2e538f6006 100644
--- a/addons/website/static/src/client_actions/website_preview/website_preview.xml
+++ b/addons/website/static/src/client_actions/website_preview/website_preview.xml
@@ -32,6 +32,8 @@
+
+
diff --git a/addons/website/static/src/components/ace_editor/ace_editor.js b/addons/website/static/src/components/ace_editor/ace_editor.js
index ea1ec060d4a..779213d92fd 100644
--- a/addons/website/static/src/components/ace_editor/ace_editor.js
+++ b/addons/website/static/src/components/ace_editor/ace_editor.js
@@ -130,7 +130,7 @@ export class AceEditorAdapterComponent extends ComponentAdapter {
return [
this.website.pageDocument && this.website.pageDocument.documentElement.dataset.viewXmlid,
{
- toggleAceEditor: this.props.toggleAceEditor,
+ toggleAceEditor: () => this.website.context.showAceEditor = false,
defaultBundlesRestriction: [
'web.assets_frontend',
'web.assets_frontend_minimal',
@@ -142,5 +142,7 @@ export class AceEditorAdapterComponent extends ComponentAdapter {
}
];
}
-
}
+AceEditorAdapterComponent.defaultProps = {
+ Component: WebsiteAceEditor,
+};
diff --git a/addons/website/static/src/components/dialog/page_properties.js b/addons/website/static/src/components/dialog/page_properties.js
index eb4844f2940..ad89d53c87f 100644
--- a/addons/website/static/src/components/dialog/page_properties.js
+++ b/addons/website/static/src/components/dialog/page_properties.js
@@ -8,7 +8,7 @@ import {FormViewDialog} from 'web.view_dialogs';
import {standaloneAdapter} from 'web.OwlCompatibility';
import {qweb} from 'web.core';
-const {Component, onWillStart, useState, xml, useRef, markup, onWillRender} = owl;
+const {Component, onWillStart, useState, xml, useRef, markup, onRendered} = owl;
export class PageDependencies extends Component {
setup() {
@@ -173,32 +173,26 @@ export class PagePropertiesDialogWrapper extends Component {
this.orm = useWowlService('orm');
}
- onWillRender(this.setDialogWidget);
+ onRendered(this.createDialog);
}
createDialog() {
if (this.props.mode === 'clone') {
- return {
- component: DuplicatePageDialog,
- open: () => this.dialogService.add(DuplicatePageDialog, {
- pageId: this.pageId,
- onClose: this.props.onClose,
- }),
- };
+ this.dialogService.add(DuplicatePageDialog, {
+ pageId: this.pageId,
+ onClose: this.props.onClose,
+ });
} else if (this.props.mode === 'delete') {
- return {
- component: DeletePageDialog,
- open: () => this.dialogService.add(DeletePageDialog, {
- pageId: this.pageId,
- onClose: this.props.onClose,
- }),
- };
+ this.dialogService.add(DeletePageDialog, {
+ pageId: this.pageId,
+ onClose: this.props.onClose,
+ });
} else {
const parent = standaloneAdapter({Component});
const formViewDialog = new FormViewDialog(parent, this.dialogOptions);
formViewDialog.buttons = [...formViewDialog.buttons, ...this.extraButtons];
- formViewDialog.on('form_dialog_discarded', parent, this.setDialogWidget.bind(this));
- return formViewDialog;
+ formViewDialog.on('form_dialog_discarded', parent, () => this.websiteService.context.showPageProperties = false);
+ formViewDialog.open();
}
}
@@ -250,14 +244,9 @@ export class PagePropertiesDialogWrapper extends Component {
},
}];
}
-
- setDialogWidget() {
- this.props.setPagePropertiesDialog(this.createDialog());
- }
}
PagePropertiesDialogWrapper.template = xml``;
PagePropertiesDialogWrapper.props = {
- setPagePropertiesDialog: Function,
onClose: {
type: Function,
optional: true,
diff --git a/addons/website/static/src/components/navbar/navbar.js b/addons/website/static/src/components/navbar/navbar.js
index 1716fea9dad..dfda52f8bc7 100644
--- a/addons/website/static/src/components/navbar/navbar.js
+++ b/addons/website/static/src/components/navbar/navbar.js
@@ -6,8 +6,6 @@ import { registry } from "@web/core/registry";
import { patch } from 'web.utils';
import { EditMenuDialog } from '@website/components/dialog/edit_menu';
import { OptimizeSEODialog } from '@website/components/dialog/seo';
-import {WebsiteAceEditor, AceEditorAdapterComponent} from '@website/components/ace_editor/ace_editor';
-import {PagePropertiesDialogWrapper} from '@website/components/dialog/page_properties';
const websiteSystrayRegistry = registry.category('website_systray');
const { useState } = owl;
@@ -17,7 +15,6 @@ patch(NavBar.prototype, 'website_navbar', {
this._super();
this.websiteService = useService('website');
this.websiteContext = useState(this.websiteService.context);
- this.aceEditor = WebsiteAceEditor;
// The navbar is rerendered with an event, as it can not naturally be
// with props/state (the WebsitePreview client action and the navbar
@@ -30,13 +27,6 @@ patch(NavBar.prototype, 'website_navbar', {
useBus(websiteSystrayRegistry, 'CONTENT-UPDATED', () => this.render(true));
- this.toggleAceEditor = (show) => {
- this.websiteContext.showAceEditor = show;
- };
- this.setPagePropertiesDialog = (dialog) => {
- this.pagePropertiesDialog = dialog;
- };
-
this.websiteEditingMenus = {
'website.menu_edit_menu': {
Component: EditMenuDialog,
@@ -47,11 +37,11 @@ patch(NavBar.prototype, 'website_navbar', {
isDisplayed: () => this.websiteService.currentWebsite && !!this.websiteService.currentWebsite.metadata.mainObject,
},
'website.menu_ace_editor': {
- openWidget: () => this.toggleAceEditor(true),
+ openWidget: () => this.websiteContext.showAceEditor = true,
isDisplayed: () => this.canShowAceEditor(),
},
'website.menu_page_properties': {
- openWidget: () => this.pagePropertiesDialog.open(),
+ openWidget: () => this.websiteContext.showPageProperties = true,
isDisplayed: () => this.canShowPageProperties(),
},
};
@@ -125,5 +115,3 @@ patch(NavBar.prototype, 'website_navbar', {
&& !this.websiteContext.showNewContentModal && !this.websiteContext.edition;
},
});
-
-NavBar.components = {...NavBar.components, AceEditorAdapterComponent, PagePropertiesDialogWrapper};
diff --git a/addons/website/static/src/components/navbar/navbar.xml b/addons/website/static/src/components/navbar/navbar.xml
deleted file mode 100644
index d87e6bd0d89..00000000000
--- a/addons/website/static/src/components/navbar/navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/addons/website/static/src/js/website_page_list.js b/addons/website/static/src/js/website_page_list.js
index af352deb484..bc5aa614dc4 100644
--- a/addons/website/static/src/js/website_page_list.js
+++ b/addons/website/static/src/js/website_page_list.js
@@ -32,13 +32,6 @@ const WebsitePageListController = ListController.extend({
this.$buttons.appendTo($node);
}
},
- /**
- * Used to set the new dialog (created by PagePropertiesDialogWrapper for page
- * record).
- */
- setPageManagerDialog(dialog) {
- this.pageManagerDialog = dialog;
- },
//--------------------------------------------------------------------------
// Private
@@ -56,15 +49,12 @@ const WebsitePageListController = ListController.extend({
break;
case 'action_manage_page':
await this._addDialog(record);
- this.pageManagerDialog.open();
break;
case 'action_clone_page':
await this._addDialog(record, 'clone');
- this.pageManagerDialog.open();
break;
case 'action_delete_page':
await this._addDialog(record, 'delete');
- this.pageManagerDialog.open();
break;
case 'action_edit_page':
this.do_action({
@@ -97,7 +87,6 @@ const WebsitePageListController = ListController.extend({
*/
async _addDialog(record, mode = '') {
this._pagePropertiesDialog = new ComponentWrapper(this, PagePropertiesDialogWrapper, {
- setPagePropertiesDialog: this.setPageManagerDialog.bind(this),
currentPage: record.data.id,
onClose: this._onCloseDialog.bind(this),
mode: mode,
diff --git a/addons/website/static/src/services/website_service.js b/addons/website/static/src/services/website_service.js
index e190813369e..8f0d0591cf2 100644
--- a/addons/website/static/src/services/website_service.js
+++ b/addons/website/static/src/services/website_service.js
@@ -44,6 +44,7 @@ export const websiteService = {
isPublicRootReady: false,
snippetsLoaded: false,
isMobile: false,
+ showPageProperties: false,
});
const bus = new EventBus();