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,12 +29,12 @@ class ChatController < PublicController | ||
| 29 | end | 29 | end |
| 30 | 30 | ||
| 31 | def index | 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 | end | 38 | end |
| 39 | 39 | ||
| 40 | def update_presence_status | 40 | def update_presence_status |
app/helpers/layout_helper.rb
| @@ -28,6 +28,7 @@ module LayoutHelper | @@ -28,6 +28,7 @@ module LayoutHelper | ||
| 28 | 'lightbox', | 28 | 'lightbox', |
| 29 | 'colorbox', | 29 | 'colorbox', |
| 30 | 'inputosaurus', | 30 | 'inputosaurus', |
| 31 | + 'chat', | ||
| 31 | pngfix_stylesheet_path, | 32 | pngfix_stylesheet_path, |
| 32 | ] + tokeninput_stylesheets | 33 | ] + tokeninput_stylesheets |
| 33 | plugins_stylesheets = @plugins.select(&:stylesheet?).map { |plugin| plugin.class.public_path('style.css') } | 34 | plugins_stylesheets = @plugins.select(&:stylesheet?).map { |plugin| plugin.class.public_path('style.css') } |
| @@ -0,0 +1,70 @@ | @@ -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
| @@ -88,5 +88,6 @@ | @@ -88,5 +88,6 @@ | ||
| 88 | if content.respond_to?(:call) then instance_exec(&content).html_safe else content.html_safe end | 88 | if content.respond_to?(:call) then instance_exec(&content).html_safe else content.html_safe end |
| 89 | end.join("\n") | 89 | end.join("\n") |
| 90 | %> | 90 | %> |
| 91 | + <%= render :file => 'chat/index' if logged_in? %> | ||
| 91 | </body> | 92 | </body> |
| 92 | </html> | 93 | </html> |
public/javascripts/application.js
| @@ -599,9 +599,7 @@ function display_notice(message) { | @@ -599,9 +599,7 @@ function display_notice(message) { | ||
| 599 | } | 599 | } |
| 600 | 600 | ||
| 601 | function open_chat_window(self_link, anchor) { | 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 | return false; | 603 | return false; |
| 606 | } | 604 | } |
| 607 | 605 |
public/javascripts/chat.js
| @@ -20,7 +20,7 @@ jQuery(function($) { | @@ -20,7 +20,7 @@ jQuery(function($) { | ||
| 20 | var Jabber = { | 20 | var Jabber = { |
| 21 | debug: true, | 21 | debug: true, |
| 22 | connection: null, | 22 | connection: null, |
| 23 | - bosh_service: '/http-bind', | 23 | + bosh_service: 'http://10.32.113.131/http-bind', |
| 24 | muc_domain: $muc_domain, | 24 | muc_domain: $muc_domain, |
| 25 | muc_supported: false, | 25 | muc_supported: false, |
| 26 | presence_status: '', | 26 | presence_status: '', |
| @@ -30,10 +30,8 @@ jQuery(function($) { | @@ -30,10 +30,8 @@ jQuery(function($) { | ||
| 30 | rooms: {}, | 30 | rooms: {}, |
| 31 | 31 | ||
| 32 | templates: { | 32 | templates: { |
| 33 | - buddy_item: "<li class='%{presence_status}'><a id='%{jid_id}' class='icon-menu-%{presence_status}-11' href='#'>%{name}</a></li>", | ||
| 34 | occupant_item: "<li class='%{presence_status}'><a data-id='%{jid_id}' class='icon-menu-%{presence_status}-11' href='#'>%{name}</a></li>", | 33 | occupant_item: "<li class='%{presence_status}'><a data-id='%{jid_id}' class='icon-menu-%{presence_status}-11' href='#'>%{name}</a></li>", |
| 35 | room_item: "<li class='room'><a id='%{jid_id}' class='icon-chat' href='#'>%{name}</a></li>", | 34 | room_item: "<li class='room'><a id='%{jid_id}' class='icon-chat' href='#'>%{name}</a></li>", |
| 36 | - message: $balloon_template, | ||
| 37 | error: "<span class='error'>%{text}</span>", | 35 | error: "<span class='error'>%{text}</span>", |
| 38 | occupant_list: "<div class='occupant-list'><ul class='occupant-list'></ul></div>" | 36 | occupant_list: "<div class='occupant-list'><ul class='occupant-list'></ul></div>" |
| 39 | }, | 37 | }, |
| @@ -58,9 +56,11 @@ jQuery(function($) { | @@ -58,9 +56,11 @@ jQuery(function($) { | ||
| 58 | 56 | ||
| 59 | insert_or_update_user: function (list, item, jid, name, presence, template) { | 57 | insert_or_update_user: function (list, item, jid, name, presence, template) { |
| 60 | var jid_id = Jabber.jid_to_id(jid); | 58 | var jid_id = Jabber.jid_to_id(jid); |
| 59 | + var identifier = Strophe.getNodeFromJid(jid); | ||
| 61 | var html = template | 60 | var html = template |
| 62 | .replace('%{jid_id}', jid_id) | 61 | .replace('%{jid_id}', jid_id) |
| 63 | .replace(/%{presence_status}/g, presence) | 62 | .replace(/%{presence_status}/g, presence) |
| 63 | + .replace('%{avatar_url}', '/chat/avatar/' + identifier) | ||
| 64 | .replace('%{name}', name); | 64 | .replace('%{name}', name); |
| 65 | if ($(item).length > 0) { | 65 | if ($(item).length > 0) { |
| 66 | $(item).parent('li').replaceWith(html); | 66 | $(item).parent('li').replaceWith(html); |
| @@ -75,7 +75,7 @@ jQuery(function($) { | @@ -75,7 +75,7 @@ jQuery(function($) { | ||
| 75 | var item = $('#' + jid_id); | 75 | var item = $('#' + jid_id); |
| 76 | presence = presence || ($(item).length > 0 ? $(item).parent('li').attr('class') : 'offline'); | 76 | presence = presence || ($(item).length > 0 ? $(item).parent('li').attr('class') : 'offline'); |
| 77 | log('adding or updating contact ' + jid + ' as ' + presence); | 77 | log('adding or updating contact ' + jid + ' as ' + presence); |
| 78 | - Jabber.insert_or_update_user(list, item, jid, name, presence, Jabber.templates.buddy_item); | 78 | + Jabber.insert_or_update_user(list, item, jid, name, presence, $('#chat #chat-templates .buddy-item').clone().html()); |
| 79 | $("#chat-window .tab a[href='#"+ Jabber.tab_prefix + jid_id +"']") | 79 | $("#chat-window .tab a[href='#"+ Jabber.tab_prefix + jid_id +"']") |
| 80 | .removeClass() | 80 | .removeClass() |
| 81 | .addClass('icon-menu-' + presence + '-11'); | 81 | .addClass('icon-menu-' + presence + '-11'); |
| @@ -115,12 +115,12 @@ jQuery(function($) { | @@ -115,12 +115,12 @@ jQuery(function($) { | ||
| 115 | var jid_id = Jabber.jid_to_id(jid); | 115 | var jid_id = Jabber.jid_to_id(jid); |
| 116 | var tab_id = '#' + Jabber.tab_prefix + jid_id; | 116 | var tab_id = '#' + Jabber.tab_prefix + jid_id; |
| 117 | if ($(tab_id).find('.message').length > 0 && $(tab_id).find('.message:last').attr('data-who') == who) { | 117 | if ($(tab_id).find('.message').length > 0 && $(tab_id).find('.message:last').attr('data-who') == who) { |
| 118 | - $(tab_id).find('.history').find('.message:last .comment-balloon-content').append('<p>' + body + '</p>'); | 118 | + $(tab_id).find('.history').find('.message:last .content').append('<p>' + body + '</p>'); |
| 119 | } | 119 | } |
| 120 | else { | 120 | else { |
| 121 | var time = new Date(); | 121 | var time = new Date(); |
| 122 | time = time.getHours() + ':' + checkTime(time.getMinutes()); | 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 | .replace('%{message}', body) | 124 | .replace('%{message}', body) |
| 125 | .replace(/%{who}/g, who) | 125 | .replace(/%{who}/g, who) |
| 126 | .replace('%{time}', time) | 126 | .replace('%{time}', time) |
| @@ -189,14 +189,14 @@ jQuery(function($) { | @@ -189,14 +189,14 @@ jQuery(function($) { | ||
| 189 | Jabber.update_chat_title(); | 189 | Jabber.update_chat_title(); |
| 190 | $('#chat-window .tab a').removeClass().addClass('icon-menu-offline-11'); | 190 | $('#chat-window .tab a').removeClass().addClass('icon-menu-offline-11'); |
| 191 | $('#buddy-list .toolbar').removeClass('small-loading-dark'); | 191 | $('#buddy-list .toolbar').removeClass('small-loading-dark'); |
| 192 | - $('textarea').attr('disabled', 'disabled'); | 192 | + $('textarea').prop('disabled', 'disabled'); |
| 193 | break; | 193 | break; |
| 194 | case Strophe.Status.CONNECTED: | 194 | case Strophe.Status.CONNECTED: |
| 195 | log('connected'); | 195 | log('connected'); |
| 196 | case Strophe.Status.ATTACHED: | 196 | case Strophe.Status.ATTACHED: |
| 197 | log('XMPP/BOSH session attached'); | 197 | log('XMPP/BOSH session attached'); |
| 198 | $('#buddy-list .toolbar').removeClass('small-loading-dark'); | 198 | $('#buddy-list .toolbar').removeClass('small-loading-dark'); |
| 199 | - $('textarea').attr('disabled', ''); | 199 | + $('textarea').prop('disabled', ''); |
| 200 | break; | 200 | break; |
| 201 | } | 201 | } |
| 202 | }, | 202 | }, |
| @@ -526,11 +526,17 @@ jQuery(function($) { | @@ -526,11 +526,17 @@ jQuery(function($) { | ||
| 526 | $('.conversation textarea:visible').focus(); | 526 | $('.conversation textarea:visible').focus(); |
| 527 | }); | 527 | }); |
| 528 | 528 | ||
| 529 | + $('.conversation .back').live('click', function() { | ||
| 530 | + $(this).parents('.conversation').hide(); | ||
| 531 | + }); | ||
| 532 | + | ||
| 529 | function create_conversation_tab(title, jid_id) { | 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 | // opening chat with selected online friend | 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 | //FIXME | 541 | //FIXME |
| 536 | //var notice = $starting_chat_notice.replace('%{name}', $(ui.tab).html()); | 542 | //var notice = $starting_chat_notice.replace('%{name}', $(ui.tab).html()); |
| @@ -545,11 +551,12 @@ jQuery(function($) { | @@ -545,11 +551,12 @@ jQuery(function($) { | ||
| 545 | } | 551 | } |
| 546 | 552 | ||
| 547 | $tabs.find('.ui-tabs-nav').append( "<li><a href='"+('#' + Jabber.tab_prefix + jid_id)+"'><span class=\"unread-messages\" style=\"display:none\"></span>"+title+"</a></li>" ); | 553 | $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 | var jid = Jabber.jid_of(jid_id); | 555 | var jid = Jabber.jid_of(jid_id); |
| 551 | $("a[href='#" + Jabber.tab_prefix + jid_id + "']").addClass($('#' + jid_id).attr('class') || 'icon-chat'); | 556 | $("a[href='#" + Jabber.tab_prefix + jid_id + "']").addClass($('#' + jid_id).attr('class') || 'icon-chat'); |
| 552 | $('#' + Jabber.tab_prefix + jid_id).find('textarea').attr('data-to', jid); | 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,78 +575,7 @@ jQuery(function($) { | ||
| 568 | } | 575 | } |
| 569 | 576 | ||
| 570 | // creating tabs | 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 | function log(msg) { | 580 | function log(msg) { |
| 645 | if(Jabber.debug && window.console && window.console.log) { | 581 | if(Jabber.debug && window.console && window.console.log) { |
| @@ -0,0 +1,4 @@ | @@ -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 | \ No newline at end of file | 5 | \ No newline at end of file |
public/javascripts/perfect-scrollbar.with-mousewheel.min.js
0 → 100644
| @@ -0,0 +1,4 @@ | @@ -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 | \ No newline at end of file | 5 | \ No newline at end of file |
public/stylesheets/application.css
| @@ -5028,220 +5028,6 @@ h1#agenda-title { | @@ -5028,220 +5028,6 @@ h1#agenda-title { | ||
| 5028 | height: 16px; | 5028 | height: 16px; |
| 5029 | padding-left: 18px; | 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 | #profile-activity ul, #profile-network ul, #profile-wall ul { | 5032 | #profile-activity ul, #profile-network ul, #profile-wall ul { |
| 5247 | padding-left: 0; | 5033 | padding-left: 0; |
| @@ -0,0 +1,236 @@ | @@ -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 @@ | @@ -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 | \ No newline at end of file | 6 | \ No newline at end of file |