diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index b304fca8d64..e28e42385ec 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -1784,7 +1784,7 @@ openerp.base.form.FieldMany2Many = openerp.base.form.Field.extend({ self.on_ui_change(); }); - this.list_view = new openerp.base.form.Many2ManyListView(this.view.view_manager, this.list_id, this.dataset, false, { + this.list_view = new openerp.base.form.Many2ManyListView(new openerp.base.NullViewManager(this), this.list_id, this.dataset, false, { 'addable': 'Add', 'selectable': self.multi_selection }); @@ -1918,7 +1918,7 @@ openerp.base.form.SelectCreatePopup = openerp.base.BaseWidget.extend({ $sbutton.click(function() { self.on_select_elements(self.selected_ids); }); - self.view_list = new openerp.base.form.SelectCreateListView(this, + self.view_list = new openerp.base.form.SelectCreateListView(self, self.element_id + "_view_list", self.dataset, false, {'deletable': false}); self.view_list.popup = self; diff --git a/addons/base/static/src/js/list.js b/addons/base/static/src/js/list.js index 6812d4fac09..6bed26ce692 100644 --- a/addons/base/static/src/js/list.js +++ b/addons/base/static/src/js/list.js @@ -391,7 +391,8 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi this.groups.apoptosis().render()); this.hidden = false; } - this.view_manager.sidebar.do_refresh(true); + if(this.view_manager.sidebar) + this.view_manager.sidebar.do_refresh(true); }, do_hide: function () { this.$element.hide(); diff --git a/addons/base/static/src/js/search.js b/addons/base/static/src/js/search.js index fcf4a175b3c..e6df3767f4a 100644 --- a/addons/base/static/src/js/search.js +++ b/addons/base/static/src/js/search.js @@ -593,32 +593,40 @@ openerp.base.search.BooleanField = openerp.base.search.Field.extend({ } } }); -openerp.base.search.IntegerField = openerp.base.search.Field.extend({ +openerp.base.search.NumberField = openerp.base.search.Field.extend(/** @lends openerp.base.search.NumberField# */{ get_value: function () { if (!this.$element.val()) { return null; } - var val = parseInt(this.$element.val()); - var check = Number(this.$element.val()); - if (isNaN(check) || val !== check) { + var val = this.parse(this.$element.val()), + check = Number(this.$element.val()); + if (isNaN(val) || val !== check) { this.$element.addClass('error'); throw new openerp.base.search.Invalid( - this.attrs.name, this.$element.val(), "not a valid integer"); + this.attrs.name, this.$element.val(), this.error_message); } this.$element.removeClass('error'); return val; } }); -openerp.base.search.FloatField = openerp.base.search.Field.extend({ - get_value: function () { - var val = Number(this.$element.val()); - if (isNaN(val)) { - this.$element.addClass('error'); - throw new openerp.base.search.Invalid( - this.attrs.name, this.$element.val(), "not a valid number"); - } - this.$element.removeClass('error'); - return val; +/** + * @class + * @extends openerp.base.search.NumberField + */ +openerp.base.search.IntegerField = openerp.base.search.NumberField.extend(/** @lends openerp.base.search.IntegerField# */{ + error_message: "not a valid integer", + parse: function (value) { + return parseInt(value, 10); + } +}); +/** + * @class + * @extends openerp.base.search.NumberField + */ +openerp.base.search.FloatField = openerp.base.search.NumberField.extend(/** @lends openerp.base.search.FloatField# */{ + error_message: "not a valid number", + parse: function (value) { + return parseFloat(value); } }); openerp.base.search.SelectionField = openerp.base.search.Field.extend({ diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index 11601f6f170..0f520cab13d 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -268,8 +268,10 @@ openerp.base.ViewManager = openerp.base.Controller.extend({ }); openerp.base.NullViewManager = openerp.base.generate_null_object_class(openerp.base.ViewManager, { - init: function() { - this._super(); + init: function(parent) { + this._super(parent); + if(parent) + this.session = parent.session; this.action = {flags: {}}; this.sidebar = new openerp.base.NullSidebar(); } diff --git a/addons/base/static/src/xml/base.xml b/addons/base/static/src/xml/base.xml index c5e3614ca4a..04841a2e297 100644 --- a/addons/base/static/src/xml/base.xml +++ b/addons/base/static/src/xml/base.xml @@ -143,8 +143,8 @@