summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorAlexandre Kühn <aku@odoo.com>2018-02-12 00:03:22 +0100
committerAlexandre Kühn <aku@odoo.com>2018-02-12 16:09:37 +0100
commit0de5c1f076d7e7d0e5361e08c810c727bd41d9e0 (patch)
tree17bcec2088d56d1f755fb3068ef1d27fe5a71c45 /addons
parentdd610140bf272e21a5c3ba45202bcde8e417cfaa (diff)
[FIX] web{_site,_editor}: transparent root instance 'root widget'
With this commit, any component that needs an instance of the root widget can simply require the module 'root.widget'. Based on the context (backend, frontend, iframe), the real root.widget will resolve to either the webclient, the website root instance, or the iframe root instance. This is desirable in order for the tour_manager to become a child of the root widget, as tours are enabled in any of the above contexts. This commit is a requirement in order to solve an issue with JS services, in which there should be only one service provider at any given time.
Diffstat (limited to 'addons')
-rw-r--r--addons/web/static/src/js/chrome/root_widget.js7
-rw-r--r--addons/web/views/webclient_templates.xml1
-rw-r--r--addons/web_editor/static/src/js/iframe.js2
-rw-r--r--addons/web_tour/static/src/js/tour_service.js15
-rw-r--r--addons/website/static/src/js/content/website_root.js2
-rw-r--r--addons/website_slides/static/src/js/slides.js2
6 files changed, 14 insertions, 15 deletions
diff --git a/addons/web/static/src/js/chrome/root_widget.js b/addons/web/static/src/js/chrome/root_widget.js
new file mode 100644
index 00000000000..9cf0515b134
--- /dev/null
+++ b/addons/web/static/src/js/chrome/root_widget.js
@@ -0,0 +1,7 @@
+odoo.define('root.widget', function (require) {
+"use strict";
+
+var webClient = require('web.web_client');
+
+return webClient;
+});
diff --git a/addons/web/views/webclient_templates.xml b/addons/web/views/webclient_templates.xml
index 2742871c790..f54755e1266 100644
--- a/addons/web/views/webclient_templates.xml
+++ b/addons/web/views/webclient_templates.xml
@@ -155,6 +155,7 @@
<script type="text/javascript" src="/web/static/src/js/chrome/control_panel.js"></script>
<script type="text/javascript" src="/web/static/src/js/chrome/abstract_web_client.js"></script>
<script type="text/javascript" src="/web/static/src/js/chrome/web_client.js"></script>
+ <script type="text/javascript" src="/web/static/src/js/chrome/root_widget.js"></script>
<script type="text/javascript" src="/web/static/src/js/_deprecated/data.js"></script>
<script type="text/javascript" src="/web/static/src/js/core/context.js"></script>
<script type="text/javascript" src="/web/static/src/js/core/misc.js"></script>
diff --git a/addons/web_editor/static/src/js/iframe.js b/addons/web_editor/static/src/js/iframe.js
index 949a141c333..f2c5e3be661 100644
--- a/addons/web_editor/static/src/js/iframe.js
+++ b/addons/web_editor/static/src/js/iframe.js
@@ -82,7 +82,7 @@ translator.Class.include({
//==============================================================================
-odoo.define('web_editor.IframeRoot.instance', function (require) {
+odoo.define('root.widget', function (require) {
'use strict';
require('web.dom_ready');
diff --git a/addons/web_tour/static/src/js/tour_service.js b/addons/web_tour/static/src/js/tour_service.js
index fdfac78f6a9..eb25bc4a3aa 100644
--- a/addons/web_tour/static/src/js/tour_service.js
+++ b/addons/web_tour/static/src/js/tour_service.js
@@ -1,13 +1,11 @@
-odoo.define('web_tour.tour', function(require) {
+odoo.define('web_tour.tour', function (require) {
"use strict";
var ajax = require('web.ajax');
-var Class = require('web.Class');
var config = require('web.config');
var core = require('web.core');
-var mixins = require('web.mixins');
+var rootWidget = require('root.widget');
var rpc = require('web.rpc');
-var ServiceProviderMixin = require('web.ServiceProviderMixin');
var session = require('web.session');
var TourManager = require('web_tour.TourManager');
@@ -17,13 +15,6 @@ if (config.device.isMobile) {
return $.Deferred().reject();
}
-var CallService = Class.extend(mixins.EventDispatcherMixin, ServiceProviderMixin, {
- init: function () {
- mixins.EventDispatcherMixin.init.call(this);
- ServiceProviderMixin.init.call(this);
- },
-});
-
/**
* @namespace
* @property {Object} active_tooltips
@@ -48,7 +39,7 @@ return session.is_bound.then(function () {
}
return $.when.apply($, defs).then(function (consumed_tours) {
consumed_tours = session.is_frontend ? consumed_tours : session.web_tours;
- var tour_manager = new TourManager(new CallService(), consumed_tours);
+ var tour_manager = new TourManager(rootWidget, consumed_tours);
// Use a MutationObserver to detect DOM changes
var untracked_classnames = ["o_tooltip", "o_tooltip_content", "o_tooltip_overlay"];
diff --git a/addons/website/static/src/js/content/website_root.js b/addons/website/static/src/js/content/website_root.js
index fbe839365ae..336ea822902 100644
--- a/addons/website/static/src/js/content/website_root.js
+++ b/addons/website/static/src/js/content/website_root.js
@@ -1,4 +1,4 @@
-odoo.define('website.WebsiteRoot.instance', function (require) {
+odoo.define('root.widget', function (require) {
'use strict';
require('web.dom_ready');
diff --git a/addons/website_slides/static/src/js/slides.js b/addons/website_slides/static/src/js/slides.js
index 279c256c5ac..7d945e9eb28 100644
--- a/addons/website_slides/static/src/js/slides.js
+++ b/addons/website_slides/static/src/js/slides.js
@@ -7,7 +7,7 @@ var core = require('web.core');
var time = require('web.time');
var Widget = require('web.Widget');
var local_storage = require('web.local_storage');
-var websiteRootInstance = require('website.WebsiteRoot.instance');
+require('root.widget');
var _t = core._t;
var page_widgets = {};