@ -1,3 +1,114 @@ | |||||
// Place all the styles related to the Profile controller here. | |||||
// They will automatically be included in application.css. | |||||
// You can use Sass (SCSS) here: http://sass-lang.com/ | |||||
@import url(https://fonts.googleapis.com/css?family=Noto+Sans:400,700,400italic); | |||||
@import "font-awesome-sprockets"; | |||||
@import "font-awesome"; | |||||
body { | |||||
font-family: 'Noto Sans', sans-serif; | |||||
background: #E0E3DA; | |||||
font-size: 13px; | |||||
line-height: 18px; | |||||
} | |||||
.container { | |||||
width: 800px; | |||||
margin: 0 auto; | |||||
} | |||||
.card { | |||||
padding-top: 20px; | |||||
.name { | |||||
font-size: 24px; | |||||
line-height: 18px * 1.5; | |||||
small { | |||||
display: block; | |||||
font-size: 14px; | |||||
color: #566270; | |||||
} | |||||
} | |||||
.bio { | |||||
} | |||||
.counter { | |||||
display: block; | |||||
float: left; | |||||
width: 100px; | |||||
text-align: center; | |||||
border: 1px solid #A593E0; | |||||
color: #A593E0; | |||||
border-radius: 5px; | |||||
padding: 3px 0; | |||||
margin-right: 3px; | |||||
.num { | |||||
display: block; | |||||
font-size: 24px; | |||||
} | |||||
} | |||||
} | |||||
.activity-stream { | |||||
clear: both; | |||||
.entry { | |||||
padding: 10px; | |||||
border-bottom: 1px solid #E0E3DA; | |||||
background: #FFFFF3; | |||||
&:first-child { | |||||
border-radius: 5px 5px 0 0; | |||||
} | |||||
&:last-child { | |||||
border-bottom: 0; | |||||
border-radius: 0 0 5px 5px; | |||||
} | |||||
} | |||||
.header { | |||||
margin-bottom: 10px; | |||||
} | |||||
.name { | |||||
text-decoration: none; | |||||
color: #566270; | |||||
strong { | |||||
color: #000; | |||||
} | |||||
&:hover { | |||||
strong { | |||||
text-decoration: underline; | |||||
} | |||||
} | |||||
} | |||||
.content { | |||||
font-size: 16px; | |||||
} | |||||
.time { | |||||
text-decoration: none; | |||||
color: #566270; | |||||
&:hover { | |||||
text-decoration: underline; | |||||
} | |||||
} | |||||
.counters { | |||||
margin-top: 15px; | |||||
color: #566270; | |||||
cursor: default; | |||||
.counter { | |||||
display: inline-block; | |||||
margin-right: 10px; | |||||
} | |||||
} | |||||
} |
@ -1,7 +1,17 @@ | |||||
class ProfileController < ApplicationController | class ProfileController < ApplicationController | ||||
before_action :set_account | |||||
def show | def show | ||||
end | end | ||||
def entry | def entry | ||||
@entry = @account.stream_entries.find(params[:id]) | |||||
@type = @entry.activity_type.downcase | |||||
end | |||||
private | |||||
def set_account | |||||
@account = Account.find_by!(username: params[:name], domain: nil) | |||||
end | end | ||||
end | end |
@ -0,0 +1,7 @@ | |||||
%div.entry | |||||
.header | |||||
= render partial: 'status_header', locals: { status: status.reblog? ? status.reblog : status } | |||||
.content | |||||
= status.content | |||||
.counters | |||||
= render partial: 'status_footer', locals: { status: status.reblog? ? status.reblog : status } |
@ -0,0 +1,7 @@ | |||||
.counter.counter-retweets | |||||
%i.fa.fa-retweet | |||||
%span.num= status.reblogs.count | |||||
.counter.counter-favourites | |||||
%i.fa.fa-star | |||||
%span.num= status.favourites.count |
@ -0,0 +1,8 @@ | |||||
= link_to (status.account.local? ? profile_url(name: status.account.username) : status.account.url), class: 'name' do | |||||
%strong= status.account.display_name.blank? ? status.account.username : status.account.display_name | |||||
= "@#{status.account.acct}" | |||||
= link_to status.local? ? status_url(name: status.account.username, id: status.stream_entry.id) : status.url, class: 'time' do | |||||
%span{ title: status.created_at } | |||||
= time_ago_in_words(status.created_at) | |||||
ago |
@ -0,0 +1,2 @@ | |||||
%div.activity-stream | |||||
= render partial: @type, locals: { @type.to_sym => @entry.activity } |
@ -1,2 +1,8 @@ | |||||
%h1 Profile#show | |||||
%p Find me in app/views/profile/show.html.haml | |||||
%div.card | |||||
%h1.name | |||||
= @account.display_name.blank? ? @account.username : @account.display_name | |||||
%small= "@#{@account.username}" | |||||
%div.activity-stream | |||||
- @account.statuses.order('id desc').each do |status| | |||||
= render partial: 'status', locals: { status: status } |