Commit 0b674b6dd0c379940523804a8b874f774e3f046a
Committed by
Rodrigo Souto
1 parent
401a2773
Exists in
master
and in
29 other branches
New chat layout
Conflicts: app/helpers/layout_helper.rb
Showing
11 changed files
with
348 additions
and
307 deletions
Show diff stats
app/controllers/public/chat_controller.rb
... | ... | @@ -29,12 +29,12 @@ class ChatController < PublicController |
29 | 29 | end |
30 | 30 | |
31 | 31 | def index |
32 | - presence = current_user.last_chat_status | |
33 | - if presence.blank? or presence == 'chat' | |
34 | - render :action => 'auto_connect_online' | |
35 | - else | |
36 | - render :action => 'auto_connect_busy' | |
37 | - end | |
32 | + #presence = current_user.last_chat_status | |
33 | + #if presence.blank? or presence == 'chat' | |
34 | + # render :action => 'auto_connect_online' | |
35 | + #else | |
36 | + # render :action => 'auto_connect_busy' | |
37 | + #end | |
38 | 38 | end |
39 | 39 | |
40 | 40 | def update_presence_status | ... | ... |
app/helpers/layout_helper.rb
... | ... | @@ -28,6 +28,7 @@ module LayoutHelper |
28 | 28 | 'lightbox', |
29 | 29 | 'colorbox', |
30 | 30 | 'inputosaurus', |
31 | + 'chat', | |
31 | 32 | pngfix_stylesheet_path, |
32 | 33 | ] + tokeninput_stylesheets |
33 | 34 | plugins_stylesheets = @plugins.select(&:stylesheet?).map { |plugin| plugin.class.public_path('style.css') } | ... | ... |
... | ... | @@ -0,0 +1,70 @@ |
1 | + <%= javascript_include_tag 'strophejs-1.0.1/strophe', 'jquery.emoticon', '../designs/icons/pidgin/emoticons.js', 'ba-linkify', 'jquery.ba-hashchange', 'jquery.sound', 'chat', 'perfect-scrollbar.min.js', 'perfect-scrollbar.with-mousewheel.min.js', :cache => 'cache/chat' %> | |
2 | + <%= stylesheet_link_tag 'perfect-scrollbar.min.css' %> | |
3 | + | |
4 | + <% extend ChatHelper %> | |
5 | + | |
6 | + <script type='text/javascript'> | |
7 | + var $presence_status_label = { | |
8 | + chat: '<%= _('Online') %>', | |
9 | + dnd: '<%= _('Busy') %>', | |
10 | + '': '<%= _('Offline') %>' | |
11 | + }; | |
12 | + var $own_name = '<%= user.name %>'; | |
13 | + var $starting_chat_notice = '<%= _("starting chat with %{name}") %>'; | |
14 | + var $muc_domain = '<%= "conference.#{environment.default_hostname}" %>'; | |
15 | + var $user_unavailable_error = '<%= _("<strong>ooops!</strong> The message could not be sent because the user is not online") %>'; | |
16 | + var $update_presence_status_every = <%= User.expires_chat_status_every.minutes %>; | |
17 | + </script> | |
18 | + | |
19 | + <div id='chat'> | |
20 | + <div id='title-bar'> | |
21 | + <h1 class='title'><%= _("Online") % h(page_title) %> (<span id='friends-online'>0</span>)</h1> | |
22 | + </div> | |
23 | + <div id='buddy-list'> | |
24 | + <div class='toolbar'> | |
25 | + <div id='user-status'><%= user_status_menu('icon-menu-offline', _('Offline')) %></div> | |
26 | + <div class='dialog-error' style='display: none'></div> | |
27 | + </div> | |
28 | + <ul class='buddy-list'> | |
29 | + </ul> | |
30 | + </div> | |
31 | + <div id='chat-window' class='tabs-bottom'> | |
32 | + <div id='tabs'> | |
33 | + <ul> | |
34 | + </ul> | |
35 | + </div> | |
36 | + </div> | |
37 | + | |
38 | + <div id="chat-templates"> | |
39 | + <div class='conversation'> | |
40 | + <a href="#" class="back"><%= _('Back') %></a> | |
41 | + <div class='history'></div> | |
42 | + <div class='input-div'> | |
43 | + <div class='icon-chat'></div> | |
44 | + <textarea class='input'></textarea> | |
45 | + </div> | |
46 | + </div> | |
47 | + | |
48 | + <div class="buddy-item"> | |
49 | + <li class='%{presence_status}'> | |
50 | + <a id='%{jid_id}' class='icon-menu-%{presence_status}-11' href='#'> | |
51 | + <img class="avatar" src="%{avatar_url}"/> | |
52 | + <span class="name">%{name}<span> | |
53 | + </a> | |
54 | + </li> | |
55 | + </div> | |
56 | + | |
57 | + <div class="message"> | |
58 | + <div data-who="%{who}" class="message %{who}"> | |
59 | + <div class="author"> | |
60 | + <img class="avatar" src="%{avatar_url}"/> | |
61 | + <h5 class="%{who}-name">%{name}</h5> | |
62 | + </div> | |
63 | + <div class="content"> | |
64 | + <span class="time">%{time}</span> | |
65 | + <p>%{message}</p> | |
66 | + </div> | |
67 | + </div> | |
68 | + </div> | |
69 | + </div> | |
70 | + </div> | ... | ... |
app/views/layouts/application-ng.html.erb
public/javascripts/application.js
... | ... | @@ -599,9 +599,7 @@ function display_notice(message) { |
599 | 599 | } |
600 | 600 | |
601 | 601 | function open_chat_window(self_link, anchor) { |
602 | - anchor = anchor || '#'; | |
603 | - var noosfero_chat_window = window.open('/chat' + anchor,'noosfero_chat','width=900,height=500'); | |
604 | - noosfero_chat_window.focus(); | |
602 | + jQuery('#chat').toggle('fast'); | |
605 | 603 | return false; |
606 | 604 | } |
607 | 605 | ... | ... |
public/javascripts/chat.js
... | ... | @@ -20,7 +20,7 @@ jQuery(function($) { |
20 | 20 | var Jabber = { |
21 | 21 | debug: true, |
22 | 22 | connection: null, |
23 | - bosh_service: '/http-bind', | |
23 | + bosh_service: 'http://10.32.113.131/http-bind', | |
24 | 24 | muc_domain: $muc_domain, |
25 | 25 | muc_supported: false, |
26 | 26 | presence_status: '', |
... | ... | @@ -30,10 +30,8 @@ jQuery(function($) { |
30 | 30 | rooms: {}, |
31 | 31 | |
32 | 32 | templates: { |
33 | - buddy_item: "<li class='%{presence_status}'><a id='%{jid_id}' class='icon-menu-%{presence_status}-11' href='#'>%{name}</a></li>", | |
34 | 33 | occupant_item: "<li class='%{presence_status}'><a data-id='%{jid_id}' class='icon-menu-%{presence_status}-11' href='#'>%{name}</a></li>", |
35 | 34 | room_item: "<li class='room'><a id='%{jid_id}' class='icon-chat' href='#'>%{name}</a></li>", |
36 | - message: $balloon_template, | |
37 | 35 | error: "<span class='error'>%{text}</span>", |
38 | 36 | occupant_list: "<div class='occupant-list'><ul class='occupant-list'></ul></div>" |
39 | 37 | }, |
... | ... | @@ -58,9 +56,11 @@ jQuery(function($) { |
58 | 56 | |
59 | 57 | insert_or_update_user: function (list, item, jid, name, presence, template) { |
60 | 58 | var jid_id = Jabber.jid_to_id(jid); |
59 | + var identifier = Strophe.getNodeFromJid(jid); | |
61 | 60 | var html = template |
62 | 61 | .replace('%{jid_id}', jid_id) |
63 | 62 | .replace(/%{presence_status}/g, presence) |
63 | + .replace('%{avatar_url}', '/chat/avatar/' + identifier) | |
64 | 64 | .replace('%{name}', name); |
65 | 65 | if ($(item).length > 0) { |
66 | 66 | $(item).parent('li').replaceWith(html); |
... | ... | @@ -75,7 +75,7 @@ jQuery(function($) { |
75 | 75 | var item = $('#' + jid_id); |
76 | 76 | presence = presence || ($(item).length > 0 ? $(item).parent('li').attr('class') : 'offline'); |
77 | 77 | log('adding or updating contact ' + jid + ' as ' + presence); |
78 | - Jabber.insert_or_update_user(list, item, jid, name, presence, Jabber.templates.buddy_item); | |
78 | + Jabber.insert_or_update_user(list, item, jid, name, presence, $('#chat #chat-templates .buddy-item').clone().html()); | |
79 | 79 | $("#chat-window .tab a[href='#"+ Jabber.tab_prefix + jid_id +"']") |
80 | 80 | .removeClass() |
81 | 81 | .addClass('icon-menu-' + presence + '-11'); |
... | ... | @@ -115,12 +115,12 @@ jQuery(function($) { |
115 | 115 | var jid_id = Jabber.jid_to_id(jid); |
116 | 116 | var tab_id = '#' + Jabber.tab_prefix + jid_id; |
117 | 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 .comment-balloon-content').append('<p>' + body + '</p>'); | |
118 | + $(tab_id).find('.history').find('.message:last .content').append('<p>' + body + '</p>'); | |
119 | 119 | } |
120 | 120 | else { |
121 | 121 | var time = new Date(); |
122 | 122 | time = time.getHours() + ':' + checkTime(time.getMinutes()); |
123 | - var message_html = Jabber.templates.message | |
123 | + var message_html = $('#chat #chat-templates .message').clone().html() | |
124 | 124 | .replace('%{message}', body) |
125 | 125 | .replace(/%{who}/g, who) |
126 | 126 | .replace('%{time}', time) |
... | ... | @@ -189,14 +189,14 @@ jQuery(function($) { |
189 | 189 | Jabber.update_chat_title(); |
190 | 190 | $('#chat-window .tab a').removeClass().addClass('icon-menu-offline-11'); |
191 | 191 | $('#buddy-list .toolbar').removeClass('small-loading-dark'); |
192 | - $('textarea').attr('disabled', 'disabled'); | |
192 | + $('textarea').prop('disabled', 'disabled'); | |
193 | 193 | break; |
194 | 194 | case Strophe.Status.CONNECTED: |
195 | 195 | log('connected'); |
196 | 196 | case Strophe.Status.ATTACHED: |
197 | 197 | log('XMPP/BOSH session attached'); |
198 | 198 | $('#buddy-list .toolbar').removeClass('small-loading-dark'); |
199 | - $('textarea').attr('disabled', ''); | |
199 | + $('textarea').prop('disabled', ''); | |
200 | 200 | break; |
201 | 201 | } |
202 | 202 | }, |
... | ... | @@ -526,11 +526,17 @@ jQuery(function($) { |
526 | 526 | $('.conversation textarea:visible').focus(); |
527 | 527 | }); |
528 | 528 | |
529 | + $('.conversation .back').live('click', function() { | |
530 | + $(this).parents('.conversation').hide(); | |
531 | + }); | |
532 | + | |
529 | 533 | function create_conversation_tab(title, jid_id) { |
530 | - if (! $('#' + Jabber.tab_prefix + jid_id).length > 0) { | |
534 | + var conversation_id = Jabber.tab_prefix + jid_id; | |
535 | + if (! $('#' + conversation_id).length > 0) { | |
531 | 536 | // opening chat with selected online friend |
532 | - var panel = $('<div id="'+Jabber.tab_prefix + jid_id+'"></div>').appendTo($tabs); | |
533 | - panel.append("<div class='conversation'><div class='history'></div><div class='input-div'><div class='icon-chat'></div><textarea class='input'></textarea></div></div>"); | |
537 | + var panel = $('<div id="'+conversation_id +'"></div>').appendTo($tabs); | |
538 | + panel.append($('#chat #chat-templates .conversation').clone()); | |
539 | + $('#chat .history').perfectScrollbar(); | |
534 | 540 | |
535 | 541 | //FIXME |
536 | 542 | //var notice = $starting_chat_notice.replace('%{name}', $(ui.tab).html()); |
... | ... | @@ -545,11 +551,12 @@ jQuery(function($) { |
545 | 551 | } |
546 | 552 | |
547 | 553 | $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>" ); |
548 | - $tabs.tabs('refresh'); | |
549 | 554 | |
550 | 555 | var jid = Jabber.jid_of(jid_id); |
551 | 556 | $("a[href='#" + Jabber.tab_prefix + jid_id + "']").addClass($('#' + jid_id).attr('class') || 'icon-chat'); |
552 | 557 | $('#' + Jabber.tab_prefix + jid_id).find('textarea').attr('data-to', jid); |
558 | + } else { | |
559 | + $('#' + conversation_id).find('.conversation').show(); | |
553 | 560 | } |
554 | 561 | } |
555 | 562 | |
... | ... | @@ -568,78 +575,7 @@ jQuery(function($) { |
568 | 575 | } |
569 | 576 | |
570 | 577 | // creating tabs |
571 | - var $tabs = $('#chat-window #tabs').tabs({ | |
572 | - tabTemplate: '<li class="tab"><a href="#{href}"><span class="unread-messages" style="display:none"></span>#{label}</a></li>', | |
573 | - panelTemplate: "<div class='conversation'><div class='history'></div><div class='input-div'><div class='icon-chat'></div><textarea class='input'></textarea></div></div>", | |
574 | - add: function(event, ui) { //FIXME DEPRECATED | |
575 | - var jid_id = ui.panel.id.replace(Jabber.tab_prefix, ''); | |
576 | - | |
577 | - var notice = $starting_chat_notice.replace('%{name}', $(ui.tab).html()); | |
578 | - Jabber.show_notice(jid_id, notice); | |
579 | - | |
580 | - // define textarea name as '<TAB_ID>' | |
581 | - $(ui.panel).find('textarea').attr('name', ui.panel.id); | |
582 | - | |
583 | - if (Jabber.is_a_room(jid_id)) { | |
584 | - $(ui.panel).append(Jabber.templates.occupant_list); | |
585 | - $(ui.panel).find('.history').addClass('room'); | |
586 | - } | |
587 | - }, | |
588 | - show: function(event, ui) { | |
589 | - $(ui.panel).find('.history').scrollTo({top:'100%', left:'0%'}); | |
590 | - $(ui.panel).find('textarea').focus(); | |
591 | - var jid_id = ui.panel.id.replace(Jabber.tab_prefix, ''); | |
592 | - count_unread_messages(jid_id, true); | |
593 | - }, | |
594 | - remove: function(event, ui) { //FIXME DEPRECATED | |
595 | - var jid_id = ui.panel.id.replace(Jabber.tab_prefix, ''); | |
596 | - if (Jabber.is_a_room(jid_id)) { | |
597 | - // exiting from a chat room | |
598 | - var jid = Jabber.jid_of(jid_id); | |
599 | - log('leaving chatroom ' + jid); | |
600 | - Jabber.leave_room(jid); | |
601 | - } | |
602 | - else { | |
603 | - // TODO notify to friend when I close chat window | |
604 | - } | |
605 | - } | |
606 | - }).scrollabletab({ | |
607 | - closable: true | |
608 | - }); | |
609 | - | |
610 | - // remove some unnecessary css classes to apply style for tabs in bottom | |
611 | - $(".tabs-bottom .ui-tabs-nav, .tabs-bottom .ui-tabs-nav > *") | |
612 | - .removeClass("ui-corner-all ui-corner-top ui-helper-clearfix"); | |
613 | - $('#chat-window #tabs').removeClass("ui-corner-all ui-widget-content"); | |
614 | - | |
615 | - // positionting scrollabletab wrapper at bottom and tabs next/prev buttons | |
616 | - $('#stTabswrapper,#tabs').css({'position':'absolute', 'top':0, 'bottom':0, 'left': 0, 'right': 0, 'width': 'auto'}); | |
617 | - $('.stNavWrapper').css('position', 'absolute').css('bottom', 0).css('left', 0).css('right', 0) | |
618 | - .find('.stNav').css('top', null).css('bottom', '12px').css('height', '22px') | |
619 | - .find('.ui-icon').css('margin-top', '2px'); | |
620 | - $('.webkit .stNavWrapper .stNav').css('height', '20px'); | |
621 | - | |
622 | - // // blink window title alerting about new unread messages | |
623 | - // | |
624 | - // FIXME disabling window blinking for now | |
625 | - // | |
626 | - // $(window).blur(function() { | |
627 | - // setTimeout(function() { | |
628 | - // window.blinkInterval = setInterval(function() { | |
629 | - // if (document.title.match(/\*.+\* .+/)) { | |
630 | - // document.title = document.title.replace(/\*.+\* /g, ''); | |
631 | - // } | |
632 | - // else if (document.alert_title) { | |
633 | - // document.title = '*'+ document.alert_title +'* '+ document.title.replace(/\*.+\* /g, ''); | |
634 | - // }}, 2000 | |
635 | - // ); | |
636 | - // }, 2000); | |
637 | - // }, false); | |
638 | - // $(window).focus(function() { | |
639 | - // clearInterval(window.blinkInterval); | |
640 | - // document.alert_title = null; | |
641 | - // document.title = document.title.replace(/\*.+\* /g, ''); | |
642 | - // }, false); | |
578 | + var $tabs = $('#chat-window #tabs'); | |
643 | 579 | |
644 | 580 | function log(msg) { |
645 | 581 | if(Jabber.debug && window.console && window.console.log) { | ... | ... |
... | ... | @@ -0,0 +1,4 @@ |
1 | +/*! perfect-scrollbar - v0.4.11 | |
2 | +* http://noraesae.github.com/perfect-scrollbar/ | |
3 | +* Copyright (c) 2014 Hyeonje Alex Jun; Licensed MIT */ | |
4 | +(function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?e(require("jquery")):e(jQuery)})(function(e){"use strict";var t={wheelSpeed:10,wheelPropagation:!1,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,includePadding:!1},o=function(){var e=0;return function(){var t=e;return e+=1,".perfect-scrollbar-"+t}}();e.fn.perfectScrollbar=function(r,n){return this.each(function(){var l=e.extend(!0,{},t),s=e(this);if("object"==typeof r?e.extend(!0,l,r):n=r,"update"===n)return s.data("perfect-scrollbar-update")&&s.data("perfect-scrollbar-update")(),s;if("destroy"===n)return s.data("perfect-scrollbar-destroy")&&s.data("perfect-scrollbar-destroy")(),s;if(s.data("perfect-scrollbar"))return s.data("perfect-scrollbar");s.addClass("ps-container");var a,c,i,u,d,p,f,h,v,b,g=e("<div class='ps-scrollbar-x-rail'></div>").appendTo(s),m=e("<div class='ps-scrollbar-y-rail'></div>").appendTo(s),w=e("<div class='ps-scrollbar-x'></div>").appendTo(g),T=e("<div class='ps-scrollbar-y'></div>").appendTo(m),L=parseInt(g.css("bottom"),10),y=L===L,I=y?null:parseInt(g.css("top"),10),S=parseInt(m.css("right"),10),x=S===S,C=x?null:parseInt(m.css("left"),10),P="rtl"===s.css("direction"),D=o(),X=parseInt(g.css("borderLeftWidth"),10)+parseInt(g.css("borderRightWidth"),10),Y=parseInt(g.css("borderTopWidth"),10)+parseInt(g.css("borderBottomWidth"),10),k=function(e,t){var o=e+t,r=u-v;b=0>o?0:o>r?r:o;var n=parseInt(b*(p-u)/(u-v),10);s.scrollTop(n),y?g.css({bottom:L-n}):g.css({top:I+n})},M=function(e,t){var o=e+t,r=i-f;h=0>o?0:o>r?r:o;var n=parseInt(h*(d-i)/(i-f),10);s.scrollLeft(n),x?m.css({right:S-n}):m.css({left:C+n})},W=function(e){return l.minScrollbarLength&&(e=Math.max(e,l.minScrollbarLength)),l.maxScrollbarLength&&(e=Math.min(e,l.maxScrollbarLength)),e},j=function(){var e={width:i,display:a?"inherit":"none"};e.left=P?s.scrollLeft()+i-d:s.scrollLeft(),y?e.bottom=L-s.scrollTop():e.top=I+s.scrollTop(),g.css(e);var t={top:s.scrollTop(),height:u,display:c?"inherit":"none"};x?t.right=P?d-s.scrollLeft()-S-T.outerWidth():S-s.scrollLeft():t.left=P?s.scrollLeft()+2*i-d-C-T.outerWidth():C+s.scrollLeft(),m.css(t),w.css({left:h,width:f-X}),T.css({top:b,height:v-Y}),a?s.addClass("ps-active-x"):s.removeClass("ps-active-x"),c?s.addClass("ps-active-y"):s.removeClass("ps-active-y")},E=function(){i=l.includePadding?s.innerWidth():s.width(),u=l.includePadding?s.innerHeight():s.height(),d=s.prop("scrollWidth"),p=s.prop("scrollHeight"),!l.suppressScrollX&&d>i+l.scrollXMarginOffset?(a=!0,f=W(parseInt(i*i/d,10)),h=parseInt(s.scrollLeft()*(i-f)/(d-i),10)):(a=!1,f=0,h=0,s.scrollLeft(0)),!l.suppressScrollY&&p>u+l.scrollYMarginOffset?(c=!0,v=W(parseInt(u*u/p,10)),b=parseInt(s.scrollTop()*(u-v)/(p-u),10)):(c=!1,v=0,b=0,s.scrollTop(0)),b>=u-v&&(b=u-v),h>=i-f&&(h=i-f),j()},O=function(){var t,o;w.bind("mousedown"+D,function(e){o=e.pageX,t=w.position().left,g.addClass("in-scrolling"),e.stopPropagation(),e.preventDefault()}),e(document).bind("mousemove"+D,function(e){g.hasClass("in-scrolling")&&(M(t,e.pageX-o),e.stopPropagation(),e.preventDefault())}),e(document).bind("mouseup"+D,function(){g.hasClass("in-scrolling")&&g.removeClass("in-scrolling")}),t=o=null},q=function(){var t,o;T.bind("mousedown"+D,function(e){o=e.pageY,t=T.position().top,m.addClass("in-scrolling"),e.stopPropagation(),e.preventDefault()}),e(document).bind("mousemove"+D,function(e){m.hasClass("in-scrolling")&&(k(t,e.pageY-o),e.stopPropagation(),e.preventDefault())}),e(document).bind("mouseup"+D,function(){m.hasClass("in-scrolling")&&m.removeClass("in-scrolling")}),t=o=null},A=function(e,t){var o=s.scrollTop();if(0===e){if(!c)return!1;if(0===o&&t>0||o>=p-u&&0>t)return!l.wheelPropagation}var r=s.scrollLeft();if(0===t){if(!a)return!1;if(0===r&&0>e||r>=d-i&&e>0)return!l.wheelPropagation}return!0},B=function(){l.wheelSpeed/=10;var e=!1;s.bind("mousewheel"+D,function(t,o,r,n){var i=t.deltaX*t.deltaFactor||r,u=t.deltaY*t.deltaFactor||n;e=!1,l.useBothWheelAxes?c&&!a?(u?s.scrollTop(s.scrollTop()-u*l.wheelSpeed):s.scrollTop(s.scrollTop()+i*l.wheelSpeed),e=!0):a&&!c&&(i?s.scrollLeft(s.scrollLeft()+i*l.wheelSpeed):s.scrollLeft(s.scrollLeft()-u*l.wheelSpeed),e=!0):(s.scrollTop(s.scrollTop()-u*l.wheelSpeed),s.scrollLeft(s.scrollLeft()+i*l.wheelSpeed)),E(),e=e||A(i,u),e&&(t.stopPropagation(),t.preventDefault())}),s.bind("MozMousePixelScroll"+D,function(t){e&&t.preventDefault()})},F=function(){var t=!1;s.bind("mouseenter"+D,function(){t=!0}),s.bind("mouseleave"+D,function(){t=!1});var o=!1;e(document).bind("keydown"+D,function(r){if(!(r.isDefaultPrevented&&r.isDefaultPrevented()||!t||e(document.activeElement).is(":input,[contenteditable]"))){var n=0,l=0;switch(r.which){case 37:n=-30;break;case 38:l=30;break;case 39:n=30;break;case 40:l=-30;break;case 33:l=90;break;case 32:case 34:l=-90;break;case 35:l=-u;break;case 36:l=u;break;default:return}s.scrollTop(s.scrollTop()-l),s.scrollLeft(s.scrollLeft()+n),o=A(n,l),o&&r.preventDefault()}})},H=function(){var e=function(e){e.stopPropagation()};T.bind("click"+D,e),m.bind("click"+D,function(e){var t=parseInt(v/2,10),o=e.pageY-m.offset().top-t,r=u-v,n=o/r;0>n?n=0:n>1&&(n=1),s.scrollTop((p-u)*n)}),w.bind("click"+D,e),g.bind("click"+D,function(e){var t=parseInt(f/2,10),o=e.pageX-g.offset().left-t,r=i-f,n=o/r;0>n?n=0:n>1&&(n=1),s.scrollLeft((d-i)*n)})},K=function(){var t=function(e,t){s.scrollTop(s.scrollTop()-t),s.scrollLeft(s.scrollLeft()-e),E()},o={},r=0,n={},l=null,a=!1;e(window).bind("touchstart"+D,function(){a=!0}),e(window).bind("touchend"+D,function(){a=!1}),s.bind("touchstart"+D,function(e){var t=e.originalEvent.targetTouches[0];o.pageX=t.pageX,o.pageY=t.pageY,r=(new Date).getTime(),null!==l&&clearInterval(l),e.stopPropagation()}),s.bind("touchmove"+D,function(e){if(!a&&1===e.originalEvent.targetTouches.length){var l=e.originalEvent.targetTouches[0],s={};s.pageX=l.pageX,s.pageY=l.pageY;var c=s.pageX-o.pageX,i=s.pageY-o.pageY;t(c,i),o=s;var u=(new Date).getTime(),d=u-r;d>0&&(n.x=c/d,n.y=i/d,r=u),e.preventDefault()}}),s.bind("touchend"+D,function(){clearInterval(l),l=setInterval(function(){return.01>Math.abs(n.x)&&.01>Math.abs(n.y)?(clearInterval(l),void 0):(t(30*n.x,30*n.y),n.x*=.8,n.y*=.8,void 0)},10)})},z=function(){s.bind("scroll"+D,function(){E()})},Q=function(){s.unbind(D),e(window).unbind(D),e(document).unbind(D),s.data("perfect-scrollbar",null),s.data("perfect-scrollbar-update",null),s.data("perfect-scrollbar-destroy",null),w.remove(),T.remove(),g.remove(),m.remove(),g=m=w=T=a=c=i=u=d=p=f=h=L=y=I=v=b=S=x=C=P=D=null},R=function(t){s.addClass("ie").addClass("ie"+t);var o=function(){var t=function(){e(this).addClass("hover")},o=function(){e(this).removeClass("hover")};s.bind("mouseenter"+D,t).bind("mouseleave"+D,o),g.bind("mouseenter"+D,t).bind("mouseleave"+D,o),m.bind("mouseenter"+D,t).bind("mouseleave"+D,o),w.bind("mouseenter"+D,t).bind("mouseleave"+D,o),T.bind("mouseenter"+D,t).bind("mouseleave"+D,o)},r=function(){j=function(){var e={left:h+s.scrollLeft(),width:f};y?e.bottom=L:e.top=I,w.css(e);var t={top:b+s.scrollTop(),height:v};x?t.right=S:t.left=C,T.css(t),w.hide().show(),T.hide().show()}};6===t&&(o(),r())},G="ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch,J=function(){var e=navigator.userAgent.toLowerCase().match(/(msie) ([\w.]+)/);e&&"msie"===e[1]&&R(parseInt(e[2],10)),E(),z(),O(),q(),H(),G&&K(),s.mousewheel&&B(),l.useKeyboard&&F(),s.data("perfect-scrollbar",s),s.data("perfect-scrollbar-update",E),s.data("perfect-scrollbar-destroy",Q)};return J(),s})}}); | |
0 | 5 | \ No newline at end of file | ... | ... |
public/javascripts/perfect-scrollbar.with-mousewheel.min.js
0 → 100644
... | ... | @@ -0,0 +1,4 @@ |
1 | +/*! perfect-scrollbar - v0.4.11 | |
2 | +* http://noraesae.github.com/perfect-scrollbar/ | |
3 | +* Copyright (c) 2014 Hyeonje Alex Jun; Licensed MIT */ | |
4 | +(function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?e(require("jquery")):e(jQuery)})(function(e){"use strict";var t={wheelSpeed:10,wheelPropagation:!1,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,includePadding:!1},o=function(){var e=0;return function(){var t=e;return e+=1,".perfect-scrollbar-"+t}}();e.fn.perfectScrollbar=function(n,r){return this.each(function(){var l=e.extend(!0,{},t),s=e(this);if("object"==typeof n?e.extend(!0,l,n):r=n,"update"===r)return s.data("perfect-scrollbar-update")&&s.data("perfect-scrollbar-update")(),s;if("destroy"===r)return s.data("perfect-scrollbar-destroy")&&s.data("perfect-scrollbar-destroy")(),s;if(s.data("perfect-scrollbar"))return s.data("perfect-scrollbar");s.addClass("ps-container");var a,i,c,u,d,p,f,h,v,b,g=e("<div class='ps-scrollbar-x-rail'></div>").appendTo(s),m=e("<div class='ps-scrollbar-y-rail'></div>").appendTo(s),w=e("<div class='ps-scrollbar-x'></div>").appendTo(g),L=e("<div class='ps-scrollbar-y'></div>").appendTo(m),T=parseInt(g.css("bottom"),10),y=T===T,x=y?null:parseInt(g.css("top"),10),S=parseInt(m.css("right"),10),I=S===S,P=I?null:parseInt(m.css("left"),10),D="rtl"===s.css("direction"),M=o(),C=parseInt(g.css("borderLeftWidth"),10)+parseInt(g.css("borderRightWidth"),10),X=parseInt(g.css("borderTopWidth"),10)+parseInt(g.css("borderBottomWidth"),10),Y=function(e,t){var o=e+t,n=u-v;b=0>o?0:o>n?n:o;var r=parseInt(b*(p-u)/(u-v),10);s.scrollTop(r),y?g.css({bottom:T-r}):g.css({top:x+r})},k=function(e,t){var o=e+t,n=c-f;h=0>o?0:o>n?n:o;var r=parseInt(h*(d-c)/(c-f),10);s.scrollLeft(r),I?m.css({right:S-r}):m.css({left:P+r})},W=function(e){return l.minScrollbarLength&&(e=Math.max(e,l.minScrollbarLength)),l.maxScrollbarLength&&(e=Math.min(e,l.maxScrollbarLength)),e},j=function(){var e={width:c,display:a?"inherit":"none"};e.left=D?s.scrollLeft()+c-d:s.scrollLeft(),y?e.bottom=T-s.scrollTop():e.top=x+s.scrollTop(),g.css(e);var t={top:s.scrollTop(),height:u,display:i?"inherit":"none"};I?t.right=D?d-s.scrollLeft()-S-L.outerWidth():S-s.scrollLeft():t.left=D?s.scrollLeft()+2*c-d-P-L.outerWidth():P+s.scrollLeft(),m.css(t),w.css({left:h,width:f-C}),L.css({top:b,height:v-X}),a?s.addClass("ps-active-x"):s.removeClass("ps-active-x"),i?s.addClass("ps-active-y"):s.removeClass("ps-active-y")},O=function(){c=l.includePadding?s.innerWidth():s.width(),u=l.includePadding?s.innerHeight():s.height(),d=s.prop("scrollWidth"),p=s.prop("scrollHeight"),!l.suppressScrollX&&d>c+l.scrollXMarginOffset?(a=!0,f=W(parseInt(c*c/d,10)),h=parseInt(s.scrollLeft()*(c-f)/(d-c),10)):(a=!1,f=0,h=0,s.scrollLeft(0)),!l.suppressScrollY&&p>u+l.scrollYMarginOffset?(i=!0,v=W(parseInt(u*u/p,10)),b=parseInt(s.scrollTop()*(u-v)/(p-u),10)):(i=!1,v=0,b=0,s.scrollTop(0)),b>=u-v&&(b=u-v),h>=c-f&&(h=c-f),j()},E=function(){var t,o;w.bind("mousedown"+M,function(e){o=e.pageX,t=w.position().left,g.addClass("in-scrolling"),e.stopPropagation(),e.preventDefault()}),e(document).bind("mousemove"+M,function(e){g.hasClass("in-scrolling")&&(k(t,e.pageX-o),e.stopPropagation(),e.preventDefault())}),e(document).bind("mouseup"+M,function(){g.hasClass("in-scrolling")&&g.removeClass("in-scrolling")}),t=o=null},H=function(){var t,o;L.bind("mousedown"+M,function(e){o=e.pageY,t=L.position().top,m.addClass("in-scrolling"),e.stopPropagation(),e.preventDefault()}),e(document).bind("mousemove"+M,function(e){m.hasClass("in-scrolling")&&(Y(t,e.pageY-o),e.stopPropagation(),e.preventDefault())}),e(document).bind("mouseup"+M,function(){m.hasClass("in-scrolling")&&m.removeClass("in-scrolling")}),t=o=null},A=function(e,t){var o=s.scrollTop();if(0===e){if(!i)return!1;if(0===o&&t>0||o>=p-u&&0>t)return!l.wheelPropagation}var n=s.scrollLeft();if(0===t){if(!a)return!1;if(0===n&&0>e||n>=d-c&&e>0)return!l.wheelPropagation}return!0},q=function(){l.wheelSpeed/=10;var e=!1;s.bind("mousewheel"+M,function(t,o,n,r){var c=t.deltaX*t.deltaFactor||n,u=t.deltaY*t.deltaFactor||r;e=!1,l.useBothWheelAxes?i&&!a?(u?s.scrollTop(s.scrollTop()-u*l.wheelSpeed):s.scrollTop(s.scrollTop()+c*l.wheelSpeed),e=!0):a&&!i&&(c?s.scrollLeft(s.scrollLeft()+c*l.wheelSpeed):s.scrollLeft(s.scrollLeft()-u*l.wheelSpeed),e=!0):(s.scrollTop(s.scrollTop()-u*l.wheelSpeed),s.scrollLeft(s.scrollLeft()+c*l.wheelSpeed)),O(),e=e||A(c,u),e&&(t.stopPropagation(),t.preventDefault())}),s.bind("MozMousePixelScroll"+M,function(t){e&&t.preventDefault()})},B=function(){var t=!1;s.bind("mouseenter"+M,function(){t=!0}),s.bind("mouseleave"+M,function(){t=!1});var o=!1;e(document).bind("keydown"+M,function(n){if(!(n.isDefaultPrevented&&n.isDefaultPrevented()||!t||e(document.activeElement).is(":input,[contenteditable]"))){var r=0,l=0;switch(n.which){case 37:r=-30;break;case 38:l=30;break;case 39:r=30;break;case 40:l=-30;break;case 33:l=90;break;case 32:case 34:l=-90;break;case 35:l=-u;break;case 36:l=u;break;default:return}s.scrollTop(s.scrollTop()-l),s.scrollLeft(s.scrollLeft()+r),o=A(r,l),o&&n.preventDefault()}})},F=function(){var e=function(e){e.stopPropagation()};L.bind("click"+M,e),m.bind("click"+M,function(e){var t=parseInt(v/2,10),o=e.pageY-m.offset().top-t,n=u-v,r=o/n;0>r?r=0:r>1&&(r=1),s.scrollTop((p-u)*r)}),w.bind("click"+M,e),g.bind("click"+M,function(e){var t=parseInt(f/2,10),o=e.pageX-g.offset().left-t,n=c-f,r=o/n;0>r?r=0:r>1&&(r=1),s.scrollLeft((d-c)*r)})},z=function(){var t=function(e,t){s.scrollTop(s.scrollTop()-t),s.scrollLeft(s.scrollLeft()-e),O()},o={},n=0,r={},l=null,a=!1;e(window).bind("touchstart"+M,function(){a=!0}),e(window).bind("touchend"+M,function(){a=!1}),s.bind("touchstart"+M,function(e){var t=e.originalEvent.targetTouches[0];o.pageX=t.pageX,o.pageY=t.pageY,n=(new Date).getTime(),null!==l&&clearInterval(l),e.stopPropagation()}),s.bind("touchmove"+M,function(e){if(!a&&1===e.originalEvent.targetTouches.length){var l=e.originalEvent.targetTouches[0],s={};s.pageX=l.pageX,s.pageY=l.pageY;var i=s.pageX-o.pageX,c=s.pageY-o.pageY;t(i,c),o=s;var u=(new Date).getTime(),d=u-n;d>0&&(r.x=i/d,r.y=c/d,n=u),e.preventDefault()}}),s.bind("touchend"+M,function(){clearInterval(l),l=setInterval(function(){return.01>Math.abs(r.x)&&.01>Math.abs(r.y)?(clearInterval(l),void 0):(t(30*r.x,30*r.y),r.x*=.8,r.y*=.8,void 0)},10)})},K=function(){s.bind("scroll"+M,function(){O()})},Q=function(){s.unbind(M),e(window).unbind(M),e(document).unbind(M),s.data("perfect-scrollbar",null),s.data("perfect-scrollbar-update",null),s.data("perfect-scrollbar-destroy",null),w.remove(),L.remove(),g.remove(),m.remove(),g=m=w=L=a=i=c=u=d=p=f=h=T=y=x=v=b=S=I=P=D=M=null},R=function(t){s.addClass("ie").addClass("ie"+t);var o=function(){var t=function(){e(this).addClass("hover")},o=function(){e(this).removeClass("hover")};s.bind("mouseenter"+M,t).bind("mouseleave"+M,o),g.bind("mouseenter"+M,t).bind("mouseleave"+M,o),m.bind("mouseenter"+M,t).bind("mouseleave"+M,o),w.bind("mouseenter"+M,t).bind("mouseleave"+M,o),L.bind("mouseenter"+M,t).bind("mouseleave"+M,o)},n=function(){j=function(){var e={left:h+s.scrollLeft(),width:f};y?e.bottom=T:e.top=x,w.css(e);var t={top:b+s.scrollTop(),height:v};I?t.right=S:t.left=P,L.css(t),w.hide().show(),L.hide().show()}};6===t&&(o(),n())},N="ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch,Z=function(){var e=navigator.userAgent.toLowerCase().match(/(msie) ([\w.]+)/);e&&"msie"===e[1]&&R(parseInt(e[2],10)),O(),K(),E(),H(),F(),N&&z(),s.mousewheel&&q(),l.useKeyboard&&B(),s.data("perfect-scrollbar",s),s.data("perfect-scrollbar-update",O),s.data("perfect-scrollbar-destroy",Q)};return Z(),s})}}),function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?module.exports=e:e(jQuery)}(function(e){function t(t){var s=t||window.event,a=i.call(arguments,1),c=0,u=0,d=0,p=0;if(t=e.event.fix(s),t.type="mousewheel","detail"in s&&(d=-1*s.detail),"wheelDelta"in s&&(d=s.wheelDelta),"wheelDeltaY"in s&&(d=s.wheelDeltaY),"wheelDeltaX"in s&&(u=-1*s.wheelDeltaX),"axis"in s&&s.axis===s.HORIZONTAL_AXIS&&(u=-1*d,d=0),c=0===d?u:d,"deltaY"in s&&(d=-1*s.deltaY,c=d),"deltaX"in s&&(u=s.deltaX,0===d&&(c=-1*u)),0!==d||0!==u){if(1===s.deltaMode){var f=e.data(this,"mousewheel-line-height");c*=f,d*=f,u*=f}else if(2===s.deltaMode){var h=e.data(this,"mousewheel-page-height");c*=h,d*=h,u*=h}return p=Math.max(Math.abs(d),Math.abs(u)),(!l||l>p)&&(l=p,n(s,p)&&(l/=40)),n(s,p)&&(c/=40,u/=40,d/=40),c=Math[c>=1?"floor":"ceil"](c/l),u=Math[u>=1?"floor":"ceil"](u/l),d=Math[d>=1?"floor":"ceil"](d/l),t.deltaX=u,t.deltaY=d,t.deltaFactor=l,t.deltaMode=0,a.unshift(t,c,u,d),r&&clearTimeout(r),r=setTimeout(o,200),(e.event.dispatch||e.event.handle).apply(this,a)}}function o(){l=null}function n(e,t){return u.settings.adjustOldDeltas&&"mousewheel"===e.type&&0===t%120}var r,l,s=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],a="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(e.event.fixHooks)for(var c=s.length;c;)e.event.fixHooks[s[--c]]=e.event.mouseHooks;var u=e.event.special.mousewheel={version:"3.1.9",setup:function(){if(this.addEventListener)for(var o=a.length;o;)this.addEventListener(a[--o],t,!1);else this.onmousewheel=t;e.data(this,"mousewheel-line-height",u.getLineHeight(this)),e.data(this,"mousewheel-page-height",u.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var e=a.length;e;)this.removeEventListener(a[--e],t,!1);else this.onmousewheel=null},getLineHeight:function(t){return parseInt(e(t)["offsetParent"in e.fn?"offsetParent":"parent"]().css("fontSize"),10)},getPageHeight:function(t){return e(t).height()},settings:{adjustOldDeltas:!0}};e.fn.extend({mousewheel:function(e){return e?this.bind("mousewheel",e):this.trigger("mousewheel")},unmousewheel:function(e){return this.unbind("mousewheel",e)}})}); | |
0 | 5 | \ No newline at end of file | ... | ... |
public/stylesheets/application.css
... | ... | @@ -5028,220 +5028,6 @@ h1#agenda-title { |
5028 | 5028 | height: 16px; |
5029 | 5029 | padding-left: 18px; |
5030 | 5030 | } |
5031 | -/* chat window {{{ */ | |
5032 | - | |
5033 | -#title-bar { | |
5034 | - height: 25px; | |
5035 | - width: 100%; | |
5036 | - position: absolute; | |
5037 | - background: #ccc url(/images/icons-app/chat-22x22.png) 2px 2px no-repeat; | |
5038 | -} | |
5039 | -#title-bar .title { | |
5040 | - margin: 0; | |
5041 | - font-size: 12px; | |
5042 | - margin: 4px 0; | |
5043 | - padding-left: 30px; | |
5044 | -} | |
5045 | -#buddy-list { | |
5046 | - position: absolute; | |
5047 | - bottom: 0; | |
5048 | - top: 25px; | |
5049 | - -webkit-top: 5px; | |
5050 | - width: 250px; | |
5051 | - overflow-y: scroll; | |
5052 | -} | |
5053 | -#buddy-list .buddy-list { | |
5054 | - list-style-type: none; | |
5055 | - padding: 0; | |
5056 | - margin: 10px 0; | |
5057 | -} | |
5058 | -#buddy-list .buddy-list li { | |
5059 | - line-height: 21px; | |
5060 | -} | |
5061 | -#buddy-list .buddy-list li a, .occupant-list li a { | |
5062 | - background-position: 15px 50%; | |
5063 | - padding-left: 30px; | |
5064 | - display: block; | |
5065 | - text-decoration: none; | |
5066 | - border-top: 1px solid transparent; | |
5067 | - border-bottom: 1px solid transparent; | |
5068 | -} | |
5069 | -#buddy-list #environment-logo { | |
5070 | - text-align: center; | |
5071 | - padding: 15px 0; | |
5072 | -} | |
5073 | -#buddy-list .buddy-list li.offline, .occupant-list li.offline { | |
5074 | - display: none; | |
5075 | -} | |
5076 | -#buddy-list .toolbar { | |
5077 | - border-left: 0; | |
5078 | - border-right: 0; | |
5079 | - background-position: 90%; | |
5080 | - position: relative; | |
5081 | - height: 20px; | |
5082 | -} | |
5083 | -#buddy-list .toolbar .dialog-error { | |
5084 | - position: absolute; | |
5085 | - top: 30px; | |
5086 | - left: 10px; | |
5087 | - padding: 5px; | |
5088 | - width: 170px; | |
5089 | - -moz-border-radius: 5px; | |
5090 | - -webkit-border-radius: 5px; | |
5091 | - background: white; | |
5092 | - border: 1px solid #888; | |
5093 | -} | |
5094 | -#buddy-list .toolbar .dialog-error p { | |
5095 | - margin: 0 0 5px 0; | |
5096 | -} | |
5097 | -#chat-window { | |
5098 | - position: absolute; | |
5099 | - bottom: 0; | |
5100 | - right: 0; | |
5101 | - top: 25px; | |
5102 | - left: 250px; | |
5103 | - background: white; | |
5104 | -} | |
5105 | -.conversation { | |
5106 | - margin: 15px; | |
5107 | -} | |
5108 | -.conversation .input-div { | |
5109 | - position: absolute; | |
5110 | - left: 0; | |
5111 | - right: 25px; | |
5112 | - bottom: 40px; | |
5113 | - padding: 0 20px 10px 15px; | |
5114 | -} | |
5115 | -.msie7 .conversation .input-div { | |
5116 | - padding-left: 5px; | |
5117 | - margin-right: 10px; | |
5118 | -} | |
5119 | -.conversation .input-div .icon-chat { | |
5120 | - width: 16px; | |
5121 | - height: 16px; | |
5122 | - position: relative; | |
5123 | - bottom: -23px; | |
5124 | - left: 5px; | |
5125 | -} | |
5126 | -.msie7 .conversation .input-div .icon-chat { | |
5127 | - left: 20px; | |
5128 | -} | |
5129 | -.conversation textarea { | |
5130 | - height: 60px; | |
5131 | - width: 100%; | |
5132 | - padding-left: 25px; | |
5133 | - overflow: auto; | |
5134 | -} | |
5135 | -.conversation .history { | |
5136 | - position: absolute; | |
5137 | - right: 0px; | |
5138 | - top: 0px; | |
5139 | - bottom: 125px; | |
5140 | - left: 18px; | |
5141 | - overflow-y: scroll; | |
5142 | - padding-top: 5px; | |
5143 | -} | |
5144 | -.msie7 #chat-window .conversation .history { | |
5145 | - overflow-x: hidden; | |
5146 | -} | |
5147 | -#chat .unread-messages { | |
5148 | - background: red; | |
5149 | - position: absolute; | |
5150 | - right: 22px; | |
5151 | - margin: 2px 0; | |
5152 | - padding: 0 2px; | |
5153 | - color: white; | |
5154 | - display: block; | |
5155 | - line-height: 1em; | |
5156 | -} | |
5157 | -#chat .tabs-bottom .ui-tabs-nav { | |
5158 | - position: absolute; | |
5159 | - left: 0; | |
5160 | - bottom: 0; | |
5161 | - right:0; | |
5162 | - padding: 0 5px 10px 5px; | |
5163 | - border: 0; | |
5164 | - background: #eee; | |
5165 | -} | |
5166 | -#chat .tabs-bottom .ui-tabs-nav li { | |
5167 | - top: 0; | |
5168 | - margin-top: 0; | |
5169 | - margin-bottom: 0; | |
5170 | - border: 1px solid transparent; | |
5171 | - border-top: none; | |
5172 | -} | |
5173 | -#chat .tabs-bottom .ui-tabs-nav li a { | |
5174 | - padding: 0.3em 0.5em 0.3em 2.0em; | |
5175 | - background-position: 0.5em 50%; | |
5176 | -} | |
5177 | -#chat .tabs-bottom .ui-tabs-nav li:hover, #chat .tabs-bottom .ui-tabs-nav .ui-state-active { | |
5178 | - border: 1px solid #AAAAAA !important; | |
5179 | - border-top: 0 !important; | |
5180 | -} | |
5181 | -#chat .tabs-bottom li .ui-icon-close { | |
5182 | - margin: 0.4em 0.5em 0 0 !important; | |
5183 | -} | |
5184 | -#chat .ui-tabs .ui-tabs-panel { | |
5185 | - border: none; | |
5186 | -} | |
5187 | -#chat-window .history .message { | |
5188 | - padding: 0 50px 0 40px; | |
5189 | - position: relative; | |
5190 | -} | |
5191 | -#chat-window .history .message .time { | |
5192 | - position: absolute; | |
5193 | - right: 10px; | |
5194 | - top: 5px; | |
5195 | - color: gray; | |
5196 | - font-style: italic; | |
5197 | - font-size: 11px; | |
5198 | -} | |
5199 | -#chat-window .history .message h5, #chat-window .history .message p { | |
5200 | - margin: 0; | |
5201 | -} | |
5202 | -#chat-window .history .message p { | |
5203 | - max-width: 100%; | |
5204 | - overflow: auto; | |
5205 | -} | |
5206 | - | |
5207 | -#chat-window .history .message .avatar { | |
5208 | - position: absolute; | |
5209 | - left: 0; | |
5210 | - max-height: 32px; | |
5211 | - max-width: 32px; | |
5212 | - top: 10px; | |
5213 | -} | |
5214 | -#chat-window .history .notice { | |
5215 | - font-size: 10px; | |
5216 | - font-style: italic; | |
5217 | - color: gray; | |
5218 | - text-align: center; | |
5219 | - display: block; | |
5220 | -} | |
5221 | -.conversation .occupant-list { | |
5222 | - position: absolute; | |
5223 | - top: 0; | |
5224 | - right: 0; | |
5225 | - width: 200px; | |
5226 | - bottom: 125px; | |
5227 | -} | |
5228 | -.conversation .occupant-list ul { | |
5229 | - padding: 0; | |
5230 | - list-style: none; | |
5231 | - font-size: 12px; | |
5232 | -} | |
5233 | -#chat-window .history.room { | |
5234 | - right: 200px | |
5235 | -} | |
5236 | -#chat-window .comment-balloon-content { | |
5237 | - min-height: 50px; | |
5238 | - padding: 5px 0 5px 25px; | |
5239 | - position: relative; | |
5240 | -} | |
5241 | -#chat-window .comment-wrapper-1 { | |
5242 | - margin-left: 0; | |
5243 | -} | |
5244 | -/* chat window }}} */ | |
5245 | 5031 | |
5246 | 5032 | #profile-activity ul, #profile-network ul, #profile-wall ul { |
5247 | 5033 | padding-left: 0; | ... | ... |
... | ... | @@ -0,0 +1,236 @@ |
1 | +#chat { | |
2 | + width: 250px; | |
3 | +} | |
4 | + | |
5 | +#buddy-list { | |
6 | + background-color: #303030; | |
7 | + position: absolute; | |
8 | + bottom: 0; | |
9 | + top: 25px; | |
10 | + -webkit-top: 5px; | |
11 | + width: 250px; | |
12 | + overflow-y: auto; | |
13 | + right: 0; | |
14 | +} | |
15 | +#buddy-list .buddy-list { | |
16 | + list-style-type: none; | |
17 | + padding: 0; | |
18 | + margin: 0; | |
19 | +} | |
20 | +#buddy-list .buddy-list li { | |
21 | + line-height: 30px; | |
22 | + border-bottom: 1px solid #383838; | |
23 | +} | |
24 | +#buddy-list .buddy-list li a, .occupant-list li a { | |
25 | + background: none; | |
26 | + display: block; | |
27 | + padding-left: 30px; | |
28 | + padding-top: 10px; | |
29 | + text-decoration: none; | |
30 | + color: rgb(238, 238, 238); | |
31 | +} | |
32 | +#buddy-list .buddy-list li a .name, .occupant-list li a .name { | |
33 | + vertical-align: top; | |
34 | +} | |
35 | +#buddy-list .buddy-list li a img, .occupant-list li a img { | |
36 | + max-height: 32px; | |
37 | + max-width: 32px; | |
38 | +} | |
39 | +#buddy-list .buddy-list li.offline, .occupant-list li.offline { | |
40 | + display: none; | |
41 | +} | |
42 | +#buddy-list .toolbar { | |
43 | + border-left: 0; | |
44 | + border-right: 0; | |
45 | + background-position: 90%; | |
46 | + position: relative; | |
47 | + height: 20px; | |
48 | +} | |
49 | +#buddy-list .toolbar .dialog-error { | |
50 | + position: absolute; | |
51 | + top: 30px; | |
52 | + left: 10px; | |
53 | + padding: 5px; | |
54 | + width: 170px; | |
55 | + -moz-border-radius: 5px; | |
56 | + -webkit-border-radius: 5px; | |
57 | + background: white; | |
58 | + border: 1px solid #888; | |
59 | +} | |
60 | +#buddy-list .toolbar .dialog-error p { | |
61 | + margin: 0 0 5px 0; | |
62 | +} | |
63 | +#chat-window { | |
64 | + background: white; | |
65 | +} | |
66 | +.conversation { | |
67 | + margin: 15px; | |
68 | +} | |
69 | +.conversation .input-div { | |
70 | + position: absolute; | |
71 | + right: 0; | |
72 | + bottom: 40px; | |
73 | + padding: 0 20px 10px 15px; | |
74 | +} | |
75 | +.msie7 .conversation .input-div { | |
76 | + padding-left: 5px; | |
77 | + margin-right: 10px; | |
78 | +} | |
79 | +.conversation .input-div .icon-chat { | |
80 | + width: 16px; | |
81 | + height: 16px; | |
82 | + position: relative; | |
83 | + bottom: -23px; | |
84 | + left: 5px; | |
85 | +} | |
86 | +.msie7 .conversation .input-div .icon-chat { | |
87 | + left: 20px; | |
88 | +} | |
89 | +.conversation textarea { | |
90 | + height: 60px; | |
91 | + padding-left: 25px; | |
92 | + overflow: auto; | |
93 | +} | |
94 | +.conversation .history { | |
95 | + position: absolute; | |
96 | + right: 0; | |
97 | + top: 25px; | |
98 | + bottom: 125px; | |
99 | + overflow: hidden; | |
100 | + padding-top: 5px; | |
101 | + width: 250px; | |
102 | + background-color: #303030; | |
103 | +} | |
104 | +.msie7 #chat-window .conversation .history { | |
105 | + overflow-x: hidden; | |
106 | +} | |
107 | +#chat .unread-messages { | |
108 | + background: red; | |
109 | + position: absolute; | |
110 | + right: 22px; | |
111 | + margin: 2px 0; | |
112 | + padding: 0 2px; | |
113 | + color: white; | |
114 | + display: block; | |
115 | + line-height: 1em; | |
116 | +} | |
117 | +#chat .tabs-bottom .ui-tabs-nav { | |
118 | + position: absolute; | |
119 | + left: 0; | |
120 | + bottom: 0; | |
121 | + right:0; | |
122 | + padding: 0 5px 10px 5px; | |
123 | + border: 0; | |
124 | + background: #eee; | |
125 | +} | |
126 | +#chat .tabs-bottom .ui-tabs-nav li { | |
127 | + top: 0; | |
128 | + margin-top: 0; | |
129 | + margin-bottom: 0; | |
130 | + border: 1px solid transparent; | |
131 | + border-top: none; | |
132 | +} | |
133 | +#chat .tabs-bottom .ui-tabs-nav li a { | |
134 | + padding: 0.3em 0.5em 0.3em 2.0em; | |
135 | + background-position: 0.5em 50%; | |
136 | +} | |
137 | +#chat .tabs-bottom .ui-tabs-nav li:hover, #chat .tabs-bottom .ui-tabs-nav .ui-state-active { | |
138 | + border: 1px solid #AAAAAA !important; | |
139 | + border-top: 0 !important; | |
140 | +} | |
141 | +#chat .tabs-bottom li .ui-icon-close { | |
142 | + margin: 0.4em 0.5em 0 0 !important; | |
143 | +} | |
144 | +#chat .ui-tabs .ui-tabs-panel { | |
145 | + border: none; | |
146 | +} | |
147 | +#chat-window .history .message { | |
148 | + padding: 0 10px; | |
149 | + /*position: relative;*/ | |
150 | +} | |
151 | +#chat-window .history .message .time { | |
152 | + position: absolute; | |
153 | + right: 10px; | |
154 | + top: 5px; | |
155 | + color: gray; | |
156 | + font-style: italic; | |
157 | + font-size: 11px; | |
158 | +} | |
159 | +#chat-window .history .message h5, #chat-window .history .message p { | |
160 | + margin: 0; | |
161 | +} | |
162 | +#chat-window .history .message p { | |
163 | + max-width: 100%; | |
164 | + overflow: auto; | |
165 | +} | |
166 | + | |
167 | +#chat-window .history .message .content { | |
168 | + background-color: #383838; | |
169 | + color: rgb(223, 223, 223); | |
170 | + padding: 5px; | |
171 | +} | |
172 | + | |
173 | +#chat-window .history .message .avatar { | |
174 | + max-height: 32px; | |
175 | + max-width: 32px; | |
176 | +} | |
177 | +#chat-window .history .notice { | |
178 | + font-size: 10px; | |
179 | + font-style: italic; | |
180 | + color: gray; | |
181 | + text-align: center; | |
182 | + display: block; | |
183 | +} | |
184 | +.conversation .occupant-list { | |
185 | + position: absolute; | |
186 | + top: 0; | |
187 | + right: 0; | |
188 | + width: 200px; | |
189 | + bottom: 125px; | |
190 | +} | |
191 | +.conversation .occupant-list ul { | |
192 | + padding: 0; | |
193 | + list-style: none; | |
194 | + font-size: 12px; | |
195 | +} | |
196 | +#chat-window .history.room { | |
197 | + right: 200px | |
198 | +} | |
199 | +#chat-window .comment-balloon-content { | |
200 | + min-height: 50px; | |
201 | + padding: 5px 0 5px 25px; | |
202 | + position: relative; | |
203 | +} | |
204 | +#chat-window .comment-wrapper-1 { | |
205 | + margin-left: 0; | |
206 | +} | |
207 | + | |
208 | +#title-bar { | |
209 | + top: 0; | |
210 | + height: 25px; | |
211 | + position: absolute; | |
212 | + background: #ccc url(/images/icons-app/chat-22x22.png) 2px 2px no-repeat; | |
213 | + width: 250px; | |
214 | + right: 0; | |
215 | +} | |
216 | +#title-bar .title { | |
217 | + margin: 0; | |
218 | + font-size: 12px; | |
219 | + margin: 4px 0; | |
220 | + padding-left: 30px; | |
221 | +} | |
222 | +#chat #chat-templates { | |
223 | + display: none; | |
224 | +} | |
225 | +.conversation .back { | |
226 | + position: absolute; | |
227 | + top: 5px; | |
228 | + right: 8px; | |
229 | + color: white; | |
230 | +} | |
231 | +#chat #chat-window .history .other-name { | |
232 | + color: #6C9EDD; | |
233 | +} | |
234 | +#chat #chat-window .history .self-name { | |
235 | + color: #6C87DD; | |
236 | +} | ... | ... |
... | ... | @@ -0,0 +1,5 @@ |
1 | +/*! perfect-scrollbar - v0.4.11 | |
2 | +* http://noraesae.github.com/perfect-scrollbar/ | |
3 | +* Copyright (c) 2014 Hyeonje Alex Jun; Licensed MIT */ | |
4 | + | |
5 | +.ps-container .ps-scrollbar-x-rail{position:absolute;bottom:3px;height:8px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;opacity:0;filter:alpha(opacity=0);-o-transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;-moz-transition:background-color .2s linear,opacity .2s linear;transition:background-color .2s linear,opacity .2s linear}.ps-container:hover .ps-scrollbar-x-rail,.ps-container.hover .ps-scrollbar-x-rail{opacity:.6;filter:alpha(opacity=60)}.ps-container .ps-scrollbar-x-rail:hover,.ps-container .ps-scrollbar-x-rail.hover{background-color:#eee;opacity:.9;filter:alpha(opacity=90)}.ps-container .ps-scrollbar-x-rail.in-scrolling{background-color:#eee;opacity:.9;filter:alpha(opacity=90)}.ps-container .ps-scrollbar-y-rail{position:absolute;right:3px;width:8px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;opacity:0;filter:alpha(opacity=0);-o-transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;-moz-transition:background-color .2s linear,opacity .2s linear;transition:background-color .2s linear,opacity .2s linear}.ps-container:hover .ps-scrollbar-y-rail,.ps-container.hover .ps-scrollbar-y-rail{opacity:.6;filter:alpha(opacity=60)}.ps-container .ps-scrollbar-y-rail:hover,.ps-container .ps-scrollbar-y-rail.hover{background-color:#eee;opacity:.9;filter:alpha(opacity=90)}.ps-container .ps-scrollbar-y-rail.in-scrolling{background-color:#eee;opacity:.9;filter:alpha(opacity=90)}.ps-container .ps-scrollbar-x{position:absolute;bottom:0;height:8px;background-color:#aaa;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-o-transition:background-color .2s linear;-webkit-transition:background-color.2s linear;-moz-transition:background-color .2s linear;transition:background-color .2s linear}.ps-container.ie6 .ps-scrollbar-x{font-size:0}.ps-container .ps-scrollbar-x-rail:hover .ps-scrollbar-x,.ps-container .ps-scrollbar-x-rail.hover .ps-scrollbar-x{background-color:#999}.ps-container .ps-scrollbar-y{position:absolute;right:0;width:8px;background-color:#aaa;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-o-transition:background-color .2s linear;-webkit-transition:background-color.2s linear;-moz-transition:background-color .2s linear;transition:background-color .2s linear}.ps-container.ie6 .ps-scrollbar-y{font-size:0}.ps-container .ps-scrollbar-y-rail:hover .ps-scrollbar-y,.ps-container .ps-scrollbar-y-rail.hover .ps-scrollbar-y{background-color:#999}.ps-container.ie .ps-scrollbar-x,.ps-container.ie .ps-scrollbar-y{visibility:hidden}.ps-container.ie:hover .ps-scrollbar-x,.ps-container.ie:hover .ps-scrollbar-y,.ps-container.ie.hover .ps-scrollbar-x,.ps-container.ie.hover .ps-scrollbar-y{visibility:visible} | |
0 | 6 | \ No newline at end of file | ... | ... |