| 1 | 3 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,9 @@ |
| 0 |
+.message-box |
|
| 1 |
+ .user |
|
| 2 |
+ .avatar |
|
| 3 |
+ %img{src: 'assets/avatar.png', alt: I18n.t("chat.roster.avatar_alt")}
|
|
| 4 |
+ -#todo: user name missing in design |
|
| 5 |
+ .date 3 hours ago |
|
| 6 |
+ %p Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Supendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies. Curabitur et ligula... |
|
| 7 |
+ -#%hr |
|
| 8 |
+ %p Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Supendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies. Curabitur et ligula... |
|
| 0 | 9 |
\ No newline at end of file |
| 1 | 3 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,29 @@ |
| 0 |
+Xmpp.Views.Chat ||= {}
|
|
| 1 |
+ |
|
| 2 |
+class Xmpp.Views.Chat.WindowView extends Backbone.View |
|
| 3 |
+ template: JST["backbone/templates/chat/window"] |
|
| 4 |
+ el: $('#conversation-js')
|
|
| 5 |
+ |
|
| 6 |
+ initialize: () -> |
|
| 7 |
+ _.bindAll(this) |
|
| 8 |
+ @tab = @attributes['tab'] |
|
| 9 |
+ @date = new Date() #pre testovacie ucely |
|
| 10 |
+ |
|
| 11 |
+ render: -> |
|
| 12 |
+ $(@el).html(@template(date: @date.getTime())) |
|
| 13 |
+ @show() |
|
| 14 |
+ return this |
|
| 15 |
+ |
|
| 16 |
+ hide: -> |
|
| 17 |
+ $(@el).addClass('hidden')
|
|
| 18 |
+ this |
|
| 19 |
+ |
|
| 20 |
+ show: -> |
|
| 21 |
+ $(@el).removeClass('hidden')
|
|
| 22 |
+ this |
|
| 23 |
+ |
|
| 24 |
+ remove: -> |
|
| 25 |
+ @undelegateEvents() |
|
| 26 |
+ $(@el).empty() |
|
| 27 |
+ # @stopListening() TODO: po upgrade na 1.0 uz bude pristupne |
|
| 28 |
+ this |
|
| 0 | 29 |
\ No newline at end of file |
| ... | ... |
@@ -26,9 +26,27 @@ class Xmpp.Views.Tabbar.TabView extends Backbone.View |
| 26 | 26 |
)) |
| 27 | 27 |
return this |
| 28 | 28 |
|
| 29 |
+ showChat: -> |
|
| 30 |
+ if !@chatWindow |
|
| 31 |
+ @chatWindow = new Xmpp.Views.Chat.WindowView(attributes: {tab: this})
|
|
| 32 |
+ App.debug 'zobrazujem NOVY chat window' |
|
| 33 |
+ else |
|
| 34 |
+ App.debug 'zobrazujem EXISTUJUCI chat window' |
|
| 35 |
+ |
|
| 36 |
+ @chatWindow.render() |
|
| 37 |
+ |
|
| 38 |
+ destroy: -> |
|
| 39 |
+ App.debug 'destroy chatWindow and tab' |
|
| 40 |
+ @chatWindow.remove() |
|
| 41 |
+ @remove() |
|
| 42 |
+ |
|
| 43 |
+ hideChat: -> |
|
| 44 |
+ if @chatWindow |
|
| 45 |
+ @chatWindow.hide(); |
|
| 46 |
+ |
|
| 29 | 47 |
closeChat: -> |
| 30 | 48 |
Backbone.Events.trigger('closeChat', this, @model)
|
| 31 |
- @remove() |
|
| 49 |
+ @destroy() |
|
| 32 | 50 |
|
| 33 | 51 |
hasParticipants: (who, withWhom) -> |
| 34 | 52 |
@model && @model.get('who') == who && @model.get('withWhom') == withWhom
|
| ... | ... |
@@ -7,10 +7,14 @@ class Xmpp.Views.Tabbar.TabbarView extends Backbone.View |
| 7 | 7 |
initialize: () -> |
| 8 | 8 |
_.bindAll(this) |
| 9 | 9 |
|
| 10 |
- Backbone.Events.on('openChat', @addOrSelect)
|
|
| 11 |
- .on('closeChat', @removeTab)
|
|
| 10 |
+ Backbone.Events.on('openChat', (chat) =>
|
|
| 11 |
+ @hideCurrentChatWindow() |
|
| 12 |
+ @addOrSelect(chat) |
|
| 13 |
+ ) |
|
| 14 |
+ Backbone.Events.on('closeChat', @removeTab)
|
|
| 12 | 15 |
|
| 13 | 16 |
@tabs = [] |
| 17 |
+ @activeTab = null |
|
| 14 | 18 |
@render() |
| 15 | 19 |
|
| 16 | 20 |
addOrSelect: (chat) -> |
| ... | ... |
@@ -30,11 +34,24 @@ class Xmpp.Views.Tabbar.TabbarView extends Backbone.View |
| 30 | 30 |
tab.setInactive() |
| 31 | 31 |
) |
| 32 | 32 |
|
| 33 |
- tab.setActive().el |
|
| 33 |
+ @activeTab = tab |
|
| 34 |
+ @activeTab.setActive() |
|
| 35 |
+ |
|
| 36 |
+ @activeTab.showChat() |
|
| 37 |
+# App.debug ['aktivny tab: ', @activeTab] |
|
| 38 |
+ |
|
| 39 |
+ hideCurrentChatWindow: -> |
|
| 40 |
+ if @activeTab |
|
| 41 |
+ App.debug 'zakryvam chat window' |
|
| 42 |
+ @activeTab.hideChat() |
|
| 34 | 43 |
|
| 35 | 44 |
removeTab: (tab) -> |
| 45 |
+# if @activeTab && @activeTab == tab |
|
| 46 |
+# App.debug 'nicim tab aj chat window' |
|
| 47 |
+# @activeTab.destroy() |
|
| 48 |
+ |
|
| 36 | 49 |
@tabs = _.without(@tabs, tab) |
| 37 | 50 |
|
| 38 | 51 |
render: -> |
| 39 |
- $(@el).html('')
|
|
| 52 |
+ $(@el).html(@template()) |
|
| 40 | 53 |
return this |
| ... | ... |
@@ -16,30 +16,6 @@ |
| 16 | 16 |
.my-info#js-me |
| 17 | 17 |
.friends |
| 18 | 18 |
#js-active-friends |
| 19 |
- -#%h1.group-header.active Chat group |
|
| 20 |
- -#%ul.active-group |
|
| 21 |
- -# %li.clear.user |
|
| 22 |
- -# .avatar |
|
| 23 |
- -# %img{src: 'assets/avatar.png', alt: t("chat.avatar_alt")}
|
|
| 24 |
- -# %h1 |
|
| 25 |
- -# Adam Wolsky |
|
| 26 |
- -# %span.status.online.icon-record |
|
| 27 |
- -# %h2 co-founder |
|
| 28 |
- -# %span.action |
|
| 29 |
- -# %span.icon-x-full |
|
| 30 |
- -# %span kick |
|
| 31 |
- -# %li.clear.user |
|
| 32 |
- -# .avatar |
|
| 33 |
- -# %img{src: 'assets/avatar.png', alt: t("chat.avatar_alt")}
|
|
| 34 |
- -# %h1 |
|
| 35 |
- -# John Savage |
|
| 36 |
- -# %span.status.away.icon-record |
|
| 37 |
- -# %h2 web & ui designer |
|
| 38 |
- -# %span.action |
|
| 39 |
- -# %span.icon-x-full |
|
| 40 |
- -# %span kick |
|
| 41 |
- -# %span.icon-bubbles |
|
| 42 |
- -# %span invite |
|
| 43 | 19 |
#js-inactive-friends |
| 44 | 20 |
.toolbox |
| 45 | 21 |
%input{type: "search", placeholder: "Search contact"}
|
| ... | ... |
@@ -48,42 +24,31 @@ |
| 48 | 48 |
.chatting-window.left.rightside |
| 49 | 49 |
.tabbar#tabbar |
| 50 | 50 |
#js-tabbar |
| 51 |
- .conversation.clear.border |
|
| 52 |
- .messages#height-setter-2{style: "overflow: auto;"}
|
|
| 53 |
- %a{ href: "#", class: "event" }
|
|
| 54 |
- Load older messages |
|
| 55 |
- %span.icon-arrow-up |
|
| 56 |
- .message-box |
|
| 57 |
- .user |
|
| 58 |
- .avatar |
|
| 59 |
- %img{src: 'assets/avatar.png', alt: t("chat.avatar_alt")}
|
|
| 60 |
- -#todo: user name missing in design |
|
| 61 |
- .date 3 hours ago |
|
| 62 |
- %p Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Supendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies. Curabitur et ligula... |
|
| 63 |
- .message-box |
|
| 64 |
- .user |
|
| 65 |
- .avatar |
|
| 66 |
- %img{src: 'assets/avatar.png', alt: t("chat.avatar_alt")}
|
|
| 67 |
- -#todo: user name missing in design |
|
| 68 |
- .date 3 hours ago |
|
| 69 |
- %p Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Supendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies. Curabitur et ligula... |
|
| 70 |
- -#%hr |
|
| 71 |
- %p Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Supendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies. Curabitur et ligula... |
|
| 72 |
- |
|
| 73 |
- .event |
|
| 74 |
- Monday 13.2.2013 |
|
| 75 |
- |
|
| 76 |
- .message-box.active |
|
| 77 |
- .user |
|
| 78 |
- .avatar |
|
| 79 |
- %img{src: 'assets/avatar.png', alt: t("chat.avatar_alt")}
|
|
| 80 |
- -#todo: user name missing in design |
|
| 81 |
- .date 3 hours ago |
|
| 82 |
- %p Etiam ullamcorper. Supendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies. Lorem ipsum dolor sit amet enim. |
|
| 83 |
- |
|
| 84 |
- .event |
|
| 85 |
- Adam left the room | 13:45 |
|
| 86 |
- |
|
| 87 |
- .message-writer#msg-writer |
|
| 88 |
- %input{ type: "text", placeholder: "Type your message here" }
|
|
| 89 |
- %input{ type: "submit", value: "Send" }
|
|
| 51 |
+ #conversation-js |
|
| 52 |
+ -#.conversation.clear.border |
|
| 53 |
+ -#.messages#height-setter-2{style: "overflow: auto;"}
|
|
| 54 |
+ -# %a{ href: "#", class: "event" }
|
|
| 55 |
+ -# Load older messages |
|
| 56 |
+ -# %span.icon-arrow-up |
|
| 57 |
+ -# .message-box |
|
| 58 |
+ -# .user |
|
| 59 |
+ -# .avatar |
|
| 60 |
+ -# %img{src: 'assets/avatar.png', alt: t("chat.avatar_alt")}
|
|
| 61 |
+ -# -#todo: user name missing in design |
|
| 62 |
+ -# .date 3 hours ago |
|
| 63 |
+ -# %p Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Supendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies. Curabitur et ligula... |
|
| 64 |
+ -# |
|
| 65 |
+ -# .message-box.active |
|
| 66 |
+ -# .user |
|
| 67 |
+ -# .avatar |
|
| 68 |
+ -# %img{src: 'assets/avatar.png', alt: t("chat.avatar_alt")}
|
|
| 69 |
+ -# -#todo: user name missing in design |
|
| 70 |
+ -# .date 3 hours ago |
|
| 71 |
+ -# %p Etiam ullamcorper. Supendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies. Lorem ipsum dolor sit amet enim. |
|
| 72 |
+ -# |
|
| 73 |
+ -# .event |
|
| 74 |
+ -# Adam left the room | 13:45 |
|
| 75 |
+ -# |
|
| 76 |
+ -#.message-writer#msg-writer |
|
| 77 |
+ -# %input{ type: "text", placeholder: "Type your message here" }
|
|
| 78 |
+ -# %input{ type: "submit", value: "Send" }
|