[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:
@@ -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);
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user