diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 4f3aa3a8e1f..324896112cc 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -724,7 +724,10 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM self.trigger("save", result); self.to_view_mode(); }).then(function(result) { - self.ViewManager.ActionManager.__parentedParent.menu.do_reload_needaction(); + var parent = self.ViewManager.ActionManager.getParent(); + if(parent){ + parent.menu.do_reload_needaction(); + } }); }, on_button_cancel: function(event) { @@ -4057,7 +4060,13 @@ instance.web.form.One2ManyListView = instance.web.ListView.extend({ else return $.when(); }).done(function () { - self.handle_button(name, id, callback); + if (!self.o2m.options.reload_on_button) { + self.handle_button(name, id, callback); + }else { + self.handle_button(name, id, function(){ + self.o2m.view.reload(); + }); + } }); }, diff --git a/addons/web/static/src/js/view_tree.js b/addons/web/static/src/js/view_tree.js index 5604edf147d..0c101e330c9 100644 --- a/addons/web/static/src/js/view_tree.js +++ b/addons/web/static/src/js/view_tree.js @@ -166,12 +166,13 @@ instance.web.TreeView = instance.web.View.extend(/** @lends instance.web.TreeVie var is_loaded = 0, $this = $(this), record_id = $this.data('id'), + parent_id = $this.data('parent-id'), record = self.records[record_id], children_ids = record[self.children_field]; _(children_ids).each(function(childid) { - if (self.$el.find('#treerow_' + childid).length) { - if (self.$el.find('#treerow_' + childid).is(':hidden')) { + if (self.$el.find('[id=treerow_' + childid + '][data-parent-id='+ record_id +']').length ) { + if (self.$el.find('[id=treerow_' + childid + '][data-parent-id='+ record_id +']').is(':hidden')) { is_loaded = -1; } else { is_loaded++; @@ -183,7 +184,7 @@ instance.web.TreeView = instance.web.View.extend(/** @lends instance.web.TreeVie self.getdata(record_id, children_ids); } } else { - self.showcontent(record_id, is_loaded < 0); + self.showcontent($this, record_id, is_loaded < 0); } }); }, @@ -204,9 +205,9 @@ instance.web.TreeView = instance.web.View.extend(/** @lends instance.web.TreeVie 'fields': self.fields, 'level': $curr_node.data('level') || 0, 'render': instance.web.format_value, - 'color_for': self.color_for + 'color_for': self.color_for, + 'parent_id': id }); - if ($curr_node.length) { $curr_node.addClass('oe_open'); $curr_node.after(children_rows); @@ -246,14 +247,13 @@ instance.web.TreeView = instance.web.View.extend(/** @lends instance.web.TreeVie }, // show & hide the contents - showcontent: function (record_id, show) { - this.$el.find('#treerow_' + record_id) - .toggleClass('oe_open', show); - + showcontent: function (curnode,record_id, show) { + curnode.parent('tr').toggleClass('oe_open', show); _(this.records[record_id][this.children_field]).each(function (child_id) { - var $child_row = this.$el.find('#treerow_' + child_id); + var $child_row = this.$el.find('[id=treerow_' + child_id + '][data-parent-id='+ curnode.data('id') +']'); if ($child_row.hasClass('oe_open')) { - this.showcontent(child_id, false); + $child_row.toggleClass('oe_open',show); + this.showcontent($child_row, child_id, false); } $child_row.toggle(show); }, this); diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 27b85d49e5a..d21318799c9 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -684,7 +684,8 @@