Adding GNU Public license, adding home timeline, reblog/favourite counters
This commit is contained in:
parent
831a187d74
commit
3824c58853
20 changed files with 429 additions and 37 deletions
|
@ -4,6 +4,7 @@
|
|||
padding: 60px 0;
|
||||
padding-bottom: 10px;
|
||||
border-radius: 4px 4px 0 0;
|
||||
box-shadow: 0 0 15px rgba(0, 0, 0, 0.2);
|
||||
|
||||
.name {
|
||||
display: block;
|
||||
|
|
|
@ -71,6 +71,7 @@ body {
|
|||
font-family: 'Roboto', sans-serif;
|
||||
background: #282c37 image-url('background-photo.jpeg');
|
||||
background-size: cover;
|
||||
background-attachment: fixed;
|
||||
font-size: 13px;
|
||||
line-height: 18px;
|
||||
font-weight: 400;
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
|
||||
.activity-stream {
|
||||
clear: both;
|
||||
box-shadow: 4px 3px 0 rgba(0, 0, 0, 0.1);
|
||||
box-shadow: 0 0 15px rgba(0, 0, 0, 0.2);
|
||||
|
||||
.entry {
|
||||
border-bottom: 1px solid #d9e1e8;
|
||||
|
@ -49,14 +48,14 @@
|
|||
}
|
||||
|
||||
.avatar {
|
||||
width: 48px;
|
||||
width: 56px;
|
||||
padding: 15px;
|
||||
|
||||
img {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
width: 56px;
|
||||
height: 56px;
|
||||
display: block;
|
||||
border-radius: 48px;
|
||||
border-radius: 56px;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -65,10 +64,39 @@
|
|||
}
|
||||
|
||||
.header {
|
||||
margin-bottom: 5px;
|
||||
margin-bottom: 10px;
|
||||
padding: 15px;
|
||||
padding-bottom: 0;
|
||||
padding-left: 8px;
|
||||
display: flex;
|
||||
|
||||
.header__left {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.header__right {
|
||||
.counter-btn {
|
||||
color: #d9e1e8;
|
||||
display: inline-block;
|
||||
padding: 0 10px;
|
||||
cursor: default;
|
||||
|
||||
.counter-number {
|
||||
font-weight: 500;
|
||||
display: inline-block;
|
||||
margin-left: 3px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
&.reblogged {
|
||||
color: #2b90d9;
|
||||
}
|
||||
|
||||
&.favourited {
|
||||
color: #df405a;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.name {
|
||||
text-decoration: none;
|
||||
|
@ -119,6 +147,16 @@
|
|||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
&.mention {
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
|
||||
span {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
class HomeController < ApplicationController
|
||||
before_action :authenticate_user!
|
||||
|
||||
def index
|
||||
@statuses = Status.where(account: ([current_user.account] + current_user.account.following)).where('reblog_of_id IS NULL OR account_id != ?', current_user.account.id).order('created_at desc')
|
||||
end
|
||||
end
|
||||
|
|
|
@ -4,7 +4,7 @@ module StreamEntriesHelper
|
|||
end
|
||||
|
||||
def avatar_for_status_url(status)
|
||||
status.reblog? ? status.reblog.account.avatar.url(:small) : status.account.avatar.url(:small)
|
||||
status.reblog? ? status.reblog.account.avatar.url(:medium) : status.account.avatar.url(:medium)
|
||||
end
|
||||
|
||||
def entry_classes(status, is_predecessor, is_successor, include_threads)
|
||||
|
@ -24,12 +24,17 @@ module StreamEntriesHelper
|
|||
mention_hash = {}
|
||||
status.mentions.each { |m| mention_hash[m.acct] = m }
|
||||
|
||||
status.text.gsub(Account::MENTION_RE) do |m|
|
||||
full_match = Account::MENTION_RE.match(m)
|
||||
acct = full_match[1]
|
||||
account = mention_hash[acct]
|
||||
|
||||
"#{m.split('@').first}<a href=\"#{account.url}\" class=\"mention\">@<span>#{acct}</span></a>"
|
||||
auto_link(CGI.escapeHTML(status.text), link: :urls, html: { target: '_blank', rel: 'nofollow' }).gsub(Account::MENTION_RE) do |m|
|
||||
account = mention_hash[Account::MENTION_RE.match(m)[1]]
|
||||
"#{m.split('@').first}<a href=\"#{url_for_target(account)}\" class=\"mention\">@<span>#{account.acct}</span></a>"
|
||||
end.html_safe
|
||||
end
|
||||
|
||||
def reblogged_by_me_class(status)
|
||||
user_signed_in? && (status.reblog? ? status.reblog : status).reblogs.where(account: current_user.account).count == 1 ? 'reblogged' : ''
|
||||
end
|
||||
|
||||
def favourited_by_me_class(status)
|
||||
user_signed_in? && (status.reblog? ? status.reblog : status).favourites.where(account: current_user.account).count == 1 ? 'favourited' : ''
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Mastodon
|
||||
|
||||
= link_to 'Logout', destroy_user_session_path, method: :delete
|
||||
.activity-stream.activity-stream-headless
|
||||
- @statuses.each do |status|
|
||||
= render partial: 'stream_entries/status', locals: { status: status, include_threads: false, is_successor: false, is_predecessor: false }
|
||||
|
|
|
@ -14,13 +14,20 @@
|
|||
|
||||
.entry__container__container
|
||||
.header
|
||||
= link_to url_for_target(status.reblog? ? status.reblog.account : status.account), class: 'name' do
|
||||
%strong= display_name(status.reblog? ? status.reblog.account : status.account)
|
||||
= "@#{status.reblog? ? status.reblog.account.acct : status.account.acct}"
|
||||
= link_to url_for_target(status.reblog? ? status.reblog : status), class: 'time' do
|
||||
%span{ title: status.reblog? ? status.reblog.created_at : status.created_at }
|
||||
= relative_time(status.reblog? ? status.reblog.created_at : status.created_at)
|
||||
|
||||
.header__left
|
||||
= link_to url_for_target(status.reblog? ? status.reblog.account : status.account), class: 'name' do
|
||||
%strong= display_name(status.reblog? ? status.reblog.account : status.account)
|
||||
= "@#{status.reblog? ? status.reblog.account.acct : status.account.acct}"
|
||||
= link_to url_for_target(status.reblog? ? status.reblog : status), class: 'time' do
|
||||
%span{ title: status.reblog? ? status.reblog.created_at : status.created_at }
|
||||
= relative_time(status.reblog? ? status.reblog.created_at : status.created_at)
|
||||
.header__right
|
||||
.counter-btn{ class: reblogged_by_me_class(status) }
|
||||
%i.fa.fa-retweet
|
||||
%span.counter-number= status.reblog? ? status.reblog.reblogs.count : status.reblogs.count
|
||||
.counter-btn{ class: favourited_by_me_class(status) }
|
||||
%i.fa.fa-star
|
||||
%span.counter-number= status.reblog? ? status.reblog.favourites.count : status.favourites.count
|
||||
.content
|
||||
= status.reblog? ? (status.reblog.local? ? linkify(status.reblog) : status.reblog.content.html_safe) : (status.local? ? linkify(status) : status.content.html_safe)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue