Move the event handlers on the view instead of registering them in render method of RosterItemView

This commit is contained in:
ichim-david 2013-02-23 22:20:53 +02:00
parent 7daa681ac3
commit 00aba6a9cd

View File

@ -461,8 +461,8 @@
} }
else if (match[1] === "help") { else if (match[1] === "help") {
msgs = [ msgs = [
'<strong>/help</strong>: Show this menu', '<strong>/help</strong>: Show this menu',
'<strong>/clear</strong>: Remove messages' '<strong>/clear</strong>: Remove messages'
]; ];
this.addHelpMessages(msgs); this.addHelpMessages(msgs);
return; return;
@ -502,7 +502,7 @@
this.$el.data('composing', false); this.$el.data('composing', false);
} else { } else {
composing = this.$el.data('composing'); composing = this.$el.data('composing');
if (!composing) { if (!composing) {
if (ev.keyCode != 47) { if (ev.keyCode != 47) {
// We don't send composing messages if the message // We don't send composing messages if the message
// starts with forward-slash. // starts with forward-slash.
@ -934,10 +934,10 @@
initialize: function () { initialize: function () {
xmppchat.connection.muc.join( xmppchat.connection.muc.join(
this.model.get('jid'), this.model.get('jid'),
this.model.get('nick'), this.model.get('nick'),
$.proxy(this.onChatRoomMessage, this), $.proxy(this.onChatRoomMessage, this),
$.proxy(this.onChatRoomPresence, this), $.proxy(this.onChatRoomPresence, this),
$.proxy(this.onChatRoomRoster, this)); $.proxy(this.onChatRoomRoster, this));
}, },
@ -981,7 +981,7 @@
} }
} else { } else {
if (sender === this.model.get('nick')) { if (sender === this.model.get('nick')) {
// Our own message which is already appended // Our own message which is already appended
return true; return true;
} else { } else {
$chat_content.find('div.chat-event').remove(); $chat_content.find('div.chat-event').remove();
@ -1228,8 +1228,16 @@
xmppchat.RosterItemView = Backbone.View.extend({ xmppchat.RosterItemView = Backbone.View.extend({
tagName: 'dd', tagName: 'dd',
openChat: function () { events: {
"click .accept-xmpp-request": "acceptRequest",
"click .decline-xmpp-request": "declineRequest",
"click .open-chat": "openChat",
"click .remove-xmpp-contact": "removeContact"
},
openChat: function (ev) {
xmppchat.chatboxesview.openChat(this.model.get('jid')); xmppchat.chatboxesview.openChat(this.model.get('jid'));
ev.preventDefault();
}, },
removeContact: function () { removeContact: function () {
@ -1266,18 +1274,20 @@
}); });
}, },
acceptRequest: function () { acceptRequest: function (ev) {
var jid = this.model.get('jid'); var jid = this.model.get('jid');
xmppchat.connection.roster.authorize(jid); xmppchat.connection.roster.authorize(jid);
xmppchat.connection.roster.add(jid, this.model.get('fullname'), [], function (iq) { xmppchat.connection.roster.add(jid, this.model.get('fullname'), [], function (iq) {
xmppchat.connection.roster.subscribe(jid); xmppchat.connection.roster.subscribe(jid);
}); });
ev.preventDefault();
}, },
declineRequest: function () { declineRequest: function (ev) {
var that = this; var that = this;
xmppchat.connection.roster.unauthorize(this.model.get('jid')); xmppchat.connection.roster.unauthorize(this.model.get('jid'));
that.trigger('decline-request', that.model); that.trigger('decline-request', that.model);
ev.preventDefault();
}, },
template: _.template( template: _.template(
@ -1301,36 +1311,19 @@
that = this, that = this,
subscription = item.get('subscription'); subscription = item.get('subscription');
this.$el.addClass(item.get('presence_type')); this.$el.addClass(item.get('presence_type'));
if (ask === 'subscribe') { if (ask === 'subscribe') {
this.$el.addClass('pending-xmpp-contact'); this.$el.addClass('pending-xmpp-contact');
this.$el.html(this.pending_template(item.toJSON())); this.$el.html(this.pending_template(item.toJSON()));
} else if (ask === 'request') { } else if (ask === 'request') {
this.$el.addClass('requesting-xmpp-contact'); this.$el.addClass('requesting-xmpp-contact');
this.$el.html(this.request_template(item.toJSON())); this.$el.html(this.request_template(item.toJSON()));
this.$el.delegate('button.accept-xmpp-request', 'click', function (ev) {
ev.preventDefault();
that.acceptRequest();
});
this.$el.delegate('button.decline-xmpp-request', 'click', function (ev) {
ev.preventDefault();
that.declineRequest();
});
xmppchat.chatboxesview.openChat('controlbox'); xmppchat.chatboxesview.openChat('controlbox');
} else if (subscription === 'both') { } else if (subscription === 'both') {
this.$el.addClass('current-xmpp-contact'); this.$el.addClass('current-xmpp-contact');
this.$el.html(this.template(item.toJSON())); this.$el.html(this.template(item.toJSON()));
this.$el.delegate('a.open-chat', 'click', function (ev) {
ev.preventDefault();
that.openChat();
});
} }
// Event handlers
this.$el.find('.remove-xmpp-contact').one('click', function (ev) {
ev.preventDefault();
that.removeContact();
});
return this; return this;
}, },
@ -1926,4 +1919,3 @@
return xmppchat; return xmppchat;
})); }));