diff --git a/addons/base/static/src/base.html b/addons/base/static/src/base.html index 173539cace7..0c615ed8903 100644 --- a/addons/base/static/src/base.html +++ b/addons/base/static/src/base.html @@ -31,8 +31,8 @@ - + diff --git a/addons/base/static/src/js/base.js b/addons/base/static/src/js/base.js index c0c1f9131d9..28022f8b764 100644 --- a/addons/base/static/src/js/base.js +++ b/addons/base/static/src/js/base.js @@ -72,9 +72,6 @@ openerp.base = function(instance) { if (openerp.base.list) { openerp.base.list(instance); } - if (openerp.base.tree) { - openerp.base.tree(instance); - } if (openerp.base. m2o) { openerp.base.m2o(instance); } @@ -87,6 +84,9 @@ openerp.base = function(instance) { if (openerp.web_mobile) { openerp.web_mobile(instance); } + if (openerp.base.view_tree) { + openerp.base.view_tree(instance); + } }; // vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax: diff --git a/addons/base/static/src/js/chrome.js b/addons/base/static/src/js/chrome.js index 74dfb650f1f..33aa311e9a2 100644 --- a/addons/base/static/src/js/chrome.js +++ b/addons/base/static/src/js/chrome.js @@ -467,6 +467,9 @@ openerp.base.Controller = openerp.base.BasicController.extend( /** @lends opener */ rpc: function(url, data, success, error) { return this.session.rpc(url, data, success, error); + }, + do_action: function(action, on_finished) { + return this.parent.do_action(action, on_finished); } }); diff --git a/addons/base/static/src/js/data.js b/addons/base/static/src/js/data.js index 90b4b7c002d..c9892ff4706 100644 --- a/addons/base/static/src/js/data.js +++ b/addons/base/static/src/js/data.js @@ -186,7 +186,7 @@ openerp.base.ContainerDataGroup = openerp.base.DataGroup.extend( /** @lends open var child_context = _.extend({}, self.context, group.__context); return _.extend( new openerp.base.DataGroup( - self.session, self.model, group.__domain, + self, self.model, group.__domain, child_context, child_context.group_by, self.level + 1), group, {sort: self.sort}); diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index b24f0e77c79..e28e42385ec 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -85,7 +85,8 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV $('' + openerp.base.json_node_to_xml(self.fields_view.arch, true) + '').dialog({ width: '95%', height: 600}); }); - this.view_manager.sidebar.set_toolbar(data.fields_view.toolbar); + if(this.view_manager.sidebar) + this.view_manager.sidebar.set_toolbar(data.fields_view.toolbar); this.has_been_loaded.resolve(); }, do_show: function () { @@ -98,7 +99,8 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV promise = this.dataset.read_index(_.keys(this.fields_view.fields), this.on_record_loaded); } self.$element.show(); - this.view_manager.sidebar.do_refresh(true); + if(this.view_manager.sidebar) + this.view_manager.sidebar.do_refresh(true); return promise; }, do_hide: function () { @@ -1299,7 +1301,7 @@ openerp.base.form.FieldMany2One = openerp.base.form.Field.extend({ if (!self.value) { return; } - var pop = new openerp.base.form.FormOpenPopup(null, self.view.session); + var pop = new openerp.base.form.FormOpenPopup(self.view); pop.show_element(self.field.relation, self.value[0],self.build_context(), {}); pop.on_write_completed.add_last(function() { self.set_value(self.value[0]); @@ -1749,7 +1751,7 @@ openerp.base.form.One2ManyListView = openerp.base.ListView.extend({ }, do_activate_record: function(index, id) { var self = this; - var pop = new openerp.base.form.FormOpenPopup(null, self.o2m.view.session); + var pop = new openerp.base.form.FormOpenPopup(self.o2m.view); pop.show_element(self.o2m.field.relation, id, self.o2m.build_context(),{ auto_write: false, alternative_form_view: self.o2m.field.views ? self.o2m.field.views["form"] : undefined, @@ -1782,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 }); @@ -1874,7 +1876,7 @@ openerp.base.form.SelectCreatePopup = openerp.base.BaseWidget.extend({ }, start: function() { this._super(); - this.dataset = new openerp.base.ReadOnlyDataSetSearch(this.session, this.model, + this.dataset = new openerp.base.ReadOnlyDataSetSearch(this, this.model, this.context); this.dataset.parent_view = this.options.parent_view; if (this.options.initial_view == "search") { @@ -1888,7 +1890,7 @@ openerp.base.form.SelectCreatePopup = openerp.base.BaseWidget.extend({ if (this.searchview) { this.searchview.stop(); } - this.searchview = new openerp.base.SearchView(null, this.session, + this.searchview = new openerp.base.SearchView(this, this.element_id + "_search", this.dataset, false, { "selectable": !this.options.disable_multiple_selection, "deletable": false @@ -1916,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; @@ -1956,8 +1958,7 @@ openerp.base.form.SelectCreatePopup = openerp.base.BaseWidget.extend({ this.view_list.$element.hide(); } this.dataset.index = null; - this.view_form = new openerp.base.FormView(null, this.session, - this.element_id + "_view_form", this.dataset, false); + this.view_form = new openerp.base.FormView(this, this.element_id + "_view_form", this.dataset, false); if (this.options.alternative_form_view) { this.view_form.set_embedded_view(this.options.alternative_form_view); } @@ -2014,8 +2015,7 @@ openerp.base.form.FormOpenPopup = openerp.base.BaseWidget.extend({ }, start: function() { this._super(); - this.dataset = new openerp.base.ReadOnlyDataSetSearch(this.session, this.model, - this.context); + this.dataset = new openerp.base.ReadOnlyDataSetSearch(this, this.model, this.context); this.dataset.ids = [this.row_id]; this.dataset.index = 0; this.dataset.parent_view = this.options.parent_view; @@ -2035,8 +2035,7 @@ openerp.base.form.FormOpenPopup = openerp.base.BaseWidget.extend({ on_write_completed: function() {}, setup_form_view: function() { var self = this; - this.view_form = new openerp.base.FormView(null, this.session, - this.element_id + "_view_form", this.dataset, false); + this.view_form = new openerp.base.FormView(this, this.element_id + "_view_form", this.dataset, false); if (this.options.alternative_form_view) { this.view_form.set_embedded_view(this.options.alternative_form_view); } diff --git a/addons/base/static/src/js/list.js b/addons/base/static/src/js/list.js index e1506a9f8e1..6bed26ce692 100644 --- a/addons/base/static/src/js/list.js +++ b/addons/base/static/src/js/list.js @@ -254,9 +254,8 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi }) .val(self._limit || 'NaN'); }); - if(this.view_manager.sidebar == undefined) - debugger; - this.view_manager.sidebar.set_toolbar(data.fields_view.toolbar); + if(this.view_manager.sidebar) + this.view_manager.sidebar.set_toolbar(data.fields_view.toolbar); }, /** @@ -392,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/view_help.js b/addons/base/static/src/js/view_help.js new file mode 100644 index 00000000000..704c982eb3a --- /dev/null +++ b/addons/base/static/src/js/view_help.js @@ -0,0 +1,15 @@ +/*--------------------------------------------------------- + * OpenERP base library + *---------------------------------------------------------*/ + +openerp.base.view_help = function(openerp) { + +openerp.base.ProcessView = openerp.base.Controller.extend({ +}); + +openerp.base.HelpView = openerp.base.Controller.extend({ +}); + +}; + +// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax: diff --git a/addons/base/static/src/js/tree.js b/addons/base/static/src/js/view_tree.js similarity index 93% rename from addons/base/static/src/js/tree.js rename to addons/base/static/src/js/view_tree.js index e333c295473..ceb5478a4a7 100644 --- a/addons/base/static/src/js/tree.js +++ b/addons/base/static/src/js/view_tree.js @@ -2,7 +2,7 @@ * OpenERP base library *---------------------------------------------------------*/ -openerp.base.tree = function(openerp) { +openerp.base.view_tree = function(openerp) { openerp.base.views.add('tree', 'openerp.base.TreeView'); openerp.base.TreeView = openerp.base.Controller.extend({ diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index f76ecc52c71..d14fdcbc12f 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -81,6 +81,19 @@ openerp.base.ActionManager = openerp.base.Controller.extend({ } }); +openerp.base.ActionDialog = openerp.base.Dialog.extend({ + identifier_prefix: 'action_dialog', + stop: function() { + this._super(this, arguments); + if (this.close_callback) { + this.close_callback(); + } + if (this.viewmanager) { + this.viewmanager.stop(); + } + } +}); + openerp.base.ViewManager = openerp.base.Controller.extend({ init: function(parent, element_id, dataset, views) { this._super(parent, element_id); @@ -242,8 +255,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(); } @@ -333,19 +348,6 @@ openerp.base.ViewManagerAction = openerp.base.ViewManager.extend({ } }); -openerp.base.ActionDialog = openerp.base.Dialog.extend({ - identifier_prefix: 'action_dialog', - stop: function() { - this._super(this, arguments); - if (this.close_callback) { - this.close_callback(); - } - if (this.viewmanager) { - this.viewmanager.stop(); - } - } -}); - openerp.base.Sidebar = openerp.base.BaseWidget.extend({ template: "ViewManager.sidebar", init: function(parent, view_manager) { @@ -490,12 +492,6 @@ openerp.base.View = openerp.base.Controller.extend({ */ openerp.base.views = new openerp.base.Registry(); -openerp.base.ProcessView = openerp.base.Controller.extend({ -}); - -openerp.base.HelpView = openerp.base.Controller.extend({ -}); - openerp.base.json_node_to_xml = function(node, single_quote, indent) { // For debugging purpose, this function will convert a json node back to xml // Maybe usefull for xml view editor 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 @@