diff --git a/app/controllers/people_controller.rb b/app/controllers/people_controller.rb index 422bf1cbf..292d8c02d 100644 --- a/app/controllers/people_controller.rb +++ b/app/controllers/people_controller.rb @@ -106,7 +106,12 @@ class PeopleController < ApplicationController if params[:only_posts] render :partial => 'shared/stream', :locals => {:posts => @posts} else - respond_with @person, :locals => {:post_type => :all} + respond_to do |format| + format.all { respond_with @person, :locals => {:post_type => :all} } + format.json { + render :json => @person.to_json(:aspect_ids => @aspects_with_person.to_json) + } + end end else diff --git a/app/models/person.rb b/app/models/person.rb index 1b534eed4..59ac74889 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -220,13 +220,14 @@ class Person < ActiveRecord::Base end def as_json(opts={}) - { - :id => self.guid, + json = { + :id => self.id, :name => self.name, :avatar => self.profile.image_url(:thumb_small), :handle => self.diaspora_handle, :url => "/people/#{self.id}" } + json.merge(:aspect_ids => opts[:aspect_ids]) end protected diff --git a/app/views/comments/_comment.html.haml b/app/views/comments/_comment.html.haml index c32283bde..35d07f4ac 100644 --- a/app/views/comments/_comment.html.haml +++ b/app/views/comments/_comment.html.haml @@ -9,7 +9,7 @@ = person_image_link(comment.author) .content %span.from - = person_link(comment.author) + = person_link(comment.author, :class => "author") %span{:class => direction_for(comment.text)} = markdownify(comment.text, :youtube_maps => comment.youtube_titles) diff --git a/app/views/layouts/_header.html.haml b/app/views/layouts/_header.html.haml index 077277a3a..63cf6cbcc 100644 --- a/app/views/layouts/_header.html.haml +++ b/app/views/layouts/_header.html.haml @@ -54,7 +54,12 @@ #hovercard %img.avatar - %a.person + %h4 + %a.person + = render 'aspect_memberships/aspect_dropdown', :contact => Contact.new, :person => Person.new, :hang => 'left' + .hovercard_footer + .footer_container + Message %ul#user_menu.dropdown %li diff --git a/public/javascripts/widgets/hovercard.js b/public/javascripts/widgets/hovercard.js index f944f3d98..a2a4458b7 100644 --- a/public/javascripts/widgets/hovercard.js +++ b/public/javascripts/widgets/hovercard.js @@ -6,11 +6,12 @@ this.hoverCard = { tip: $("#hovercard"), offset: { - left: -30, - top: -60 + left: 00, + top: 20 }, personLink: $("#hovercard").find("a.person"), - avatar: $("#hovercard").find(".avatar") + avatar: $("#hovercard").find(".avatar"), + dropdown: $("#hovercard").find(".dropdown_list") }; $(document.body).delegate("a.author", "hover", this.handleHoverEvent); @@ -32,26 +33,26 @@ if(!self.hoverCardTimeout) { self.clearTimeout(false); } - self.timeout = setTimeout(self.showHoverCard, 30); + self.timeout = setTimeout(self.showHoverCard, 100); }; this.showHoverCard = function() { - self.hoverCard.tip.hide(); + self.hoverCard.tip.fadeOut('fast'); self.hoverCard.tip.prependTo(self.target.parent()); $.getJSON(self.target.attr("href"), function(person) { var position = self.target.position(); self.hoverCard.tip.css({ - position: "absolute", left: position.left + self.hoverCard.offset.left, top: position.top + self.hoverCard.offset.top }); self.hoverCard.avatar.attr("src", person.avatar); - self.hoverCard.personLink.attr("href", self.target.attr("href")); + self.hoverCard.personLink.attr("href", person.url); self.hoverCard.personLink.text(person.name); + self.hoverCard.dropdown.attr("data-person-id", person.id); - self.hoverCard.tip.show(); + self.hoverCard.tip.fadeIn('fast'); }); }; diff --git a/public/stylesheets/sass/application.sass b/public/stylesheets/sass/application.sass index 26fb451dd..a1c23868e 100644 --- a/public/stylesheets/sass/application.sass +++ b/public/stylesheets/sass/application.sass @@ -3071,8 +3071,37 @@ ul.left_nav :display none #hovercard + @include box-shadow(0,0,7px,#333) + @include border-radius(2px) + + .avatar + :position relative + :height 70px + :width 70px + :margin + :right 10px + + :position absolute :display none :background - :color black + :color $background + :padding 5px + :bottom 25px + + :border 1px solid #ddd + + :width 240px + :z :index 10 + + .hovercard_footer + :position absolute + :bottom 0 + :left 0 + :background + :color #eee + :width 100% + + .footer_container + :padding 0 10px