diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index 55bf743e293..212f48717bd 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -441,6 +441,10 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormVi values[key] = val; }); return values; + }, + get_selected_ids: function() { + var id = this.dataset.ids[this.dataset.index]; + return id ? [id] : []; } }); diff --git a/addons/base/static/src/js/list.js b/addons/base/static/src/js/list.js index a02b05ba5ab..5289cdb435c 100644 --- a/addons/base/static/src/js/list.js +++ b/addons/base/static/src/js/list.js @@ -597,8 +597,11 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi $footer_cells.filter(_.sprintf('[data-field=%s]', column.id)) .html(openerp.base.format_cell(aggregation, column)); }); + }, + get_selected_ids: function() { + //TODO niv: this is false + debugger; } - // TODO: implement reorder (drag and drop rows) }); openerp.base.ListView.List = openerp.base.Class.extend( /** @lends openerp.base.ListView.List# */{ /** diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index ee5529262f7..1e07c461b2c 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -432,9 +432,23 @@ openerp.base.Sidebar = openerp.base.Widget.extend({ item.callback(); } if (item.action) { - item.action.flags = item.action.flags || {}; - item.action.flags.new_window = true; - self.do_action(item.action); + var ids = self.widget_parent.get_selected_ids(); + if (ids.length == 0) { + //TODO niv: maybe show a warning? + return false; + } + self.rpc("/base/action/load", { + action_id: item.action.id, + context: { + active_id: ids[0], + active_ids: ids, + active_model: self.widget_parent.dataset.model + } + }, function(result) { + result.result.flags = result.result.flags || {}; + result.result.flags.new_window = true; + self.do_action(result.result); + }); } return false; });