diff --git a/addons/web/static/src/js/views/form/form_renderer.js b/addons/web/static/src/js/views/form/form_renderer.js index 138de9041e6..23ed3a08ad3 100644 --- a/addons/web/static/src/js/views/form/form_renderer.js +++ b/addons/web/static/src/js/views/form/form_renderer.js @@ -251,12 +251,19 @@ return BasicRenderer.extend({ * @returns {jQueryElement} */ _renderButtonBox: function (node) { + var self = this; var $result = $('<' + node.tag + '>', { 'class': 'o_not_full' }); // Avoid to show buttons if we are in create mode (edit mode without res_id) if (this.mode === 'edit' && !this.state.res_id) { return $result; } - var buttons = _.map(node.children, this._renderStatButton.bind(this)); + var buttons = _.map(node.children, function (child) { + if (child.tag === 'button') { + return self._renderStatButton(child); + } else { + return self._renderNode(child); + } + }); var buttons_partition = _.partition(buttons, function ($button) { return $button.is('.o_form_invisible'); }); diff --git a/addons/web/static/tests/views/form_tests.js b/addons/web/static/tests/views/form_tests.js index fdd5fd84c64..3ce2096531e 100644 --- a/addons/web/static/tests/views/form_tests.js +++ b/addons/web/static/tests/views/form_tests.js @@ -2644,6 +2644,34 @@ QUnit.module('Views', { form.destroy(); }); + QUnit.test('diplay something else than a button in a buttonbox', function (assert) { + assert.expect(3); + + var form = createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '
', + res_id: 2, + }); + + assert.strictEqual(form.$('.oe_button_box').children().length, 2, + "button box should contain two children"); + assert.strictEqual(form.$('.oe_button_box .oe_stat_button').length, 1, + "button box should only contain one button"); + assert.strictEqual(form.$('.oe_button_box label').length, 1, + "button box should only contain one label"); + + form.destroy(); + }); + QUnit.test('one2many default value creation', function (assert) { assert.expect(1);