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, 以便在必填项的后面增加星号

最后,我们增加了一个样式, 使得星号显示成红色。