app/assets/javascripts/backbone/views/contacts/contact.js.coffee
b27f285a
 Xmpp.Views.Contacts ||= {}
 
 class Xmpp.Views.Contacts.ContactView extends Backbone.View
   template: JST["backbone/templates/contacts/contact"]
52ef7688
   tagName: 'li'
   className: 'clear user'
b27f285a
 
6a6ccd01
   events:
94bd8368
     'click .invite': 'inviteToMultichat'
aa2c1028
     'click .kick': 'kickFromMultiChat'
dc7e418a
     'click .multichat': 'newMultiChat'
37ab3198
     'click .make-owner': 'switchOwner'
0ec320b3
     'click .remove': 'removeContact'
41661541
     click: 'startChat'
     mouseover: 'showIcons'
     mouseleave: 'hideIcons'
b27f285a
 
f02a24ce
   @iconClasses = ['multichat', 'invite', 'kick', 'make-owner', 'remove']
 
b27f285a
   initialize: () ->
     _.bindAll(this)
 
e2e90aca
 #    Patrim nejakemu zoznamu
52ef7688
     @parentList = @attributes['listView']
b27f285a
 
6723d1f9
     @model.on('change', @updateContact)
c4a05fed
     @model.on('change:status', => @parentList.reOrder())
52ef7688
 
   updateContact: (contact) ->
     @model = contact
b27f285a
     @render()
 
43899b3a
   hide: ->
     $(@el).hide()
 
   unhide: ->
     $(@el).show()
 
b27f285a
   render: ->
     contact = @model.toJSON()
52ef7688
     $(@el).html(@template(contact))
6a6ccd01
     return this
 
e2e90aca
   belongsToActiveList: ->
     @parentList.activeGroup == true
 
bcce524b
   startChat: ->
e2e90aca
     who      = App.Models.me
6a6ccd01
     withWhom = @model
 
     App.debug ['opening chat with: ', who.get('jid'), withWhom.get('jid')]
 
     chat = App.Collections.chats.find(who, withWhom)
     if (! chat)
bcce524b
       App.debug ['not found in opened chats, creating new']
6a6ccd01
       chat = new Xmpp.Models.Chat(who: who, withWhom: withWhom)
       App.Collections.chats.add(chat)
 
bcce524b
     Backbone.Events.trigger('openChat', chat)
e1b7175e
     Backbone.Events.trigger('resizeWorkspace')
6a6ccd01
 
94bd8368
   inviteToMultichat: (e) ->
99070cca
     e.stopPropagation()
94bd8368
     App.debug 'iniviting to multichat'
296dd1c6
     multichat = App.Collections.chats.activeChat
     if not multichat or not multichat.get('isMultiChat')
       return
 
     App.Com.inviteToChat(multichat, @model, App.Models.me.get('jid'))
94bd8368
 
   newMultiChat: (e) ->
99070cca
     e.stopPropagation()
94bd8368
     App.debug 'new multichat'
 
b1c6b359
     newChat = new Xmpp.Models.Chat(isMultiChat: true)
     newChat.set('who', App.Models.me)
94bd8368
 
b1c6b359
     App.Collections.chats.add(newChat)
296dd1c6
     App.Com.openNewMultiChat(App.Models.me, @model, newChat)
e1b7175e
     Backbone.Events.trigger('resizeWorkspace')
94bd8368
 
aa2c1028
   kickFromMultiChat: (e) ->
99070cca
     e.stopPropagation()
aa2c1028
     App.debug 'kick him from multichat!'
 
     multichat = App.Collections.chats.activeChat
37ab3198
     if not multichat or (multichat and not multichat.get('isMultiChat'))
aa2c1028
       return
 
     App.Com.kickFromMultichat(multichat.get('chatId'), App.Models.me.get('jid'), @model.get('jid'))
     App.Collections.contacts.moveToInactiveList(@model)
 
37ab3198
   switchOwner: (e) ->
     e.stopPropagation()
     App.debug 'make him new multichat owner'
     multichat = App.Collections.chats.activeChat
     if not multichat or (multichat and not multichat.get('isMultiChat'))
       return
 
     App.Com.switchMultiChatOwner(App.Models.me.get('jid'), @model.get('jid'), multichat.get('chatId'))
 
0ec320b3
   removeContact: (e) ->
     e.stopPropagation()
     App.debug 'remove from roster'
     App.Com.removeContactRemote(@model.get('jid'))
     Backbone.Events.trigger('removeContact', @model)
 
1f685c13
   openChatById: (chatId) ->
aa2c1028
     App.Collections.chats.findById(chatId)
41661541
 
   showIcons: ->
dc7e418a
     activeChat = App.Collections.chats.activeChat
 
f02a24ce
     @hideIcons()
dc7e418a
 
e00cfd5c
     if @model.get('usingMyApp') and @model.get('status') != 'offline'
dc7e418a
       if not activeChat or not activeChat.get('isMultiChat')
         $(@el).find('.action .multichat').show()
       else if activeChat.get('isMultiChat') and activeChat.isMeOwner() and not activeChat.isAttending(@model)
         $(@el).find('.action .invite').show()
       else if activeChat.get('isMultiChat') and activeChat.isMeOwner()
         $(@el).find('.action .kick').show()
37ab3198
         $(@el).find('.action .make-owner').show()
dc7e418a
 
f02a24ce
     if not activeChat or not activeChat.get('isMultiChat')
       $(@el).find('.action .remove').show()
 
41661541
   hideIcons: ->
f02a24ce
     all_icons = '.action .' + ContactView.iconClasses.join(', .action .')
     $(@el).find(all_icons).hide()