Skip to content
Extraits de code Groupes Projets
Valider 2825991e rédigé par Eugen Rochko's avatar Eugen Rochko
Parcourir les fichiers

Improving status display design, including replies and threads

parent 5ae54f9e
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
app/assets/images/avatars/missing.png

3,8 ko | W: | H:

app/assets/images/avatars/missing.png

909 octets | W: | H:

app/assets/images/avatars/missing.png
app/assets/images/avatars/missing.png
app/assets/images/avatars/missing.png
app/assets/images/avatars/missing.png
  • 2-up
  • Swipe
  • Onion skin
app/assets/images/background-pattern.png

28,6 ko

...@@ -3,6 +3,9 @@ $secondary-color: #ffc952; ...@@ -3,6 +3,9 @@ $secondary-color: #ffc952;
$tertiary-color: #47b8e0; $tertiary-color: #47b8e0;
$quaternary-color: #34314c; $quaternary-color: #34314c;
$background-color: #fff; $background-color: #fff;
$darker-background-color: #e3dede;
$text-color: #333030;
$lighter-text-color: #8b8687;
@import url("https://fonts.googleapis.com/css?family=Noto+Sans:400,700,400italic"); @import url("https://fonts.googleapis.com/css?family=Noto+Sans:400,700,400italic");
@import "font-awesome-sprockets"; @import "font-awesome-sprockets";
...@@ -10,35 +13,23 @@ $background-color: #fff; ...@@ -10,35 +13,23 @@ $background-color: #fff;
body { body {
font-family: 'Noto Sans', sans-serif; font-family: 'Noto Sans', sans-serif;
background: $secondary-color; background: $background-color image-url('background-pattern.png');
font-size: 13px; font-size: 13px;
line-height: 18px; line-height: 18px;
color: $quaternary-color; color: $text-color;
&::before {
display: block;
content: "";
position: absolute;
background: $secondary-color;
width: 100%;
height: 200px;
z-index: -1;
top: 0;
left: 0;
}
} }
.container { .container {
width: 800px; width: 800px;
margin: 0 auto; margin: 0 auto;
z-index: 2; margin-top: 40px;
} }
.footer { .footer {
text-align: center; text-align: center;
padding: 100px 0; padding: 100px 0;
font-size: 12px; font-size: 12px;
color: lighten($quaternary-color, 15%); color: $text-color;
.mastodon-link { .mastodon-link {
color: $quaternary-color; color: $quaternary-color;
......
.card { .card {
margin-top: 40px;
display: flex; display: flex;
background: darken($background-color, 10%); background: $darker-background-color;
border-bottom: 1px solid darken($background-color, 15%); border: 1px solid darken($darker-background-color, 15%);
box-shadow: 4px 3px 0 rgba(0, 0, 0, 0.1); box-shadow: 4px 3px 0 rgba(0, 0, 0, 0.1);
.bio { .bio {
...@@ -12,11 +11,12 @@ ...@@ -12,11 +11,12 @@
.name { .name {
font-size: 24px; font-size: 24px;
line-height: 18px * 1.5; line-height: 18px * 1.5;
color: $text-color;
small { small {
display: block; display: block;
font-size: 14px; font-size: 14px;
color: lighten($quaternary-color, 15%); color: $lighter-text-color;
} }
} }
...@@ -25,13 +25,15 @@ ...@@ -25,13 +25,15 @@
float: left; float: left;
margin-right: 10px; margin-right: 10px;
padding: 10px; padding: 10px;
padding-left: 9px;
margin-top: -30px; margin-top: -30px;
img { img {
width: 94px; width: 94px;
height: 94px; height: 94px;
display: block; display: block;
border: 2px solid $background-color; border: 2px solid $lighter-text-color;
border-radius: 5px;
} }
} }
} }
...@@ -49,12 +51,17 @@ ...@@ -49,12 +51,17 @@
border-left: 2px solid $tertiary-color; border-left: 2px solid $tertiary-color;
} }
&.entry-predecessor, &.entry-successor {
border-left: 2px solid $lighter-text-color;
background: darken($background-color, 5%);
}
&:last-child { &:last-child {
border-bottom: 0; border-bottom: 0;
} }
} }
.entry-container { .entry__container {
display: flex; display: flex;
} }
...@@ -69,11 +76,11 @@ ...@@ -69,11 +76,11 @@
width: 48px; width: 48px;
height: 48px; height: 48px;
display: block; display: block;
box-shadow: 2px 2px 0 rgba(0, 0, 0, 0.1); border-radius: 5px;
} }
} }
.container { .entry__container__container {
flex-grow: 1; flex-grow: 1;
} }
...@@ -84,10 +91,10 @@ ...@@ -84,10 +91,10 @@
.name { .name {
text-decoration: none; text-decoration: none;
color: lighten($quaternary-color, 15%); color: $lighter-text-color;
strong { strong {
color: $quaternary-color; color: $text-color;
} }
&:hover { &:hover {
...@@ -124,7 +131,7 @@ ...@@ -124,7 +131,7 @@
.time { .time {
text-decoration: none; text-decoration: none;
color: lighten($quaternary-color, 15%); color: $lighter-text-color;
&:hover { &:hover {
text-decoration: underline; text-decoration: underline;
...@@ -133,7 +140,7 @@ ...@@ -133,7 +140,7 @@
.counters { .counters {
margin-top: 15px; margin-top: 15px;
color: lighten($quaternary-color, 15%); color: $lighter-text-color;
cursor: default; cursor: default;
padding: 10px; padding: 10px;
padding-top: 0; padding-top: 0;
...@@ -141,7 +148,7 @@ ...@@ -141,7 +148,7 @@
.counter { .counter {
display: inline-block; display: inline-block;
margin-right: 10px; margin-right: 10px;
color: lighten($quaternary-color, 50%); color: $lighter-text-color;
} }
.conversation-link { .conversation-link {
......
...@@ -10,4 +10,21 @@ module ProfileHelper ...@@ -10,4 +10,21 @@ module ProfileHelper
def status_url(status) def status_url(status)
status.local? ? super(name: status.account.username, id: status.stream_entry.id) : status.url status.local? ? super(name: status.account.username, id: status.stream_entry.id) : status.url
end end
def avatar_for_status_url(status)
status.reblog? ? status.reblog.account.avatar.url(:small) : status.account.avatar.url(:small)
end
def entry_classes(status, is_predecessor, is_successor, include_threads)
classes = ['entry']
classes << 'entry-reblog' if status.reblog?
classes << 'entry-predecessor' if is_predecessor
classes << 'entry-successor' if is_successor
classes << 'entry-center' if include_threads
classes.join(' ')
end
def relative_time(date)
date < 5.days.ago ? date.strftime("%d.%m.%Y") : "#{time_ago_in_words(date)} ago"
end
end end
%div.entry{ class: status.reblog? ? 'entry-reblog' : 'entry-status' } - if status.reply? && include_threads
= render partial: 'status', locals: { status: status.thread, include_threads: false, is_predecessor: true, is_successor: false }
.entry{ class: entry_classes(status, is_predecessor, is_successor, include_threads) }
- if status.reblog? - if status.reblog?
.pre-header .pre-header
%i.fa.fa-retweet %i.fa.fa-retweet
Shared by Shared by
= link_to display_name(status.account), profile_url(status.account), class: 'name' = link_to display_name(status.account), profile_url(status.account), class: 'name'
.entry-container .entry__container
.avatar .avatar
= image_tag status.reblog? ? status.reblog.account.avatar.url(:small) : status.account.avatar.url(:small) = image_tag avatar_for_status_url(status)
.container .entry__container__container
.header .header
= render partial: 'status_header', locals: { status: status.reblog? ? status.reblog : status } = render partial: 'status_header', locals: { status: status.reblog? ? status.reblog : status }
.content .content
= status.content = status.content
.counters .counters
= render partial: 'status_footer', locals: { status: status.reblog? ? status.reblog : status } = render partial: 'status_footer', locals: { status: status.reblog? ? status.reblog : status }
- if include_threads
- status.replies.each do |status|
= render partial: 'status', locals: { status: status, include_threads: false, is_successor: true, is_predecessor: false }
...@@ -4,5 +4,4 @@ ...@@ -4,5 +4,4 @@
= link_to status_url(status), class: 'time' do = link_to status_url(status), class: 'time' do
%span{ title: status.created_at } %span{ title: status.created_at }
= time_ago_in_words(status.created_at) = relative_time(status.created_at)
ago
%div.activity-stream %div.activity-stream
= render partial: @type, locals: { @type.to_sym => @entry.activity } = render partial: @type, locals: { @type.to_sym => @entry.activity, include_threads: true, is_predecessor: false, is_successor: false }
...@@ -7,4 +7,4 @@ ...@@ -7,4 +7,4 @@
.activity-stream .activity-stream
- @account.statuses.order('id desc').each do |status| - @account.statuses.order('id desc').each do |status|
= render partial: 'status', locals: { status: status } = render partial: 'status', locals: { status: status, include_threads: false, is_successor: false, is_predecessor: false }
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter