http://blog.sina.com.cn/s/blog_53d318170101kk4j.html
要想openerp的必填字段标签后面带上红色星号, 需要做如下四处修改
第一处
文件名:form_view.js
类: instance.web.form.FormRenderingEngine
函数: preprocess_field:
原代码段:
var $label = $('').attr({
'for' : name,
"modifiers": JSON.stringify({invisible: field_modifiers.invisible}),
"string": $field.attr('string'),
"help": $field.attr('help'),
"class": $field.attr('class'),
});
修改后的代码
var $label = $('').attr({
'for' : name,
"modifiers": JSON.stringify({invisible: field_modifiers.invisible}),
"string": $field.attr('string'),
"help": $field.attr('help'),
"class": $field.attr('class'),
"required": field_modifiers.required, // added by laoliu
});
第二处
文件名:form_view.js
类: instance.web.form.FormRenderingEngine
函数: process_label:
原代码段:
var dict = {
string: $label.attr('string') || (field_orm || {}).string || '',
help: $label.attr('help') || (field_orm || {}).help || '',
_for: name ? _.uniqueId('oe-field-input-') : undefined,
};
修改后的代码
var dict = {
string: $label.attr('string') || (field_orm || {}).string || '',
help: $label.attr('help') || (field_orm || {}).help || '',
_for: name ? _.uniqueId('oe-field-input-') : undefined,
required: $label.attr('required') || (field_orm || {}).required ? '*' : undefined,
};
第三处
文件名:base.xml
模板名称:FormRenderingLabel
原代码段:
〈t t-esc="string"/>
修改后的代码段
〈t t-esc="string"/>
〈span class="mandatory"〉 〈t t-esc="required"/〉〈/span〉
第四处
文件名:base.css
在文件末尾增加如下代码段
.openerp .oe_form .mandatory {
font-weight: bold;
color: red !important;
font-size: 120% !important;
top: 4px !important;
}
分析:
故名思议,FormRenderingEngine是用来渲染表单显示的引擎。
函数preprocess_field 的作用是对某个字段进行预处理, 得到该字段所应显示的标签$label属性, 在原来的代码中, 没有考虑是否必填项。 因此我们新加了一项required 属性
函数process_label的作用是将标签属性$label.attr转换为字典, 并使用render_element('FormRenderingLabel', dict) 处理模板FormRenderingLabel
我们在该模板中增加了一个span, 以便在必填项的后面增加星号
最后,我们增加了一个样式, 使得星号显示成红色。