Xmpp.Views.Contacts ||= {} class Xmpp.Views.Contacts.ContactView extends Backbone.View template: JST["backbone/templates/contacts/contact"] tagName: 'li' className: 'clear user' events: 'click .invite': 'inviteToMultichat' 'click .chat': 'newMultiChat' 'click': 'startChat', initialize: () -> _.bindAll(this) # Patrim nejakemu zoznamu @parentList = @attributes['listView'] @model.on('change', @updateContact) @model.on('change:status', => @parentList.reOrder()) updateContact: (contact) -> @model = contact @render() hide: -> $(@el).hide() unhide: -> $(@el).show() render: -> contact = @model.toJSON() $(@el).html(@template(contact)) return this belongsToActiveList: -> @parentList.activeGroup == true startChat: -> if @belongsToActiveList() return who = App.Models.me withWhom = @model App.debug ['opening chat with: ', who.get('jid'), withWhom.get('jid')] chat = App.Collections.chats.find(who, withWhom) if (! chat) App.debug ['not found in opened chats, creating new'] chat = new Xmpp.Models.Chat(who: who, withWhom: withWhom) App.Collections.chats.add(chat) Backbone.Events.trigger('openChat', chat) inviteToMultichat: (e) -> e.stopPropagation(); App.debug 'iniviting to multichat' newMultiChat: (e) -> e.stopPropagation(); App.debug 'new multichat' withWhom = @model newChat = new Xmpp.Models.Chat(isMultiChat: true); newChat.set('who', App.Models.me); newChat.appendWithWhom(withWhom); App.Com.openNewMultiChat(App.Models.me, withWhom, newChat) openChatById: (chatId) -> chat = App.Collections.chats.findById(chatId)