Adjusting design of profile and entry pages, linkify mentions in statuses
This commit is contained in:
		
					parent
					
						
							
								6045b6cb18
							
						
					
				
			
			
				commit
				
					
						ab80ebdeec
					
				
			
		
					 9 changed files with 75 additions and 41 deletions
				
			
		|  | @ -1,39 +1,40 @@ | ||||||
| .card { | .card { | ||||||
|   display: flex; |   background: $primary-color image-url('background-photo.jpeg'); | ||||||
|   background: $primary-color; |   background-size: cover; | ||||||
|   box-shadow: 4px 3px 0 rgba(0, 0, 0, 0.1); |   padding: 80px 0; | ||||||
|  |   padding-bottom: 30px; | ||||||
|  |   border-radius: 4px 4px 0 0; | ||||||
| 
 | 
 | ||||||
|   .bio { |   .bio { | ||||||
|     flex-grow: 1; | 
 | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   .name { |   .name { | ||||||
|  |     display: block; | ||||||
|     font-size: 20px; |     font-size: 20px; | ||||||
|     line-height: 18px * 1.5; |     line-height: 18px * 1.5; | ||||||
|     color: $quaternary-color; |     color: #fff; | ||||||
|  |     font-weight: 500; | ||||||
|  |     text-align: center; | ||||||
| 
 | 
 | ||||||
|     small { |     small { | ||||||
|       display: block; |       display: block; | ||||||
|       font-size: 14px; |       font-size: 14px; | ||||||
|       color: $quaternary-color; |       color: #2b90d9; | ||||||
|  |       font-weight: 400; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   .avatar { |   .avatar { | ||||||
|     width: 96px; |     width: 120px; | ||||||
|     float: left; |     margin: 0 auto; | ||||||
|     margin-right: 10px; |     margin-bottom: 15px; | ||||||
|     padding: 10px; |  | ||||||
|     padding-right: 0; |  | ||||||
|     padding-left: 9px; |  | ||||||
|     margin-top: -30px; |  | ||||||
| 
 | 
 | ||||||
|     img { |     img { | ||||||
|       width: 94px; |       width: 120px; | ||||||
|       height: 94px; |       height: 120px; | ||||||
|       display: block; |       display: block; | ||||||
|       border-radius: 5px; |       border-radius: 120px; | ||||||
|       box-shadow: 4px 3px 0 rgba(0, 0, 0, 0.1); |  | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -69,12 +69,13 @@ table { | ||||||
| 
 | 
 | ||||||
| body { | body { | ||||||
|   font-family: 'Roboto', sans-serif; |   font-family: 'Roboto', sans-serif; | ||||||
|   background: $background-color image-url('background-photo.jpeg'); |   background: #282c37 image-url('background-photo.jpeg'); | ||||||
|   background-size: cover; |   background-size: cover; | ||||||
|   font-size: 13px; |   font-size: 13px; | ||||||
|   line-height: 18px; |   line-height: 18px; | ||||||
|   font-weight: 400; |   font-weight: 400; | ||||||
|   color: $text-color; |   color: #fff; | ||||||
|  |   padding-bottom: 140px; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .container { | .container { | ||||||
|  | @ -221,6 +222,17 @@ body { | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | .footer { | ||||||
|  |   text-align: center; | ||||||
|  |   margin-top: 30px; | ||||||
|  | 
 | ||||||
|  |   .domain { | ||||||
|  |     font-size: 12px; | ||||||
|  |     font-weight: 400; | ||||||
|  |     font-family: 'Roboto Mono', monospace; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
| @import 'home'; | @import 'home'; | ||||||
| @import 'accounts'; | @import 'accounts'; | ||||||
| @import 'stream_entries'; | @import 'stream_entries'; | ||||||
|  |  | ||||||
|  | @ -4,9 +4,9 @@ | ||||||
|   box-shadow: 4px 3px 0 rgba(0, 0, 0, 0.1); |   box-shadow: 4px 3px 0 rgba(0, 0, 0, 0.1); | ||||||
| 
 | 
 | ||||||
|   .entry { |   .entry { | ||||||
|     border-bottom: 1px solid $darker-background-color; |     border-bottom: 1px solid #d9e1e8; | ||||||
|     background: $background-color; |     background: #fff; | ||||||
|     border-left: 2px solid $primary-color; |     border-left: 2px solid #fff; | ||||||
| 
 | 
 | ||||||
|     &.entry-reblog { |     &.entry-reblog { | ||||||
|       border-left: 2px solid $tertiary-color; |       border-left: 2px solid $tertiary-color; | ||||||
|  | @ -19,12 +19,10 @@ | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     &.entry-predecessor, &.entry-successor { |     &.entry-predecessor, &.entry-successor { | ||||||
|       border-left: 2px solid $lighter-text-color; |  | ||||||
|       background: darken($background-color, 5%); |  | ||||||
| 
 | 
 | ||||||
|       .content { |       .content { | ||||||
|         a { |         a { | ||||||
|           color: $lighter-text-color; | 
 | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|  | @ -38,6 +36,7 @@ | ||||||
| 
 | 
 | ||||||
|     &:last-child { |     &:last-child { | ||||||
|       border-bottom: 0; |       border-bottom: 0; | ||||||
|  |       border-radius: 0 0 4px 0; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | @ -47,16 +46,13 @@ | ||||||
| 
 | 
 | ||||||
|   .avatar { |   .avatar { | ||||||
|     width: 48px; |     width: 48px; | ||||||
|     padding: 10px; |     padding: 15px; | ||||||
|     padding-left: 8px; |  | ||||||
|     padding-right: 0; |  | ||||||
|     padding-top: 12px; |  | ||||||
| 
 | 
 | ||||||
|     img { |     img { | ||||||
|       width: 48px; |       width: 48px; | ||||||
|       height: 48px; |       height: 48px; | ||||||
|       display: block; |       display: block; | ||||||
|       border-radius: 5px; |       border-radius: 48px; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | @ -66,16 +62,17 @@ | ||||||
| 
 | 
 | ||||||
|   .header { |   .header { | ||||||
|     margin-bottom: 5px; |     margin-bottom: 5px; | ||||||
|     padding: 10px; |     padding: 15px; | ||||||
|     padding-bottom: 0; |     padding-bottom: 0; | ||||||
|     padding-left: 8px; |     padding-left: 8px; | ||||||
| 
 | 
 | ||||||
|     .name { |     .name { | ||||||
|       text-decoration: none; |       text-decoration: none; | ||||||
|       color: $lighter-text-color; |       color: #9baec8; | ||||||
| 
 | 
 | ||||||
|       strong { |       strong { | ||||||
|         color: $text-color; |         color: #282c37; | ||||||
|  |         font-weight: 500; | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|       &:hover { |       &:hover { | ||||||
|  | @ -87,15 +84,15 @@ | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   .pre-header { |   .pre-header { | ||||||
|     border-bottom: 1px solid darken($background-color, 5%); |     border-bottom: 1px solid #d9e1e8; | ||||||
|     color: $tertiary-color; |     color: #2b90d9; | ||||||
|     padding: 5px 10px; |     padding: 5px 10px; | ||||||
|     padding-left: 8px; |     padding-left: 8px; | ||||||
|     clear: both; |     clear: both; | ||||||
| 
 | 
 | ||||||
|     .name { |     .name { | ||||||
|       color: $tertiary-color; |       color: #2b90d9; | ||||||
|       font-weight: bold; |       font-weight: 500; | ||||||
|       text-decoration: none; |       text-decoration: none; | ||||||
| 
 | 
 | ||||||
|       &:hover { |       &:hover { | ||||||
|  | @ -109,9 +106,10 @@ | ||||||
|     padding: 0 10px; |     padding: 0 10px; | ||||||
|     padding-left: 8px; |     padding-left: 8px; | ||||||
|     padding-bottom: 25px; |     padding-bottom: 25px; | ||||||
|  |     color: #282c37; | ||||||
| 
 | 
 | ||||||
|     a { |     a { | ||||||
|       color: $primary-color; |       color: #2b90d9; | ||||||
|       text-decoration: none; |       text-decoration: none; | ||||||
| 
 | 
 | ||||||
|       &:hover { |       &:hover { | ||||||
|  | @ -122,7 +120,7 @@ | ||||||
| 
 | 
 | ||||||
|   .time { |   .time { | ||||||
|     text-decoration: none; |     text-decoration: none; | ||||||
|     color: $lighter-text-color; |     color: #9baec8; | ||||||
| 
 | 
 | ||||||
|     &:hover { |     &:hover { | ||||||
|       text-decoration: underline; |       text-decoration: underline; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,6 @@ | ||||||
| class AccountsController < ApplicationController | class AccountsController < ApplicationController | ||||||
|  |   layout 'public' | ||||||
|  | 
 | ||||||
|   before_action :set_account |   before_action :set_account | ||||||
|   before_action :set_webfinger_header |   before_action :set_webfinger_header | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,4 +1,6 @@ | ||||||
| class StreamEntriesController < ApplicationController | class StreamEntriesController < ApplicationController | ||||||
|  |   layout 'public' | ||||||
|  | 
 | ||||||
|   before_action :set_account |   before_action :set_account | ||||||
|   before_action :set_stream_entry |   before_action :set_stream_entry | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -19,4 +19,17 @@ module StreamEntriesHelper | ||||||
|   def relative_time(date) |   def relative_time(date) | ||||||
|     date < 5.days.ago ? date.strftime("%d.%m.%Y") : "#{time_ago_in_words(date)} ago" |     date < 5.days.ago ? date.strftime("%d.%m.%Y") : "#{time_ago_in_words(date)} ago" | ||||||
|   end |   end | ||||||
|  | 
 | ||||||
|  |   def linkify(status) | ||||||
|  |     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>" | ||||||
|  |     end.html_safe | ||||||
|  |   end | ||||||
| end | end | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ | ||||||
|   %link{ rel: 'alternate', type: 'application/atom+xml', href: account_url(@account, format: 'atom') }/ |   %link{ rel: 'alternate', type: 'application/atom+xml', href: account_url(@account, format: 'atom') }/ | ||||||
| 
 | 
 | ||||||
| .card | .card | ||||||
|   .avatar= image_tag @account.avatar.url(:medium) |   .avatar= image_tag @account.avatar.url(:large) | ||||||
|   .bio |   .bio | ||||||
|     %h1.name |     %h1.name | ||||||
|       = @account.display_name.blank? ? @account.username : @account.display_name |       = @account.display_name.blank? ? @account.username : @account.display_name | ||||||
|  |  | ||||||
							
								
								
									
										6
									
								
								app/views/layouts/public.html.haml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								app/views/layouts/public.html.haml
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | ||||||
|  | - content_for :content do | ||||||
|  |   = yield | ||||||
|  |   .footer | ||||||
|  |     .domain= Rails.configuration.x.local_domain | ||||||
|  | 
 | ||||||
|  | = render template: "layouts/application" | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|             = relative_time(status.reblog? ? status.reblog.created_at : status.created_at) |             = relative_time(status.reblog? ? status.reblog.created_at : status.created_at) | ||||||
| 
 | 
 | ||||||
|       .content |       .content | ||||||
|         = status.content.html_safe |         = status.reblog? ? (status.reblog.local? ? linkify(status.reblog) : status.reblog.content.html_safe) : (status.local? ? linkify(status) : status.content.html_safe) | ||||||
| 
 | 
 | ||||||
| - if include_threads | - if include_threads | ||||||
|   - status.replies.each do |status| |   - status.replies.each do |status| | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue