summaryrefslogtreecommitdiff
path: root/addons/im/static
diff options
context:
space:
mode:
authorniv-openerp <nicolas.vanhoren@openerp.com>2013-09-02 17:14:04 +0200
committerniv-openerp <nicolas.vanhoren@openerp.com>2013-09-02 17:14:04 +0200
commitb4b74f9a208efcffcb0c2e9b8c9c6df7253ded3b (patch)
tree583106153190e0400e402f9e0208345e40ca8c3d /addons/im/static
parent1f9d21552b47b2c326dbeb2a7f1a2b946e8a8297 (diff)
Bases of the group chat work
bzr revid: nicolas.vanhoren@openerp.com-20130902151404-gyy9ydjqu5xucpf5
Diffstat (limited to 'addons/im/static')
-rw-r--r--addons/im/static/src/js/im.js15
-rw-r--r--addons/im/static/src/js/im_common.js14
2 files changed, 28 insertions, 1 deletions
diff --git a/addons/im/static/src/js/im.js b/addons/im/static/src/js/im.js
index cad3c6dff0b..f26b8f5c4a2 100644
--- a/addons/im/static/src/js/im.js
+++ b/addons/im/static/src/js/im.js
@@ -70,7 +70,15 @@
var self = this;
- return this.c_manager.start_polling();
+ return this.c_manager.start_polling().then(function() {
+ self.c_manager.on("new_conversation", self, function(conv) {
+ conv.$el.droppable({
+ drop: function(event, ui) {
+ self.add_user(conv, ui.draggable.data("user"));
+ }
+ });
+ });
+ });
},
calc_box: function() {
var $topbar = instance.client.$(".oe_topbar");
@@ -133,6 +141,9 @@
self.c_manager.activate_session(session.id, true);
});
},
+ add_user: function(conversation, user) {
+ conversation.add_user(user);
+ },
});
instance.im.UserWidget = instance.web.Widget.extend({
@@ -146,6 +157,8 @@
this.user.add_watcher();
},
start: function() {
+ this.$el.data("user", this.user);
+ this.$el.draggable({helper: "clone"});
var change_status = function() {
this.$(".oe_im_user_online").toggle(this.user.get("im_status") === true);
};
diff --git a/addons/im/static/src/js/im_common.js b/addons/im/static/src/js/im_common.js
index 6d88764b1d8..c5508a3b69a 100644
--- a/addons/im/static/src/js/im_common.js
+++ b/addons/im/static/src/js/im_common.js
@@ -223,6 +223,7 @@ function declare($, _, openerp) {
});
this.conversations.push(conv);
this.calc_positions();
+ this.trigger("new_conversation", conv);
}, this));
}
if (focus) {
@@ -393,6 +394,19 @@ function declare($, _, openerp) {
_go_bottom: function() {
this.$(".oe_im_chatview_content").scrollTop($(this.$(".oe_im_chatview_content").children()[0]).height());
},
+ add_user: function(user) {
+ if (user === this.me || _.contains(this.users, user))
+ return;
+ im_common.connection.model("im.session").call("add_to_session",
+ [this.session_id, user.get("id"), this.c_manager.me.get("uuid")]).then(_.bind(function() {
+ if (_.contains(this.others, user)) {
+ this.others = _.without(this.others, user);
+ } else {
+ user.add_watcher();
+ }
+ this.users.push(user);
+ }, this));
+ },
focus: function() {
this.$(".oe_im_chatview_input").focus();
if (! this.shown)