[imp] switched invisibility handling to modifiers for all tags

bzr revid: nicolas.vanhoren@openerp.com-20120327093938-5gxyn330u1qa4bcb
This commit is contained in:
niv-openerp 2012-03-27 11:39:38 +02:00
parent d5fdbbbca4
commit ec3d016822
1 changed files with 18 additions and 27 deletions

View File

@ -808,8 +808,8 @@ openerp.web.FormRenderingEngine = openerp.web.Class.extend({
$tag.children().each(function() { $tag.children().each(function() {
self.process($(this)); self.process($(this));
}); });
self.handle_invisible($tag, $tag.attr("invisible")); self.handle_invisible($tag, $tag.attr("modifiers"));
$tag.removeAttr("invisible"); $tag.removeAttr("modifiers");
return $tag; return $tag;
} }
}, },
@ -841,11 +841,9 @@ openerp.web.FormRenderingEngine = openerp.web.Class.extend({
$label = $('<label/>').attr({ $label = $('<label/>').attr({
'for' : name, 'for' : name,
'string' : field_string, 'string' : field_string,
'help' : field_help 'help' : field_help,
"modifiers": JSON.stringify({invisible: field_modifiers.invisible}),
}); });
if (field_modifiers.invisible !== undefined) {
$label.attr("invisible", JSON.stringify(field_modifiers.invisible));
}
$label.insertBefore($field); $label.insertBefore($field);
if (field_colspan > 1) { if (field_colspan > 1) {
$field.attr('colspan', field_colspan - 1); $field.attr('colspan', field_colspan - 1);
@ -913,18 +911,11 @@ openerp.web.FormRenderingEngine = openerp.web.Class.extend({
$td = $('<td/>').addClass('oe_form_group_cell').attr('colspan', colspan); $td = $('<td/>').addClass('oe_form_group_cell').attr('colspan', colspan);
// invisibility transfer // invisibility transfer
var invisible = undefined; var field_modifiers = JSON.parse($child.attr('modifiers') || '{}');
if (_.include(["button", "field"], tagName)) { var invisible = field_modifiers.invisible;
var field_modifiers = JSON.parse($child.attr('modifiers') || '{}'); field_modifiers.invisible = undefined;
invisible = field_modifiers.invisible; $child.attr('modifiers', JSON.stringify(field_modifiers));
field_modifiers.invisible = undefined; self.handle_invisible($td, JSON.stringify({invisible: invisible}));
$child.attr('modifiers', JSON.stringify(field_modifiers));
} else {
invisible = $child.attr('invisible') !== undefined ? JSON.parse($child.attr('invisible'))
: undefined;
$child.removeAttr("invisible");
}
self.handle_invisible($td, invisible !== undefined ? JSON.stringify(invisible) : undefined);
$tr.append($td.append($child)); $tr.append($td.append($child));
children.push($child[0]); children.push($child[0]);
@ -971,7 +962,7 @@ openerp.web.FormRenderingEngine = openerp.web.Class.extend({
_.each(children, function(el) { _.each(children, function(el) {
self.process($(el)); self.process($(el));
}); });
this.handle_invisible($new_group, $group.attr("invisible")); this.handle_invisible($new_group, $group.attr("modifiers"));
return $new_group; return $new_group;
}, },
process_notebook: function($notebook) { process_notebook: function($notebook) {
@ -986,7 +977,7 @@ openerp.web.FormRenderingEngine = openerp.web.Class.extend({
$dst = self.legacy_mode ? $new_page.find('group:first') : $new_page; $dst = self.legacy_mode ? $new_page.find('group:first') : $new_page;
$page.children().appendTo($dst); $page.children().appendTo($dst);
$page.before($new_page).remove(); $page.before($new_page).remove();
self.handle_invisible($new_page, $page.attr("invisible")); self.handle_invisible($new_page, $page.attr("modifiers"));
}); });
var $new_notebook = $(QWeb.render('FormRenderingNotebook', { pages : pages })); var $new_notebook = $(QWeb.render('FormRenderingNotebook', { pages : pages }));
$notebook.children().appendTo($new_notebook); $notebook.children().appendTo($new_notebook);
@ -995,13 +986,13 @@ openerp.web.FormRenderingEngine = openerp.web.Class.extend({
self.process($(this)); self.process($(this));
}); });
$new_notebook.tabs(); $new_notebook.tabs();
this.handle_invisible($new_notebook, $notebook.attr("invisible")); this.handle_invisible($new_notebook, $notebook.attr("modifiers"));
return $new_notebook; return $new_notebook;
}, },
process_separator: function($separator) { process_separator: function($separator) {
var $new_separator = $(QWeb.render('FormRenderingSeparator', $separator.getAttributes())); var $new_separator = $(QWeb.render('FormRenderingSeparator', $separator.getAttributes()));
$separator.before($new_separator).remove(); $separator.before($new_separator).remove();
this.handle_invisible($new_separator, $separator.attr("invisible")); this.handle_invisible($new_separator, $separator.attr("modifiers"));
return $new_separator; return $new_separator;
}, },
process_label: function($label) { process_label: function($label) {
@ -1017,18 +1008,18 @@ openerp.web.FormRenderingEngine = openerp.web.Class.extend({
dict.align = align; dict.align = align;
var $new_label = $(QWeb.render('FormRenderingLabel', dict)); var $new_label = $(QWeb.render('FormRenderingLabel', dict));
$label.before($new_label).remove(); $label.before($new_label).remove();
this.handle_invisible($new_label, $label.attr("invisible")); this.handle_invisible($new_label, $label.attr("modifiers"));
return $new_label; return $new_label;
}, },
process_button: function($button) { process_button: function($button) {
this.to_init.push($button); this.to_init.push($button);
return $button; return $button;
}, },
handle_invisible: function($element, str_domain) { handle_invisible: function($element, str_modifiers) {
if (str_domain === undefined) var modifiers = JSON.parse(str_modifiers || "{}");
if (modifiers.invisible === undefined)
return; return;
var parsed = JSON.parse(str_domain); new openerp.web.form.InvisibilityChanger(this.view, this.view, modifiers.invisible, $element);
new openerp.web.form.InvisibilityChanger(this.view, this.view, parsed, $element);
}, },
}); });