forked from cybrespace/mastodon
Adjusting design of public pages, optimizing account page queries
This commit is contained in:
parent
ab80ebdeec
commit
aab330eb2d
|
@ -1,14 +1,10 @@
|
||||||
.card {
|
.card {
|
||||||
background: $primary-color image-url('background-photo.jpeg');
|
background: $primary-color image-url('background-photo.jpeg');
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
padding: 80px 0;
|
padding: 60px 0;
|
||||||
padding-bottom: 30px;
|
padding-bottom: 10px;
|
||||||
border-radius: 4px 4px 0 0;
|
border-radius: 4px 4px 0 0;
|
||||||
|
|
||||||
.bio {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.name {
|
.name {
|
||||||
display: block;
|
display: block;
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
|
@ -37,4 +33,38 @@
|
||||||
border-radius: 120px;
|
border-radius: 120px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.details {
|
||||||
|
display: flex;
|
||||||
|
margin-top: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.counter {
|
||||||
|
width: 80px;
|
||||||
|
color: #9baec8;
|
||||||
|
padding: 0 10px;
|
||||||
|
border-right: 1px solid #9baec8;
|
||||||
|
cursor: default;
|
||||||
|
|
||||||
|
.counter-label {
|
||||||
|
font-size: 12px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
display: block;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.counter-number {
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 18px;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.bio {
|
||||||
|
flex: 1;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 18px;
|
||||||
|
padding: 5px 10px;
|
||||||
|
color: #d9e1e8;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -181,7 +181,6 @@ body {
|
||||||
margin-top: 30px;
|
margin-top: 30px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: #9baec8;
|
color: #9baec8;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
|
|
@ -9,34 +9,38 @@
|
||||||
border-left: 2px solid #fff;
|
border-left: 2px solid #fff;
|
||||||
|
|
||||||
&.entry-reblog {
|
&.entry-reblog {
|
||||||
border-left: 2px solid $tertiary-color;
|
border-left-color: #2b90d9;
|
||||||
|
|
||||||
.content {
|
|
||||||
a {
|
|
||||||
color: $tertiary-color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&.entry-predecessor, &.entry-successor {
|
&.entry-predecessor, &.entry-successor {
|
||||||
|
background: #d9e1e8;
|
||||||
.content {
|
border-left-color: #d9e1e8;
|
||||||
a {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&.entry-follow, &.entry-favourite {
|
&.entry-follow, &.entry-favourite {
|
||||||
.content {
|
.content {
|
||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
padding-bottom: 10px;
|
padding-bottom: 10px;
|
||||||
|
|
||||||
|
strong {
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&:last-child {
|
&:last-child {
|
||||||
border-bottom: 0;
|
border-bottom: 0;
|
||||||
border-radius: 0 0 4px 0;
|
border-radius: 0 0 4px 4px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.activity-stream-headless {
|
||||||
|
.entry:first-child {
|
||||||
|
border-radius: 4px 4px 0 0;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,8 @@ class AccountsController < ApplicationController
|
||||||
before_action :set_webfinger_header
|
before_action :set_webfinger_header
|
||||||
|
|
||||||
def show
|
def show
|
||||||
|
@statuses = @account.statuses.order('id desc').includes(thread: [:account], reblog: [:account], stream_entry: [])
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html
|
format.html
|
||||||
format.atom
|
format.atom
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
class Status < ActiveRecord::Base
|
class Status < ActiveRecord::Base
|
||||||
belongs_to :account, inverse_of: :statuses
|
belongs_to :account, inverse_of: :statuses
|
||||||
|
|
||||||
belongs_to :thread, foreign_key: 'in_reply_to_id', class_name: 'Status'
|
belongs_to :thread, foreign_key: 'in_reply_to_id', class_name: 'Status', inverse_of: :replies
|
||||||
belongs_to :reblog, foreign_key: 'reblog_of_id', class_name: 'Status'
|
belongs_to :reblog, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblogs
|
||||||
|
|
||||||
has_one :stream_entry, as: :activity, dependent: :destroy
|
has_one :stream_entry, as: :activity, dependent: :destroy
|
||||||
|
|
||||||
has_many :favourites, inverse_of: :status, dependent: :destroy
|
has_many :favourites, inverse_of: :status, dependent: :destroy
|
||||||
has_many :reblogs, foreign_key: 'reblog_of_id', class_name: 'Status'
|
has_many :reblogs, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblog
|
||||||
has_many :replies, foreign_key: 'in_reply_to_id', class_name: 'Status'
|
has_many :replies, foreign_key: 'in_reply_to_id', class_name: 'Status', inverse_of: :thread
|
||||||
has_many :mentioned_accounts, class_name: 'Mention', dependent: :destroy
|
has_many :mentioned_accounts, class_name: 'Mention', dependent: :destroy
|
||||||
|
|
||||||
validates :account, presence: true
|
validates :account, presence: true
|
||||||
|
|
|
@ -4,11 +4,21 @@
|
||||||
|
|
||||||
.card
|
.card
|
||||||
.avatar= image_tag @account.avatar.url(:large)
|
.avatar= image_tag @account.avatar.url(:large)
|
||||||
.bio
|
|
||||||
%h1.name
|
%h1.name
|
||||||
= @account.display_name.blank? ? @account.username : @account.display_name
|
= @account.display_name.blank? ? @account.username : @account.display_name
|
||||||
%small= "@#{@account.username}"
|
%small= "@#{@account.username}"
|
||||||
|
.details
|
||||||
|
.counter
|
||||||
|
%span.counter-label Posts
|
||||||
|
%span.counter-number= @account.statuses.count
|
||||||
|
.counter
|
||||||
|
%span.counter-label Following
|
||||||
|
%span.counter-number= @account.following.count
|
||||||
|
.counter
|
||||||
|
%span.counter-label Followers
|
||||||
|
%span.counter-number= @account.followers.count
|
||||||
|
.bio
|
||||||
|
%p= @account.note
|
||||||
.activity-stream
|
.activity-stream
|
||||||
- @account.statuses.order('id desc').each do |status|
|
- @statuses.each do |status|
|
||||||
= render partial: 'stream_entries/status', locals: { status: status, include_threads: false, is_successor: false, is_predecessor: false }
|
= render partial: 'stream_entries/status', locals: { status: status, include_threads: false, is_successor: false, is_predecessor: false }
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
.entry.entry-follow
|
.entry.entry-follow
|
||||||
.content
|
.content
|
||||||
%strong= follow.account.acct
|
%strong= link_to follow.account.acct, account_path(follow.account)
|
||||||
is now following
|
is now following
|
||||||
%strong= follow.target_account.acct
|
%strong= link_to follow.target_account.acct, url_for_target(follow.target_account)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
- content_for :header_tags do
|
- content_for :header_tags do
|
||||||
%link{ rel: 'alternate', type: 'application/atom+xml', href: account_stream_entry_url(@account, @stream_entry, format: 'atom') }/
|
%link{ rel: 'alternate', type: 'application/atom+xml', href: account_stream_entry_url(@account, @stream_entry, format: 'atom') }/
|
||||||
|
|
||||||
.activity-stream
|
.activity-stream.activity-stream-headless
|
||||||
= render partial: @type, locals: { @type.to_sym => @stream_entry.activity, include_threads: true, is_predecessor: false, is_successor: false }
|
= render partial: @type, locals: { @type.to_sym => @stream_entry.activity, include_threads: true, is_predecessor: false, is_successor: false }
|
||||||
|
|
Loading…
Reference in New Issue