From 3348916e9c1027a799a4b3d962b52f96e881c0ba Mon Sep 17 00:00:00 2001 From: Valentin Lab Date: Tue, 4 Oct 2011 18:28:41 +0200 Subject: [fix] remove bad undefined value returned instead of a real promise. bzr revid: valentin.lab@kalysto.org-20111004162841-h25ns7b4ivxo43z3 --- addons/web/static/src/js/view_form.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 1b7a7fe6fcf..cac9ad41e2c 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -808,7 +808,7 @@ openerp.web.form.WidgetNotebook = openerp.web.form.Widget.extend({ page.id = self.pages[index].element_id; }); this.$element.tabs(); - this.view.on_button_new.add_last(this.do_select_first_visible_tab); + this.view.on_button_new.add_first(this.do_select_first_visible_tab); }, do_select_first_visible_tab: function() { for (var i = 0; i < this.pages.length; i++) { -- cgit v1.2.3 From 5e417f203aa36255eaf7836fb4b4dbb5ec7f813b Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 10 Oct 2011 11:44:38 +0200 Subject: [imp] improved popup for m2o to support usage of buttons while creating a row bzr revid: nicolas.vanhoren@openerp.com-20111010094438-33drycp4l7o1vnzt --- addons/web/static/src/js/data.js | 28 ++++++++++++++++++++++------ addons/web/static/src/js/view_form.js | 30 ++++++++++++++++++++---------- 2 files changed, 42 insertions(+), 16 deletions(-) (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index fcf6a65dcf5..dc0e21cf796 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -721,26 +721,42 @@ openerp.web.BufferedDataSet = openerp.web.DataSetStatic.extend({ openerp.web.BufferedDataSet.virtual_id_regex = /^one2many_v_id_.*$/; openerp.web.ReadOnlyDataSetSearch = openerp.web.DataSetSearch.extend({ + init: function() { + this._super.apply(this, arguments); + this.create_function = null; + this.write_function = null; + }, default_get: function(fields, callback) { return this._super(fields, callback).then(this.on_default_get); }, on_default_get: function(result) {}, create: function(data, callback, error_callback) { this.on_create(data); - var to_return = $.Deferred().then(callback); - setTimeout(function () {to_return.resolve({"result": undefined});}, 0); - return to_return.promise(); + if (this.create_function) { + return this.create_function(data, callback, error_callback); + } else { + console.warn("trying to create a record using read only dataset"); + var to_return = $.Deferred().then(callback); + setTimeout(function () {to_return.resolve({"result": undefined});}, 0); + return to_return.promise(); + } }, on_create: function(data) {}, write: function (id, data, options, callback) { this.on_write(id, data); - var to_return = $.Deferred().then(callback); - setTimeout(function () {to_return.resolve({"result": true});}, 0); - return to_return.promise(); + if (this.write_function) { + return this.write_function(id, data, options, callback); + } else { + console.warn("trying to write a record using read only dataset"); + var to_return = $.Deferred().then(callback); + setTimeout(function () {to_return.resolve({"result": true});}, 0); + return to_return.promise(); + } }, on_write: function(id, data) {}, unlink: function(ids, callback, error_callback) { this.on_unlink(ids); + console.warn("trying to unlink a record using read only dataset"); var to_return = $.Deferred().then(callback); setTimeout(function () {to_return.resolve({"result": true});}, 0); return to_return.promise(); diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index aecb7e534ea..b697d1a5a22 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -2226,8 +2226,20 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope }, start: function() { this._super(); + var self = this; this.dataset = new openerp.web.ReadOnlyDataSetSearch(this, this.model, this.context); + this.dataset.create_function = function() { + return self.options.create_function.apply(null, arguments).then(function(r) { + self.created_elements.push(r.result); + if (self._created) { + self._created.resolve(); + } + }); + } + this.dataset.write_function = function() { + return self.write_row.apply(null, arguments); + } this.dataset.parent_view = this.options.parent_view; this.dataset.on_default_get.add(this.on_default_get); if (this.options.initial_view == "search") { @@ -2292,11 +2304,17 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope self.view_list.do_search(results.domain, results.context, results.group_by); }); }, - create_row: function(data) { + create_row: function() { + var self = this; + var wdataset = new openerp.web.DataSetSearch(this, this.model, this.context, this.domain); + wdataset.parent_view = this.options.parent_view; + return wdataset.create.apply(wdataset, arguments); + }, + write_row: function() { var self = this; var wdataset = new openerp.web.DataSetSearch(this, this.model, this.context, this.domain); wdataset.parent_view = this.options.parent_view; - return wdataset.create(data); + return wdataset.write.apply(wdataset, arguments); }, on_select_elements: function(element_ids) { }, @@ -2346,14 +2364,6 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope self.check_exit(); }); }); - this.dataset.on_create.add(function(data) { - self.options.create_function(data).then(function(r) { - self.created_elements.push(r.result); - if (self._created) { - self._created.resolve(); - } - }); - }); this.view_form.do_show(); }, check_exit: function() { -- cgit v1.2.3 From cb46665b01917c91d6d293dd9ade5bdd20cd197b Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 10 Oct 2011 11:57:54 +0200 Subject: [fix] some bugs with m2o & buttons while creation bzr revid: nicolas.vanhoren@openerp.com-20111010095754-jfxvgtqvrfk3xqbn --- addons/web/static/src/js/view_form.js | 18 +++++++++++------- addons/web/static/src/js/views.js | 4 +++- 2 files changed, 14 insertions(+), 8 deletions(-) (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index b697d1a5a22..22682ecbabb 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -2232,13 +2232,17 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope this.dataset.create_function = function() { return self.options.create_function.apply(null, arguments).then(function(r) { self.created_elements.push(r.result); - if (self._created) { - self._created.resolve(); + if (self._written) { + self._written.resolve(); } }); } this.dataset.write_function = function() { - return self.write_row.apply(null, arguments); + return self.write_row.apply(self, arguments).then(function() { + if (self._written) { + self._written.resolve(); + } + }); } this.dataset.parent_view = this.options.parent_view; this.dataset.on_default_get.add(this.on_default_get); @@ -2345,16 +2349,16 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope $buttons.html(QWeb.render("SelectCreatePopup.form.buttons", {widget:self})); var $nbutton = $buttons.find(".oe_selectcreatepopup-form-save-new"); $nbutton.click(function() { - self._created = $.Deferred().then(function() { - self._created = undefined; + self._written = $.Deferred().then(function() { + self._written = undefined; self.view_form.on_button_new(); }); self.view_form.do_save(); }); var $nbutton = $buttons.find(".oe_selectcreatepopup-form-save"); $nbutton.click(function() { - self._created = $.Deferred().then(function() { - self._created = undefined; + self._written = $.Deferred().then(function() { + self._written = undefined; self.check_exit(); }); self.view_form.do_save(); diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 46091fa91b7..aeedee706d8 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -771,7 +771,9 @@ db.web.View = db.web.Widget.extend(/** @lends db.web.View# */{ var self = this; var result_handler = function () { if (on_closed) { on_closed.apply(null, arguments); } - return self.widget_parent.on_action_executed.apply(null, arguments); + if (self.widget_parent && self.widget_parent.on_action_executed) { + return self.widget_parent.on_action_executed.apply(null, arguments); + } }; var handler = function (r) { var action = r.result; -- cgit v1.2.3 From c4296a85ac4b87904da80968cc7c345d1417889f Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 10 Oct 2011 13:26:21 +0200 Subject: [fix] problem with some domains that need evaluation bzr revid: nicolas.vanhoren@openerp.com-20111010112621-3kl83keyjingzus8 --- addons/web/static/src/js/view_form.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 22682ecbabb..4df2e812d32 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -1083,7 +1083,11 @@ openerp.web.form.Field = openerp.web.form.Widget.extend(/** @lends openerp.web.f * the fields'context with the action's context. */ build_context: function() { - var f_context = this.field.context || null; + var f_context = this.field.context || {}; + if (!!f_context.__ref) { + var fields_values = this._build_eval_context(); + f_context = new openerp.web.CompoundDomain(f_context).set_eval_context(fields_values); + } // maybe the default_get should only be used when we do a default_get? var v_contexts = _.compact([this.node.attrs.default_get || null, this.node.attrs.context || null]); @@ -1098,14 +1102,15 @@ openerp.web.form.Field = openerp.web.form.Widget.extend(/** @lends openerp.web.f return ctx; }, build_domain: function() { - var f_domain = this.field.domain || null; - var v_domain = this.node.attrs.domain || []; - if (!(v_domain instanceof Array) || true) { //TODO niv: remove || true + var f_domain = this.field.domain || []; + var n_domain = this.node.attrs.domain || null; + // if there is a domain on the node, overrides the model's domain + var final_domain = n_domain !== null ? n_domain : f_domain; + if (!(final_domain instanceof Array)) { var fields_values = this._build_eval_context(); - v_domain = new openerp.web.CompoundDomain(v_domain).set_eval_context(fields_values); + final_domain = new openerp.web.CompoundDomain(final_domain).set_eval_context(fields_values); } - // if there is a domain on the node, overrides the model's domain - return f_domain || v_domain; + return final_domain; } }); -- cgit v1.2.3 From a9e71991585e0b0bec49de743046e38b1252d71c Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 10 Oct 2011 14:24:12 +0200 Subject: [fix] quick fix of the regression in o2m to make it impossible to create a record bzr revid: nicolas.vanhoren@openerp.com-20111010122412-gvfa460qpe09ad4g --- addons/web/static/src/js/view_form.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 4df2e812d32..480679432da 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -2072,11 +2072,12 @@ openerp.web.form.One2ManyListView = openerp.web.ListView.extend({ pop.select_element(self.o2m.field.relation,{ initial_view: "form", alternative_form_view: self.o2m.field.views ? self.o2m.field.views["form"] : undefined, - create_function: function(data) { - return self.o2m.dataset.create(data, function(r) { + create_function: function(data, callback, error_callback) { + return self.o2m.dataset.create(data).pipe(function(r) { self.o2m.dataset.set_ids(self.o2m.dataset.ids.concat([r.result])); self.o2m.dataset.on_change(); - }); + return {'result': undefined}; + }).then(callback, error_callback); }, parent_view: self.o2m.view, form_view_options: {'not_interactible_on_create':true} -- cgit v1.2.3 From ca224b647cefbd752aff8f6cfacd27593ec874a8 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 10 Oct 2011 14:28:28 +0200 Subject: [FIX] Dashboard are dulicated after undo lp bug: https://launchpad.net/bugs/842808 fixed bzr revid: fme@openerp.com-20111010122828-0ra0lft4vbp2mr9s --- addons/web/static/src/js/view_form.js | 1 + 1 file changed, 1 insertion(+) (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 480679432da..f1fab7702c3 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -11,6 +11,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# */ searchable: false, form_template: "FormView", + identifier_prefix: 'formview-', /** * @constructs openerp.web.FormView * @extends openerp.web.View -- cgit v1.2.3 From 33b4285d17235ced31a8190fa08c050843ca32c0 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 10 Oct 2011 14:40:44 +0200 Subject: [imp] improved conceptually the preceding fix regarding o2m bzr revid: nicolas.vanhoren@openerp.com-20111010124044-8c02gdeddceq78du --- addons/web/static/src/js/data.js | 16 ++++++++++++---- addons/web/static/src/js/view_form.js | 18 +++++++++++------- 2 files changed, 23 insertions(+), 11 deletions(-) (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index dc0e21cf796..0410372f631 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -720,11 +720,19 @@ openerp.web.BufferedDataSet = openerp.web.DataSetStatic.extend({ }); openerp.web.BufferedDataSet.virtual_id_regex = /^one2many_v_id_.*$/; -openerp.web.ReadOnlyDataSetSearch = openerp.web.DataSetSearch.extend({ +openerp.web.ProxyDataSet = openerp.web.DataSetSearch.extend({ init: function() { this._super.apply(this, arguments); this.create_function = null; this.write_function = null; + this.read_function = null; + }, + read_ids: function () { + if (this.read_function) { + return this.read_function.apply(null, arguments); + } else { + this._super.apply(this, arguments); + } }, default_get: function(fields, callback) { return this._super(fields, callback).then(this.on_default_get); @@ -735,7 +743,7 @@ openerp.web.ReadOnlyDataSetSearch = openerp.web.DataSetSearch.extend({ if (this.create_function) { return this.create_function(data, callback, error_callback); } else { - console.warn("trying to create a record using read only dataset"); + console.warn("trying to create a record using default proxy dataset behavior"); var to_return = $.Deferred().then(callback); setTimeout(function () {to_return.resolve({"result": undefined});}, 0); return to_return.promise(); @@ -747,7 +755,7 @@ openerp.web.ReadOnlyDataSetSearch = openerp.web.DataSetSearch.extend({ if (this.write_function) { return this.write_function(id, data, options, callback); } else { - console.warn("trying to write a record using read only dataset"); + console.warn("trying to write a record using default proxy dataset behavior"); var to_return = $.Deferred().then(callback); setTimeout(function () {to_return.resolve({"result": true});}, 0); return to_return.promise(); @@ -756,7 +764,7 @@ openerp.web.ReadOnlyDataSetSearch = openerp.web.DataSetSearch.extend({ on_write: function(id, data) {}, unlink: function(ids, callback, error_callback) { this.on_unlink(ids); - console.warn("trying to unlink a record using read only dataset"); + console.warn("trying to unlink a record using default proxy dataset behavior"); var to_return = $.Deferred().then(callback); setTimeout(function () {to_return.resolve({"result": true});}, 0); return to_return.promise(); diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index f1fab7702c3..5cf5f27b3de 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -2074,12 +2074,14 @@ openerp.web.form.One2ManyListView = openerp.web.ListView.extend({ initial_view: "form", alternative_form_view: self.o2m.field.views ? self.o2m.field.views["form"] : undefined, create_function: function(data, callback, error_callback) { - return self.o2m.dataset.create(data).pipe(function(r) { + return self.o2m.dataset.create(data).then(function(r) { self.o2m.dataset.set_ids(self.o2m.dataset.ids.concat([r.result])); self.o2m.dataset.on_change(); - return {'result': undefined}; }).then(callback, error_callback); }, + /*read_function: function() { + return self.o2m.dataset.read_ids.apply(self.o2m.dataset, arguments); + },*/ parent_view: self.o2m.view, form_view_options: {'not_interactible_on_create':true} }, self.o2m.build_domain(), self.o2m.build_context()); @@ -2215,6 +2217,7 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope * - parent_view * - form_view_options * - list_view_options + * - read_function */ select_element: function(model, options, domain, context) { var self = this; @@ -2223,7 +2226,7 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope this.context = context || {}; this.options = _.defaults(options || {}, {"initial_view": "search", "create_function": function() { return self.create_row.apply(self, arguments); - }}); + }, read_function: null}); this.initial_ids = this.options.initial_ids; this.created_elements = []; openerp.web.form.dialog(this.render(), {close:function() { @@ -2234,7 +2237,7 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope start: function() { this._super(); var self = this; - this.dataset = new openerp.web.ReadOnlyDataSetSearch(this, this.model, + this.dataset = new openerp.web.ProxyDataSet(this, this.model, this.context); this.dataset.create_function = function() { return self.options.create_function.apply(null, arguments).then(function(r) { @@ -2243,14 +2246,15 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope self._written.resolve(); } }); - } + }; this.dataset.write_function = function() { return self.write_row.apply(self, arguments).then(function() { if (self._written) { self._written.resolve(); } }); - } + }; + this.dataset.read_function = this.options.read_function; this.dataset.parent_view = this.options.parent_view; this.dataset.on_default_get.add(this.on_default_get); if (this.options.initial_view == "search") { @@ -2471,7 +2475,7 @@ openerp.web.form.FormOpenPopup = openerp.web.OldWidget.extend(/** @lends openerp } }); -openerp.web.form.FormOpenDataset = openerp.web.ReadOnlyDataSetSearch.extend({ +openerp.web.form.FormOpenDataset = openerp.web.ProxyDataSet.extend({ read_ids: function() { if (this.fop.options.read_function) { return this.fop.options.read_function.apply(null, arguments); -- cgit v1.2.3 From fa9df495ef2f372ed3a57425ca52e8bfbe6ca27f Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 10 Oct 2011 14:45:16 +0200 Subject: [fix] forgot some things bzr revid: nicolas.vanhoren@openerp.com-20111010124516-5vtzop9sbr5z78r0 --- addons/web/static/src/js/data.js | 2 +- addons/web/static/src/js/view_form.js | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index 0410372f631..f72c1b50fcd 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -731,7 +731,7 @@ openerp.web.ProxyDataSet = openerp.web.DataSetSearch.extend({ if (this.read_function) { return this.read_function.apply(null, arguments); } else { - this._super.apply(this, arguments); + return this._super.apply(this, arguments); } }, default_get: function(fields, callback) { diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 5cf5f27b3de..19ed46b3081 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -11,7 +11,6 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# */ searchable: false, form_template: "FormView", - identifier_prefix: 'formview-', /** * @constructs openerp.web.FormView * @extends openerp.web.View @@ -2079,9 +2078,9 @@ openerp.web.form.One2ManyListView = openerp.web.ListView.extend({ self.o2m.dataset.on_change(); }).then(callback, error_callback); }, - /*read_function: function() { + read_function: function() { return self.o2m.dataset.read_ids.apply(self.o2m.dataset, arguments); - },*/ + }, parent_view: self.o2m.view, form_view_options: {'not_interactible_on_create':true} }, self.o2m.build_domain(), self.o2m.build_context()); -- cgit v1.2.3 From 85b08d410f46e2fa21df6ff5bc17a0a9746a5245 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 10 Oct 2011 15:12:02 +0200 Subject: [fix] problem in o2m when using "save & next" bzr revid: nicolas.vanhoren@openerp.com-20111010131202-gc0s7sbkffuh1dtk --- addons/web/static/src/js/view_form.js | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 19ed46b3081..a7a0e4f2072 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -424,8 +424,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# // should not happen in the server, but may happen for internal purpose return $.Deferred().reject(); } else { - this.reload(); - return $.Deferred().then(success).resolve(r); + return this.reload().then(success); } }, /** @@ -459,8 +458,9 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# this.sidebar.attachments.do_update(); } console.debug("The record has been created with id #" + this.datarecord.id); - this.reload(); - return $.Deferred().then(success).resolve(_.extend(r, {created: true})); + return this.reload().pipe(function() { + return _.extend(r, {created: true}); + }).then(success); } }, on_action: function (action) { @@ -471,9 +471,9 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# }, reload: function() { if (this.dataset.index == null || this.dataset.index < 0) { - this.on_button_new(); + return $.when(this.on_button_new()); } else { - this.dataset.read_index(_.keys(this.fields_view.fields), this.on_record_loaded); + return this.dataset.read_index(_.keys(this.fields_view.fields), this.on_record_loaded); } }, get_fields_values: function() { @@ -2241,17 +2241,10 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope this.dataset.create_function = function() { return self.options.create_function.apply(null, arguments).then(function(r) { self.created_elements.push(r.result); - if (self._written) { - self._written.resolve(); - } }); }; this.dataset.write_function = function() { - return self.write_row.apply(self, arguments).then(function() { - if (self._written) { - self._written.resolve(); - } - }); + return self.write_row.apply(self, arguments); }; this.dataset.read_function = this.options.read_function; this.dataset.parent_view = this.options.parent_view; @@ -2359,19 +2352,15 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope $buttons.html(QWeb.render("SelectCreatePopup.form.buttons", {widget:self})); var $nbutton = $buttons.find(".oe_selectcreatepopup-form-save-new"); $nbutton.click(function() { - self._written = $.Deferred().then(function() { - self._written = undefined; + $.when(self.view_form.do_save()).then(function() { self.view_form.on_button_new(); }); - self.view_form.do_save(); }); var $nbutton = $buttons.find(".oe_selectcreatepopup-form-save"); $nbutton.click(function() { - self._written = $.Deferred().then(function() { - self._written = undefined; + $.when(self.view_form.do_save()).then(function() { self.check_exit(); }); - self.view_form.do_save(); }); var $cbutton = $buttons.find(".oe_selectcreatepopup-form-close"); $cbutton.click(function() { -- cgit v1.2.3 From ce2b437cad90baad7b43035d7e3c773e853e2e28 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 10 Oct 2011 15:33:52 +0200 Subject: [FIX] Fixed visibility of binary fields buttons bzr revid: fme@openerp.com-20111010133352-j4kgqu33dskdfm3f --- addons/web/static/src/js/view_form.js | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index a7a0e4f2072..e6737ef06f6 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -2549,10 +2549,6 @@ openerp.web.form.FieldBinary = openerp.web.form.Field.extend({ this.$element.find('button.oe-binary-file-save').click(this.on_save_as); this.$element.find('.oe-binary-file-clear').click(this.on_clear); }, - update_dom: function() { - this._super.apply(this, arguments); - this.$element.find('.oe-binary').toggle(!this.readonly); - }, human_filesize : function(size) { var units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; var i = 0; @@ -2570,12 +2566,10 @@ openerp.web.form.FieldBinary = openerp.web.form.Field.extend({ if ($(e.target).val() != '') { this.$element.find('form.oe-binary-form input[name=session_id]').val(this.session.session_id); this.$element.find('form.oe-binary-form').submit(); - this.toggle_progress(); + this.$element.find('.oe-binary-progress').show(); + this.$element.find('.oe-binary').hide(); } }, - toggle_progress: function() { - this.$element.find('.oe-binary-progress, .oe-binary').toggle(); - }, on_file_uploaded: function(size, name, content_type, file_base64) { delete(window[this.iframe]); if (size === false) { @@ -2586,7 +2580,8 @@ openerp.web.form.FieldBinary = openerp.web.form.Field.extend({ this.on_file_uploaded_and_valid.apply(this, arguments); this.on_ui_change(); } - this.toggle_progress(); + this.$element.find('.oe-binary-progress').hide(); + this.$element.find('.oe-binary').show(); }, on_file_uploaded_and_valid: function(size, name, content_type, file_base64) { }, @@ -2612,6 +2607,10 @@ openerp.web.form.FieldBinary = openerp.web.form.Field.extend({ openerp.web.form.FieldBinaryFile = openerp.web.form.FieldBinary.extend({ template: 'FieldBinaryFile', + update_dom: function() { + this._super.apply(this, arguments); + this.$element.find('.oe-binary-file-set, .oe-binary-file-clear').toggle(!this.readonly); + }, set_value: function(value) { this._super.apply(this, arguments); var show_value = (value != null && value !== false) ? value : ''; @@ -2644,6 +2643,10 @@ openerp.web.form.FieldBinaryImage = openerp.web.form.FieldBinary.extend({ this._super.apply(this, arguments); this.$image = this.$element.find('img.oe-binary-image'); }, + update_dom: function() { + this._super.apply(this, arguments); + this.$element.find('.oe-binary').toggle(!this.readonly); + }, set_value: function(value) { this._super.apply(this, arguments); this.set_image_maxwidth(); -- cgit v1.2.3 From d31295d65bb92480394074d2ca95cf1811097f12 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 10 Oct 2011 16:15:46 +0200 Subject: [IMP] Added display_title in action flags. ViewManager won't display title if false. Will be used for dashboards, wizards, ... bzr revid: fme@openerp.com-20111010141546-b19g0sr4fzicehss --- addons/web/static/src/xml/base.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 0e5c97c4707..54bec76c4cf 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -447,8 +447,8 @@ -

- +

+ -- cgit v1.2.3 From 9857cb60fa71bb09f646b2d48df9ae2c1fc04939 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 10 Oct 2011 16:18:04 +0200 Subject: [imp] removed asynchronous operations in buffered dataset, "l'amour du risque, papapalapapapa" bzr revid: nicolas.vanhoren@openerp.com-20111010141804-zc6t2sr60twz6r4s --- addons/web/static/src/js/data.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index f72c1b50fcd..459fe2be3af 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -617,7 +617,7 @@ openerp.web.BufferedDataSet = openerp.web.DataSetStatic.extend({ this.cache.push(cached); this.on_change(); var prom = $.Deferred().then(callback); - setTimeout(function() {prom.resolve({result: cached.id});}, 0); + prom.resolve({result: cached.id}); return prom.promise(); }, write: function (id, data, options, callback) { @@ -695,7 +695,7 @@ openerp.web.BufferedDataSet = openerp.web.DataSetStatic.extend({ throw "Record not correctly loaded"; } } - setTimeout(function () {completion.resolve(records);}, 0); + completion.resolve(records); }; if(to_get.length > 0) { var rpc_promise = this._super(to_get, fields, function(records) { -- cgit v1.2.3 From aaf01c6395e40fbbeb7c889dc930f0edb2b89e9c Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 10 Oct 2011 16:36:34 +0200 Subject: [fix] dirty fix of the problem with list views in o2m bzr revid: nicolas.vanhoren@openerp.com-20111010143634-sjld7z726l6ebg53 --- addons/web/static/src/js/view_list.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index f169e641ab4..0ea1f7ec944 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -1151,7 +1151,8 @@ openerp.web.ListView.Groups = openerp.web.Class.extend( /** @lends openerp.web.L var fields = _.pluck(_.select(this.columns, function(x) {return x.tag == "field"}), 'name'); var options = { offset: page * limit, limit: limit }; - dataset.read_slice(fields, options , function (records) { + //TODO xmo: investigate why we need to put the setTimeout + setTimeout(function() {dataset.read_slice(fields, options , function (records) { if (!self.datagroup.openable) { view.configure_pager(dataset); } else { @@ -1170,7 +1171,7 @@ openerp.web.ListView.Groups = openerp.web.Class.extend( /** @lends openerp.web.L self.records.add(records, {silent: true}); list.render(); d.resolve(list); - }); + });}, 0); return d.promise(); }, setup_resequence_rows: function (list, dataset) { -- cgit v1.2.3 From 5cdf82dd0aeeb5ef8ec5b8887adf565a9c2f88fa Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 10 Oct 2011 17:00:12 +0200 Subject: [fix] problem in idea view bzr revid: nicolas.vanhoren@openerp.com-20111010150012-pty14q4z54zdtgvu --- addons/web/static/src/js/data.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index 459fe2be3af..76e430dc34a 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -613,7 +613,7 @@ openerp.web.BufferedDataSet = openerp.web.DataSetStatic.extend({ create: function(data, callback, error_callback) { var cached = {id:_.uniqueId(this.virtual_id_prefix), values: data, defaults: this.last_default_get}; - this.to_create.push(cached); + this.to_create.push(_.extend(_.clone(cached), {values: _.clone(cached.values)})); this.cache.push(cached); this.on_change(); var prom = $.Deferred().then(callback); -- cgit v1.2.3 From 5a08fd1078a23273b6d797cf41945bdf898f1109 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 10 Oct 2011 17:08:11 +0200 Subject: [IMP] Bring dashboard styling from trunk-style branch bzr revid: fme@openerp.com-20111010150811-4vdff1jcr6eqz2xq --- addons/web/static/src/img/box-a-header-a.gif | Bin 0 -> 91 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 addons/web/static/src/img/box-a-header-a.gif (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/img/box-a-header-a.gif b/addons/web/static/src/img/box-a-header-a.gif new file mode 100644 index 00000000000..6b461b42bfe Binary files /dev/null and b/addons/web/static/src/img/box-a-header-a.gif differ -- cgit v1.2.3 From 7f223e2d487bec2f4c458d5a09402b142476fd60 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Mon, 10 Oct 2011 22:34:41 +0200 Subject: [FIX] ignore invalid url hashchanges bzr revid: al@openerp.com-20111010203441-7b04w9ipkz1oxq8e --- addons/web/static/src/js/views.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index aeedee706d8..f996b4149ed 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -68,9 +68,11 @@ db.web.ActionManager = db.web.Widget.extend({ }, on_url_hashchange: function(url) { var self = this; - self.rpc("/web/action/load", { action_id: url.action_id }, function(result) { - self.do_action(result.result); - }); + if(url && url.action_id) { + self.rpc("/web/action/load", { action_id: url.action_id }, function(result) { + self.do_action(result.result); + }); + } }, do_action: function(action, on_close) { var type = action.type.replace(/\./g,'_'); -- cgit v1.2.3 From 2c55b9339d7d3f0b41ab84ad21a17b03a8e825f4 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Mon, 10 Oct 2011 23:46:34 +0200 Subject: [FIX] revert 1200 revid:fme@openerp.com-20111010150811-4vdff1jcr6eqz2xq, action manager must be used for client actions bzr revid: al@openerp.com-20111010214634-dmq7fcv840252p8t --- addons/web/static/src/js/view_form.js | 1 + 1 file changed, 1 insertion(+) (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index e6737ef06f6..d583088f4da 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -11,6 +11,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# */ searchable: false, form_template: "FormView", + identifier_prefix: 'formview-', /** * @constructs openerp.web.FormView * @extends openerp.web.View -- cgit v1.2.3 From 9b3903be983577f1aa96574e912f2b8cf51ae350 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 11 Oct 2011 12:54:26 +0200 Subject: [FIX] m2o of reference fields does not seem working m2o needs additional properties from view. reference template was broken now hide the m2o widget when no value is selected lp bug: https://launchpad.net/bugs/871677 fixed bzr revid: fme@openerp.com-20111011105426-2s4d82185q5ok4ry --- addons/web/static/src/js/view_form.js | 7 ++++++- addons/web/static/src/xml/base.xml | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index d583088f4da..ad94286e102 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -2490,6 +2490,9 @@ openerp.web.form.FieldReference = openerp.web.form.Field.extend({ }; this.get_fields_values = view.get_fields_values; this.do_onchange = this.on_form_changed = this.on_nop; + this.dataset = this.view.dataset; + this.widgets_counter = 0; + this.view_id = 'reference_' + _.uniqueId(); this.widgets = {}; this.fields = {}; this.selection = new openerp.web.form.FieldSelection(this, { attrs: { @@ -2505,8 +2508,10 @@ openerp.web.form.FieldReference = openerp.web.form.Field.extend({ on_nop: function() { }, on_selection_changed: function() { - this.m2o.field.relation = this.selection.get_value(); + var sel = this.selection.get_value(); + this.m2o.field.relation = sel; this.m2o.set_value(null); + this.m2o.$element.toggle(sel !== false); }, start: function() { this._super(); diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 54bec76c4cf..d62382b57fe 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -878,7 +878,7 @@ - + -- cgit v1.2.3 From dd4e218028197ced2d95d1156683ee9b0fc6c700 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 11 Oct 2011 13:18:52 +0200 Subject: [FIX] Fix form frame float in firefox lp bug: https://launchpad.net/bugs/865953 fixed bzr revid: fme@openerp.com-20111011111852-6he82k62bo90ni9c --- addons/web/static/src/css/base.css | 3 +++ 1 file changed, 3 insertions(+) (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 7bcf65ec3da..2734eecda98 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -828,6 +828,9 @@ label.error { } /* Form */ +.openerp .oe_frame.oe_forms { + clear: both; +} .openerp table.oe_frame td { color: #4c4c4c; } -- cgit v1.2.3 From 039e42110f6abeeb92bdd522d0c029fa5a88a8af Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 11 Oct 2011 13:29:24 +0200 Subject: [IMP] copy colorization code from listview to treeview bzr revid: xmo@openerp.com-20111011112924-ih7on411mirf5wmi --- addons/web/static/src/js/view_tree.js | 42 ++++++++++++++++++++++++++++++++++- addons/web/static/src/xml/base.xml | 2 +- 2 files changed, 42 insertions(+), 2 deletions(-) (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/js/view_tree.js b/addons/web/static/src/js/view_tree.js index 7988d65805c..78818c069c0 100644 --- a/addons/web/static/src/js/view_tree.js +++ b/addons/web/static/src/js/view_tree.js @@ -32,6 +32,8 @@ openerp.web.TreeView = openerp.web.View.extend(/** @lends openerp.web.TreeView# this.records = {}; this.options = _.extend({}, this.defaults, options || {}); + + _.bindAll(this, 'color_for'); }, start: function () { @@ -107,6 +109,43 @@ openerp.web.TreeView = openerp.web.View.extend(/** @lends openerp.web.TreeView# $select.change(); } }); + + if (this.fields_view.arch.attrs.colors) { + return; + } + this.colors = _(this.fields_view.arch.attrs.colors.split(';')).chain() + .compact() + .map(function(color_pair) { + var pair = color_pair.split(':'), + color = pair[0], + expr = pair[1]; + return [color, py.parse(py.tokenize(expr)), expr]; + }).value(); + }, + /** + * Returns the color for the provided record in the current view (from the + * ``@colors`` attribute) + * + * @param {Object} record record for the current row + * @returns {String} CSS color declaration + */ + color_for: function (record) { + if (!this.colors) { return ''; } + var context = _.extend({}, record, { + uid: this.session.uid, + current_date: new Date().toString('yyyy-MM-dd') + // TODO: time, datetime, relativedelta + }); + for(var i=0, len=this.colors.length; i -- cgit v1.2.3 From a1eadf8a600bb8bcf1facee1a03758f07b2db01b Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 11 Oct 2011 13:54:24 +0200 Subject: [IMP] Form frame : Force nolabel='1' when widget='statusbar' Hardcoded exception but this way, we retain backward compatibility between addons & old clients bzr revid: fme@openerp.com-20111011115424-rme5btg594euln2v --- addons/web/static/src/js/view_form.js | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index ad94286e102..451360d3d0c 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -756,6 +756,10 @@ openerp.web.form.WidgetFrame = openerp.web.form.Widget.extend({ var type = {}; if (node.tag == 'field') { type = this.view.fields_view.fields[node.attrs.name] || {}; + if (node.attrs.widget == 'statusbar') { + // This way we can retain backward compatibility between addons and old clients + node.attrs.nolabel = '1'; + } } var widget = new (this.view.registry.get_any( [node.attrs.widget, type.type, node.tag])) (this.view, node); -- cgit v1.2.3 From 4c1c848be3ad0e9267ccef416a264f96a947d02f Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 11 Oct 2011 15:32:01 +0200 Subject: [FIX] Fixed list view's progress bar floating on the next table cell under firefox bzr revid: fme@openerp.com-20111011133201-wryn9twnf610h4fq --- addons/web/static/src/css/base.css | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 2734eecda98..26aa2adbf1f 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -721,6 +721,9 @@ label.error { .openerp .oe-listview .oe-field-cell { cursor: pointer; } +.openerp .oe-listview .oe-field-cell progress { + width: 100%; +} .openerp .oe-listview .oe-field-cell button { padding: 0; border: none; @@ -767,6 +770,10 @@ label.error { .openerp .oe-listview .oe-list-footer span { margin: 0 1em; } +.openerp .oe-listview .oe-list-footer progress { + vertical-align:-10% !important; + width: 100%; +} /** list rounded corners -- cgit v1.2.3 From 027b46bcac1be93f0b1369030c355e6e9c77a594 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 11 Oct 2011 15:37:13 +0200 Subject: [FIX] Fixed buttons overlapping when shrinking firefox windows bzr revid: fme@openerp.com-20111011133713-6eardsp1qv8subsg --- addons/web/static/src/css/base.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 26aa2adbf1f..6968cd93493 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -725,10 +725,11 @@ label.error { width: 100%; } .openerp .oe-listview .oe-field-cell button { + margin: 0; padding: 0; border: none; background: none; - width: 100%; + width: 16px; } .openerp .oe-listview .oe-field-cell button:active { opacity: 0.5; -- cgit v1.2.3 From ce1f472d57c9259021368c5d9662433c1bd47569 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 11 Oct 2011 15:44:17 +0200 Subject: [FIX] Fixed float menus toggler under firefox bzr revid: fme@openerp.com-20111011134417-4vsfwtkq2g10b2j7 --- addons/web/static/src/css/base.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 6968cd93493..6e38d16d26e 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -300,7 +300,7 @@ label.error { text-shadow: 0 1px 0 #333; text-align: center; font-size: 18px; - line-height: 14px; + line-height: 18px; right: 0; } .openerp .secondary_menu.oe_folded .oe_toggle_secondary_menu { @@ -325,6 +325,7 @@ label.error { background: #5A5858; vertical-align: top; height: 100%; + display: block; position: relative; } .openerp .secondary_menu.oe_folded { -- cgit v1.2.3 From b819542c8f574750a3fe3b8c563eee20d38846bf Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 11 Oct 2011 17:35:35 +0200 Subject: [fix] problem with form view, does not prevent multiple creates/saves bzr revid: nicolas.vanhoren@openerp.com-20111011153535-ojo8qqpzlg3ap9fy --- addons/web/static/src/js/data.js | 4 +++ addons/web/static/src/js/view_form.js | 68 ++++++++++++++++++----------------- 2 files changed, 40 insertions(+), 32 deletions(-) (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index 76e430dc34a..ea0824fb1df 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -639,6 +639,10 @@ openerp.web.BufferedDataSet = openerp.web.DataSetStatic.extend({ self.to_write.push(record); } var cached = _.detect(this.cache, function(x) {return x.id === id;}); + if (!cached) { + cached = {id: id, values: {}}; + this.cache.push(cached); + } $.extend(cached.values, record.values); if (dirty) this.on_change(); diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index c2b16ff22fc..c940f4909e9 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -44,6 +44,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# this.translatable_fields = []; _.defaults(this.options, {"always_show_new_button": true, "not_interactible_on_create": false}); + this.save_lock = $.Deferred().resolve(); }, start: function() { this._super(); @@ -365,42 +366,45 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# */ do_save: function(success, prepend_on_create) { var self = this; - if (!this.ready) { - return $.Deferred().reject(); - } - var form_dirty = false, - form_invalid = false, - values = {}, - first_invalid_field = null; - for (var f in this.fields) { - f = this.fields[f]; - if (!f.is_valid()) { - form_invalid = true; - f.update_dom(); - if (!first_invalid_field) { - first_invalid_field = f; + var action = function() { + if (!self.ready) { + return $.Deferred().reject(); + } + var form_dirty = false, + form_invalid = false, + values = {}, + first_invalid_field = null; + for (var f in self.fields) { + f = self.fields[f]; + if (!f.is_valid()) { + form_invalid = true; + f.update_dom(); + if (!first_invalid_field) { + first_invalid_field = f; + } + } else if (f.is_dirty()) { + form_dirty = true; + values[f.name] = f.get_value(); } - } else if (f.is_dirty()) { - form_dirty = true; - values[f.name] = f.get_value(); } - } - if (form_invalid) { - first_invalid_field.focus(); - this.on_invalid(); - return $.Deferred().reject(); - } else { - console.log("About to save", values); - if (!this.datarecord.id) { - return this.dataset.create(values).pipe(function(r) { - return self.on_created(r, undefined, prepend_on_create); - }).then(success); + if (form_invalid) { + first_invalid_field.focus(); + self.on_invalid(); + return $.Deferred().reject(); } else { - return this.dataset.write(this.datarecord.id, values, {}).pipe(function(r) { - return self.on_saved(r); - }).then(success); + console.log("About to save", values); + if (!self.datarecord.id) { + return self.dataset.create(values).pipe(function(r) { + return self.on_created(r, undefined, prepend_on_create); + }).then(success); + } else { + return self.dataset.write(self.datarecord.id, values, {}).pipe(function(r) { + return self.on_saved(r); + }).then(success); + } } - } + }; + this.save_lock = this.save_lock.pipe(action, action); }, do_save_edit: function() { this.do_save(); -- cgit v1.2.3 From 511e9a0ea48a0fd2f4868d05384aa19e6c3c5d23 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Wed, 12 Oct 2011 01:36:27 +0200 Subject: [IMP] merged application tile with default home bzr revid: al@openerp.com-20111011233627-6nxfbs64lwzszh7t --- addons/web/static/src/js/core.js | 1 + 1 file changed, 1 insertion(+) (limited to 'addons/web/static/src') diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js index da9c21bf551..0d5b95ef669 100644 --- a/addons/web/static/src/js/core.js +++ b/addons/web/static/src/js/core.js @@ -74,6 +74,7 @@ openerp.web.qweb.debug = (window.location.search.indexOf('?debug') !== -1); } return this; } + // This should NOT be used, like callbackenable it's too hackish not enough javasish Class.include = function (properties) { for (var name in properties) { if (typeof properties[name] !== 'function' -- cgit v1.2.3