diff options
| author | Alexandre Kühn <aku@odoo.com> | 2018-02-12 00:03:22 +0100 |
|---|---|---|
| committer | Alexandre Kühn <aku@odoo.com> | 2018-02-12 16:09:37 +0100 |
| commit | 0de5c1f076d7e7d0e5361e08c810c727bd41d9e0 (patch) | |
| tree | 17bcec2088d56d1f755fb3068ef1d27fe5a71c45 | |
| parent | dd610140bf272e21a5c3ba45202bcde8e417cfaa (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.
| -rw-r--r-- | addons/web/static/src/js/chrome/root_widget.js | 7 | ||||
| -rw-r--r-- | addons/web/views/webclient_templates.xml | 1 | ||||
| -rw-r--r-- | addons/web_editor/static/src/js/iframe.js | 2 | ||||
| -rw-r--r-- | addons/web_tour/static/src/js/tour_service.js | 15 | ||||
| -rw-r--r-- | addons/website/static/src/js/content/website_root.js | 2 | ||||
| -rw-r--r-- | addons/website_slides/static/src/js/slides.js | 2 |
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 = {}; |
