Odoo中文网|Odoo实施培训

 找回密码
 立即注册
搜索
热搜: Odoo OpenERP 实施
查看: 12692|回复: 0
打印 上一主题 下一主题

让Openerp的必填字段标签后面带上红色星号【转】

[复制链接]

119

主题

119

帖子

566

积分

高级会员

Rank: 4

积分
566
跳转到指定楼层
楼主
发表于 2015-9-10 22:10:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
openerp中,必填字段是以浅蓝色的背景 来标识的。 不过,有些用户习惯在必填字段标签的后面加红色星号。 百度一下“红色星号, 必填” 得到56400个搜索结果呢。

要想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, 以便在必填项的后面增加星号
最后,我们增加了一个样式, 使得星号显示成红色。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|技术支持|开发手册|Odoo中文网-远鼎旗下odoo培训网站 ( 苏ICP备15039516号 )

GMT+8, 2025-6-30 07:27 , Processed in 0.089016 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表