From 3cbc7ebc4c3e0edb25d1a91dcbf4df163ef6d29e Mon Sep 17 00:00:00 2001 From: qsm-odoo Date: Fri, 30 Sep 2016 11:33:17 +0200 Subject: [PATCH] [FIX] *: missing base.ready() waiting for frontend tours Frontend tours have to wait for base.ready() before starting otherwise they can find DOM elements whose event handlers have not been attached yet. Note that this is a workaround to ignore these real "bugs" as users should not be able to see buttons they can't click at once but there is no safe and small fix which will resolve that. The time between the DOM becomes visible and handlers are attached is small enough to ignore this bug for now anyway. --- addons/survey/static/src/js/tour_test_survey.js | 8 ++++++-- addons/website/static/src/js/website.tour.rte.js | 7 +++++-- .../static/src/js/website.tour.event_sale.js | 7 ++++++- .../website_sale/static/src/js/website_sale_tour_buy.js | 7 ++++++- .../static/src/js/website_sale.test.js | 7 ++++++- 5 files changed, 29 insertions(+), 7 deletions(-) diff --git a/addons/survey/static/src/js/tour_test_survey.js b/addons/survey/static/src/js/tour_test_survey.js index e459336679a..bf0ae590709 100644 --- a/addons/survey/static/src/js/tour_test_survey.js +++ b/addons/survey/static/src/js/tour_test_survey.js @@ -2,9 +2,13 @@ odoo.define('survey.tour_test_survey', function (require) { 'use strict'; var tour = require('web_tour.tour'); +var base = require("web_editor.base"); - -tour.register('test_survey', { test: true, url: '/survey/start/user-feedback-form-1/phantom' }, +tour.register('test_survey', { + test: true, + url: '/survey/start/user-feedback-form-1/phantom', + wait_for: base.ready() +}, [ // Page-1 { diff --git a/addons/website/static/src/js/website.tour.rte.js b/addons/website/static/src/js/website.tour.rte.js index 3026e4c86b2..7785441faa0 100644 --- a/addons/website/static/src/js/website.tour.rte.js +++ b/addons/website/static/src/js/website.tour.rte.js @@ -2,9 +2,12 @@ odoo.define('website.tour.rte', function (require) { 'use strict'; var tour = require("web_tour.tour"); -var local_storage = require('web.local_storage'); +var base = require("web_editor.base"); -tour.register('rte_translator', { test: true }, +tour.register('rte_translator', { + test: true, + wait_for: base.ready() +}, [ { content: "click on Add a language", diff --git a/addons/website_event_sale/static/src/js/website.tour.event_sale.js b/addons/website_event_sale/static/src/js/website.tour.event_sale.js index 25b27c69ca2..de23a9b4b67 100644 --- a/addons/website_event_sale/static/src/js/website.tour.event_sale.js +++ b/addons/website_event_sale/static/src/js/website.tour.event_sale.js @@ -2,8 +2,13 @@ odoo.define('website_event_sale.tour', function (require) { 'use strict'; var tour = require('web_tour.tour'); +var base = require("web_editor.base"); -tour.register('event_buy_tickets', { test: true, url: '/event' }, +tour.register('event_buy_tickets', { + test: true, + url: '/event', + wait_for: base.ready() +}, [ { content: "Go to the `Events` page", diff --git a/addons/website_sale/static/src/js/website_sale_tour_buy.js b/addons/website_sale/static/src/js/website_sale_tour_buy.js index c5a3b8abb31..18db42a1270 100644 --- a/addons/website_sale/static/src/js/website_sale_tour_buy.js +++ b/addons/website_sale/static/src/js/website_sale_tour_buy.js @@ -2,8 +2,13 @@ odoo.define('website_sale.tour', function (require) { 'use strict'; var tour = require("web_tour.tour"); +var base = require("web_editor.base"); -tour.register('shop_buy_product', { test: true, url: '/shop' }, +tour.register('shop_buy_product', { + test: true, + url: '/shop', + wait_for: base.ready() +}, [ { content: "search ipod", diff --git a/addons/website_sale_options/static/src/js/website_sale.test.js b/addons/website_sale_options/static/src/js/website_sale.test.js index 947d30079ba..c4e38e1fcf3 100644 --- a/addons/website_sale_options/static/src/js/website_sale.test.js +++ b/addons/website_sale_options/static/src/js/website_sale.test.js @@ -3,6 +3,7 @@ odoo.define('website_sale.test', function (require) { require("website_sale.tour"); var tour = require("web_tour.tour"); +var base = require("web_editor.base"); var steps = tour.tours.shop_buy_product.steps; for (var k=0; k