[FIX] web(_*): views: render action buttons in dialogs

Commit 516b1a6c72 fixes a bug with action buttons not being displayed when they
should in dialogs. However, it makes the assumption that either $node or
this.options.$buttons exist, which is not always the case (e.g. dashboard).

This rev. moves that logic out of the views to the view_manager, and protects
the call of empty() on this.options.$buttons.
This commit is contained in:
Aaron Bohy
2016-02-29 08:47:20 +01:00
parent e189352d8d
commit b816cdbea9
6 changed files with 3 additions and 7 deletions
+3 -2
View File
@@ -293,15 +293,16 @@ var ViewManager = Widget.extend(ControlPanelMixin, {
render_view_control_elements: function() {
if (!this.active_view.control_elements) {
var view_controller = this.active_view.controller;
var $buttons = this.flags.$buttons;
var elements = {};
if (!this.flags.headless) {
elements = {
$buttons: !this.flags.footer_to_buttons ? $("<div>") : undefined,
$buttons: $("<div>"),
$sidebar: $("<div>"),
$pager: $("<div>"),
};
}
view_controller.render_buttons(elements.$buttons);
view_controller.render_buttons($buttons ? $buttons.empty() : elements.$buttons);
view_controller.render_sidebar(elements.$sidebar);
view_controller.render_pager(elements.$pager);
// Remove the unnecessary outer div
@@ -190,7 +190,6 @@ var FormView = View.extend(common.FieldManagerMixin, {
this.$buttons.on('click', '.oe_form_button_cancel',
this.guard_active(this.on_button_cancel));
$node = $node || this.options.$buttons.empty();
if ($node) {
this.$buttons.appendTo($node);
} else {
@@ -282,7 +282,6 @@ var ListView = View.extend( /** @lends instance.web.ListView# */ {
this.$buttons.find('.o_list_button_add').click(this.proxy('do_add_record'));
$node = $node || this.options.$buttons;
if ($node) {
this.$buttons.appendTo($node);
} else {
@@ -259,7 +259,6 @@ var CalendarView = View.extend({
this.$buttons.find('.o_calendar_button_' + this.mode).addClass('active');
$node = $node || this.options.$buttons;
if ($node) {
this.$buttons.appendTo($node);
} else {
@@ -361,7 +361,6 @@ var DiagramView = View.extend({
self.add_node();
});
$node = $node || this.options.$buttons;
this.$buttons.appendTo($node);
},
@@ -312,7 +312,6 @@ var KanbanView = View.extend({
this.$buttons = $(QWeb.render("KanbanView.buttons", {'widget': this, display: display}));
this.$buttons.on('click', 'button.o-kanban-button-new', this.add_record.bind(this));
$node = $node || this.options.$buttons;
this.$buttons.appendTo($node);
},