Commit 7212de73bb870b95913a6c727b5cd51ef3f8d343
Committed by
Rodrigo Souto
1 parent
ebede9d0
Exists in
master
and in
29 other branches
Small fixes for chat
Showing
4 changed files
with
178 additions
and
120 deletions
Show diff stats
app/helpers/chat_helper.rb
@@ -7,7 +7,7 @@ module ChatHelper | @@ -7,7 +7,7 @@ module ChatHelper | ||
7 | ['icon-menu-offline', _('Sign out of chat'), 'chat-disconnect'], | 7 | ['icon-menu-offline', _('Sign out of chat'), 'chat-disconnect'], |
8 | ] | 8 | ] |
9 | content_tag('span', | 9 | content_tag('span', |
10 | - link_to(content_tag('span', status) + ui_icon('ui-icon-triangle-1-s'), | 10 | + link_to(content_tag('span', user.name) + ui_icon('ui-icon-triangle-1-s'), |
11 | '#', | 11 | '#', |
12 | :onclick => 'toggleMenu(this); return false', | 12 | :onclick => 'toggleMenu(this); return false', |
13 | :class => icon_class + ' simplemenu-trigger' | 13 | :class => icon_class + ' simplemenu-trigger' |
app/views/shared/logged_in/xmpp_chat.html.erb
@@ -29,27 +29,33 @@ | @@ -29,27 +29,33 @@ | ||
29 | </script> | 29 | </script> |
30 | 30 | ||
31 | <div id='chat'> | 31 | <div id='chat'> |
32 | - <div id='title-bar'> | ||
33 | - <h1 class='title'><%= _("Online") % h(page_title) %> (<span id='friends-online'>0</span>)</h1> | ||
34 | - </div> | ||
35 | <div id='buddy-list'> | 32 | <div id='buddy-list'> |
36 | <div class='toolbar'> | 33 | <div class='toolbar'> |
37 | - <div id='user-status'><%= user_status_menu('icon-menu-offline', _('Offline')) %></div> | 34 | + <div id='user-status'> |
35 | + <span class="avatar"></span> | ||
36 | + <%= user_status_menu('icon-menu-offline', _('Offline')) %> | ||
37 | + </div> | ||
38 | <div class='dialog-error' style='display: none'></div> | 38 | <div class='dialog-error' style='display: none'></div> |
39 | </div> | 39 | </div> |
40 | + <div id='title-bar'> | ||
41 | + <h1 class='title'><%= _("Online") % h(page_title) %> (<span id='friends-online'>0</span>)</h1> | ||
42 | + </div> | ||
40 | <ul class='buddy-list'> | 43 | <ul class='buddy-list'> |
41 | </ul> | 44 | </ul> |
42 | </div> | 45 | </div> |
43 | - <div id='chat-window' class='tabs-bottom'> | ||
44 | - <div id='tabs'> | ||
45 | - <ul> | ||
46 | - </ul> | ||
47 | - </div> | 46 | + <div id='chat-window'> |
47 | + <div id='conversations'></div> | ||
48 | </div> | 48 | </div> |
49 | 49 | ||
50 | <div id="chat-templates"> | 50 | <div id="chat-templates"> |
51 | - <div class='conversation'> | ||
52 | - <a href="#" class="back"><%= _('Back') %></a> | 51 | + <div class='conversation' style="display: none;"> |
52 | + <div class="header"> | ||
53 | + <span class="chat-target"> | ||
54 | + <img class="avatar"> | ||
55 | + <span class="other-name"></span> | ||
56 | + </span> | ||
57 | + <a href="#" class="back"><%= _('Back') %></a> | ||
58 | + </div> | ||
53 | <div class='history'></div> | 59 | <div class='history'></div> |
54 | <div class='input-div'> | 60 | <div class='input-div'> |
55 | <div class='icon-chat'></div> | 61 | <div class='icon-chat'></div> |
@@ -60,8 +66,9 @@ | @@ -60,8 +66,9 @@ | ||
60 | <div class="buddy-item"> | 66 | <div class="buddy-item"> |
61 | <li class='%{presence_status}'> | 67 | <li class='%{presence_status}'> |
62 | <a id='%{jid_id}' class='icon-menu-%{presence_status}-11' href='#'> | 68 | <a id='%{jid_id}' class='icon-menu-%{presence_status}-11' href='#'> |
63 | - <img class="avatar" src="%{avatar_url}"/> | 69 | + %{avatar} |
64 | <span class="name">%{name}<span> | 70 | <span class="name">%{name}<span> |
71 | + <span class="unread-messages icon-chat"></span> | ||
65 | </a> | 72 | </a> |
66 | </li> | 73 | </li> |
67 | </div> | 74 | </div> |
@@ -69,7 +76,7 @@ | @@ -69,7 +76,7 @@ | ||
69 | <div class="message"> | 76 | <div class="message"> |
70 | <div data-who="%{who}" class="message %{who}"> | 77 | <div data-who="%{who}" class="message %{who}"> |
71 | <div class="author"> | 78 | <div class="author"> |
72 | - <img class="avatar" src="%{avatar_url}"/> | 79 | + %{avatar} |
73 | <h5 class="%{who}-name">%{name}</h5> | 80 | <h5 class="%{who}-name">%{name}</h5> |
74 | </div> | 81 | </div> |
75 | <div class="content"> | 82 | <div class="content"> |
public/javascripts/chat.js
@@ -25,7 +25,7 @@ jQuery(function($) { | @@ -25,7 +25,7 @@ jQuery(function($) { | ||
25 | muc_supported: false, | 25 | muc_supported: false, |
26 | presence_status: '', | 26 | presence_status: '', |
27 | update_presence_status_every: $update_presence_status_every, // time in seconds of how often update presence status to Noosfero DB | 27 | update_presence_status_every: $update_presence_status_every, // time in seconds of how often update presence status to Noosfero DB |
28 | - tab_prefix: 'conversation-', // used to compose jQuery UI tabs and anchors to select then | 28 | + conversation_prefix: 'conversation-', |
29 | jids: {}, | 29 | jids: {}, |
30 | rooms: {}, | 30 | rooms: {}, |
31 | 31 | ||
@@ -60,7 +60,7 @@ jQuery(function($) { | @@ -60,7 +60,7 @@ jQuery(function($) { | ||
60 | var html = template | 60 | var html = template |
61 | .replace('%{jid_id}', jid_id) | 61 | .replace('%{jid_id}', jid_id) |
62 | .replace(/%{presence_status}/g, presence) | 62 | .replace(/%{presence_status}/g, presence) |
63 | - .replace('%{avatar_url}', '/chat/avatar/' + identifier) | 63 | + .replace('%{avatar}', getAvatar(identifier)) |
64 | .replace('%{name}', name); | 64 | .replace('%{name}', name); |
65 | if ($(item).length > 0) { | 65 | if ($(item).length > 0) { |
66 | $(item).parent('li').replaceWith(html); | 66 | $(item).parent('li').replaceWith(html); |
@@ -76,14 +76,14 @@ jQuery(function($) { | @@ -76,14 +76,14 @@ jQuery(function($) { | ||
76 | presence = presence || ($(item).length > 0 ? $(item).parent('li').attr('class') : 'offline'); | 76 | presence = presence || ($(item).length > 0 ? $(item).parent('li').attr('class') : 'offline'); |
77 | log('adding or updating contact ' + jid + ' as ' + presence); | 77 | log('adding or updating contact ' + jid + ' as ' + presence); |
78 | Jabber.insert_or_update_user(list, item, jid, name, presence, $('#chat #chat-templates .buddy-item').clone().html()); | 78 | Jabber.insert_or_update_user(list, item, jid, name, presence, $('#chat #chat-templates .buddy-item').clone().html()); |
79 | - $("#chat-window .tab a[href='#"+ Jabber.tab_prefix + jid_id +"']") | 79 | + $("#chat-window .tab a[href='#"+ Jabber.conversation_prefix + jid_id +"']") |
80 | .removeClass() | 80 | .removeClass() |
81 | .addClass('icon-menu-' + presence + '-11'); | 81 | .addClass('icon-menu-' + presence + '-11'); |
82 | }, | 82 | }, |
83 | insert_or_update_occupant: function (jid, name, presence, room_jid) { | 83 | insert_or_update_occupant: function (jid, name, presence, room_jid) { |
84 | log('adding or updating occupant ' + jid + ' as ' + presence); | 84 | log('adding or updating occupant ' + jid + ' as ' + presence); |
85 | var jid_id = Jabber.jid_to_id(jid); | 85 | var jid_id = Jabber.jid_to_id(jid); |
86 | - var list = $('#' + Jabber.tab_prefix + Jabber.jid_to_id(room_jid) + ' .occupant-list ul'); | 86 | + var list = $('#' + Jabber.conversation_prefix + Jabber.jid_to_id(room_jid) + ' .occupant-list ul'); |
87 | var item = $(list).find('a[data-id='+ jid_id +']'); | 87 | var item = $(list).find('a[data-id='+ jid_id +']'); |
88 | Jabber.insert_or_update_user(list, item, jid, name, presence, Jabber.templates.occupant_item); | 88 | Jabber.insert_or_update_user(list, item, jid, name, presence, Jabber.templates.occupant_item); |
89 | if (Jabber.rooms[Jabber.jid_to_id(room_jid)] === undefined) { | 89 | if (Jabber.rooms[Jabber.jid_to_id(room_jid)] === undefined) { |
@@ -113,7 +113,7 @@ jQuery(function($) { | @@ -113,7 +113,7 @@ jQuery(function($) { | ||
113 | if (body) { | 113 | if (body) { |
114 | body = Jabber.render_body_message(body); | 114 | body = Jabber.render_body_message(body); |
115 | var jid_id = Jabber.jid_to_id(jid); | 115 | var jid_id = Jabber.jid_to_id(jid); |
116 | - var tab_id = '#' + Jabber.tab_prefix + jid_id; | 116 | + var tab_id = '#' + Jabber.conversation_prefix + jid_id; |
117 | if ($(tab_id).find('.message').length > 0 && $(tab_id).find('.message:last').attr('data-who') == who) { | 117 | if ($(tab_id).find('.message').length > 0 && $(tab_id).find('.message:last').attr('data-who') == who) { |
118 | $(tab_id).find('.history').find('.message:last .content').append('<p>' + body + '</p>'); | 118 | $(tab_id).find('.history').find('.message:last .content').append('<p>' + body + '</p>'); |
119 | } | 119 | } |
@@ -125,8 +125,8 @@ jQuery(function($) { | @@ -125,8 +125,8 @@ jQuery(function($) { | ||
125 | .replace(/%{who}/g, who) | 125 | .replace(/%{who}/g, who) |
126 | .replace('%{time}', time) | 126 | .replace('%{time}', time) |
127 | .replace('%{name}', name) | 127 | .replace('%{name}', name) |
128 | - .replace('%{avatar_url}', '/chat/avatar/' + identifier); | ||
129 | - $('#' + Jabber.tab_prefix + jid_id).find('.history').append(message_html); | 128 | + .replace('%{avatar}', getAvatar(identifier)); |
129 | + $('#' + Jabber.conversation_prefix + jid_id).find('.history').append(message_html); | ||
130 | } | 130 | } |
131 | $(tab_id).find('.history').scrollTo({top:'100%', left:'0%'}); | 131 | $(tab_id).find('.history').scrollTo({top:'100%', left:'0%'}); |
132 | if (who != "self") { | 132 | if (who != "self") { |
@@ -144,8 +144,8 @@ jQuery(function($) { | @@ -144,8 +144,8 @@ jQuery(function($) { | ||
144 | .removeClass('icon-menu-chat') | 144 | .removeClass('icon-menu-chat') |
145 | .removeClass('icon-menu-offline') | 145 | .removeClass('icon-menu-offline') |
146 | .removeClass('icon-menu-dnd') | 146 | .removeClass('icon-menu-dnd') |
147 | - .addClass('icon-menu-' + (presence || 'offline')) | ||
148 | - .find('span').html($presence_status_label[presence]); | 147 | + .addClass('icon-menu-' + (presence || 'offline')); |
148 | + $('#buddy-list #user-status span.avatar').replaceWith(getMyAvatar()); | ||
149 | $.get('/chat/update_presence_status', { status: {chat_status: presence, last_chat_status: presence} }); | 149 | $.get('/chat/update_presence_status', { status: {chat_status: presence, last_chat_status: presence} }); |
150 | }, | 150 | }, |
151 | 151 | ||
@@ -165,7 +165,7 @@ jQuery(function($) { | @@ -165,7 +165,7 @@ jQuery(function($) { | ||
165 | }, | 165 | }, |
166 | 166 | ||
167 | update_chat_title: function () { | 167 | update_chat_title: function () { |
168 | - var friends_online = $('#buddy-list .buddy-list li.chat').length; | 168 | + var friends_online = $('#buddy-list .buddy-list li:not(.offline)').length; |
169 | $('#friends-online').text(friends_online); | 169 | $('#friends-online').text(friends_online); |
170 | }, | 170 | }, |
171 | 171 | ||
@@ -439,7 +439,7 @@ jQuery(function($) { | @@ -439,7 +439,7 @@ jQuery(function($) { | ||
439 | }, | 439 | }, |
440 | 440 | ||
441 | show_notice: function(jid_id, msg) { | 441 | show_notice: function(jid_id, msg) { |
442 | - var tab_id = '#' + Jabber.tab_prefix + jid_id; | 442 | + var tab_id = '#' + Jabber.conversation_prefix + jid_id; |
443 | $(tab_id).find('.history').append("<span class='notice'>" + msg + "</span>"); | 443 | $(tab_id).find('.history').append("<span class='notice'>" + msg + "</span>"); |
444 | } | 444 | } |
445 | }; | 445 | }; |
@@ -470,6 +470,7 @@ jQuery(function($) { | @@ -470,6 +470,7 @@ jQuery(function($) { | ||
470 | Jabber.connect(); | 470 | Jabber.connect(); |
471 | }); | 471 | }); |
472 | 472 | ||
473 | + // FIXME | ||
473 | // detect when click in chat with a community or person in main window of Noosfero environment | 474 | // detect when click in chat with a community or person in main window of Noosfero environment |
474 | $(window).bind('hashchange', function() { | 475 | $(window).bind('hashchange', function() { |
475 | if (window.location.hash) { | 476 | if (window.location.hash) { |
@@ -511,6 +512,10 @@ jQuery(function($) { | @@ -511,6 +512,10 @@ jQuery(function($) { | ||
511 | var jid_id = $(this).attr('id'); | 512 | var jid_id = $(this).attr('id'); |
512 | var name = Jabber.name_of(jid_id); | 513 | var name = Jabber.name_of(jid_id); |
513 | create_conversation_tab(name, jid_id); | 514 | create_conversation_tab(name, jid_id); |
515 | + | ||
516 | + var conversation_id = Jabber.conversation_prefix + jid_id; | ||
517 | + $('#' + conversation_id).find('.conversation').show(); | ||
518 | + count_unread_messages(jid_id, true); | ||
514 | }); | 519 | }); |
515 | 520 | ||
516 | // put name into text area when click in one occupant | 521 | // put name into text area when click in one occupant |
@@ -526,22 +531,22 @@ jQuery(function($) { | @@ -526,22 +531,22 @@ jQuery(function($) { | ||
526 | }); | 531 | }); |
527 | 532 | ||
528 | $('.conversation .back').live('click', function() { | 533 | $('.conversation .back').live('click', function() { |
529 | - $(this).parents('.conversation').hide(); | 534 | + $('#chat #chat-window .conversation').hide(); |
530 | }); | 535 | }); |
531 | 536 | ||
532 | function create_conversation_tab(title, jid_id) { | 537 | function create_conversation_tab(title, jid_id) { |
533 | - var conversation_id = Jabber.tab_prefix + jid_id; | 538 | + var conversation_id = Jabber.conversation_prefix + jid_id; |
534 | if (! $('#' + conversation_id).length > 0) { | 539 | if (! $('#' + conversation_id).length > 0) { |
540 | + var jid = Jabber.jid_of(jid_id); | ||
541 | + var identifier = getIdentifier(jid); | ||
542 | + | ||
535 | // opening chat with selected online friend | 543 | // opening chat with selected online friend |
536 | - var panel = $('<div id="'+conversation_id +'"></div>').appendTo($tabs); | 544 | + var panel = $('<div id="'+conversation_id +'"></div>').appendTo($conversations); |
537 | panel.append($('#chat #chat-templates .conversation').clone()); | 545 | panel.append($('#chat #chat-templates .conversation').clone()); |
546 | + panel.find('.chat-target .avatar').replaceWith(getAvatar(identifier)); | ||
547 | + panel.find('.chat-target .other-name').html(title); | ||
538 | $('#chat .history').perfectScrollbar(); | 548 | $('#chat .history').perfectScrollbar(); |
539 | 549 | ||
540 | - //FIXME | ||
541 | - //var notice = $starting_chat_notice.replace('%{name}', $(ui.tab).html()); | ||
542 | - //Jabber.show_notice(jid_id, notice); | ||
543 | - | ||
544 | - // define textarea name as '<TAB_ID>' | ||
545 | panel.find('textarea').attr('name', panel.id); | 550 | panel.find('textarea').attr('name', panel.id); |
546 | 551 | ||
547 | if (Jabber.is_a_room(jid_id)) { | 552 | if (Jabber.is_a_room(jid_id)) { |
@@ -549,32 +554,26 @@ jQuery(function($) { | @@ -549,32 +554,26 @@ jQuery(function($) { | ||
549 | panel.find('.history').addClass('room'); | 554 | panel.find('.history').addClass('room'); |
550 | } | 555 | } |
551 | 556 | ||
552 | - $tabs.find('.ui-tabs-nav').append( "<li><a href='"+('#' + Jabber.tab_prefix + jid_id)+"'><span class=\"unread-messages\" style=\"display:none\"></span>"+title+"</a></li>" ); | ||
553 | - | ||
554 | - var jid = Jabber.jid_of(jid_id); | ||
555 | - $("a[href='#" + Jabber.tab_prefix + jid_id + "']").addClass($('#' + jid_id).attr('class') || 'icon-chat'); | ||
556 | - $('#' + Jabber.tab_prefix + jid_id).find('textarea').attr('data-to', jid); | ||
557 | - } else { | ||
558 | - $('#' + conversation_id).find('.conversation').show(); | 557 | + $('#' + Jabber.conversation_prefix + jid_id).find('textarea').attr('data-to', jid); |
559 | } | 558 | } |
560 | } | 559 | } |
561 | 560 | ||
562 | function count_unread_messages(jid_id, hide) { | 561 | function count_unread_messages(jid_id, hide) { |
562 | + var unread = $('.buddy-list #'+jid_id+ ' .unread-messages'); | ||
563 | if (hide) { | 563 | if (hide) { |
564 | - $('a[href=#' + Jabber.tab_prefix + jid_id + ']').find('.unread-messages').hide(); | 564 | + unread.hide(); |
565 | Jabber.unread_messages_of(jid_id, 0); | 565 | Jabber.unread_messages_of(jid_id, 0); |
566 | - $('a[href=#' + Jabber.tab_prefix + jid_id + ']').find('.unread-messages').text(''); | 566 | + unread.text(''); |
567 | } | 567 | } |
568 | else { | 568 | else { |
569 | - $('a[href=#' + Jabber.tab_prefix + jid_id + ']').find('.unread-messages').show(); | 569 | + unread.show(); |
570 | var unread_messages = Jabber.unread_messages_of(jid_id) || 0; | 570 | var unread_messages = Jabber.unread_messages_of(jid_id) || 0; |
571 | Jabber.unread_messages_of(jid_id, ++unread_messages); | 571 | Jabber.unread_messages_of(jid_id, ++unread_messages); |
572 | - $('a[href=#' + Jabber.tab_prefix + jid_id + ']').find('.unread-messages').text(unread_messages); | 572 | + unread.text(unread_messages); |
573 | } | 573 | } |
574 | } | 574 | } |
575 | 575 | ||
576 | - // creating tabs | ||
577 | - var $tabs = $('#chat-window #tabs'); | 576 | + var $conversations = $('#chat-window #conversations'); |
578 | 577 | ||
579 | function log(msg) { | 578 | function log(msg) { |
580 | if(Jabber.debug && window.console && window.console.log) { | 579 | if(Jabber.debug && window.console && window.console.log) { |
@@ -590,6 +589,22 @@ jQuery(function($) { | @@ -590,6 +589,22 @@ jQuery(function($) { | ||
590 | .replace(/>/g, '>'); | 589 | .replace(/>/g, '>'); |
591 | } | 590 | } |
592 | 591 | ||
592 | + function getCurrentIdentifier() { | ||
593 | + return getIdentifier(Jabber.connection.jid); | ||
594 | + } | ||
595 | + | ||
596 | + function getIdentifier(jid) { | ||
597 | + return Strophe.getNodeFromJid(jid); | ||
598 | + } | ||
599 | + | ||
600 | + function getMyAvatar() { | ||
601 | + return getAvatar(getCurrentIdentifier()); | ||
602 | + } | ||
603 | + | ||
604 | + function getAvatar(identifier) { | ||
605 | + return '<img class="avatar" src="/chat/avatar/' + identifier + '">'; | ||
606 | + } | ||
607 | + | ||
593 | }); | 608 | }); |
594 | 609 | ||
595 | function checkTime(i) { | 610 | function checkTime(i) { |
public/stylesheets/chat.css
1 | #chat { | 1 | #chat { |
2 | width: 250px; | 2 | width: 250px; |
3 | + height: 100%; | ||
3 | display: none; | 4 | display: none; |
5 | + position: fixed; | ||
6 | + right: 0; | ||
7 | + top: 0; | ||
8 | + z-index: 900; | ||
4 | } | 9 | } |
5 | 10 | ||
6 | #buddy-list { | 11 | #buddy-list { |
7 | background-color: #303030; | 12 | background-color: #303030; |
8 | - position: absolute; | ||
9 | - bottom: 0; | ||
10 | - top: 25px; | ||
11 | - -webkit-top: 5px; | ||
12 | width: 250px; | 13 | width: 250px; |
14 | + height: 100%; | ||
13 | overflow-y: auto; | 15 | overflow-y: auto; |
14 | - right: 0; | ||
15 | } | 16 | } |
16 | #buddy-list .buddy-list { | 17 | #buddy-list .buddy-list { |
17 | list-style-type: none; | 18 | list-style-type: none; |
@@ -22,6 +23,9 @@ | @@ -22,6 +23,9 @@ | ||
22 | line-height: 30px; | 23 | line-height: 30px; |
23 | border-bottom: 1px solid #383838; | 24 | border-bottom: 1px solid #383838; |
24 | } | 25 | } |
26 | +#buddy-list .buddy-list li a:hover, .occupant-list li a:hover { | ||
27 | + background: rgb(58, 58, 58); | ||
28 | +} | ||
25 | #buddy-list .buddy-list li a, .occupant-list li a { | 29 | #buddy-list .buddy-list li a, .occupant-list li a { |
26 | background: none; | 30 | background: none; |
27 | display: block; | 31 | display: block; |
@@ -32,20 +36,21 @@ | @@ -32,20 +36,21 @@ | ||
32 | } | 36 | } |
33 | #buddy-list .buddy-list li a .name, .occupant-list li a .name { | 37 | #buddy-list .buddy-list li a .name, .occupant-list li a .name { |
34 | vertical-align: top; | 38 | vertical-align: top; |
39 | + margin-left: 5px; | ||
35 | } | 40 | } |
36 | -#buddy-list .buddy-list li a img, .occupant-list li a img { | ||
37 | - max-height: 32px; | 41 | +#buddy-list .buddy-list li a img, .occupant-list li a img, #chat .avatar { |
42 | + height: 32px; | ||
38 | max-width: 32px; | 43 | max-width: 32px; |
44 | + border-radius: 15%; | ||
39 | } | 45 | } |
40 | #buddy-list .buddy-list li.offline, .occupant-list li.offline { | 46 | #buddy-list .buddy-list li.offline, .occupant-list li.offline { |
41 | display: none; | 47 | display: none; |
42 | } | 48 | } |
43 | -#buddy-list .toolbar { | ||
44 | - border-left: 0; | ||
45 | - border-right: 0; | ||
46 | - background-position: 90%; | ||
47 | - position: relative; | ||
48 | - height: 20px; | 49 | +#chat #buddy-list .toolbar { |
50 | + border: 0; | ||
51 | + height: 40px; | ||
52 | + background-color: rgb(39, 39, 39); | ||
53 | + border-bottom: 1px solid #383838; | ||
49 | } | 54 | } |
50 | #buddy-list .toolbar .dialog-error { | 55 | #buddy-list .toolbar .dialog-error { |
51 | position: absolute; | 56 | position: absolute; |
@@ -70,8 +75,8 @@ | @@ -70,8 +75,8 @@ | ||
70 | .conversation .input-div { | 75 | .conversation .input-div { |
71 | position: absolute; | 76 | position: absolute; |
72 | right: 0; | 77 | right: 0; |
73 | - bottom: 40px; | ||
74 | - padding: 0 20px 10px 15px; | 78 | + bottom: 0; |
79 | + padding: 0 20px 15px 15px; | ||
75 | } | 80 | } |
76 | .msie7 .conversation .input-div { | 81 | .msie7 .conversation .input-div { |
77 | padding-left: 5px; | 82 | padding-left: 5px; |
@@ -95,64 +100,26 @@ | @@ -95,64 +100,26 @@ | ||
95 | .conversation .history { | 100 | .conversation .history { |
96 | position: absolute; | 101 | position: absolute; |
97 | right: 0; | 102 | right: 0; |
98 | - top: 25px; | ||
99 | - bottom: 125px; | 103 | + top: 41px; |
104 | + bottom: 100px; | ||
100 | overflow: hidden; | 105 | overflow: hidden; |
101 | - padding-top: 5px; | ||
102 | - width: 250px; | 106 | + width: 100%; |
103 | background-color: #303030; | 107 | background-color: #303030; |
104 | } | 108 | } |
105 | .msie7 #chat-window .conversation .history { | 109 | .msie7 #chat-window .conversation .history { |
106 | overflow-x: hidden; | 110 | overflow-x: hidden; |
107 | } | 111 | } |
108 | #chat .unread-messages { | 112 | #chat .unread-messages { |
109 | - background: red; | ||
110 | - position: absolute; | ||
111 | - right: 22px; | ||
112 | - margin: 2px 0; | ||
113 | - padding: 0 2px; | ||
114 | - color: white; | ||
115 | - display: block; | ||
116 | - line-height: 1em; | ||
117 | -} | ||
118 | -#chat .tabs-bottom .ui-tabs-nav { | ||
119 | - position: absolute; | ||
120 | - left: 0; | ||
121 | - bottom: 0; | ||
122 | - right:0; | ||
123 | - padding: 0 5px 10px 5px; | ||
124 | - border: 0; | ||
125 | - background: #eee; | ||
126 | -} | ||
127 | -#chat .tabs-bottom .ui-tabs-nav li { | ||
128 | - top: 0; | ||
129 | - margin-top: 0; | ||
130 | - margin-bottom: 0; | ||
131 | - border: 1px solid transparent; | ||
132 | - border-top: none; | ||
133 | -} | ||
134 | -#chat .tabs-bottom .ui-tabs-nav li a { | ||
135 | - padding: 0.3em 0.5em 0.3em 2.0em; | ||
136 | - background-position: 0.5em 50%; | ||
137 | -} | ||
138 | -#chat .tabs-bottom .ui-tabs-nav li:hover, #chat .tabs-bottom .ui-tabs-nav .ui-state-active { | ||
139 | - border: 1px solid #AAAAAA !important; | ||
140 | - border-top: 0 !important; | ||
141 | -} | ||
142 | -#chat .tabs-bottom li .ui-icon-close { | ||
143 | - margin: 0.4em 0.5em 0 0 !important; | ||
144 | -} | ||
145 | -#chat .ui-tabs .ui-tabs-panel { | ||
146 | - border: none; | 113 | + float: right; |
114 | + margin-right: 25px; | ||
115 | + padding-left: 22px; | ||
116 | + background-position: 0; | ||
147 | } | 117 | } |
148 | #chat-window .history .message { | 118 | #chat-window .history .message { |
149 | - padding: 0 10px; | ||
150 | - /*position: relative;*/ | 119 | + padding: 8px 8px 8px 6px; |
151 | } | 120 | } |
152 | #chat-window .history .message .time { | 121 | #chat-window .history .message .time { |
153 | - position: absolute; | ||
154 | - right: 10px; | ||
155 | - top: 5px; | 122 | + float: right; |
156 | color: gray; | 123 | color: gray; |
157 | font-style: italic; | 124 | font-style: italic; |
158 | font-size: 11px; | 125 | font-size: 11px; |
@@ -166,14 +133,22 @@ | @@ -166,14 +133,22 @@ | ||
166 | } | 133 | } |
167 | 134 | ||
168 | #chat-window .history .message .content { | 135 | #chat-window .history .message .content { |
169 | - background-color: #383838; | 136 | + background-color: #494949; |
170 | color: rgb(223, 223, 223); | 137 | color: rgb(223, 223, 223); |
171 | padding: 5px; | 138 | padding: 5px; |
139 | + border-radius: 3%; | ||
140 | + display: inline-block; | ||
141 | + width: 74%; | ||
142 | +} | ||
143 | +#chat-window .history .message.self .content { | ||
144 | + background-color: #383838; | ||
172 | } | 145 | } |
173 | 146 | ||
174 | #chat-window .history .message .avatar { | 147 | #chat-window .history .message .avatar { |
175 | max-height: 32px; | 148 | max-height: 32px; |
176 | max-width: 32px; | 149 | max-width: 32px; |
150 | + margin: auto; | ||
151 | + display: block; | ||
177 | } | 152 | } |
178 | #chat-window .history .notice { | 153 | #chat-window .history .notice { |
179 | font-size: 10px; | 154 | font-size: 10px; |
@@ -206,32 +181,93 @@ | @@ -206,32 +181,93 @@ | ||
206 | margin-left: 0; | 181 | margin-left: 0; |
207 | } | 182 | } |
208 | 183 | ||
209 | -#title-bar { | ||
210 | - top: 0; | ||
211 | - height: 25px; | ||
212 | - position: absolute; | ||
213 | - background: #ccc url(/images/icons-app/chat-22x22.png) 2px 2px no-repeat; | 184 | +#chat #title-bar { |
185 | + height: 34px; | ||
186 | + background: #ccc url(/images/icons-app/chat-22x22.png) 3px 5px no-repeat; | ||
214 | width: 250px; | 187 | width: 250px; |
215 | - right: 0; | 188 | + background-color: #303030; |
189 | + border-bottom: 1px solid #383838; | ||
216 | } | 190 | } |
217 | #title-bar .title { | 191 | #title-bar .title { |
218 | margin: 0; | 192 | margin: 0; |
219 | font-size: 12px; | 193 | font-size: 12px; |
220 | - margin: 4px 0; | ||
221 | padding-left: 30px; | 194 | padding-left: 30px; |
195 | + line-height: 32px; | ||
196 | + color: rgb(82, 212, 253); | ||
222 | } | 197 | } |
223 | #chat #chat-templates { | 198 | #chat #chat-templates { |
224 | display: none; | 199 | display: none; |
225 | } | 200 | } |
226 | -.conversation .back { | 201 | +.conversation .header { |
227 | position: absolute; | 202 | position: absolute; |
228 | - top: 5px; | ||
229 | - right: 8px; | 203 | + top: 0; |
204 | + right: 0; | ||
205 | + width: 100%; | ||
206 | + background-color: rgb(39, 39, 39); | ||
207 | +} | ||
208 | +.conversation .header .chat-target { | ||
209 | + padding: 6px; | ||
210 | + display: inline-block; | ||
211 | +} | ||
212 | +.conversation .header .back { | ||
213 | + float: right; | ||
214 | + margin: 6px; | ||
215 | + padding: 7px; | ||
216 | + background-color: rgb(98, 98, 98); | ||
217 | + border-radius: 12%; | ||
218 | + text-decoration: none; | ||
219 | + font-weight: bold; | ||
230 | color: white; | 220 | color: white; |
231 | } | 221 | } |
232 | -#chat #chat-window .history .other-name { | 222 | +#chat #chat-window .other-name { |
233 | color: #6C9EDD; | 223 | color: #6C9EDD; |
234 | } | 224 | } |
235 | #chat #chat-window .history .self-name { | 225 | #chat #chat-window .history .self-name { |
236 | color: #6C87DD; | 226 | color: #6C87DD; |
237 | } | 227 | } |
228 | +#chat #chat-window .history h5 { | ||
229 | + text-align: center; | ||
230 | + word-wrap: break-word; | ||
231 | +} | ||
232 | +.webkit .simplemenu-submenu.opened { | ||
233 | + top: 18px; | ||
234 | +} | ||
235 | +#chat .simplemenu-submenu { | ||
236 | + background: #585858; | ||
237 | + border: 1px solid #6B6B6B; | ||
238 | +} | ||
239 | +.user-status a { | ||
240 | + color: rgb(224, 224, 224); | ||
241 | +} | ||
242 | +#user-status .avatar { | ||
243 | + position: relative; | ||
244 | + left: 16px; | ||
245 | + top: 2px; | ||
246 | +} | ||
247 | +.user-status span { | ||
248 | + position: relative; | ||
249 | +} | ||
250 | +.user-status span, .user-status .ui-icon { | ||
251 | + top: -3px; | ||
252 | +} | ||
253 | + | ||
254 | +.buddy-list span.name { | ||
255 | + padding: 20px; | ||
256 | + position: relative; | ||
257 | + left: -20px; | ||
258 | +} | ||
259 | +.buddy-list .dnd span.name { | ||
260 | + background: url(/designs/icons/pidgin/pidgin/status/16/busy.png) 0px 30px no-repeat; | ||
261 | +} | ||
262 | +.buddy-list .chat span.name { | ||
263 | + background: url(/designs/icons/pidgin/pidgin/status/16/available.png) 0px 30px no-repeat; | ||
264 | +} | ||
265 | + | ||
266 | +.conversation .author { | ||
267 | + width: 20%; | ||
268 | + display: inline-block; | ||
269 | + vertical-align: top; | ||
270 | +} | ||
271 | +.conversation .self .author { | ||
272 | + float: right; | ||
273 | +} |