Commit 3bfdeee34c45d2772f0d57146b50b1991019b027
1 parent
ca5297ac
Exists in
master
and in
22 other branches
refactoring chat interface
Showing
3 changed files
with
52 additions
and
34 deletions
Show diff stats
app/views/shared/logged_in/xmpp_chat.html.erb
| @@ -13,33 +13,23 @@ | @@ -13,33 +13,23 @@ | ||
| 13 | </script> | 13 | </script> |
| 14 | 14 | ||
| 15 | <div id='chat'> | 15 | <div id='chat'> |
| 16 | + <div class='header'> | ||
| 17 | + <%= _("Chat %s") % environment.name %> | ||
| 18 | + </div> | ||
| 16 | <div id='buddy-list'> | 19 | <div id='buddy-list'> |
| 17 | <div class='toolbar'> | 20 | <div class='toolbar'> |
| 18 | <div id='user-status'> | 21 | <div id='user-status'> |
| 19 | <%= profile_image(user, :portrait, :class => 'avatar') %> | 22 | <%= profile_image(user, :portrait, :class => 'avatar') %> |
| 20 | <%= user_status_menu('icon-menu-offline', _('Offline')) %> | 23 | <%= user_status_menu('icon-menu-offline', _('Offline')) %> |
| 21 | </div> | 24 | </div> |
| 22 | - <a href="#" class="back"><%= _('Close') %></a> | ||
| 23 | <div class='dialog-error' style='display: none'></div> | 25 | <div class='dialog-error' style='display: none'></div> |
| 24 | </div> | 26 | </div> |
| 25 | 27 | ||
| 26 | - <div id="friends"> | ||
| 27 | - <div class="status-group"> | ||
| 28 | - <div class='title-bar'><a href="#"><h1 class='title'><%= _("Online") %> (<span id='friends-online'>0</span>)</h1></a></div> | ||
| 29 | - <ul class='buddy-list online'></ul> | ||
| 30 | - </div> | ||
| 31 | - | ||
| 32 | - <div class="status-group"> | ||
| 33 | - <div class='title-bar'><a href="#"><h1 class='title'><%= _("Offline") %> (<span id='friends-offline'>0</span>)</h1></a></div> | ||
| 34 | - <ul class='buddy-list offline'></ul> | ||
| 35 | - </div> | ||
| 36 | - </div> | 28 | + <div class='body'> |
| 29 | + <%= text_field_tag(:query, '', :placeholder => _('Search...'), :class => 'search') %> | ||
| 37 | 30 | ||
| 38 | - <div id="rooms"> | ||
| 39 | - <div class="status-group"> | ||
| 40 | - <div class='title-bar'><a href="#"><h1 class='title'><%= _("Groups") %> (<span id='groups-online'>0</span>)</h1></a></div> | ||
| 41 | - <ul class="buddy-list room-list"></ul> | ||
| 42 | - </div> | 31 | + <ul class='buddies .online'></ul> |
| 32 | + <ul class='buddies .offline'></ul> | ||
| 43 | </div> | 33 | </div> |
| 44 | </div> | 34 | </div> |
| 45 | 35 |
public/javascripts/chat.js
| @@ -65,7 +65,7 @@ jQuery(function($) { | @@ -65,7 +65,7 @@ jQuery(function($) { | ||
| 65 | }, | 65 | }, |
| 66 | insert_or_update_group: function (jid, presence) { | 66 | insert_or_update_group: function (jid, presence) { |
| 67 | var jid_id = Jabber.jid_to_id(jid); | 67 | var jid_id = Jabber.jid_to_id(jid); |
| 68 | - var list = $('#buddy-list #rooms .room-list'); | 68 | + var list = $('#buddy-list .buddies.online'); |
| 69 | var item = $('#' + jid_id); | 69 | var item = $('#' + jid_id); |
| 70 | presence = presence || ($(item).length > 0 ? $(item).parent('li').attr('class') : 'offline'); | 70 | presence = presence || ($(item).length > 0 ? $(item).parent('li').attr('class') : 'offline'); |
| 71 | log('adding or updating contact ' + jid + ' as ' + presence); | 71 | log('adding or updating contact ' + jid + ' as ' + presence); |
| @@ -78,7 +78,7 @@ jQuery(function($) { | @@ -78,7 +78,7 @@ jQuery(function($) { | ||
| 78 | var jid_id = Jabber.jid_to_id(jid); | 78 | var jid_id = Jabber.jid_to_id(jid); |
| 79 | var item = $('#' + jid_id); | 79 | var item = $('#' + jid_id); |
| 80 | presence = presence || ($(item).length > 0 ? $(item).parent('li').attr('class') : 'offline'); | 80 | presence = presence || ($(item).length > 0 ? $(item).parent('li').attr('class') : 'offline'); |
| 81 | - var list = $('#buddy-list #friends .buddy-list' + (presence=='offline' ? '.offline' : '.online')); | 81 | + var list = $('#buddy-list .buddies' + (presence=='offline' ? '.offline' : '.online')); |
| 82 | 82 | ||
| 83 | log('adding or updating contact ' + jid + ' as ' + presence); | 83 | log('adding or updating contact ' + jid + ' as ' + presence); |
| 84 | Jabber.insert_or_update_user(list, item, jid, name, presence, Jabber.template('.buddy-item'), 'chat'); | 84 | Jabber.insert_or_update_user(list, item, jid, name, presence, Jabber.template('.buddy-item'), 'chat'); |
public/stylesheets/chat.css
| 1 | #chat { | 1 | #chat { |
| 2 | - width: 250px; | 2 | + width: 350px; |
| 3 | height: 100%; | 3 | height: 100%; |
| 4 | display: none; | 4 | display: none; |
| 5 | position: fixed; | 5 | position: fixed; |
| 6 | right: 0; | 6 | right: 0; |
| 7 | top: 0; | 7 | top: 0; |
| 8 | z-index: 900; | 8 | z-index: 900; |
| 9 | + background-color: #FFF; | ||
| 10 | + box-shadow: -3px 0px 5px #888; | ||
| 9 | } | 11 | } |
| 10 | 12 | ||
| 11 | #chat #buddy-list { | 13 | #chat #buddy-list { |
| 12 | - background-color: #303030; | ||
| 13 | - width: 250px; | ||
| 14 | - height: 100%; | 14 | + background-color: #f9f9f9; |
| 15 | + width: 175px; | ||
| 16 | + height: 75%; | ||
| 15 | overflow: hidden; | 17 | overflow: hidden; |
| 16 | position: absolute; | 18 | position: absolute; |
| 19 | + right: 0; | ||
| 20 | + border-left: 1px solid #DCE4E7; | ||
| 21 | + border-bottom: 1px solid #DCE4E7; | ||
| 17 | } | 22 | } |
| 18 | -#buddy-list .buddy-list { | 23 | +#buddy-list .buddies { |
| 19 | list-style-type: none; | 24 | list-style-type: none; |
| 20 | padding: 0; | 25 | padding: 0; |
| 21 | margin: 0; | 26 | margin: 0; |
| 22 | } | 27 | } |
| 23 | -#buddy-list .buddy-list li { | 28 | +#buddy-list .buddies li { |
| 24 | border-bottom: 1px solid #383838; | 29 | border-bottom: 1px solid #383838; |
| 25 | } | 30 | } |
| 26 | -#buddy-list .buddy-list li a:hover, .occupant-list li a:hover { | 31 | +#buddy-list .buddies a:hover, .occupant-list li a:hover { |
| 27 | background: #257CAD; | 32 | background: #257CAD; |
| 28 | } | 33 | } |
| 29 | -#buddy-list .buddy-list li a, .occupant-list li a { | 34 | +#buddy-list .buddies li a, .occupant-list li a { |
| 30 | background: none; | 35 | background: none; |
| 31 | display: block; | 36 | display: block; |
| 32 | padding-left: 20px; | 37 | padding-left: 20px; |
| @@ -36,7 +41,7 @@ | @@ -36,7 +41,7 @@ | ||
| 36 | height: 44px; | 41 | height: 44px; |
| 37 | overflow: hidden; | 42 | overflow: hidden; |
| 38 | } | 43 | } |
| 39 | -#buddy-list .buddy-list li a .name, .occupant-list li a .name { | 44 | +#buddy-list .buddies li a .name, .occupant-list li a .name { |
| 40 | vertical-align: top; | 45 | vertical-align: top; |
| 41 | margin-left: 5px; | 46 | margin-left: 5px; |
| 42 | padding: 0 0 5px 20px; | 47 | padding: 0 0 5px 20px; |
| @@ -47,12 +52,12 @@ | @@ -47,12 +52,12 @@ | ||
| 47 | overflow: hidden; | 52 | overflow: hidden; |
| 48 | height: 30px; | 53 | height: 30px; |
| 49 | } | 54 | } |
| 50 | -#buddy-list .buddy-list li a img, .occupant-list li a img, #chat .avatar { | 55 | +#buddy-list .buddies li a img, .occupant-list li a img, #chat .avatar { |
| 51 | border-radius: 5px; | 56 | border-radius: 5px; |
| 52 | width: 32px; | 57 | width: 32px; |
| 53 | max-height: 40px; | 58 | max-height: 40px; |
| 54 | } | 59 | } |
| 55 | -#buddy-list .buddy-list.offline, .occupant-list.offline { | 60 | +#buddy-list .buddies.offline, .occupant-list.offline { |
| 56 | display: none; | 61 | display: none; |
| 57 | } | 62 | } |
| 58 | #chat #buddy-list .toolbar { | 63 | #chat #buddy-list .toolbar { |
| @@ -75,9 +80,21 @@ | @@ -75,9 +80,21 @@ | ||
| 75 | #buddy-list .toolbar .dialog-error p { | 80 | #buddy-list .toolbar .dialog-error p { |
| 76 | margin: 0 0 5px 0; | 81 | margin: 0 0 5px 0; |
| 77 | } | 82 | } |
| 78 | -#chat-window { | ||
| 79 | - background: white; | 83 | + |
| 84 | + | ||
| 85 | +#buddy-list .body{ | ||
| 86 | + position: relative; | ||
| 87 | + padding: 5px; | ||
| 80 | } | 88 | } |
| 89 | + | ||
| 90 | +#buddy-list .search{ | ||
| 91 | + width: 150px; | ||
| 92 | + padding: 7px; | ||
| 93 | + color: #FFF; | ||
| 94 | + background-color: #BABDB6; | ||
| 95 | + border: 0; | ||
| 96 | +} | ||
| 97 | + | ||
| 81 | .conversation { | 98 | .conversation { |
| 82 | background-color: #303030; | 99 | background-color: #303030; |
| 83 | height: 100%; | 100 | height: 100%; |
| @@ -310,10 +327,10 @@ div.occupants > a.up { | @@ -310,10 +327,10 @@ div.occupants > a.up { | ||
| 310 | top: -3px; | 327 | top: -3px; |
| 311 | } | 328 | } |
| 312 | 329 | ||
| 313 | -.buddy-list .dnd span.name { | 330 | +.buddies .dnd span.name { |
| 314 | background: url(/designs/icons/pidgin/pidgin/status/16/busy.png) 0px 20px no-repeat; | 331 | background: url(/designs/icons/pidgin/pidgin/status/16/busy.png) 0px 20px no-repeat; |
| 315 | } | 332 | } |
| 316 | -.buddy-list .chat span.name { | 333 | +.buddies .chat span.name { |
| 317 | background: url(/designs/icons/pidgin/pidgin/status/16/available.png) 0px 20px no-repeat; | 334 | background: url(/designs/icons/pidgin/pidgin/status/16/available.png) 0px 20px no-repeat; |
| 318 | } | 335 | } |
| 319 | 336 | ||
| @@ -330,3 +347,14 @@ div.occupants > a.up { | @@ -330,3 +347,14 @@ div.occupants > a.up { | ||
| 330 | font-weight: bold; | 347 | font-weight: bold; |
| 331 | font-size: 14px; | 348 | font-size: 14px; |
| 332 | } | 349 | } |
| 350 | + | ||
| 351 | +#chat .header { | ||
| 352 | + border: 0; | ||
| 353 | + height: 50px; | ||
| 354 | + line-height: 50px; | ||
| 355 | + text-align: center; | ||
| 356 | + color: #FFF; | ||
| 357 | + font-size: 19px; | ||
| 358 | + background-image: linear-gradient(to left, #E3E3E3 25%, #BABDB6 100%, #FFFFFF 100%); | ||
| 359 | + xbackground-color: #BABDB6; | ||
| 360 | +} |