跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 开发与实施交流
  4. 更改form view中Label的颜色

更改form view中Label的颜色

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
11 帖子 8 发布者 9.7k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • KevinKongK 离线
    KevinKongK 离线
    KevinKong
    写于 最后由 编辑
    #1

    昨天看见有人在群里问有没有类似的功能,然后就试着找了一下有没有现成的模块,结果找到论坛的这个模块:
    [检测到链接无效,已移除]
    下载下来安装,发现不能用 😢 😢 😢
    不知道是不是这个模块是针对6.0或之前的版本的,反正在我7.0的上面没跑通.

    但是考虑到以后可能真有这个需求,决定在这个模块的基础上改一个自己出来.(对于不擅长前端的人来说,调试的过程无比痛苦,好在我有个搞前端的胖子同事,关键问题上帮了我不少 8))

    总结一下这个过程中碰到的问题:
    1.在feild中新增一个自定义属性用来标示label应该采用哪种颜色的问题.
    这个问题在web_field_style这个模块中已经提示了,找到addons/base/rng/view.rng文件,在第545行添加一行

    <rng:optional><rng:attribute name="color"/></rng:optional>
    


    意思是让openerp认识field中的color这个属性.
    [img http://images.cnitblog.com/i/396990/201407/261851209165344.png /img]

    2.认识了color这个属性,接下来就是如何获取label这个对象,并给他设置自定义的css样式了.
    这里以常用的many2one类型的field为例,其他类型的类似地拓展:

    <br />instance.web.form.FieldMany2One.include({<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  display_string:function(str){<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  this._super(str);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if(this.node.attrs.color){<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  this.$label.css(&#039;color&#039;,this.node.attrs.color);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  }<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  }<br />&nbsp; &nbsp; &nbsp; &nbsp;  });<br />
    



    这地方我一开始放到了web_field_style模块类似的init()方法里,结果能够获取到this.$el却死活获取不到this.$label,后来经同事提示说init()里的方法还没有加载完DOM,后来才移到了display_string这个方法里面的.

    至此,你就能很愉快的设置你many2one类型field的label的颜色了,只要在field中加一个color的属性就可以啦.

    &lt;feild name=&quot;partner&quot; color=&quot;green&quot;&gt;
    



    有图有真相:
    [img http://images.cnitblog.com/i/396990/201407/261859596825057.png /img]

    其他类型的feild思路类似,这个就当作个demo吧.

    -----------------------------------------我是比上面更好的一种方法的分割线---------------------------------------

    经Jeff提醒,找到一种更好的方法,把对color的定义放到options属性里,这样就免去了更新rng文件的麻烦,这样模块就可以直接安装使用了.

    <br />instance.web.form.FieldMany2One.include({<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  display_string:function(str){<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  this._super(str);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if(this.options.color){<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  this.$label.css(&#039;color&#039;,this.options.color);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  }<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  }<br />&nbsp; &nbsp; &nbsp; &nbsp;  });<br />
    



    当然xml文件里的代码也要改了:

    &lt;feild name=&quot;partner&quot; options=&quot;{&#039;color&#039;:&#039;green&#039;}&quot;&gt;
    



    地址: https://github.com/kevin8909/web_label_color

    1 条回复 最后回复
    0
    • 卓忆卓 离线
      卓忆卓 离线
      卓忆
      写于 最后由 编辑
      #2

      赞,kevin 最近作品不少  🙂

      恬淡

      1 条回复 最后回复
      0
      • KevinKongK 离线
        KevinKongK 离线
        KevinKong
        写于 最后由 编辑
        #3

        [quote author=卓忆 link=topic=16521.msg28590#msg28590 date=1406380024]
        赞,kevin 最近作品不少  🙂
        [/quote]
        😮 😮 :o闲着没事搞着玩啊,哈哈

        1 条回复 最后回复
        0
        • wjfonhandW 离线
          wjfonhandW 离线
          wjfonhand
          写于 最后由 编辑
          #4

          rng里加属性,就是说直接装这个模块还不能用。
          不知道能否改成放到 options 属性里呢?

          GoodERP -- Odoo China fork

          1 条回复 最后回复
          0
          • KevinKongK 离线
            KevinKongK 离线
            KevinKong
            写于 最后由 编辑
            #5

            [quote author=Jeff link=topic=16521.msg28593#msg28593 date=1406386723]
            rng里加属性,就是说直接装这个模块还不能用。
            不知道能否改成放到 options 属性里呢?
            [/quote]

            多谢Jeff提醒,我刚试了一下,放到options可行,而且这样更好,这样就不用修改rng文件了. 🙂

            1 条回复 最后回复
            0
            • C 离线
              C 离线
              ccdos
              写于 最后由 编辑
              #6

              谢谢了,
              这下能愉快地 设置 label 颜色了


              还是一个 很好的 学习教程

              1 条回复 最后回复
              0
              • mrshellyM 离线
                mrshellyM 离线
                mrshelly
                写于 最后由 编辑
                #7

                赞... 很愉快............

                1 条回复 最后回复
                0
                • 周 离线
                  周 离线
                  周士超
                  写于 最后由 编辑
                  #8

                  能问问,instance.web.form.FieldMany2One.include,这最后的这个include是什么意思,重写,还是继承

                  1 条回复 最后回复
                  0
                  • 静静静 离线
                    静静静 离线
                    静静
                    写于 最后由 编辑
                    #9

                    include 可继承可重写,和odoo中python  class中的方法一样 只要在同一个对象里 同名的方法就会重写 .要继承加上 this._super.apply(this, arguments);

                    1 条回复 最后回复
                    0
                    • 1 离线
                      1 离线
                      12e1121
                      写于 最后由 编辑
                      #10

                      请问如果只是需要改field text的颜色而非label呢? 该如何做呢?

                      1 条回复 最后回复
                      0

                      • 登录

                      • 没有帐号? 注册

                      • 登录或注册以进行搜索。
                      • 第一个帖子
                        最后一个帖子
                      0
                      • 版块
                      • 标签
                      • 热门
                      • 用户
                      • 群组