Commit 0b674b6dd0c379940523804a8b874f774e3f046a
Committed by
Rodrigo Souto
1 parent
401a2773
Exists in
master
and in
21 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 | ... | ... |