diff --git a/addons/base/controllers/main.py b/addons/base/controllers/main.py index 86e0af09429..36ea829a2f9 100644 --- a/addons/base/controllers/main.py +++ b/addons/base/controllers/main.py @@ -480,8 +480,8 @@ class View(openerpweb.Controller): else: xml = ElementTree.fromstring(fvg['arch']) fvg['arch'] = Xml2Json.convert_element(xml) - for field in fvg["fields"].values(): - if field["views"]: + for field in fvg['fields'].values(): + if field.has_key('views') and field['views']: for view in field["views"].values(): self.process_view(session, view, None, transform) @@ -496,11 +496,14 @@ class View(openerpweb.Controller): return {'result': True} @openerpweb.jsonrequest - def undo_custom(self, request, view_id): + def undo_custom(self, request, view_id, reset=False): CustomView = request.session.model('ir.ui.view.custom') vcustom = CustomView.search([('user_id', '=', request.session._uid), ('ref_id' ,'=', view_id)]) if vcustom: - CustomView.unlink([vcustom[0]]) + if reset: + CustomView.unlink(vcustom) + else: + CustomView.unlink([vcustom[0]]) return {'result': True} return {'result': False} diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index 2b09c4ac27c..b49aadd7a2d 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -84,9 +84,9 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV this.datarecord = record; for (var f in this.fields) { var field = this.fields[f]; + field.touched = false; field.set_value(this.datarecord[f] || false); field.validate(); - field.touched = false; } if (!record.id) { // New record: Second pass in order to trigger the onchanges @@ -750,6 +750,7 @@ openerp.base.form.FieldFloat = openerp.base.form.FieldChar.extend({ set_value: function(value) { if (!value) { // As in GTK client, floats default to 0 + this.touched = this.view.touched = true; value = 0; } this._super.apply(this, [value]); diff --git a/addons/base_dashboard/static/src/js/dashboard.js b/addons/base_dashboard/static/src/js/dashboard.js index 9d6511fd215..6e6a0a5a1f1 100644 --- a/addons/base_dashboard/static/src/js/dashboard.js +++ b/addons/base_dashboard/static/src/js/dashboard.js @@ -18,6 +18,7 @@ openerp.base.form.DashBoard = openerp.base.form.Widget.extend({ // Events this.$element.find('.oe-dashboard-link-undo').click(this.on_undo); + this.$element.find('.oe-dashboard-link-reset').click(this.on_reset); this.$element.find('.oe-dashboard-link-add_widget').click(this.on_add_widget); this.$element.find('.oe-dashboard-link-change_layout').click(this.on_change_layout); this.$element.find('.oe-dashboard-column .ui-icon-minusthick').click(this.on_fold_action); @@ -42,6 +43,12 @@ openerp.base.form.DashBoard = openerp.base.form.Widget.extend({ view_id: this.view.fields_view.view_id }, this.do_reload); }, + on_reset: function() { + this.rpc('/base/view/undo_custom', { + view_id: this.view.fields_view.view_id, + reset: true + }, this.do_reload); + }, on_add_widget: function() { }, on_change_layout: function() { @@ -112,7 +119,7 @@ openerp.base.form.DashBoard = openerp.base.form.Widget.extend({ view_id: this.view.fields_view.view_id, arch: arch }, function() { - self.$element.find('.oe-dashboard-link-undo').show(); + self.$element.find('.oe-dashboard-link-undo, .oe-dashboard-link-reset').show(); }); }, on_load_action: function(result) { diff --git a/addons/base_dashboard/static/src/xml/base_dashboard.xml b/addons/base_dashboard/static/src/xml/base_dashboard.xml index 9c43be6996c..fbe34a3892b 100644 --- a/addons/base_dashboard/static/src/xml/base_dashboard.xml +++ b/addons/base_dashboard/static/src/xml/base_dashboard.xml @@ -1,6 +1,10 @@