diff --git a/addons/im_odoo_support/static/src/js/im_odoo_support.js b/addons/im_odoo_support/static/src/js/im_odoo_support.js
index dcb5002c696..f17f7f2dc5e 100644
--- a/addons/im_odoo_support/static/src/js/im_odoo_support.js
+++ b/addons/im_odoo_support/static/src/js/im_odoo_support.js
@@ -1,141 +1,157 @@
-(function(){
+odoo.define('im_odoo_support.OdooSupport', ['im_livechat.im_livechat', 'web.core', 'web.UserMenu', 'web.utils', 'web.web_client', 'web.Widget'], function (require) {
+"use strict";
- "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 = openerp._t;
- openerp.im_odoo_support = {};
- var COOKIE_NAME = 'livechat_conversation';
- var SERVICE_URL = 'https://services.odoo.com/';
+var _t = core._t;
- openerp.im_odoo_support.OdooSupport = openerp.Widget.extend({
- init: function(login, uuid, params, options){
- var self = this;
- this._super();
- this.login = login;
- this.uuid = uuid;
- this.options = _.extend(options || {}, {'defaultUsername' : login});
- this.params = _.extend(params || {}, {'database_uuid' : uuid});
+var COOKIE_NAME = 'livechat_conversation';
+var SERVICE_URL = 'https://services.odoo.com/';
- 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'){
- openerp.client.$('.oe_user_menu_placeholder .odoo_support_contact').on('click', this, _.bind(this.click_action, this));
- // check auto start if cookie
- var session = openerp.get_cookie(COOKIE_NAME);
- if(session){
- this.start_support();
- }
- }
- if(button === 'im_contact'){
- if(openerp.im_chat && openerp.im_chat.single){
- openerp.im_chat.single.$('.odoo_support_contact').on('click',this, _.bind(this.click_action, this));
- }
- }
- },
- click_action: function(){
- var session = openerp.get_cookie(COOKIE_NAME);
- if(!session){
+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();
}
- },
- start_support: function(){
- var self = this;
- if(!this.assets_loaded){
- this.load_assets().then(function(){
- try{
- odoo_support.im_livechat.support = new odoo_support.im_livechat.LiveSupport(self.options, self.params);
- // bind event change status
- odoo_support.im_livechat.support.on('im_odoo_support_status', this, function(is_online){
- if(openerp.im_chat && openerp.im_chat.single){
- openerp.im_chat.single.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{
- odoo_support.im_livechat.support.start();
+ }
+ if(button === 'im_contact'){
+ if (web_client.im_messaging) {
+ web_client.im_messaging.$('.odoo_support_contact').on('click',this, _.bind(this.click_action, this));
}
- },
- error_on_start: function(e){
- self.assets_loaded = false;
- openerp.client.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();
+ }
+ },
+ 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);
+ }
});
- return def;
- }else{
- $('').appendTo($("head")).ready(function() {
- def.resolve();
- });
- return def;
+ }catch(e){
+ self.error_on_start(e);
}
- };
- 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();
+ }).fail(function(e){
+ self.error_on_start(e);
});
- },
- });
-
- // display support contact button (in chat user list, if installed) and in dropdown user menu.
- if(openerp.im_chat){
- openerp.im_chat.InstantMessaging.include({
- start: function(){
- this._super.apply(this, arguments);
- var user = {
- "id" : -1,
- "name": _t('Odoo Support'),
- "im_status": 'online',
- "image_url": "/im_odoo_support/static/img/odoo_o_small.png"
- };
- var widget = new openerp.im_chat.UserWidget(self, user);
- widget.prependTo(self.$(".oe_im_users"));
- widget.$el.addClass('odoo_support_contact');
- this.support_user = widget;
-
- $(window).trigger('odoo_support_ready_to_bind','im_contact');
- },
- search_users_status: function(e){
- var self = this;
- this._super.apply(this, arguments).then(function(res){
- if(self.$('.oe_im_searchbox').val().length === 0 || _t("Odoo Support").toLowerCase().indexOf(self.$('.oe_im_searchbox').val().toLowerCase()) != -1){
- self.support_user.$el.show();
- }else{
- self.support_user.$el.hide();
- }
- return res;
+ }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{
+ $('').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;
+
+});
+
+odoo.define('im_odoo_support.config_im_chat', ['im_chat.im_chat', 'web.core'], function (require) {
+"use strict";
+
+var im_chat = require('im_chat.im_chat');
+var core = require('web.core');
+
+var _t = core._t;
+
+im_chat.InstantMessaging.include({
+ start: function(){
+ this._super.apply(this, arguments);
+ var user = {
+ "id" : -1,
+ "name": _t('Odoo Support'),
+ "im_status": 'online',
+ "image_url": "/im_odoo_support/static/img/odoo_o_small.png"
+ };
+ var widget = new im_chat.UserWidget(this, user);
+ widget.prependTo(this.$(".oe_im_users"));
+ widget.$el.addClass('odoo_support_contact');
+ this.support_user = widget;
+
+ $(window).trigger('odoo_support_ready_to_bind','im_contact');
+ },
+ search_users_status: function(e){
+ var self = this;
+ this._super.apply(this, arguments).then(function(res){
+ if(self.$('.oe_im_searchbox').val().length === 0 || _t("Odoo Support").toLowerCase().indexOf(self.$('.oe_im_searchbox').val().toLowerCase()) !== -1){
+ self.support_user.$el.show();
+ }else{
+ self.support_user.$el.hide();
+ }
+ return res;
});
}
+});
- openerp.web.UserMenu.include({
- do_update: function(){
- $(window).trigger('odoo_support_ready_to_bind', 'usermenu');
- return this._super.apply(this, arguments);
- },
- });
-
-})();
+});
diff --git a/addons/im_odoo_support/views/im_odoo_support.xml b/addons/im_odoo_support/views/im_odoo_support.xml
index e8e5ecf77f4..85a8bf6bdd1 100644
--- a/addons/im_odoo_support/views/im_odoo_support.xml
+++ b/addons/im_odoo_support/views/im_odoo_support.xml
@@ -6,12 +6,13 @@