2015-12-30 3 views
2

хотите настроить чат-чат в режиме odoo 8. Я хочу сделать его невидимым для других, кроме одной группы, поэтому унаследовал js-файл в моем модуле. Исходный файл - файл im_chat.js.Как переопределить функции js в odoo 8?

if(openerp.web && openerp.web.UserMenu) { 
    openerp.web.UserMenu.include({ 
     do_update: function(){ 
      var self = this; 
      var Users = new openerp.web.Model('res.users'); 
      Users.call('has_group', ['bms.group_custom_chats']).done(function(is_employee) { 
       if (is_employee) { 
        self.update_promise.then(function() { 
         var im = new openerp.im_chat.InstantMessaging(self); 
         openerp.im_chat.single = im; 
         im.appendTo(openerp.client.$el); 
         var button = new openerp.im_chat.ImTopButton(this); 
         button.on("clicked", im, im.switch_display); 
         // button.appendTo(window.$('.oe_systray')); 
        }); 
       } 
      }); 
      return this._super.apply(this, arguments); 
     }, 
    }); 
} 

здесь я вставил 'bms.group' вместо 'base.group_user'. цель этой функции - скрыть кнопку чата для пользователей, отличных от этой группы. если я добавлю эту строку в базовый файл, это хорошо работает, но дело в том, что в этом случае он не работает.

this is how is how I override the base js script Я сохранил файл im_chat.js в файле srcopenerp.py.

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
<data> 
    <template id="custom_unique_id" name="some name to template" inherit_id="web.assets_backend"> 
     <xpath expr="." position="inside"> 
      <script type="text/javascript" src="/bms/static/src/js/im_chat.js"></script> 
     </xpath> 
    </template> 
</data> 

Это питон код для проверки пользователей группы.

@tools.ormcache(skiparg=2) 
def has_group(self, cr, uid, group_ext_id): 
    """Checks whether user belongs to given group. 

    :param str group_ext_id: external ID (XML ID) of the group. 
     Must be provided in fully-qualified form (``module.ext_id``), as there 
     is no implicit module to use.. 
    :return: True if the current user is a member of the group with the 
     given external ID (XML ID), else False. 
    """ 
    assert group_ext_id and '.' in group_ext_id, "External ID must be fully qualified" 
    module, ext_id = group_ext_id.split('.') 
    cr.execute("""SELECT 1 FROM res_groups_users_rel WHERE uid=%s AND gid IN 
        (SELECT res_id FROM ir_model_data WHERE module=%s AND name=%s)""", 
       (uid, module, ext_id)) 
    return bool(cr.fetchone()) 

Пожалуйста, помогите мне.

Спасибо

ответ

2

Вы должны использовать идентификатор шаблона, как im_chat.assets_backend вместо custom_unique_id. Добавьте ниже код в свой XML-файл и модуль обновления, вы увидите эффект от вашего модуля.

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
    <data> 
     <template id="im_chat.assets_backend" name="im_chat assets" 
      inherit_id="web.assets_backend"> 
      <xpath expr="." position="inside"> 
       <script type="text/javascript" src="/bms/static/src/js/im_chat.js"></script> 
      </xpath> 
     </template> 
    </data> 
+0

Он также останавливает других пользователей группы, чтобы увидеть кнопку чата .. Что теперь делать? –

Смежные вопросы