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' mouseover: 'showIcons' mouseleave: 'hideIcons' 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.Collections.chats.add(newChat) App.Com.openNewMultiChat(App.Models.me, withWhom, newChat) openChatById: (chatId) -> chat = App.Collections.chats.findById(chatId) showIcons: -> $(@el).find('.action').show() hideIcons: -> $(@el).find('.action').hide()