Esempio n. 1
0
    QUnit.test('basic rendering', function (assert) {
        assert.expect(3);

        var parent = new Widget();

        testUtils.addMockEnvironment(parent, {});
        var userMenu = new UserMenu(parent);
        userMenu.appendTo($('body'));

        assert.strictEqual($('.o_user_menu').length, 1,
            "should have a user menu in the DOM");
        assert.ok(userMenu.$el.hasClass('o_user_menu'),
            "user menu in DOM should be from user menu widget instantiation");
        assert.strictEqual(userMenu.$('.dropdown-item[data-menu="shortcuts"]').length, 1,
            "should have a 'Shortcuts' item");

        userMenu.destroy();
    });
odoo.define('app_odoo_customize.switch_language', function (require) {
    "use strict";

    var Model = require('web.Model');
    var session = require('web.session');
    var UserMenu = require('web.UserMenu');

    UserMenu.include({
        on_menu_lang: function (ev) {
            var self = this;
            var lang = ($(ev).data("lang-id"));
            new Model('res.users').call('write', [[session.uid], {'lang': lang}]).then(function () {
                self.do_action({
                    type: 'ir.actions.client',
                    res_model: 'res.users',
                    tag: 'reload_context',
                    target: 'current'
                });
            });
            return false;
        },
    });
    //
    $(document).ready(function () {
        var self = this;
        var lang_list = '';
        setTimeout(function () {
            new Model('ir.config_parameter').call('search_read', [[['key', '=', 'app_show_lang']], ['value']]).then(function (show) {
                if (show.length >= 1 && (show[0]['value'] == "False"))
                    $('switch-lang').hide();
                else {
                    new Model('res.lang').call('search_read', [[], ['name', 'code']]).then(function (res) {
                        _.each(res, function (lang) {
                            var a = '';
                            if (lang['code'] === session.user_context.lang) {
                                a = '<i class="fa fa-check"></i>';
                            } else {
                                a = '';
                            }
                            lang_list += '<li><a href="#" data-menu="lang" data-lang-id="' + lang['code'] + '"><img class="flag" src="app_odoo_customize/static/src/img/flags/' + lang['code'] + '.png"/>' + lang['name'] + a + '</a></li>';
                        });
                        lang_list += '<li class="divider"></li>';
                        $('switch-lang').replaceWith(lang_list);
                    });
                }
            });
        }, 2500);
    });
});
Esempio n. 3
0
odoo.define('im_odoo_support.OdooSupport', function (require) {
"use strict";

var im_livechat = require('im_livechat.im_livechat');
var core = require('web.core');
var UserMenu = require('web.UserMenu');
var utils = require('web.utils');
var web_client = require('web.web_client');
var Widget = require('web.Widget');

var _t = core._t;


var COOKIE_NAME = 'livechat_conversation';
var SERVICE_URL = 'https://services.odoo.com/';

var OdooSupport = Widget.extend({
    init: function(login, uuid, params, options){
        this._super();
        this.login = login;
        this.uuid = uuid;

        this.options = _.extend(options || {}, {'defaultUsername' : login});
        this.params = _.extend(params || {}, {'database_uuid' : uuid});

        this.assets_loaded = false;
        this.session = false;
        // bind event
        $(window).on("odoo_support_ready_to_bind", this, _.bind(this.bind_actions, this));
    },
    bind_actions: function(event, button){
        if (button === 'usermenu'){
            $('.oe_user_menu_placeholder .odoo_support_contact').on('click', this, _.bind(this.click_action, this));
            // check auto start if cookie
            var cookie = utils.get_cookie(COOKIE_NAME);
            if (cookie){
                this.start_support();
            }
        }
        if(button === 'im_contact'){
            if (web_client.im_messaging) {
                web_client.im_messaging.$('.odoo_support_contact').on('click',this, _.bind(this.click_action, this));
            }
        }
    },
    click_action: function(){
        var session = utils.get_cookie(COOKIE_NAME);
        if(!session){
            this.start_support();
        }
    },
    start_support: function(){
        var self = this;
        if(!this.assets_loaded){
            this.load_assets().then(function(){
                try{

                    this.support = new im_livechat.LiveSupport(self.options, self.params);
                    // bind event change status
                    this.support.on('im_odoo_support_status', this, function(is_online){
                        if(web_client.im_messaging){
                            web_client.im_messaging.support_user.$(".oe_im_user_online").toggle(is_online);
                        }
                    });
                }catch(e){
                    self.error_on_start(e);
                }
            }).fail(function(e){
               self.error_on_start(e);
            });
        }else{
            this.support.start();
        }
    },
    error_on_start: function(e){
        this.assets_loaded = false;
        this.do_warn(_t("Error"), _t("The connection with the Odoo Support Server failed. Please retry in a few minutes, or send an email to support@odoo.com ."));
    },
    load_assets: function(){
        var self = this;
        var add_asset = function(file_url, type) {
            var def = $.Deferred();
            if(type === 'js'){
                $.getScript( file_url, function( data, textStatus, jqxhr ) {
                    def.resolve();
                }).fail(function(){
                    def.reject();
                });
                return def;
            }else{
                $('<link rel="stylesheet" href="' + file_url + '"></link>').appendTo($("head")).ready(function() {
                    def.resolve();
                });
                return def;
            }
        };
        var defs = [];
        defs.push(add_asset(SERVICE_URL+"odoo-livechat/assets/js", 'js'));
        defs.push(add_asset(SERVICE_URL+"odoo-livechat/assets/css", 'css'));
        return $.when.apply($, defs).then(function(res){
            self.assets_loaded = true;
            return res;
        }, function(){
            self.error_on_start();
        });
    },
});

UserMenu.include({
    do_update: function(){
        $(window).trigger('odoo_support_ready_to_bind', 'usermenu');
        return this._super.apply(this, arguments);
    },
});

return OdooSupport;

});