diff --git a/addons/web_im/static/src/css/im.css b/addons/web_im/static/src/css/im.css
index 5f0ad245187..51717c00919 100644
--- a/addons/web_im/static/src/css/im.css
+++ b/addons/web_im/static/src/css/im.css
@@ -57,6 +57,7 @@
padding-bottom: 38px;
}
.openerp .oe_im_user {
+ position: relative;
padding: 2px 6px;
cursor: pointer;
font-size: 13px;
@@ -88,6 +89,17 @@
position: relative;
}
+.openerp .oe_im_user_online {
+ display: none;
+ position: absolute;
+ top: 9.5px;
+ right: 11px;
+ width: 11px;
+ height: 11px;
+ vertical-align: middle;
+ border: 0;
+}
+
/* conversations */
.openerp .oe_im_chatview {
@@ -106,6 +118,14 @@
}
.openerp .oe_im_chatview .oe_im_chatview_disconnected {
display:none;
+ position: absolute;
+ z-index: 100;
+ width: 100%;
+ background: #E8EBEF;
+ padding: 5px;
+ font-size: 11px;
+ color: #999;
+ line-height: 14px;
}
.openerp .oe_im_chatview .oe_im_chatview_header {
padding: 3px 6px 2px;
@@ -214,3 +234,10 @@
margin: 0 0 2px 30px;
line-height: 14px;
}
+
+.openerp .oe_im_chatview_online {
+ display: none;
+ margin-top: -4px;
+ width: 11px;
+ height: 11px;
+}
diff --git a/addons/web_im/static/src/js/im.js b/addons/web_im/static/src/js/im.js
index 9d6ebc4a4cb..076e900f2ae 100644
--- a/addons/web_im/static/src/js/im.js
+++ b/addons/web_im/static/src/js/im.js
@@ -90,7 +90,7 @@ openerp.web_im = function(instance) {
search_changed: function(e) {
var users = new instance.web.Model("res.users");
var self = this;
- return this.user_search_dm.add(users.query(["name"])
+ return this.user_search_dm.add(users.query(["name", "im_status"])
.filter([["name", "ilike", this.get("current_search")]])
.limit(USERS_LIMIT).all()).then(function(result) {
self.add_to_user_cache(result);
@@ -118,7 +118,7 @@ openerp.web_im = function(instance) {
if (_.size(no_cache) === 0)
return $.when();
else
- return new instance.web.Model("res.users").call("read", [_.values(no_cache), ["name"]],
+ return new instance.web.Model("res.users").call("read", [_.values(no_cache), ["name", "im_status"]],
{context: new instance.web.CompoundContext()}).then(function(users) {
self.add_to_user_cache(users);
});
@@ -201,6 +201,13 @@ openerp.web_im = function(instance) {
this.user = user;
this.user.add_watcher();
},
+ start: function() {
+ var change_status = function() {
+ this.$(".oe_im_user_online").toggle(this.user.get("im_status") === true);
+ };
+ this.user.on("change:im_status", this, change_status);
+ change_status.call(this);
+ },
activate_user: function() {
this.trigger("activate_user", this.user);
},
@@ -289,6 +296,13 @@ openerp.web_im = function(instance) {
this.shown = true;
},
start: function() {
+ var change_status = function() {
+ this.$(".oe_im_chatview_online").toggle(this.user.get("im_status") === true);
+ this.$(".oe_im_chatview_disconnected").toggle(this.user.get("im_status") === false);
+ };
+ this.user.on("change:im_status", this, change_status);
+ change_status.call(this);
+
this.on("change:right_position", this, this.calc_pos);
this.full_height = this.$el.height();
this.calc_pos();
diff --git a/addons/web_im/static/src/xml/im.xml b/addons/web_im/static/src/xml/im.xml
index 70551e3424b..33aaf6f18ed 100644
--- a/addons/web_im/static/src/xml/im.xml
+++ b/addons/web_im/static/src/xml/im.xml
@@ -24,11 +24,13 @@
+