[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.
This commit is contained in:
@@ -46,8 +46,6 @@
|
|||||||
});
|
});
|
||||||
return web_client;
|
return web_client;
|
||||||
});
|
});
|
||||||
odoo.init();
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|||||||
@@ -8,7 +8,12 @@ var website = require('website.website');
|
|||||||
* the website engine.
|
* 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...");
|
console.debug("[survey] Custom JS for survey is loading...");
|
||||||
|
|
||||||
var prefill_controller = the_form.attr("data-prefill");
|
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!");
|
console.debug("[survey] Custom JS for survey loaded!");
|
||||||
});
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -3,7 +3,10 @@ odoo.define('survey.result', function (require) {
|
|||||||
|
|
||||||
var website = require('website.website');
|
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...");
|
console.debug("[survey] Survey Result JS is loading...");
|
||||||
|
|
||||||
//Script For Pagination
|
//Script For Pagination
|
||||||
@@ -160,6 +163,5 @@ website.if_dom_contains('.js_surveyresult', function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
console.debug("[survey] Survey Result JS loaded!");
|
console.debug("[survey] Survey Result JS loaded!");
|
||||||
});
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -5,6 +5,10 @@
|
|||||||
/**
|
/**
|
||||||
* @name openerp
|
* @name openerp
|
||||||
* @namespace 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() {
|
(function() {
|
||||||
@@ -14,6 +18,7 @@
|
|||||||
var factories = Object.create(null);
|
var factories = Object.create(null);
|
||||||
var job_names = [];
|
var job_names = [];
|
||||||
var job_deps = [];
|
var job_deps = [];
|
||||||
|
var job_deferred = [];
|
||||||
|
|
||||||
var services = Object.create({
|
var services = Object.create({
|
||||||
qweb: new QWeb2.Engine(),
|
qweb: new QWeb2.Engine(),
|
||||||
@@ -29,6 +34,7 @@
|
|||||||
var odoo = window.odoo = {
|
var odoo = window.odoo = {
|
||||||
testing: typeof QUnit === "object",
|
testing: typeof QUnit === "object",
|
||||||
debug: debug,
|
debug: debug,
|
||||||
|
remaining_jobs: jobs,
|
||||||
|
|
||||||
__DEBUG__: {
|
__DEBUG__: {
|
||||||
get_dependencies: function (name, transitive) {
|
get_dependencies: function (name, transitive) {
|
||||||
@@ -122,7 +128,11 @@
|
|||||||
odoo.__DEBUG__.web_client = services['web.web_client'];
|
odoo.__DEBUG__.web_client = services['web.web_client'];
|
||||||
|
|
||||||
if (jobs.length) {
|
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++) {
|
for (var k=0; k<jobs.length; k++) {
|
||||||
debug_jobs[jobs[k].name] = job = {
|
debug_jobs[jobs[k].name] = job = {
|
||||||
@@ -133,13 +143,26 @@
|
|||||||
if (jobs[k].error) {
|
if (jobs[k].error) {
|
||||||
job.error = 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 );
|
var deps = odoo.__DEBUG__.get_dependencies( job.name );
|
||||||
for (var i=0; i<deps.length; i++) {
|
for (var i=0; i<deps.length; i++) {
|
||||||
if (job.name !== deps[i] && !(deps[i] in services)) {
|
if (job.name !== deps[i] && !(deps[i] in services)) {
|
||||||
if (!job.missing) {
|
jobdep = debug_jobs[deps[i]] || (deps[i] in factories && _.find(jobs, function (job) { return job.name === deps[i];}));
|
||||||
job.missing = [];
|
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) {
|
process_jobs: function (jobs, services) {
|
||||||
var job, require;
|
var job;
|
||||||
while (jobs.length && (job = _.find(jobs, is_ready))) {
|
var require;
|
||||||
require = make_require(job);
|
var time;
|
||||||
|
|
||||||
|
function process_job (job) {
|
||||||
|
var require = make_require(job);
|
||||||
try {
|
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);
|
jobs.splice(jobs.indexOf(job), 1);
|
||||||
|
job_deferred.push(def);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
job.error = e;
|
job.error = e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return services;
|
|
||||||
|
|
||||||
function is_ready (job) {
|
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) {
|
function make_require (job) {
|
||||||
@@ -183,6 +220,12 @@
|
|||||||
require.__require_calls = 0;
|
require.__require_calls = 0;
|
||||||
return require;
|
return require;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
while (jobs.length && (job = _.find(jobs, is_ready))) {
|
||||||
|
process_job(job);
|
||||||
|
}
|
||||||
|
|
||||||
|
return services;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,6 @@ var ajax = require('web.ajax');
|
|||||||
var qweb = core.qweb;
|
var qweb = core.qweb;
|
||||||
var _t = core._t;
|
var _t = core._t;
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
var get_context = function (dict) {
|
var get_context = function (dict) {
|
||||||
var html = document.documentElement;
|
var html = document.documentElement;
|
||||||
return _.extend({
|
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();
|
var dom_ready = $.Deferred();
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
dom_ready.resolve();
|
dom_ready.resolve(data);
|
||||||
// fix for ie
|
// fix for ie
|
||||||
if($.fn.placeholder) $('input, textarea').placeholder();
|
if($.fn.placeholder) $('input, textarea').placeholder();
|
||||||
});
|
});
|
||||||
|
data.dom_ready = dom_ready;
|
||||||
|
|
||||||
// todo: remove and load a bundle of translated templates
|
// todo: remove and load a bundle of translated templates
|
||||||
var all_ready;
|
var all_ready;
|
||||||
var ready = function() {
|
data.ready = function() {
|
||||||
if (!all_ready) {
|
if (!all_ready) {
|
||||||
all_ready = $.when(dom_ready, ajax.loadXML()).then(translations);
|
all_ready = $.when(dom_ready, ajax.loadXML()).then(translations);
|
||||||
} else if(all_ready.state() === "resolved") { // can add async template
|
} else if(all_ready.state() === "resolved") { // can add async template
|
||||||
@@ -63,13 +64,6 @@ function translations() {
|
|||||||
}
|
}
|
||||||
}).promise();
|
}).promise();
|
||||||
}
|
}
|
||||||
|
return dom_ready;
|
||||||
var data = {
|
|
||||||
'get_context': get_context,
|
|
||||||
'url_translations': '/web/webclient/translations',
|
|
||||||
'dom_ready': dom_ready,
|
|
||||||
'ready': ready,
|
|
||||||
};
|
|
||||||
return data;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ editor.editable = !!$('html').data('editable');
|
|||||||
|
|
||||||
ajax.loadXML('/web_editor/static/src/xml/editor.xml', qweb);
|
ajax.loadXML('/web_editor/static/src/xml/editor.xml', qweb);
|
||||||
|
|
||||||
base.dom_ready.done(function () {
|
|
||||||
$(document).on('click', '.note-editable', function (ev) {
|
$(document).on('click', '.note-editable', function (ev) {
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
});
|
});
|
||||||
@@ -37,7 +36,6 @@ base.dom_ready.done(function () {
|
|||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|||||||
@@ -74,5 +74,5 @@ translator.Class.include({
|
|||||||
});
|
});
|
||||||
|
|
||||||
$(function () {
|
$(function () {
|
||||||
odoo.init();
|
_.delay(odoo.init, 500);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -10,9 +10,13 @@ var base = require('web_editor.base');
|
|||||||
|
|
||||||
var qweb = core.qweb;
|
var qweb = core.qweb;
|
||||||
|
|
||||||
|
if(!$('#oe_systray').length) {
|
||||||
|
return $.Deferred().reject("DOM doesn't contain '#oe_systray'");
|
||||||
|
}
|
||||||
|
|
||||||
var PlannerDialog = planner.PlannerDialog;
|
var PlannerDialog = planner.PlannerDialog;
|
||||||
|
|
||||||
planner.WebistePlannerLauncher = Widget.extend({
|
planner.WebsitePlannerLauncher = Widget.extend({
|
||||||
template: "PlannerLauncher",
|
template: "PlannerLauncher",
|
||||||
events: {
|
events: {
|
||||||
'click .o_planner_progress': 'toggle_dialog'
|
'click .o_planner_progress': 'toggle_dialog'
|
||||||
@@ -58,12 +62,8 @@ PlannerDialog.include({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
base.dom_ready.done(function() {
|
return ajax.loadXML('/web_planner/static/src/xml/web_planner.xml', qweb).then(function() {
|
||||||
if($('#oe_systray').length) {
|
new planner.WebsitePlannerLauncher().prependTo($('#oe_systray'));
|
||||||
ajax.loadXML('/web_planner/static/src/xml/web_planner.xml', qweb).then(function() {
|
|
||||||
new planner.WebistePlannerLauncher().prependTo($('#oe_systray'));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ browser += ","+$.browser.version;
|
|||||||
if (/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(navigator.userAgent.toLowerCase())) browser += ",mobile";
|
if (/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(navigator.userAgent.toLowerCase())) browser += ",mobile";
|
||||||
document.documentElement.setAttribute('data-browser', browser);
|
document.documentElement.setAttribute('data-browser', browser);
|
||||||
|
|
||||||
|
|
||||||
/* ----------------------------------------------------
|
/* ----------------------------------------------------
|
||||||
Helpers
|
Helpers
|
||||||
---------------------------------------------------- */
|
---------------------------------------------------- */
|
||||||
@@ -216,22 +217,6 @@ var init_kanban = function ($kanban) {
|
|||||||
|
|
||||||
ajax.loadXML('/website/static/src/xml/website.xml', qweb);
|
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
|
* Cancel the auto run of Tour (test) and launch the tour after tob bar all bind events
|
||||||
*/
|
*/
|
||||||
@@ -250,7 +235,6 @@ base.ready().then(function () {
|
|||||||
* and the Widgets can be instanciated.
|
* and the Widgets can be instanciated.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
base.dom_ready.then(function () {
|
|
||||||
/* ----- PUBLISHING STUFF ---- */
|
/* ----- PUBLISHING STUFF ---- */
|
||||||
$(document).on('click', '.js_publish_management .js_publish_btn', function () {
|
$(document).on('click', '.js_publish_management .js_publish_btn', function () {
|
||||||
var $data = $(this).parents(".js_publish_management:first");
|
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];
|
window.document.body.scrollTop = +location.hash.match(/scrollTop=([0-9]+)/)[1];
|
||||||
}
|
}
|
||||||
},0);
|
},0);
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -329,7 +312,6 @@ var TopBar = Widget.extend({
|
|||||||
var data = {
|
var data = {
|
||||||
prompt: prompt,
|
prompt: prompt,
|
||||||
form: form,
|
form: form,
|
||||||
if_dom_contains: if_dom_contains,
|
|
||||||
TopBar: TopBar,
|
TopBar: TopBar,
|
||||||
ready: function () {
|
ready: function () {
|
||||||
console.warn("website.ready is deprecated: Please use require('web_editor.base').ready()");
|
console.warn("website.ready is deprecated: Please use require('web_editor.base').ready()");
|
||||||
@@ -341,5 +323,5 @@ return data;
|
|||||||
});
|
});
|
||||||
|
|
||||||
$(function () {
|
$(function () {
|
||||||
odoo.init();
|
_.defer(odoo.init);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,15 +1,11 @@
|
|||||||
odoo.define('website_blog.editor', function (require) {
|
odoo.define('website_blog.new_blog_post', function (require) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var ajax = require('web.ajax');
|
|
||||||
var core = require('web.core');
|
var core = require('web.core');
|
||||||
var Model = require('web.Model');
|
|
||||||
var base = require('web_editor.base');
|
var base = require('web_editor.base');
|
||||||
var widget = require('web_editor.widget');
|
var Model = require('web.Model');
|
||||||
var options = require('web_editor.snippets.options');
|
|
||||||
var website = require('website.website');
|
var website = require('website.website');
|
||||||
var contentMenu = require('website.contentMenu');
|
var contentMenu = require('website.contentMenu');
|
||||||
var rte = require('web_editor.rte');
|
|
||||||
|
|
||||||
var _t = core._t;
|
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({
|
rte.Class.include({
|
||||||
saveElement: function ($el, context) {
|
saveElement: function ($el, context) {
|
||||||
@@ -99,5 +107,3 @@ website.if_dom_contains('.website_blog', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -9,7 +9,10 @@ var _t = core._t;
|
|||||||
|
|
||||||
var lastsearch;
|
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();
|
$("[data-toggle='popover']").popover();
|
||||||
$('.karma_required').on('click', function (ev) {
|
$('.karma_required').on('click', function (ev) {
|
||||||
var karma = $(ev.currentTarget).data('karma');
|
var karma = $(ev.currentTarget).data('karma');
|
||||||
@@ -256,6 +259,5 @@ website.if_dom_contains('.website_forum', function () {
|
|||||||
$textarea.html($form.find('.note-editable').code());
|
$textarea.html($form.find('.note-editable').code());
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -6,11 +6,15 @@ var core = require('web.core');
|
|||||||
var base = require('web_editor.base');
|
var base = require('web_editor.base');
|
||||||
var SocialShare = require('website.share');
|
var SocialShare = require('website.share');
|
||||||
var website = require('website.website');
|
var website = require('website.website');
|
||||||
website.if_dom_contains('.website_forum', function () {
|
|
||||||
|
|
||||||
var qweb = core.qweb;
|
var qweb = core.qweb;
|
||||||
ajax.loadXML('/website_forum/static/src/xml/website_forum_share_templates.xml', 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({
|
var ForumShare = SocialShare.extend({
|
||||||
init: function (parent, target_type) {
|
init: function (parent, target_type) {
|
||||||
this.target_type = target_type;
|
this.target_type = target_type;
|
||||||
@@ -61,7 +65,6 @@ base.ready().done(function() {
|
|||||||
var $question_container = $('.oe_js_bump');
|
var $question_container = $('.oe_js_bump');
|
||||||
new ForumShare($question_container, 'social-alert');
|
new ForumShare($question_container, 'social-alert');
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
|
||||||
});
|
});
|
||||||
return {};
|
return {};
|
||||||
|
|||||||
@@ -14,7 +14,9 @@ var ZeroClipboard = window.ZeroClipboard;
|
|||||||
|
|
||||||
var exports = {};
|
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({
|
var SelectBox = Widget.extend({
|
||||||
init: function(obj) {
|
init: function(obj) {
|
||||||
@@ -386,7 +388,6 @@ website.if_dom_contains('div.o_website_links_create_tracked_url', function() {
|
|||||||
exports.SelectBox = SelectBox;
|
exports.SelectBox = SelectBox;
|
||||||
exports.RecentLinkBox = RecentLinkBox;
|
exports.RecentLinkBox = RecentLinkBox;
|
||||||
exports.RecentLinks = RecentLinks;
|
exports.RecentLinks = RecentLinks;
|
||||||
});
|
|
||||||
|
|
||||||
return exports;
|
return exports;
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -8,7 +8,10 @@ var Model = require('web.Model');
|
|||||||
|
|
||||||
var exports = {};
|
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({
|
var BarChart = Widget.extend({
|
||||||
init: function($element, begin_date, end_date, dates) {
|
init: function($element, begin_date, end_date, dates) {
|
||||||
this.$element = $element;
|
this.$element = $element;
|
||||||
@@ -244,7 +247,6 @@ website.if_dom_contains('div.o_website_links_chart', function() {
|
|||||||
|
|
||||||
exports.BarChart = BarChart;
|
exports.BarChart = BarChart;
|
||||||
exports.PieChart = PieChart;
|
exports.PieChart = PieChart;
|
||||||
});
|
|
||||||
|
|
||||||
return exports;
|
return exports;
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -5,8 +5,10 @@ var ajax = require('web.ajax');
|
|||||||
var base = require('web_editor.base');
|
var base = require('web_editor.base');
|
||||||
var website = require('website.website');
|
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
|
// Edit the short URL code
|
||||||
$('.o_website_links_edit_code').on('click', function(e) {
|
$('.o_website_links_edit_code').on('click', function(e) {
|
||||||
@@ -84,5 +86,3 @@ website.if_dom_contains('.o_website_links_edit_code', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -86,11 +86,8 @@ animation.registry.follow_alias = animation.Class.extend({
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
base.dom_ready.then(function () {
|
$('.js_follow_btn').on('click', function (ev) {
|
||||||
$('.js_follow_btn').on('click', function (ev) {
|
$('.js_follow_email').val($(ev.currentTarget).closest('.js_mg_follow_form').find('.js_follow_email').val());
|
||||||
var email = $(ev.currentTarget).parents('.js_mg_follow_form').first().find('.js_follow_email').val();
|
|
||||||
$(document).find('.js_follow_email').val(email);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -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) {
|
$('#unsubscribe_form').on('submit', function(e) {
|
||||||
e.preventDefault();
|
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');
|
$('.alert-info').html('You changes has not been saved, try again later.').removeClass('alert-info').addClass('alert-warning');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -5,7 +5,9 @@ var ajax = require('web.ajax');
|
|||||||
var Widget = require('web.Widget');
|
var Widget = require('web.Widget');
|
||||||
var website = require('website.website');
|
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
|
// Add to SO button
|
||||||
var UpdateLineButton = Widget.extend({
|
var UpdateLineButton = Widget.extend({
|
||||||
@@ -159,10 +161,15 @@ website.if_dom_contains('div.o_website_quote', function () {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// dbo note: website_sale code for payment
|
odoo.define('website_quote.payment_method', function (require) {
|
||||||
// if we standardize payment somehow, this should disappear
|
'use strict';
|
||||||
$(document).ready(function () {
|
|
||||||
|
|
||||||
|
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
|
// When choosing an acquirer, display its Pay Now button
|
||||||
var $payment = $("#payment_method");
|
var $payment = $("#payment_method");
|
||||||
$payment.on("click", "input[name='acquirer']", function (ev) {
|
$payment.on("click", "input[name='acquirer']", function (ev) {
|
||||||
@@ -188,5 +195,3 @@ $(document).ready(function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -1,24 +1,8 @@
|
|||||||
odoo.define('website_sale.website_sale', function (require) {
|
odoo.define('website_sale.cart', function (require) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var ajax = require('web.ajax');
|
|
||||||
var core = require('web.core');
|
var core = require('web.core');
|
||||||
var _t = core._t;
|
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 = $('ul#top_menu li a[href^="/shop/cart"]');
|
||||||
var shopping_cart_link_counter;
|
var shopping_cart_link_counter;
|
||||||
@@ -61,6 +45,31 @@ shopping_cart_link.popover({
|
|||||||
}, 1000);
|
}, 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 () {
|
$('.oe_website_sale').each(function () {
|
||||||
var oe_website_sale = this;
|
var oe_website_sale = this;
|
||||||
@@ -338,5 +347,3 @@ $('.oe_website_sale').each(function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -4,8 +4,11 @@ odoo.define('website_sale_options.website_sale', function(require) {
|
|||||||
var ajax = require('web.ajax');
|
var ajax = require('web.ajax');
|
||||||
var website = require('website.website');
|
var website = require('website.website');
|
||||||
var base = require('web_editor.base');
|
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')
|
$('.oe_website_sale #add_to_cart, .oe_website_sale #products_grid .a-submit')
|
||||||
.off('click')
|
.off('click')
|
||||||
@@ -103,6 +106,12 @@ $('.oe_website_sale #add_to_cart, .oe_website_sale #products_grid .a-submit')
|
|||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
odoo.define('website_sale_options.website_sale', function(require) {
|
||||||
|
"use strict";
|
||||||
|
require('website_sale.cart');
|
||||||
|
|
||||||
$('#cart_products input.js_quantity').change(function () {
|
$('#cart_products input.js_quantity').change(function () {
|
||||||
var value = $(this).val();
|
var value = $(this).val();
|
||||||
@@ -114,5 +123,3 @@ $('#cart_products input.js_quantity').change(function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -12,7 +12,9 @@ var website = require('website.website');
|
|||||||
var qweb = core.qweb;
|
var qweb = core.qweb;
|
||||||
var _t = core._t;
|
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);
|
ajax.loadXML('/website_slides/static/src/xml/website_slides.xml', qweb);
|
||||||
|
|
||||||
@@ -356,8 +358,6 @@ var SlideDialog = Widget.extend({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
base.dom_ready.then(function () {
|
|
||||||
|
|
||||||
// bind the event to the button
|
// bind the event to the button
|
||||||
$('.oe_slide_js_upload').on('click', function () {
|
$('.oe_slide_js_upload').on('click', function () {
|
||||||
var channel_id = $(this).attr('channel_id');
|
var channel_id = $(this).attr('channel_id');
|
||||||
@@ -365,7 +365,3 @@ base.dom_ready.then(function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|||||||
Reference in New Issue
Block a user