From b4e20f0c14e66bb8d5b74910c938a6a90de72f6c Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 4 Sep 2012 13:56:27 +0200 Subject: [PATCH] [IMP] use list.Column's parsed (and potentially altered) modifiers to generate the edition form view This way, listview 'widgets' can alter the modifiers object and influence the corresponding form widget bzr revid: xmo@openerp.com-20120904115627-v626hcb9o0s7bcrp --- addons/web/static/src/js/view_list.js | 5 +++++ .../web/static/src/js/view_list_editable.js | 19 +++++++++++-------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index a83f7891a08..40bdee3a07f 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -2115,6 +2115,11 @@ instance.web.list.ProgressBar = instance.web.list.Column.extend({ } }); instance.web.list.Handle = instance.web.list.Column.extend({ + init: function () { + this._super.apply(this, arguments); + // Handle overrides the field to not be form-editable. + this.modifiers.readonly = true; + }, /** * Return styling hooks for a drag handle * diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js index 9998eb5fce2..4ea46c51e07 100644 --- a/addons/web/static/src/js/view_list_editable.js +++ b/addons/web/static/src/js/view_list_editable.js @@ -354,14 +354,17 @@ openerp.web.list_editable = function (instance) { 'class': 'oe_form_container', version: '7.0' }); - _(view.arch.children).each(function (widget) { - var modifiers = JSON.parse(widget.attrs.modifiers || '{}'); - widget.attrs.nolabel = true; - if (modifiers['tree_invisible'] || widget.tag === 'button') { - modifiers.invisible = true; - } - widget.attrs.modifiers = JSON.stringify(modifiers); - }); + _(view.arch.children).chain() + .zip(this.columns) + .each(function (ar) { + var widget = ar[0], column = ar[1]; + var modifiers = _.extend({}, column.modifiers); + widget.attrs.nolabel = true; + if (modifiers['tree_invisible'] || widget.tag === 'button') { + modifiers.invisible = true; + } + widget.attrs.modifiers = JSON.stringify(modifiers); + }); return view; }, handle_onwrite: function (source_record) {