Browse code

Zobrazovanie relevantnych ikoniek vedla kontaktov

Cinan Rakosnik authored on 01/05/2013 at 16:06:27
Showing 3 changed files
... ...
@@ -27,6 +27,16 @@ class Xmpp.Models.Chat extends Xmpp.Models.Model
27 27
     App.debug ['multichat has id', id]
28 28
     @set('chatId', id)
29 29
 
30
+  isMeOwner: ->
31
+    @get('who') == App.Models.me
32
+
33
+  isAttending: (contact) ->
34
+    attendants = @get('withWhom')
35
+    if _.isArray(attendants)
36
+      return _.find(attendants, (somebody) -> somebody == contact)
37
+    else
38
+      return contact == attendants
39
+
30 40
   syncContacts: (contacts, owner) ->
31 41
     contactsWithoutMe = _.filter(contacts, (jid) ->
32 42
       jid != App.Models.me.get('jid')
... ...
@@ -60,6 +70,7 @@ class Xmpp.Models.Chat extends Xmpp.Models.Model
60 60
 
61 61
 class Xmpp.Collections.ChatsCollection extends Backbone.Collection
62 62
   model: Xmpp.Models.Chat
63
+  activeChat: null
63 64
 
64 65
   initialize: ->
65 66
     _.bindAll(this)
... ...
@@ -68,6 +79,10 @@ class Xmpp.Collections.ChatsCollection extends Backbone.Collection
68 68
       @removeChat(chat)
69 69
     )
70 70
 
71
+    Backbone.Events.on('openChat', (chat) =>
72
+      @activeChat = chat
73
+    )
74
+
71 75
   find: (who, withWhom) ->
72 76
     _.find(@models, (chat) ->
73 77
       chat.get('who') == who && chat.get('withWhom') == withWhom
... ...
@@ -5,11 +5,18 @@
5 5
   %span.status.icon-record{class: "#{@status}"}
6 6
 %h2 #{@message}  
7 7
 %span.action
8
-  -if @usingMyApp
9
-    %span.icon-bubbles.chat
10
-      %span chat
11
-  -#%span.icon-bubbles.invite
8
+  -#-if @usingMyApp
9
+  %span.icon-bubbles.multichat
10
+    -# ak nemam otvoreny multichat
11
+    %span multi
12
+  %span.icon-bubbles.invite
13
+    -# ak nie je v multichate a mam otvoreny multichat a som admin toho multichatu
12 14
     %span invite
15
+  %span.icon-x-full.kick
16
+    -# ak som admin otvoreneho multichatu
17
+    %span kick
18
+  -#%span.icon-x-full.remove
19
+    %span remove
13 20
 
14 21
 -#  .avatar
15 22
 -#    %img{src: 'assets/avatar.png', alt: t("chat.avatar_alt")}
... ...
@@ -17,9 +24,6 @@
17 17
 -#    Bob Awesome
18 18
 -#    %span.status.dnd.icon-record
19 19
 -#  %h2 sales manager
20
--#  %span.action
21
--#    %span.icon-x-full
22
--#      %span kick
23 20
 -#%li.clear.user
24 21
 -#  .avatar
25 22
 -#    %img{src: 'assets/avatar.png', alt: t("chat.avatar_alt")}
... ...
@@ -7,7 +7,7 @@ class Xmpp.Views.Contacts.ContactView extends Backbone.View
7 7
 
8 8
   events:
9 9
     'click .invite': 'inviteToMultichat'
10
-    'click .chat': 'newMultiChat'
10
+    'click .multichat': 'newMultiChat'
11 11
     click: 'startChat'
12 12
     mouseover: 'showIcons'
13 13
     mouseleave: 'hideIcons'
... ...
@@ -76,6 +76,19 @@ class Xmpp.Views.Contacts.ContactView extends Backbone.View
76 76
     chat = App.Collections.chats.findById(chatId)
77 77
 
78 78
   showIcons: ->
79
+    activeChat = App.Collections.chats.activeChat
80
+
81
+    $(@el).find('.action .multichat, .action .invite, .action .kick').hide()
82
+
83
+    if (@model.get('usingMyApp') == true)
84
+      if not activeChat or not activeChat.get('isMultiChat')
85
+        $(@el).find('.action .multichat').show()
86
+      else if activeChat.get('isMultiChat') and activeChat.isMeOwner() and not activeChat.isAttending(@model)
87
+        $(@el).find('.action .invite').show()
88
+      else if activeChat.get('isMultiChat') and activeChat.isMeOwner()
89
+        $(@el).find('.action .kick').show()
90
+
91
+
79 92
     $(@el).find('.action').show()
80 93
 
81 94
   hideIcons: ->