summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Geubelle <mge@odoo.com>2017-05-19 11:32:39 +0200
committerMartin Geubelle <mge@odoo.com>2017-05-19 15:02:21 +0200
commitea7ff8f6fa3c60855481b2ba1ce84d0b2ec5380d (patch)
treed0d1de960df65123f58aae12c8a92c713eda55c4
parent92409cdfe5812c72f03ac96fab955db865f390c3 (diff)
[FIX] web: Form: handle attributes and modifiers on notebook
Before this commit, the renderer interpreted the special tag, but ignored modifiers and attributes. Most nodes are rendered by the `_renderGenericElement` method, so this behaviour is automatic. However, special tags need to do it explicitely.
-rw-r--r--addons/web/static/src/js/views/form/form_renderer.js8
-rw-r--r--addons/web/static/tests/views/form_tests.js27
2 files changed, 32 insertions, 3 deletions
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 a2c0d2129ab..c96a513ab03 100644
--- a/addons/web/static/src/js/views/form/form_renderer.js
+++ b/addons/web/static/src/js/views/form/form_renderer.js
@@ -679,10 +679,12 @@ var FormRenderer = BasicRenderer.extend({
},
});
});
- return $('<div class="o_notebook">')
+ var $notebook = $('<div class="o_notebook">')
.data('name', node.attrs.name || '_default_')
- .append($headers)
- .append($pages);
+ .append($headers, $pages);
+ this._registerModifiers(node, this.state, $notebook);
+ this._handleAttributes($notebook, node);
+ return $notebook;
},
/**
* @private
diff --git a/addons/web/static/tests/views/form_tests.js b/addons/web/static/tests/views/form_tests.js
index e5efb3f9b7a..fecac794979 100644
--- a/addons/web/static/tests/views/form_tests.js
+++ b/addons/web/static/tests/views/form_tests.js
@@ -298,6 +298,33 @@ QUnit.module('Views', {
form.destroy();
});
+ QUnit.test('properly handle modifiers and attributes on notebook tags', function (assert) {
+ assert.expect(2);
+
+ var form = createView({
+ View: FormView,
+ model: 'partner',
+ data: this.data,
+ arch: '<form string="Partners">' +
+ '<sheet>' +
+ '<field name="product_id"/>' +
+ '<notebook class="new_class" attrs=\'{"invisible": [["product_id", "=", false]]}\'>' +
+ '<page string="Foo">' +
+ '<field name="foo"/>' +
+ '</page>' +
+ '</notebook>' +
+ '</sheet>' +
+ '</form>',
+ res_id: 1,
+ });
+
+ assert.ok(form.$('.o_notebook').hasClass('o_invisible_modifier'),
+ 'the notebook should handle modifiers (invisible)');
+ assert.ok(form.$('.o_notebook').hasClass('new_class'),
+ 'the notebook should handle attributes');
+ form.destroy();
+ });
+
QUnit.test('invisible attrs on first notebook page', function (assert) {
assert.expect(6);