wip. Person#as_json is breaking right now

This commit is contained in:
danielgrippi 2011-07-03 16:29:49 -07:00
parent 8f31e99535
commit 675d9d7485
6 changed files with 55 additions and 14 deletions

View file

@ -106,7 +106,12 @@ class PeopleController < ApplicationController
if params[:only_posts] if params[:only_posts]
render :partial => 'shared/stream', :locals => {:posts => @posts} render :partial => 'shared/stream', :locals => {:posts => @posts}
else 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 end
else else

View file

@ -220,13 +220,14 @@ class Person < ActiveRecord::Base
end end
def as_json(opts={}) def as_json(opts={})
{ json = {
:id => self.guid, :id => self.id,
:name => self.name, :name => self.name,
:avatar => self.profile.image_url(:thumb_small), :avatar => self.profile.image_url(:thumb_small),
:handle => self.diaspora_handle, :handle => self.diaspora_handle,
:url => "/people/#{self.id}" :url => "/people/#{self.id}"
} }
json.merge(:aspect_ids => opts[:aspect_ids])
end end
protected protected

View file

@ -9,7 +9,7 @@
= person_image_link(comment.author) = person_image_link(comment.author)
.content .content
%span.from %span.from
= person_link(comment.author) = person_link(comment.author, :class => "author")
%span{:class => direction_for(comment.text)} %span{:class => direction_for(comment.text)}
= markdownify(comment.text, :youtube_maps => comment.youtube_titles) = markdownify(comment.text, :youtube_maps => comment.youtube_titles)

View file

@ -54,7 +54,12 @@
#hovercard #hovercard
%img.avatar %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 %ul#user_menu.dropdown
%li %li

View file

@ -6,11 +6,12 @@
this.hoverCard = { this.hoverCard = {
tip: $("#hovercard"), tip: $("#hovercard"),
offset: { offset: {
left: -30, left: 00,
top: -60 top: 20
}, },
personLink: $("#hovercard").find("a.person"), 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); $(document.body).delegate("a.author", "hover", this.handleHoverEvent);
@ -32,26 +33,26 @@
if(!self.hoverCardTimeout) { if(!self.hoverCardTimeout) {
self.clearTimeout(false); self.clearTimeout(false);
} }
self.timeout = setTimeout(self.showHoverCard, 30); self.timeout = setTimeout(self.showHoverCard, 100);
}; };
this.showHoverCard = function() { this.showHoverCard = function() {
self.hoverCard.tip.hide(); self.hoverCard.tip.fadeOut('fast');
self.hoverCard.tip.prependTo(self.target.parent()); self.hoverCard.tip.prependTo(self.target.parent());
$.getJSON(self.target.attr("href"), function(person) { $.getJSON(self.target.attr("href"), function(person) {
var position = self.target.position(); var position = self.target.position();
self.hoverCard.tip.css({ self.hoverCard.tip.css({
position: "absolute",
left: position.left + self.hoverCard.offset.left, left: position.left + self.hoverCard.offset.left,
top: position.top + self.hoverCard.offset.top top: position.top + self.hoverCard.offset.top
}); });
self.hoverCard.avatar.attr("src", person.avatar); 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.personLink.text(person.name);
self.hoverCard.dropdown.attr("data-person-id", person.id);
self.hoverCard.tip.show(); self.hoverCard.tip.fadeIn('fast');
}); });
}; };

View file

@ -3071,8 +3071,37 @@ ul.left_nav
:display none :display none
#hovercard #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 :display none
:background :background
:color black :color $background
:padding 5px
:bottom 25px
:border 1px solid #ddd
:width 240px
:z :z
:index 10 :index 10
.hovercard_footer
:position absolute
:bottom 0
:left 0
:background
:color #eee
:width 100%
.footer_container
:padding 0 10px