diff --git a/addons/web_tour/static/src/js/tip.js b/addons/web_tour/static/src/js/tip.js index 8c0c337b8b9..f270ebe0987 100644 --- a/addons/web_tour/static/src/js/tip.js +++ b/addons/web_tour/static/src/js/tip.js @@ -179,6 +179,17 @@ var Tip = Widget.extend({ this._updatePosition(true); }, + //-------------------------------------------------------------------------- + // Public + //-------------------------------------------------------------------------- + + /** + * @return {boolean} true if tip is visible + */ + isShown() { + return this.el && !this.info.hidden; + }, + //-------------------------------------------------------------------------- // Private //-------------------------------------------------------------------------- @@ -439,6 +450,10 @@ var Tip = Widget.extend({ } $consumeEventAnchors.on(consumeEvent + ".anchor", (function (e) { if (e.type !== "mousedown" || e.which === 1) { // only left click + if (this.info.consumeVisibleOnly && !this.isShown()) { + // Do not consume non-displayed tips. + return; + } this.trigger("tip_consumed"); this._unbind_anchor_events(); } diff --git a/addons/website/static/tests/tours/rte.js b/addons/website/static/tests/tours/rte.js index ab7ec8fc6bd..2e3d152d0ea 100644 --- a/addons/website/static/tests/tours/rte.js +++ b/addons/website/static/tests/tours/rte.js @@ -38,8 +38,9 @@ tour.register('rte_translator', { extra_trigger: 'html[lang*="pa-GB"]', }, { content: "Open new page menu", - trigger: '#new-content-menu > a', + trigger: "body:has(#o_new_content_menu_choices.o_hidden) #new-content-menu > a", extra_trigger: 'a[data-action="edit"]', + consumeVisibleOnly: true, }, { content: "click on new page", trigger: 'a[data-action="new_page"]', diff --git a/addons/website_blog/static/src/js/tours/website_blog.js b/addons/website_blog/static/src/js/tours/website_blog.js index 6bd9efda4ab..b9d0e4069ff 100644 --- a/addons/website_blog/static/src/js/tours/website_blog.js +++ b/addons/website_blog/static/src/js/tours/website_blog.js @@ -8,10 +8,10 @@ odoo.define("website_blog.tour", function (require) { tour.register("blog", { url: "/", }, [{ - trigger: '#new-content-menu > a', + trigger: "body:has(#o_new_content_menu_choices.o_hidden) #new-content-menu > a", content: _t("Click here to add new content to your website."), + consumeVisibleOnly: true, position: 'bottom', - }, { trigger: "a[data-action=new_blog_post]", content: _t("Select this menu item to create a new blog post."), diff --git a/addons/website_sale/static/src/js/tours/website_sale_shop.js b/addons/website_sale/static/src/js/tours/website_sale_shop.js index 266054c859e..4c21f66d745 100644 --- a/addons/website_sale/static/src/js/tours/website_sale_shop.js +++ b/addons/website_sale/static/src/js/tours/website_sale_shop.js @@ -7,9 +7,10 @@ odoo.define("website_sale.tour_shop", function (require) { // return the steps, used for backend and frontend return [{ - trigger: "#new-content-menu > a", + trigger: "body:has(#o_new_content_menu_choices.o_hidden) #new-content-menu > a", content: _t("Let's create your first product."), extra_trigger: ".js_sale", + consumeVisibleOnly: true, position: "bottom", }, { trigger: "a[data-action=new_product]", diff --git a/addons/website_slides/static/src/js/tours/slides_tour.js b/addons/website_slides/static/src/js/tours/slides_tour.js index b31ca9acd55..341f265b14c 100644 --- a/addons/website_slides/static/src/js/tours/slides_tour.js +++ b/addons/website_slides/static/src/js/tours/slides_tour.js @@ -8,8 +8,9 @@ var tour = require('web_tour.tour'); tour.register('slides_tour', { url: '/slides', }, [{ - trigger: '#new-content-menu > a', + trigger: "body:has(#o_new_content_menu_choices.o_hidden) #new-content-menu > a", content: Markup(_t("Welcome on your course's home page. It's still empty for now. Click on \"New\" to write your first course.")), + consumeVisibleOnly: true, position: 'bottom', }, { trigger: 'a[data-action="new_slide_channel"]',