diff options
| author | Christophe Matthieu <chm@odoo.com> | 2015-07-17 15:34:31 +0200 |
|---|---|---|
| committer | Christophe Matthieu <chm@odoo.com> | 2015-07-22 12:15:24 +0200 |
| commit | 71732dceb6613dab28d6eef96fa155acc91af7ce (patch) | |
| tree | 1f33280ca569fd23912a640a79ec8d878d934bfc | |
| parent | dfad968515b523ebc900a0ba0fa1b111626f6149 (diff) | |
[IMP] web: module can be asynchronous loaded if it return a deferred
Each module can return a deferred. In that case, the module is marked as loaded
only when the deferred is resolved, and its value is equal to the resolved value.
The module can be rejected (unloaded). This will be logged in the console as info.
Remove if_dom_contains from the website, the modules return a rejected deferred if
the DOM doesn't contains the seleted values.
21 files changed, 182 insertions, 128 deletions
diff --git a/addons/point_of_sale/views/templates.xml b/addons/point_of_sale/views/templates.xml index 582cefde4fa..0d69cc157ee 100644 --- a/addons/point_of_sale/views/templates.xml +++ b/addons/point_of_sale/views/templates.xml @@ -46,8 +46,6 @@ }); return web_client; }); - odoo.init(); - </script> </head> diff --git a/addons/survey/static/src/js/survey.js b/addons/survey/static/src/js/survey.js index 25b6aea4e19..63dfe92f9e6 100644 --- a/addons/survey/static/src/js/survey.js +++ b/addons/survey/static/src/js/survey.js @@ -8,7 +8,12 @@ var website = require('website.website'); * the website engine. */ -website.if_dom_contains('.js_surveyform', function (the_form) { +var the_form = $('.js_surveyform'); + +if(!the_form.length) { + return $.Deferred().reject("DOM doesn't contain '.js_surveyform'"); +} + console.debug("[survey] Custom JS for survey is loading..."); var prefill_controller = the_form.attr("data-prefill"); @@ -163,6 +168,5 @@ website.if_dom_contains('.js_surveyform', function (the_form) { } console.debug("[survey] Custom JS for survey loaded!"); -}); }); diff --git a/addons/survey/static/src/js/survey_result.js b/addons/survey/static/src/js/survey_result.js index 891c5e1bc75..8fdb794d567 100644 --- a/addons/survey/static/src/js/survey_result.js +++ b/addons/survey/static/src/js/survey_result.js @@ -3,7 +3,10 @@ odoo.define('survey.result', function (require) { var website = require('website.website'); -website.if_dom_contains('.js_surveyresult', function () { +if(!$('.js_surveyresult').length) { + return $.Deferred().reject("DOM doesn't contain '.js_surveyresult'"); +} + console.debug("[survey] Survey Result JS is loading..."); //Script For Pagination @@ -160,6 +163,5 @@ website.if_dom_contains('.js_surveyresult', function () { }); console.debug("[survey] Survey Result JS loaded!"); -}); }); diff --git a/addons/web/static/src/js/boot.js b/addons/web/static/src/js/boot.js index 19fb4c51204..dc4ea5b337c 100644 --- a/addons/web/static/src/js/boot.js +++ b/addons/web/static/src/js/boot.js @@ -5,6 +5,10 @@ /** * @name openerp * @namespace openerp + * + * Modules can return a deferred the module is mark as loaded only when + * the deferred is resolved, and the service value equal the resolved value. + * The module can be rejected (unloaded) and logged as info. */ (function() { @@ -14,6 +18,7 @@ var factories = Object.create(null); var job_names = []; var job_deps = []; + var job_deferred = []; var services = Object.create({ qweb: new QWeb2.Engine(), @@ -29,6 +34,7 @@ var odoo = window.odoo = { testing: typeof QUnit === "object", debug: debug, + remaining_jobs: jobs, __DEBUG__: { get_dependencies: function (name, transitive) { @@ -122,7 +128,11 @@ odoo.__DEBUG__.web_client = services['web.web_client']; if (jobs.length) { - var debug_jobs = {}, job; + var debug_jobs = {}; + var rejected = []; + var rejected_linked = []; + var job; + var jobdep; for (var k=0; k<jobs.length; k++) { debug_jobs[jobs[k].name] = job = { @@ -133,13 +143,26 @@ if (jobs[k].error) { job.error = jobs[k].error; } + if (jobs[k].rejected) { + job.rejected = jobs[k].rejected; + rejected.push(job.name); + } var deps = odoo.__DEBUG__.get_dependencies( job.name ); for (var i=0; i<deps.length; i++) { if (job.name !== deps[i] && !(deps[i] in services)) { - if (!job.missing) { - job.missing = []; + jobdep = debug_jobs[deps[i]] || (deps[i] in factories && _.find(jobs, function (job) { return job.name === deps[i];})); + if (jobdep && jobdep.rejected) { + if (!job.rejected) { + job.rejected = []; + rejected_linked.push(job.name); + } + job.rejected.push(deps[i]); + } else { + if (!job.missing) { + job.missing = []; + } + job.missing.push(deps[i]); } - job.missing.push(deps[i]); } } } @@ -152,20 +175,34 @@ } }, process_jobs: function (jobs, services) { - var job, require; - while (jobs.length && (job = _.find(jobs, is_ready))) { - require = make_require(job); + var job; + var require; + var time; + + function process_job (job) { + var require = make_require(job); try { - services[job.name] = job.factory.call(null, require); + var def = $.Deferred(); + $.when(job.factory.call(null, require)).then( + function (data) { + services[job.name] = data; + clearTimeout(time); + time = _.defer(odoo.process_jobs, jobs, services); + def.resolve(); + }, function (e) { + job.rejected = e || true; + jobs.push(job); + def.resolve(); + }); jobs.splice(jobs.indexOf(job), 1); + job_deferred.push(def); } catch (e) { job.error = e; } } - return services; function is_ready (job) { - return !job.error && _.every(job.factory.deps, function (name) { return name in services; }); + return !job.error && !job.rejected && _.every(job.factory.deps, function (name) { return name in services; }); } function make_require (job) { @@ -183,6 +220,12 @@ require.__require_calls = 0; return require; } + + while (jobs.length && (job = _.find(jobs, is_ready))) { + process_job(job); + } + + return services; } }; diff --git a/addons/web_editor/static/src/js/base.js b/addons/web_editor/static/src/js/base.js index 7046332289a..4d8d128f60c 100644 --- a/addons/web_editor/static/src/js/base.js +++ b/addons/web_editor/static/src/js/base.js @@ -6,8 +6,6 @@ var ajax = require('web.ajax'); var qweb = core.qweb; var _t = core._t; -////////////////////////////////////////////////////////////////////////////////////////////////////////// - var get_context = function (dict) { var html = document.documentElement; return _.extend({ @@ -16,20 +14,23 @@ var get_context = function (dict) { }; ////////////////////////////////////////////////////////////////////////////////////////////////////////// -/* ---------------------------------------------------- - Async Ready and Template loading - ---------------------------------------------------- */ + +var data = { + 'get_context': get_context, + 'url_translations': '/web/webclient/translations', +}; + var dom_ready = $.Deferred(); $(document).ready(function () { - dom_ready.resolve(); + dom_ready.resolve(data); // fix for ie if($.fn.placeholder) $('input, textarea').placeholder(); }); - +data.dom_ready = dom_ready; // todo: remove and load a bundle of translated templates var all_ready; -var ready = function() { +data.ready = function() { if (!all_ready) { all_ready = $.when(dom_ready, ajax.loadXML()).then(translations); } else if(all_ready.state() === "resolved") { // can add async template @@ -63,13 +64,6 @@ function translations() { } }).promise(); } - -var data = { - 'get_context': get_context, - 'url_translations': '/web/webclient/translations', - 'dom_ready': dom_ready, - 'ready': ready, -}; -return data; +return dom_ready; }); diff --git a/addons/web_editor/static/src/js/editor.js b/addons/web_editor/static/src/js/editor.js index 2958d045d0f..f9255716697 100644 --- a/addons/web_editor/static/src/js/editor.js +++ b/addons/web_editor/static/src/js/editor.js @@ -19,7 +19,6 @@ editor.editable = !!$('html').data('editable'); ajax.loadXML('/web_editor/static/src/xml/editor.xml', qweb); -base.dom_ready.done(function () { $(document).on('click', '.note-editable', function (ev) { ev.preventDefault(); }); @@ -37,7 +36,6 @@ base.dom_ready.done(function () { ev.preventDefault(); } }); -}); ////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/addons/web_editor/static/src/js/iframe.js b/addons/web_editor/static/src/js/iframe.js index 8b287064b7c..553c68b30af 100644 --- a/addons/web_editor/static/src/js/iframe.js +++ b/addons/web_editor/static/src/js/iframe.js @@ -74,5 +74,5 @@ translator.Class.include({ }); $(function () { - odoo.init(); + _.delay(odoo.init, 500); }); diff --git a/addons/website/static/src/js/web_planner_website.js b/addons/website/static/src/js/web_planner_website.js index 7a3803bffd4..4a2abf1e3e8 100644 --- a/addons/website/static/src/js/web_planner_website.js +++ b/addons/website/static/src/js/web_planner_website.js @@ -10,9 +10,13 @@ var base = require('web_editor.base'); var qweb = core.qweb; +if(!$('#oe_systray').length) { + return $.Deferred().reject("DOM doesn't contain '#oe_systray'"); +} + var PlannerDialog = planner.PlannerDialog; -planner.WebistePlannerLauncher = Widget.extend({ +planner.WebsitePlannerLauncher = Widget.extend({ template: "PlannerLauncher", events: { 'click .o_planner_progress': 'toggle_dialog' @@ -58,12 +62,8 @@ PlannerDialog.include({ } }); -base.dom_ready.done(function() { - if($('#oe_systray').length) { - ajax.loadXML('/web_planner/static/src/xml/web_planner.xml', qweb).then(function() { - new planner.WebistePlannerLauncher().prependTo($('#oe_systray')); - }); - } +return ajax.loadXML('/web_planner/static/src/xml/web_planner.xml', qweb).then(function() { + new planner.WebsitePlannerLauncher().prependTo($('#oe_systray')); }); }); diff --git a/addons/website/static/src/js/website.js b/addons/website/static/src/js/website.js index f54648de024..ddae7891266 100644 --- a/addons/website/static/src/js/website.js +++ b/addons/website/static/src/js/website.js @@ -23,6 +23,7 @@ browser += ","+$.browser.version; if (/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(navigator.userAgent.toLowerCase())) browser += ",mobile"; document.documentElement.setAttribute('data-browser', browser); + /* ---------------------------------------------------- Helpers ---------------------------------------------------- */ @@ -217,22 +218,6 @@ var init_kanban = function ($kanban) { ajax.loadXML('/website/static/src/xml/website.xml', qweb); /** - * Execute a function if the dom contains at least one element matched - * through the given jQuery selector. Will first wait for the dom to be ready. - * - * @param {String} selector A jQuery selector used to match the element(s) - * @param {Function} fn Callback to execute if at least one element has been matched - */ -var if_dom_contains = function(selector, fn) { - base.dom_ready.then(function () { - var elems = $(selector); - if (elems.length) { - fn(elems); - } - }); -}; - -/** * Cancel the auto run of Tour (test) and launch the tour after tob bar all bind events */ @@ -249,8 +234,7 @@ base.ready().then(function () { * Returns a deferred resolved when the templates are loaded * and the Widgets can be instanciated. */ - -base.dom_ready.then(function () { + /* ----- PUBLISHING STUFF ---- */ $(document).on('click', '.js_publish_management .js_publish_btn', function () { var $data = $(this).parents(".js_publish_management:first"); @@ -305,7 +289,6 @@ base.dom_ready.then(function () { window.document.body.scrollTop = +location.hash.match(/scrollTop=([0-9]+)/)[1]; } },0); -}); /** @@ -329,7 +312,6 @@ var TopBar = Widget.extend({ var data = { prompt: prompt, form: form, - if_dom_contains: if_dom_contains, TopBar: TopBar, ready: function () { console.warn("website.ready is deprecated: Please use require('web_editor.base').ready()"); @@ -341,5 +323,5 @@ return data; }); $(function () { - odoo.init(); + _.defer(odoo.init); }); diff --git a/addons/website_blog/static/src/js/website_blog.editor.js b/addons/website_blog/static/src/js/website_blog.editor.js index cfb2fc670c4..5effc1e6c64 100644 --- a/addons/website_blog/static/src/js/website_blog.editor.js +++ b/addons/website_blog/static/src/js/website_blog.editor.js @@ -1,15 +1,11 @@ -odoo.define('website_blog.editor', function (require) { +odoo.define('website_blog.new_blog_post', function (require) { "use strict"; -var ajax = require('web.ajax'); var core = require('web.core'); -var Model = require('web.Model'); var base = require('web_editor.base'); -var widget = require('web_editor.widget'); -var options = require('web_editor.snippets.options'); +var Model = require('web.Model'); var website = require('website.website'); var contentMenu = require('website.contentMenu'); -var rte = require('web_editor.rte'); var _t = core._t; @@ -35,7 +31,19 @@ contentMenu.TopBar.include({ }, }); -website.if_dom_contains('.website_blog', function() { +}); + +odoo.define('website_blog.editor', function (require) { +"use strict"; + + var ajax = require('web.ajax'); + var widget = require('web_editor.widget'); + var options = require('web_editor.snippets.options'); + var rte = require('web_editor.rte'); + + if(!$('.website_blog').length) { + return $.Deferred().reject("DOM doesn't contain '.website_blog'"); + } rte.Class.include({ saveElement: function ($el, context) { @@ -99,5 +107,3 @@ website.if_dom_contains('.website_blog', function() { }); }); - -}); diff --git a/addons/website_forum/static/src/js/website_forum.js b/addons/website_forum/static/src/js/website_forum.js index 7300539439e..e3cb3d38d20 100644 --- a/addons/website_forum/static/src/js/website_forum.js +++ b/addons/website_forum/static/src/js/website_forum.js @@ -9,7 +9,10 @@ var _t = core._t; var lastsearch; -website.if_dom_contains('.website_forum', function () { +if(!$('.website_forum').length) { + return $.Deferred().reject("DOM doesn't contain '.website_forum'"); +} + $("[data-toggle='popover']").popover(); $('.karma_required').on('click', function (ev) { var karma = $(ev.currentTarget).data('karma'); @@ -256,6 +259,5 @@ website.if_dom_contains('.website_forum', function () { $textarea.html($form.find('.note-editable').code()); }); }); -}); }); diff --git a/addons/website_forum/static/src/js/website_forum.share.js b/addons/website_forum/static/src/js/website_forum.share.js index 54f18fd9e34..60173903a45 100644 --- a/addons/website_forum/static/src/js/website_forum.share.js +++ b/addons/website_forum/static/src/js/website_forum.share.js @@ -6,11 +6,15 @@ var core = require('web.core'); var base = require('web_editor.base'); var SocialShare = require('website.share'); var website = require('website.website'); -website.if_dom_contains('.website_forum', function () { - var qweb = core.qweb; ajax.loadXML('/website_forum/static/src/xml/website_forum_share_templates.xml', qweb); + +if(!$('.website_forum').length) { + return $.Deferred().reject("DOM doesn't contain '.website_forum'"); +} + + var ForumShare = SocialShare.extend({ init: function (parent, target_type) { this.target_type = target_type; @@ -61,7 +65,6 @@ base.ready().done(function() { var $question_container = $('.oe_js_bump'); new ForumShare($question_container, 'social-alert'); } -}); }); return {}; diff --git a/addons/website_links/static/src/js/website_links.js b/addons/website_links/static/src/js/website_links.js index 053bb2756c7..28facdf5206 100644 --- a/addons/website_links/static/src/js/website_links.js +++ b/addons/website_links/static/src/js/website_links.js @@ -14,7 +14,9 @@ var ZeroClipboard = window.ZeroClipboard; var exports = {}; -website.if_dom_contains('div.o_website_links_create_tracked_url', function() { +if(!$('.o_website_links_create_tracked_url').length) { + return $.Deferred().reject("DOM doesn't contain '.o_website_links_create_tracked_url'"); +} var SelectBox = Widget.extend({ init: function(obj) { @@ -386,7 +388,6 @@ website.if_dom_contains('div.o_website_links_create_tracked_url', function() { exports.SelectBox = SelectBox; exports.RecentLinkBox = RecentLinkBox; exports.RecentLinks = RecentLinks; -}); return exports; }); diff --git a/addons/website_links/static/src/js/website_links_charts.js b/addons/website_links/static/src/js/website_links_charts.js index 3db653b688b..e73b625dadc 100644 --- a/addons/website_links/static/src/js/website_links_charts.js +++ b/addons/website_links/static/src/js/website_links_charts.js @@ -8,7 +8,10 @@ var Model = require('web.Model'); var exports = {}; -website.if_dom_contains('div.o_website_links_chart', function() { +if(!$('.o_website_links_chart').length) { + return $.Deferred().reject("DOM doesn't contain '.o_website_links_chart'"); +} + var BarChart = Widget.extend({ init: function($element, begin_date, end_date, dates) { this.$element = $element; @@ -244,7 +247,6 @@ website.if_dom_contains('div.o_website_links_chart', function() { exports.BarChart = BarChart; exports.PieChart = PieChart; -}); return exports; }); diff --git a/addons/website_links/static/src/js/website_links_code_editor.js b/addons/website_links/static/src/js/website_links_code_editor.js index afd11a62f43..68019f70177 100644 --- a/addons/website_links/static/src/js/website_links_code_editor.js +++ b/addons/website_links/static/src/js/website_links_code_editor.js @@ -5,8 +5,10 @@ var ajax = require('web.ajax'); var base = require('web_editor.base'); var website = require('website.website'); -base.ready().done(function() { -website.if_dom_contains('.o_website_links_edit_code', function() { + +if(!$('.o_website_links_edit_code').length) { + return $.Deferred().reject("DOM doesn't contain '.o_website_links_edit_code'"); +} // Edit the short URL code $('.o_website_links_edit_code').on('click', function(e) { @@ -84,5 +86,3 @@ website.if_dom_contains('.o_website_links_edit_code', function() { }); }); -}); -}); diff --git a/addons/website_mail_channel/static/src/js/website_mail_channel.snippet.js b/addons/website_mail_channel/static/src/js/website_mail_channel.snippet.js index 429fd7f1186..4a7dd9d0749 100644 --- a/addons/website_mail_channel/static/src/js/website_mail_channel.snippet.js +++ b/addons/website_mail_channel/static/src/js/website_mail_channel.snippet.js @@ -86,11 +86,8 @@ animation.registry.follow_alias = animation.Class.extend({ }); -base.dom_ready.then(function () { - $('.js_follow_btn').on('click', function (ev) { - var email = $(ev.currentTarget).parents('.js_mg_follow_form').first().find('.js_follow_email').val(); - $(document).find('.js_follow_email').val(email); - }); +$('.js_follow_btn').on('click', function (ev) { + $('.js_follow_email').val($(ev.currentTarget).closest('.js_mg_follow_form').find('.js_follow_email').val()); }); }); diff --git a/addons/website_mass_mailing/static/src/js/website_mass_mailing.js b/addons/website_mass_mailing/static/src/js/website_mass_mailing.js index 2d0760a202a..330528c04de 100644 --- a/addons/website_mass_mailing/static/src/js/website_mass_mailing.js +++ b/addons/website_mass_mailing/static/src/js/website_mass_mailing.js @@ -119,7 +119,15 @@ animation.registry.newsletter_popup = animation.Class.extend({ } }); -website.if_dom_contains('div.o_unsubscribe_form', function() { +}); + + +odoo.define('mass_mailing.unsubscribe', function (require) { + +if(!$('.o_unsubscribe_form').length) { + return $.Deferred().reject("DOM doesn't contain '.o_unsubscribe_form'"); +} + $('#unsubscribe_form').on('submit', function(e) { e.preventDefault(); @@ -144,6 +152,5 @@ website.if_dom_contains('div.o_unsubscribe_form', function() { $('.alert-info').html('You changes has not been saved, try again later.').removeClass('alert-info').addClass('alert-warning'); }); }); -}); }); diff --git a/addons/website_quote/static/src/js/website_quotation.js b/addons/website_quote/static/src/js/website_quotation.js index e70a593f778..c6b416849b6 100644 --- a/addons/website_quote/static/src/js/website_quotation.js +++ b/addons/website_quote/static/src/js/website_quotation.js @@ -5,7 +5,9 @@ var ajax = require('web.ajax'); var Widget = require('web.Widget'); var website = require('website.website'); -website.if_dom_contains('div.o_website_quote', function () { +if(!$('.o_website_quote').length) { + return $.Deferred().reject("DOM doesn't contain '.o_website_quote'"); +} // Add to SO button var UpdateLineButton = Widget.extend({ @@ -159,10 +161,15 @@ website.if_dom_contains('div.o_website_quote', function () { }); -// dbo note: website_sale code for payment -// if we standardize payment somehow, this should disappear -$(document).ready(function () { +odoo.define('website_quote.payment_method', function (require) { +'use strict'; + + if(!$('#payment_method').length) { + return $.Deferred().reject("DOM doesn't contain '#payment_method'"); + } + // dbo note: website_sale code for payment + // if we standardize payment somehow, this should disappear // When choosing an acquirer, display its Pay Now button var $payment = $("#payment_method"); $payment.on("click", "input[name='acquirer']", function (ev) { @@ -188,5 +195,3 @@ $(document).ready(function () { }); }); }); - -}); diff --git a/addons/website_sale/static/src/js/website_sale.js b/addons/website_sale/static/src/js/website_sale.js index ab3b639d104..63fecf1243c 100644 --- a/addons/website_sale/static/src/js/website_sale.js +++ b/addons/website_sale/static/src/js/website_sale.js @@ -1,24 +1,8 @@ -odoo.define('website_sale.website_sale', function (require) { +odoo.define('website_sale.cart', function (require) { "use strict"; -var ajax = require('web.ajax'); var core = require('web.core'); var _t = core._t; -var base = require('web_editor.base'); - -base.dom_ready.then(function () { - -$('#o_shop_collapse_category').on('click', '.fa-chevron-right',function(){ - $(this).parent().siblings().find('.fa-chevron-down:first').click(); - $(this).parents('li').find('ul:first').show('normal'); - $(this).toggleClass('fa-chevron-down fa-chevron-right'); -}); - -$('#o_shop_collapse_category').on('click', '.fa-chevron-down',function(){ - $(this).parent().find('ul:first').hide('normal'); - $(this).toggleClass('fa-chevron-down fa-chevron-right'); -}); - var shopping_cart_link = $('ul#top_menu li a[href^="/shop/cart"]'); var shopping_cart_link_counter; @@ -61,6 +45,31 @@ shopping_cart_link.popover({ }, 1000); }); +}); + +odoo.define('website_sale.website_sale', function (require) { +"use strict"; + +var ajax = require('web.ajax'); +var core = require('web.core'); +var _t = core._t; +var base = require('web_editor.base'); + + +if(!$('#o_shop_collapse_category, .oe_website_sale').length) { + return $.Deferred().reject("DOM doesn't contain '#o_shop_collapse_category, .oe_website_sale'"); +} + +$('#o_shop_collapse_category').on('click', '.fa-chevron-right',function(){ + $(this).parent().siblings().find('.fa-chevron-down:first').click(); + $(this).parents('li').find('ul:first').show('normal'); + $(this).toggleClass('fa-chevron-down fa-chevron-right'); +}); + +$('#o_shop_collapse_category').on('click', '.fa-chevron-down',function(){ + $(this).parent().find('ul:first').hide('normal'); + $(this).toggleClass('fa-chevron-down fa-chevron-right'); +}); $('.oe_website_sale').each(function () { var oe_website_sale = this; @@ -338,5 +347,3 @@ $('.oe_website_sale').each(function () { }); }); - -}); diff --git a/addons/website_sale_options/static/src/js/website_sale.js b/addons/website_sale_options/static/src/js/website_sale.js index dca3232296a..9e93f126366 100644 --- a/addons/website_sale_options/static/src/js/website_sale.js +++ b/addons/website_sale_options/static/src/js/website_sale.js @@ -4,8 +4,11 @@ odoo.define('website_sale_options.website_sale', function(require) { var ajax = require('web.ajax'); var website = require('website.website'); var base = require('web_editor.base'); +require('website_sale.website_sale'); -website.if_dom_contains("ul.js_add_cart_variants[data-attribute_value_ids]", function () { +if(!$('ul.js_add_cart_variants[data-attribute_value_ids]').length) { + return $.Deferred().reject("DOM doesn't contain 'ul.js_add_cart_variants[data-attribute_value_ids]'"); +} $('.oe_website_sale #add_to_cart, .oe_website_sale #products_grid .a-submit') .off('click') @@ -103,6 +106,12 @@ $('.oe_website_sale #add_to_cart, .oe_website_sale #products_grid .a-submit') return false; }); +}); + + +odoo.define('website_sale_options.website_sale', function(require) { +"use strict"; +require('website_sale.cart'); $('#cart_products input.js_quantity').change(function () { var value = $(this).val(); @@ -114,5 +123,3 @@ $('#cart_products input.js_quantity').change(function () { }); }); - -}); diff --git a/addons/website_slides/static/src/js/slides_upload.js b/addons/website_slides/static/src/js/slides_upload.js index b8b5250372e..aa8d3c339bb 100644 --- a/addons/website_slides/static/src/js/slides_upload.js +++ b/addons/website_slides/static/src/js/slides_upload.js @@ -12,7 +12,9 @@ var website = require('website.website'); var qweb = core.qweb; var _t = core._t; -website.if_dom_contains('.oe_slide_js_upload', function () { +if(!$('.oe_slide_js_upload').length) { + return $.Deferred().reject("DOM doesn't contain '.oe_slide_js_upload'"); +} ajax.loadXML('/website_slides/static/src/xml/website_slides.xml', qweb); @@ -356,16 +358,10 @@ var SlideDialog = Widget.extend({ } }); -base.dom_ready.then(function () { - // bind the event to the button $('.oe_slide_js_upload').on('click', function () { var channel_id = $(this).attr('channel_id'); slides.page_widgets['upload_dialog'] = new SlideDialog(this, channel_id).appendTo(document.body); }); -}); - -}); - -}); +});
\ No newline at end of file |
