diff --git a/addons/website/static/src/js/content/body_manager.js b/addons/website/static/src/js/content/body_manager.js
deleted file mode 100644
index c41ddb8fde0..00000000000
--- a/addons/website/static/src/js/content/body_manager.js
+++ /dev/null
@@ -1,60 +0,0 @@
-odoo.define('web_editor.BodyManager', function (require) {
-'use strict';
-
-var rootWidget = require('web_editor.root_widget');
-var ServiceProviderMixin = require('web.ServiceProviderMixin');
-var session = require('web.session');
-var wContext = require('website.context');
-
-/**
- * Element which is designed to be unique and that will be the top-most element
- * in the widget hierarchy. So, all other widgets will be indirectly linked to
- * this Class instance. Its main role will be to retrieve RPC demands from its
- * children and handle them.
- */
-var BodyManager = rootWidget.RootWidget.extend(ServiceProviderMixin, {
- /**
- * @constructor
- */
- init: function () {
- this._super.apply(this, arguments);
- ServiceProviderMixin.init.call(this);
- },
- /**
- * @override
- */
- willStart: function () {
- return $.when(
- this._super.apply(this, arguments),
- session.is_bound
- );
- },
-
- //--------------------------------------------------------------------------
- // Private
- //--------------------------------------------------------------------------
-
- /**
- * Automatically add the web_editor context.
- *
- * @override
- */
- _call_service: function (event) {
- if (event.data.service === 'ajax' && event.data.method === 'rpc') {
- var route = event.data.args[0];
- if (_.str.startsWith(route, '/web/dataset/call_kw/')) {
- var params = event.data.args[1];
- var options = event.data.args[2];
- params.kwargs.context = _.extend({}, wContext.get(), params.kwargs.context || {});
- if (options) {
- params.kwargs.context = _.omit(params.kwargs.context, options.noContextKeys);
- event.data.args[2] = _.omit(options, 'noContextKeys');
- }
- params.kwargs.context = JSON.parse(JSON.stringify(params.kwargs.context));
- }
- }
- return ServiceProviderMixin._call_service.apply(this, arguments);
- },
-});
-return BodyManager;
-});
diff --git a/addons/website/static/src/js/content/website_root.js b/addons/website/static/src/js/content/website_root.js
index af979664f0d..0d89ae528a9 100644
--- a/addons/website/static/src/js/content/website_root.js
+++ b/addons/website/static/src/js/content/website_root.js
@@ -18,10 +18,11 @@ odoo.define('website.WebsiteRoot', function (require) {
var ajax = require('web.ajax');
var core = require('web.core');
var Dialog = require('web.Dialog');
+var ServiceProviderMixin = require('web.ServiceProviderMixin');
+var session = require('web.session');
var utils = require('web.utils');
-var BodyManager = require('web_editor.BodyManager');
-var wContext = require('website.context');
var rootWidget = require('web_editor.root_widget');
+var wContext = require('website.context');
var sAnimation = require('website.content.snippets.animation');
require("website.content.zoomodoo");
@@ -34,8 +35,14 @@ var websiteRootRegistry = new rootWidget.RootWidgetRegistry();
var lang = utils.get_cookie('frontend_lang') || wContext.get().lang; // FIXME the cookie value should maybe be in the ctx?
var localeDef = ajax.loadJS('/web/webclient/locale/' + lang.replace('-', '_'));
-var WebsiteRoot = BodyManager.extend({
- events: _.extend({}, BodyManager.prototype.events || {}, {
+/**
+ * Element which is designed to be unique and that will be the top-most element
+ * in the widget hierarchy. So, all other widgets will be indirectly linked to
+ * this Class instance. Its main role will be to retrieve RPC demands from its
+ * children and handle them.
+ */
+var WebsiteRoot = rootWidget.RootWidget.extend(ServiceProviderMixin, {
+ events: _.extend({}, rootWidget.RootWidget.prototype.events || {}, {
'click .js_change_lang': '_onLangChangeClick',
'click .js_publish_management .js_publish_btn': '_onPublishBtnClick',
'submit .js_website_submit_form': '_onWebsiteFormSubmit',
@@ -43,7 +50,7 @@ var WebsiteRoot = BodyManager.extend({
'click .js_multi_website_switch': '_multiWebsiteSwitch',
'click .js_multi_company_switch': '_multiCompanySwitch',
}),
- custom_events: _.extend({}, BodyManager.prototype.custom_events || {}, {
+ custom_events: _.extend({}, rootWidget.RootWidget.prototype.custom_events || {}, {
animation_start_demand: '_onAnimationStartDemand',
animation_stop_demand: '_onAnimationStopDemand',
main_object_request: '_onMainObjectRequest',
@@ -55,14 +62,19 @@ var WebsiteRoot = BodyManager.extend({
*/
init: function () {
this._super.apply(this, arguments);
+ ServiceProviderMixin.init.call(this);
this.animations = [];
},
/**
* @override
*/
willStart: function () {
- // TODO would be even greater to wait for localeDef only when necessary
- return $.when(this._super.apply(this, arguments), localeDef);
+ // TODO would be even greater to wait for those only if necessary
+ return $.when(
+ this._super.apply(this, arguments),
+ session.is_bound,
+ localeDef
+ );
},
/**
* @override
@@ -115,6 +127,27 @@ var WebsiteRoot = BodyManager.extend({
// Private
//--------------------------------------------------------------------------
+ /**
+ * Automatically add the global context to RPC commands.
+ *
+ * @override
+ */
+ _call_service: function (ev) {
+ if (ev.data.service === 'ajax' && ev.data.method === 'rpc') {
+ var route = ev.data.args[0];
+ if (_.str.startsWith(route, '/web/dataset/call_kw/')) {
+ var params = ev.data.args[1];
+ var options = ev.data.args[2];
+ params.kwargs.context = _.extend({}, wContext.get(), params.kwargs.context || {});
+ if (options) {
+ params.kwargs.context = _.omit(params.kwargs.context, options.noContextKeys);
+ ev.data.args[2] = _.omit(options, 'noContextKeys');
+ }
+ params.kwargs.context = JSON.parse(JSON.stringify(params.kwargs.context));
+ }
+ }
+ return ServiceProviderMixin._call_service.apply(this, arguments);
+ },
/**
* As the WebsiteRoot instance is designed to be unique, the associated
* registry has been instantiated outside of the class and is simply
diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml
index e7564b75400..75f64301745 100644
--- a/addons/website/views/website_templates.xml
+++ b/addons/website/views/website_templates.xml
@@ -44,7 +44,6 @@
-