diff options
| author | Vidhin Mehta (OpenERP) <vme@tinyerp.com> | 2011-11-22 14:21:46 +0530 |
|---|---|---|
| committer | Vidhin Mehta (OpenERP) <vme@tinyerp.com> | 2011-11-22 14:21:46 +0530 |
| commit | f1e0fefba0b8faa23da34b5fa869e1695c034740 (patch) | |
| tree | 6872911c9dcd847d06f74d562e335e3f55a07cd9 /addons/web/static/src | |
| parent | 37f2f7cd4ca1817f3bcc61ff073f547a11b7ce91 (diff) | |
| parent | c9830bb353fbbe93d00971f85b31002f733674bc (diff) | |
[Merge]merge with main branch.
bzr revid: vme@tinyerp.com-20111122085146-khp27cdcja9e8gac
Diffstat (limited to 'addons/web/static/src')
| -rw-r--r-- | addons/web/static/src/js/data.js | 13 | ||||
| -rw-r--r-- | addons/web/static/src/js/view_editor.js | 5 | ||||
| -rw-r--r-- | addons/web/static/src/js/view_form.js | 17 | ||||
| -rw-r--r-- | addons/web/static/src/js/views.js | 71 |
4 files changed, 65 insertions, 41 deletions
diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index 69d8fd9ddfd..0d3833ee835 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -730,6 +730,19 @@ openerp.web.BufferedDataSet = openerp.web.DataSetStatic.extend({ return_records(); } return completion.promise(); + }, + call_button: function (method, args, callback, error_callback) { + var id = args[0][0], index; + for(var i=0, len=this.cache.length; i<len; ++i) { + var record = this.cache[i]; + // if record we call the button upon is in the cache + if (record.id === id) { + // evict it so it gets reloaded from server + this.cache.splice(i, 1); + break; + } + } + return this._super(method, args, callback, error_callback); } }); openerp.web.BufferedDataSet.virtual_id_regex = /^one2many_v_id_.*$/; diff --git a/addons/web/static/src/js/view_editor.js b/addons/web/static/src/js/view_editor.js index 173b3bfc4f0..9a8d5c7268e 100644 --- a/addons/web/static/src/js/view_editor.js +++ b/addons/web/static/src/js/view_editor.js @@ -295,7 +295,7 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ }); }else{ var temp = _.reject(xpath_arch_object[0].child_id[0].att_list, function(list) { - return list instanceof Array? _.include(list, "position"): false + return list instanceof Array? _.include(list, "position"): false; }); expr_to_list = [_.flatten(temp)]; } @@ -878,8 +878,7 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ _.each(widgets, function(widget) { var type_widget = new (self.property.get_any([widget.type])) (self.edit_node_dialog, widget); var value = _.detect(arch_val[0]['att_list'],function(res) { - if (res instanceof Array) return _.include(res, widget.name); - else return false; + return res instanceof Array? _.include(res, widget.name): false; }); value = value instanceof Array ? value[1] : value; self.edit_node_dialog.$element.find('table[id=rec_table]').append('<tr><td align="right">' + widget.string + ':</td>' + type_widget.render() + '</tr>'); diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index d833b7471c6..8a58dec13ec 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -176,7 +176,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# this.datarecord = record; _(this.fields).each(function (field, f) { - field.dirty = false; + field.reset(); var result = field.set_value(self.datarecord[f] || false); if (result && _.isFunction(result.promise)) { deferred_stack.push(result); @@ -438,7 +438,10 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# if (!first_invalid_field) { first_invalid_field = f; } - } else if (f.is_dirty()) { + } else if (f.name !== 'id' && !f.readonly && (!self.datarecord.id || f.is_dirty())) { + // Special case 'id' field, do not save this field + // on 'create' : save all non readonly fields + // on 'edit' : save non readonly modified fields values[f.name] = f.get_value(); } } @@ -575,6 +578,9 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# return false; } return true; + }, + sidebar_context: function () { + return this.do_save().pipe($.proxy(this, 'get_fields_values')); } }); openerp.web.FormDialog = openerp.web.Dialog.extend({ @@ -1191,8 +1197,7 @@ openerp.web.form.Field = openerp.web.form.Widget.extend(/** @lends openerp.web.f this.nolabel = (this.field.nolabel || node.attrs.nolabel) === '1'; this.readonly = this.modifiers['readonly'] === true; this.required = this.modifiers['required'] === true; - this.invalid = false; - this.dirty = false; + this.invalid = this.dirty = false; this.classname = 'oe_form_field_' + this.type; }, @@ -1262,6 +1267,9 @@ openerp.web.form.Field = openerp.web.form.Widget.extend(/** @lends openerp.web.f this.invalid = false; }, focus: function() { + }, + reset: function() { + this.dirty = false; } }); @@ -1351,7 +1359,6 @@ openerp.web.form.FieldFloat = openerp.web.form.FieldChar.extend({ if (value === false || value === undefined) { // As in GTK client, floats default to 0 value = 0; - this.dirty = true; } this._super.apply(this, [value]); } diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index eff94b95ad7..5a26ef58b03 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -143,7 +143,7 @@ session.web.ActionManager = session.web.Widget.extend({ var ClientWidget = session.web.client_actions.get_object(action.tag); (this.client_widget = new ClientWidget(this, action.params)).appendTo(this); }, - ir_actions_report_xml: function(action) { + ir_actions_report_xml: function(action, on_closed) { var self = this; $.blockUI(); self.rpc("/web/session/eval_domain_and_context", { @@ -155,8 +155,14 @@ session.web.ActionManager = session.web.Widget.extend({ self.session.get_file({ url: '/web/report', data: {action: JSON.stringify(action)}, - complete: $.unblockUI - }); + complete: $.unblockUI, + success: function(){ + if (!self.dialog && on_closed) { + on_closed(); + } + self.dialog_stop(); + } + }) }); }, ir_actions_act_url: function (action) { @@ -673,13 +679,7 @@ session.web.Sidebar = session.web.Widget.extend({ item.callback.apply(self, [item]); } if (item.action) { - if (self.widget_parent instanceof session.web.FormView) { - self.widget_parent.do_save(function() { - self.on_item_action_clicked(item); - }); - } else { - self.on_item_action_clicked(item); - } + self.on_item_action_clicked(item); } return false; }); @@ -693,29 +693,31 @@ session.web.Sidebar = session.web.Widget.extend({ }, on_item_action_clicked: function(item) { var self = this; - var ids = self.widget_parent.get_selected_ids(); - if (ids.length == 0) { - //TODO: make prettier warning? - $("<div />").text(_t("You must choose at least one record.")).dialog({ - title: _t("Warning"), - modal: true + self.widget_parent.sidebar_context().then(function (context) { + var ids = self.widget_parent.get_selected_ids(); + if (ids.length == 0) { + //TODO: make prettier warning? + $("<div />").text(_t("You must choose at least one record.")).dialog({ + title: _t("Warning"), + modal: true + }); + return false; + } + var additional_context = _.extend({ + active_id: ids[0], + active_ids: ids, + active_model: self.widget_parent.dataset.model + }, context); + self.rpc("/web/action/load", { + action_id: item.action.id, + context: additional_context + }, function(result) { + result.result.context = _.extend(result.result.context || {}, + additional_context); + result.result.flags = result.result.flags || {}; + result.result.flags.new_window = true; + self.do_action(result.result); }); - return false; - } - var additional_context = { - active_id: ids[0], - active_ids: ids, - active_model: self.widget_parent.dataset.model - }; - self.rpc("/web/action/load", { - action_id: item.action.id, - context: additional_context - }, function(result) { - result.result.context = _.extend(result.result.context || {}, - additional_context); - result.result.flags = result.result.flags || {}; - result.result.flags.new_window = true; - self.do_action(result.result); }); }, do_fold: function() { @@ -882,7 +884,7 @@ session.web.View = session.web.Widget.extend(/** @lends session.web.View# */{ } }; var context = new session.web.CompoundContext(dataset.get_context(), action_data.context || {}); - + var handler = function (r) { var action = r.result; if (action && action.constructor == Object) { @@ -973,6 +975,9 @@ session.web.View = session.web.Widget.extend(/** @lends session.web.View# */{ }); }, on_sidebar_view_log: function() { + }, + sidebar_context: function () { + return $.Deferred().resolve({}).promise(); } }); |
