mirror of
https://git.kescher.at/CatCatNya/catstodon.git
synced 2024-11-22 11:48:06 +01:00
Adding config for puma, dashboard layout, fixing some queries
This commit is contained in:
parent
447cfef62d
commit
aab9f57e36
25 changed files with 264 additions and 134 deletions
4
Gemfile
4
Gemfile
|
@ -14,7 +14,7 @@ gem 'puma'
|
||||||
gem 'haml-rails'
|
gem 'haml-rails'
|
||||||
gem 'pg'
|
gem 'pg'
|
||||||
gem 'dotenv-rails'
|
gem 'dotenv-rails'
|
||||||
gem 'font-awesome-sass'
|
gem 'font-awesome-rails'
|
||||||
|
|
||||||
gem 'paranoia', '~> 2.0'
|
gem 'paranoia', '~> 2.0'
|
||||||
gem 'paperclip', '~> 4.3'
|
gem 'paperclip', '~> 4.3'
|
||||||
|
@ -34,7 +34,6 @@ gem 'hiredis'
|
||||||
gem 'redis', '~>3.2'
|
gem 'redis', '~>3.2'
|
||||||
gem 'fast_blank'
|
gem 'fast_blank'
|
||||||
gem 'htmlentities'
|
gem 'htmlentities'
|
||||||
gem 'message_bus'
|
|
||||||
gem 'onebox'
|
gem 'onebox'
|
||||||
|
|
||||||
group :development, :test do
|
group :development, :test do
|
||||||
|
@ -52,7 +51,6 @@ end
|
||||||
|
|
||||||
group :development do
|
group :development do
|
||||||
gem 'web-console', '~> 2.0'
|
gem 'web-console', '~> 2.0'
|
||||||
gem 'spring'
|
|
||||||
gem 'rubocop', require: false
|
gem 'rubocop', require: false
|
||||||
gem 'better_errors'
|
gem 'better_errors'
|
||||||
gem 'binding_of_caller'
|
gem 'binding_of_caller'
|
||||||
|
|
44
Gemfile.lock
44
Gemfile.lock
|
@ -41,7 +41,7 @@ GEM
|
||||||
ast (2.2.0)
|
ast (2.2.0)
|
||||||
backport_new_renderer (1.0.0)
|
backport_new_renderer (1.0.0)
|
||||||
rails
|
rails
|
||||||
bcrypt (3.1.10)
|
bcrypt (3.1.11)
|
||||||
better_errors (2.1.1)
|
better_errors (2.1.1)
|
||||||
coderay (>= 1.0.0)
|
coderay (>= 1.0.0)
|
||||||
erubis (>= 2.6.6)
|
erubis (>= 2.6.6)
|
||||||
|
@ -61,7 +61,7 @@ GEM
|
||||||
coffee-script-source
|
coffee-script-source
|
||||||
execjs
|
execjs
|
||||||
coffee-script-source (1.10.0)
|
coffee-script-source (1.10.0)
|
||||||
concurrent-ruby (1.0.0)
|
concurrent-ruby (1.0.1)
|
||||||
crack (0.4.3)
|
crack (0.4.3)
|
||||||
safe_yaml (~> 1.0.0)
|
safe_yaml (~> 1.0.0)
|
||||||
debug_inspector (0.0.2)
|
debug_inspector (0.0.2)
|
||||||
|
@ -74,7 +74,7 @@ GEM
|
||||||
warden (~> 1.2.3)
|
warden (~> 1.2.3)
|
||||||
diff-lcs (1.2.5)
|
diff-lcs (1.2.5)
|
||||||
docile (1.1.5)
|
docile (1.1.5)
|
||||||
domain_name (0.5.20160216)
|
domain_name (0.5.20160309)
|
||||||
unf (>= 0.0.5, < 1.0.0)
|
unf (>= 0.0.5, < 1.0.0)
|
||||||
doorkeeper (3.1.0)
|
doorkeeper (3.1.0)
|
||||||
railties (>= 3.2)
|
railties (>= 3.2)
|
||||||
|
@ -86,8 +86,8 @@ GEM
|
||||||
execjs (2.6.0)
|
execjs (2.6.0)
|
||||||
fabrication (2.14.1)
|
fabrication (2.14.1)
|
||||||
fast_blank (1.0.0)
|
fast_blank (1.0.0)
|
||||||
font-awesome-sass (4.5.0)
|
font-awesome-rails (4.5.0.1)
|
||||||
sass (>= 3.2)
|
railties (>= 3.2, < 5.1)
|
||||||
fuubar (2.0.0)
|
fuubar (2.0.0)
|
||||||
rspec (~> 3.0)
|
rspec (~> 3.0)
|
||||||
ruby-progressbar (~> 1.4)
|
ruby-progressbar (~> 1.4)
|
||||||
|
@ -126,8 +126,8 @@ GEM
|
||||||
jbuilder (2.4.1)
|
jbuilder (2.4.1)
|
||||||
activesupport (>= 3.0.0, < 5.1)
|
activesupport (>= 3.0.0, < 5.1)
|
||||||
multi_json (~> 1.2)
|
multi_json (~> 1.2)
|
||||||
jquery-rails (4.1.0)
|
jquery-rails (4.1.1)
|
||||||
rails-dom-testing (~> 1.0)
|
rails-dom-testing (>= 1, < 3)
|
||||||
railties (>= 4.2.0)
|
railties (>= 4.2.0)
|
||||||
thor (>= 0.14, < 2.0)
|
thor (>= 0.14, < 2.0)
|
||||||
json (1.8.3)
|
json (1.8.3)
|
||||||
|
@ -136,11 +136,8 @@ GEM
|
||||||
nokogiri (>= 1.5.9)
|
nokogiri (>= 1.5.9)
|
||||||
mail (2.6.3)
|
mail (2.6.3)
|
||||||
mime-types (>= 1.16, < 3)
|
mime-types (>= 1.16, < 3)
|
||||||
message_bus (1.1.1)
|
|
||||||
rack (>= 1.1.3)
|
|
||||||
redis
|
|
||||||
method_source (0.8.2)
|
method_source (0.8.2)
|
||||||
mime-types (2.99)
|
mime-types (2.99.1)
|
||||||
mimemagic (0.3.0)
|
mimemagic (0.3.0)
|
||||||
mini_portile2 (2.0.0)
|
mini_portile2 (2.0.0)
|
||||||
minitest (5.8.4)
|
minitest (5.8.4)
|
||||||
|
@ -149,7 +146,7 @@ GEM
|
||||||
mustache (1.0.2)
|
mustache (1.0.2)
|
||||||
nokogiri (1.6.7.2)
|
nokogiri (1.6.7.2)
|
||||||
mini_portile2 (~> 2.0.0.rc2)
|
mini_portile2 (~> 2.0.0.rc2)
|
||||||
oj (2.14.5)
|
oj (2.14.6)
|
||||||
onebox (1.5.35)
|
onebox (1.5.35)
|
||||||
htmlentities (~> 4.3.4)
|
htmlentities (~> 4.3.4)
|
||||||
moneta (~> 0.8)
|
moneta (~> 0.8)
|
||||||
|
@ -179,7 +176,7 @@ GEM
|
||||||
slop (~> 3.4)
|
slop (~> 3.4)
|
||||||
pry-rails (0.3.4)
|
pry-rails (0.3.4)
|
||||||
pry (>= 0.9.10)
|
pry (>= 0.9.10)
|
||||||
puma (2.16.0)
|
puma (3.1.0)
|
||||||
quiet_assets (1.1.0)
|
quiet_assets (1.1.0)
|
||||||
railties (>= 3.1, < 5.0)
|
railties (>= 3.1, < 5.0)
|
||||||
rabl (0.12.0)
|
rabl (0.12.0)
|
||||||
|
@ -221,7 +218,7 @@ GEM
|
||||||
rake (>= 0.8.7)
|
rake (>= 0.8.7)
|
||||||
thor (>= 0.18.1, < 2.0)
|
thor (>= 0.18.1, < 2.0)
|
||||||
rainbow (2.1.0)
|
rainbow (2.1.0)
|
||||||
rake (10.5.0)
|
rake (11.1.0)
|
||||||
rdoc (4.2.2)
|
rdoc (4.2.2)
|
||||||
json (~> 1.4)
|
json (~> 1.4)
|
||||||
redis (3.2.2)
|
redis (3.2.2)
|
||||||
|
@ -232,7 +229,7 @@ GEM
|
||||||
rspec-core (~> 3.4.0)
|
rspec-core (~> 3.4.0)
|
||||||
rspec-expectations (~> 3.4.0)
|
rspec-expectations (~> 3.4.0)
|
||||||
rspec-mocks (~> 3.4.0)
|
rspec-mocks (~> 3.4.0)
|
||||||
rspec-core (3.4.3)
|
rspec-core (3.4.4)
|
||||||
rspec-support (~> 3.4.0)
|
rspec-support (~> 3.4.0)
|
||||||
rspec-expectations (3.4.0)
|
rspec-expectations (3.4.0)
|
||||||
diff-lcs (>= 1.2.0, < 2.0)
|
diff-lcs (>= 1.2.0, < 2.0)
|
||||||
|
@ -249,12 +246,12 @@ GEM
|
||||||
rspec-mocks (~> 3.4.0)
|
rspec-mocks (~> 3.4.0)
|
||||||
rspec-support (~> 3.4.0)
|
rspec-support (~> 3.4.0)
|
||||||
rspec-support (3.4.1)
|
rspec-support (3.4.1)
|
||||||
rubocop (0.37.2)
|
rubocop (0.38.0)
|
||||||
parser (>= 2.3.0.4, < 3.0)
|
parser (>= 2.3.0.6, < 3.0)
|
||||||
powerpack (~> 0.1)
|
powerpack (~> 0.1)
|
||||||
rainbow (>= 1.99.1, < 3.0)
|
rainbow (>= 1.99.1, < 3.0)
|
||||||
ruby-progressbar (~> 1.7)
|
ruby-progressbar (~> 1.7)
|
||||||
unicode-display_width (~> 0.3)
|
unicode-display_width (~> 1.0, >= 1.0.1)
|
||||||
ruby-progressbar (1.7.5)
|
ruby-progressbar (1.7.5)
|
||||||
ruby_parser (3.8.1)
|
ruby_parser (3.8.1)
|
||||||
sexp_processor (~> 4.1)
|
sexp_processor (~> 4.1)
|
||||||
|
@ -276,11 +273,10 @@ GEM
|
||||||
simplecov-html (~> 0.10.0)
|
simplecov-html (~> 0.10.0)
|
||||||
simplecov-html (0.10.0)
|
simplecov-html (0.10.0)
|
||||||
slop (3.6.0)
|
slop (3.6.0)
|
||||||
spring (1.6.3)
|
|
||||||
sprockets (3.5.2)
|
sprockets (3.5.2)
|
||||||
concurrent-ruby (~> 1.0)
|
concurrent-ruby (~> 1.0)
|
||||||
rack (> 1, < 3)
|
rack (> 1, < 3)
|
||||||
sprockets-rails (3.0.1)
|
sprockets-rails (3.0.4)
|
||||||
actionpack (>= 4.0)
|
actionpack (>= 4.0)
|
||||||
activesupport (>= 4.0)
|
activesupport (>= 4.0)
|
||||||
sprockets (>= 3.0.0)
|
sprockets (>= 3.0.0)
|
||||||
|
@ -299,7 +295,7 @@ GEM
|
||||||
unf (0.1.4)
|
unf (0.1.4)
|
||||||
unf_ext
|
unf_ext
|
||||||
unf_ext (0.0.7.2)
|
unf_ext (0.0.7.2)
|
||||||
unicode-display_width (0.3.1)
|
unicode-display_width (1.0.2)
|
||||||
warden (1.2.6)
|
warden (1.2.6)
|
||||||
rack (>= 1.0)
|
rack (>= 1.0)
|
||||||
web-console (2.3.0)
|
web-console (2.3.0)
|
||||||
|
@ -307,7 +303,7 @@ GEM
|
||||||
binding_of_caller (>= 0.7.2)
|
binding_of_caller (>= 0.7.2)
|
||||||
railties (>= 4.0)
|
railties (>= 4.0)
|
||||||
sprockets-rails (>= 2.0, < 4.0)
|
sprockets-rails (>= 2.0, < 4.0)
|
||||||
webmock (1.24.1)
|
webmock (1.24.2)
|
||||||
addressable (>= 2.3.6)
|
addressable (>= 2.3.6)
|
||||||
crack (>= 0.3.2)
|
crack (>= 0.3.2)
|
||||||
hashdiff
|
hashdiff
|
||||||
|
@ -326,7 +322,7 @@ DEPENDENCIES
|
||||||
dotenv-rails
|
dotenv-rails
|
||||||
fabrication
|
fabrication
|
||||||
fast_blank
|
fast_blank
|
||||||
font-awesome-sass
|
font-awesome-rails
|
||||||
fuubar
|
fuubar
|
||||||
goldfinger
|
goldfinger
|
||||||
haml-rails
|
haml-rails
|
||||||
|
@ -335,7 +331,6 @@ DEPENDENCIES
|
||||||
http
|
http
|
||||||
jbuilder (~> 2.0)
|
jbuilder (~> 2.0)
|
||||||
jquery-rails
|
jquery-rails
|
||||||
message_bus
|
|
||||||
nokogiri
|
nokogiri
|
||||||
oj
|
oj
|
||||||
onebox
|
onebox
|
||||||
|
@ -357,7 +352,6 @@ DEPENDENCIES
|
||||||
sass-rails (~> 5.0)
|
sass-rails (~> 5.0)
|
||||||
sdoc (~> 0.4.0)
|
sdoc (~> 0.4.0)
|
||||||
simplecov
|
simplecov
|
||||||
spring
|
|
||||||
sqlite3
|
sqlite3
|
||||||
therubyracer
|
therubyracer
|
||||||
uglifier (>= 1.3.0)
|
uglifier (>= 1.3.0)
|
||||||
|
|
|
@ -9,7 +9,6 @@ $lighter-text-color: #8b8687;
|
||||||
|
|
||||||
@import url(https://fonts.googleapis.com/css?family=Roboto:400,500,400italic);
|
@import url(https://fonts.googleapis.com/css?family=Roboto:400,500,400italic);
|
||||||
@import url(https://fonts.googleapis.com/css?family=Roboto+Mono);
|
@import url(https://fonts.googleapis.com/css?family=Roboto+Mono);
|
||||||
@import "font-awesome-sprockets";
|
|
||||||
@import "font-awesome";
|
@import "font-awesome";
|
||||||
|
|
||||||
/* http://meyerweb.com/eric/tools/css/reset/
|
/* http://meyerweb.com/eric/tools/css/reset/
|
||||||
|
@ -334,3 +333,4 @@ body {
|
||||||
@import 'home';
|
@import 'home';
|
||||||
@import 'accounts';
|
@import 'accounts';
|
||||||
@import 'stream_entries';
|
@import 'stream_entries';
|
||||||
|
@import 'dashboard'
|
||||||
|
|
130
app/assets/stylesheets/dashboard.scss
Normal file
130
app/assets/stylesheets/dashboard.scss
Normal file
|
@ -0,0 +1,130 @@
|
||||||
|
.dashboard-wrapper {
|
||||||
|
background: #282c37;
|
||||||
|
border-radius: 4px;
|
||||||
|
margin: 20px auto;
|
||||||
|
width: 940px;
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
.dashboard__sidebar {
|
||||||
|
width: 240px;
|
||||||
|
border-radius: 4px 0 0 4px;
|
||||||
|
|
||||||
|
.dashboard__top-bar {
|
||||||
|
border-radius: 4px 0 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
padding: 20px 0;
|
||||||
|
|
||||||
|
a {
|
||||||
|
display: block;
|
||||||
|
padding: 7px 20px;
|
||||||
|
color: #d9e1e8;
|
||||||
|
text-decoration: none;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
|
||||||
|
.fa {
|
||||||
|
display: inline-block;
|
||||||
|
width: 18px;
|
||||||
|
text-align: center;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.active {
|
||||||
|
a {
|
||||||
|
background: darken(#282c37, 5%);
|
||||||
|
border-left: 2px solid #2b90d9;
|
||||||
|
padding-left: 18px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.dashboard__current-user {
|
||||||
|
padding: 20px;
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dashboard__current-user__avatar {
|
||||||
|
display: block;
|
||||||
|
width: 50px;
|
||||||
|
height: 50px;
|
||||||
|
border-radius: 50px;
|
||||||
|
float: left;
|
||||||
|
margin-right: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dashboard__current-user__display-name {
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 13px;
|
||||||
|
color: #d9e1e8;
|
||||||
|
display: block;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dashboard__current-user__username {
|
||||||
|
font-size: 12px;
|
||||||
|
display: block;
|
||||||
|
color: #2b90d9;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.dashboard__logo {
|
||||||
|
color: #2b90d9;
|
||||||
|
|
||||||
|
span {
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.dashboard__top-bar {
|
||||||
|
background: #fff;
|
||||||
|
padding: 20px;
|
||||||
|
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
|
||||||
|
border-bottom: 1px solid #d9e1e8;
|
||||||
|
color: #282c37;
|
||||||
|
font-size: 16px;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
&.alternate {
|
||||||
|
background: lighten(#282c37, 10%);
|
||||||
|
border-bottom: 1px solid lighten(#282c37, 10%);
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
float: right;
|
||||||
|
list-style: none;
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
li {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #9baec8;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.dashboard__content {
|
||||||
|
flex: 1;
|
||||||
|
background: #d9e1e8;
|
||||||
|
border-radius: 0 4px 4px 0;
|
||||||
|
|
||||||
|
.dashboard__content__content {
|
||||||
|
//padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dashboard__top-bar {
|
||||||
|
border-radius: 0 4px 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -14,6 +14,14 @@
|
||||||
&.entry-predecessor, &.entry-successor {
|
&.entry-predecessor, &.entry-successor {
|
||||||
background: #d9e1e8;
|
background: #d9e1e8;
|
||||||
border-left-color: #d9e1e8;
|
border-left-color: #d9e1e8;
|
||||||
|
|
||||||
|
.header {
|
||||||
|
.header__right {
|
||||||
|
.counter-btn {
|
||||||
|
color: darken(#d9e1e8, 15%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.entry-follow, &.entry-favourite {
|
&.entry-follow, &.entry-favourite {
|
||||||
|
@ -43,6 +51,14 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.activity-stream-embedded {
|
||||||
|
box-shadow: none;
|
||||||
|
|
||||||
|
.entry {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.entry__container {
|
.entry__container {
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ 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: [])
|
@statuses = @account.statuses.order('id desc').with_includes.with_counters
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html
|
format.html
|
||||||
|
|
|
@ -15,7 +15,7 @@ class Api::AccountsController < ApiController
|
||||||
end
|
end
|
||||||
|
|
||||||
def statuses
|
def statuses
|
||||||
@statuses = @account.statuses.order('created_at desc')
|
@statuses = @account.statuses.with_includes.with_counts.order('created_at desc')
|
||||||
end
|
end
|
||||||
|
|
||||||
def follow
|
def follow
|
||||||
|
|
|
@ -1,8 +1,16 @@
|
||||||
class HomeController < ApplicationController
|
class HomeController < ApplicationController
|
||||||
|
layout 'dashboard'
|
||||||
|
|
||||||
before_action :authenticate_user!
|
before_action :authenticate_user!
|
||||||
|
|
||||||
def index
|
def index
|
||||||
feed = Feed.new(:home, current_user.account)
|
feed = Feed.new(:home, current_user.account)
|
||||||
@statuses = feed.get(20, (params[:offset] || 0).to_i)
|
@statuses = feed.get(20, (params[:offset] || 0).to_i)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def mentions
|
||||||
|
feed = Feed.new(:mentions, current_user.account)
|
||||||
|
@statuses = feed.get(20, (params[:offset] || 0).to_i)
|
||||||
|
render action: :index
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -49,6 +49,14 @@ class Status < ActiveRecord::Base
|
||||||
content.truncate(80, omission: "...")
|
content.truncate(80, omission: "...")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def reblogs_count
|
||||||
|
self.attributes['reblogs_count'] || self.reblogs.count
|
||||||
|
end
|
||||||
|
|
||||||
|
def favourites_count
|
||||||
|
self.attributes['favourites_count'] || self.favourites.count
|
||||||
|
end
|
||||||
|
|
||||||
def mentions
|
def mentions
|
||||||
m = []
|
m = []
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,8 @@ attributes :id, :created_at, :in_reply_to_id
|
||||||
node(:uri) { |status| uri_for_target(status) }
|
node(:uri) { |status| uri_for_target(status) }
|
||||||
node(:content) { |status| status.local? ? linkify(status) : status.content }
|
node(:content) { |status| status.local? ? linkify(status) : status.content }
|
||||||
node(:url) { |status| url_for_target(status) }
|
node(:url) { |status| url_for_target(status) }
|
||||||
node(:reblogs_count) { |status| status.reblogs.count }
|
node(:reblogs_count) { |status| status.reblogs_count }
|
||||||
node(:favourites_count) { |status| status.favourites.count }
|
node(:favourites_count) { |status| status.favourites_count }
|
||||||
node(:favourited) { |status| current_user.account.favourited?(status) }
|
node(:favourited) { |status| current_user.account.favourited?(status) }
|
||||||
node(:reblogged) { |status| current_user.account.reblogged?(status) }
|
node(:reblogged) { |status| current_user.account.reblogged?(status) }
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
.activity-stream.activity-stream-headless
|
.activity-stream.activity-stream-embedded
|
||||||
- @statuses.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 }
|
||||||
|
|
|
@ -8,5 +8,4 @@
|
||||||
= csrf_meta_tags
|
= csrf_meta_tags
|
||||||
= yield :header_tags
|
= yield :header_tags
|
||||||
%body
|
%body
|
||||||
.container
|
= content_for?(:content) ? yield(:content) : yield
|
||||||
= content_for?(:content) ? yield(:content) : yield
|
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
- content_for :content do
|
- content_for :content do
|
||||||
.logo-container
|
.container
|
||||||
%h1
|
.logo-container
|
||||||
= link_to root_path do
|
%h1
|
||||||
= render partial: 'application/logo', locals: { dim: 200 }
|
= link_to root_path do
|
||||||
%small= Rails.configuration.x.local_domain
|
= render partial: 'application/logo', locals: { dim: 200 }
|
||||||
|
%small= Rails.configuration.x.local_domain
|
||||||
|
|
||||||
.form-container
|
.form-container
|
||||||
= yield
|
= yield
|
||||||
|
|
||||||
= render template: "layouts/application"
|
= render template: "layouts/application"
|
||||||
|
|
45
app/views/layouts/dashboard.html.haml
Normal file
45
app/views/layouts/dashboard.html.haml
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
- content_for :content do
|
||||||
|
.dashboard-wrapper
|
||||||
|
.dashboard__sidebar
|
||||||
|
.dashboard__top-bar.alternate
|
||||||
|
|
||||||
|
.dashboard__current-user
|
||||||
|
= link_to account_path(current_user.account) do
|
||||||
|
= image_tag current_user.account.avatar.url(:medium), class: 'dashboard__current-user__avatar'
|
||||||
|
%strong.dashboard__current-user__display-name= current_user.account.display_name
|
||||||
|
%span.dashboard__current-user__username= "@#{current_user.account.username}"
|
||||||
|
%ul
|
||||||
|
%li.active
|
||||||
|
= link_to root_path do
|
||||||
|
= fa_icon 'home'
|
||||||
|
Home
|
||||||
|
%li
|
||||||
|
= link_to mentions_path do
|
||||||
|
= fa_icon 'at'
|
||||||
|
Mentions
|
||||||
|
%li
|
||||||
|
= link_to root_path do
|
||||||
|
= fa_icon 'group'
|
||||||
|
Subscriptions
|
||||||
|
%li
|
||||||
|
= link_to oauth_authorized_applications_path do
|
||||||
|
= fa_icon 'shield'
|
||||||
|
Authorized apps
|
||||||
|
%li
|
||||||
|
= link_to root_path do
|
||||||
|
= fa_icon 'user'
|
||||||
|
Edit profile
|
||||||
|
%li
|
||||||
|
= link_to edit_registration_path(current_user) do
|
||||||
|
= fa_icon 'wrench'
|
||||||
|
Change password
|
||||||
|
.dashboard__content
|
||||||
|
.dashboard__top-bar
|
||||||
|
Home
|
||||||
|
%ul
|
||||||
|
%li= link_to fa_icon('sign-out'), destroy_user_session_path, method: :delete
|
||||||
|
.dashboard__content__content= yield
|
||||||
|
.footer
|
||||||
|
.domain= Rails.configuration.x.local_domain
|
||||||
|
|
||||||
|
= render template: "layouts/application"
|
|
@ -1,37 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>Doorkeeper</title>
|
|
||||||
<%= stylesheet_link_tag "doorkeeper/admin/application" %>
|
|
||||||
<%= csrf_meta_tags %>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="navbar navbar-inverse navbar-static-top" role="navigation">
|
|
||||||
<div class="container-fluid">
|
|
||||||
<div class="navbar-header">
|
|
||||||
<%= link_to t('doorkeeper.layouts.admin.nav.oauth2_provider'), oauth_applications_path, class: 'navbar-brand' %>
|
|
||||||
</div>
|
|
||||||
<ul class="nav navbar-nav">
|
|
||||||
<%= content_tag :li, class: "#{'active' if request.path == oauth_applications_path}" do %>
|
|
||||||
<%= link_to t('doorkeeper.layouts.admin.nav.applications'), oauth_applications_path %>
|
|
||||||
<% end %>
|
|
||||||
<%= content_tag :li do %>
|
|
||||||
<%= link_to 'Home', root_path %>
|
|
||||||
<% end %>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="container">
|
|
||||||
<%- if flash[:notice].present? %>
|
|
||||||
<div class="alert alert-info">
|
|
||||||
<%= flash[:notice] %>
|
|
||||||
</div>
|
|
||||||
<% end -%>
|
|
||||||
|
|
||||||
<%= yield %>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,23 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title><%= t('doorkeeper.layouts.application.title') %></title>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
|
|
||||||
<%= stylesheet_link_tag "doorkeeper/application" %>
|
|
||||||
<%= csrf_meta_tags %>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="container">
|
|
||||||
<%- if flash[:notice].present? %>
|
|
||||||
<div class="alert alert-info">
|
|
||||||
<%= flash[:notice] %>
|
|
||||||
</div>
|
|
||||||
<% end -%>
|
|
||||||
|
|
||||||
<%= yield %>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,5 +1,5 @@
|
||||||
- content_for :content do
|
- content_for :content do
|
||||||
= yield
|
.container= yield
|
||||||
.footer
|
.footer
|
||||||
.domain= Rails.configuration.x.local_domain
|
.domain= Rails.configuration.x.local_domain
|
||||||
|
|
||||||
|
|
|
@ -24,10 +24,10 @@
|
||||||
.header__right
|
.header__right
|
||||||
.counter-btn{ class: reblogged_by_me_class(status) }
|
.counter-btn{ class: reblogged_by_me_class(status) }
|
||||||
%i.fa.fa-retweet
|
%i.fa.fa-retweet
|
||||||
%span.counter-number= status.reblog? ? status.reblog.reblogs.count : status.reblogs_count
|
%span.counter-number= status.reblog? ? status.reblog.reblogs_count : status.reblogs_count
|
||||||
.counter-btn{ class: favourited_by_me_class(status) }
|
.counter-btn{ class: favourited_by_me_class(status) }
|
||||||
%i.fa.fa-star
|
%i.fa.fa-star
|
||||||
%span.counter-number= status.reblog? ? status.reblog.favourites.count : status.favourites_count
|
%span.counter-number= status.reblog? ? status.reblog.favourites_count : status.favourites_count
|
||||||
.content
|
.content
|
||||||
= status.reblog? ? (status.reblog.local? ? linkify(status.reblog) : status.reblog.content.html_safe) : (status.local? ? linkify(status) : 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)
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,4 @@
|
||||||
#!/usr/bin/env ruby
|
#!/usr/bin/env ruby
|
||||||
begin
|
|
||||||
load File.expand_path('../spring', __FILE__)
|
|
||||||
rescue LoadError => e
|
|
||||||
raise unless e.message.include?('spring')
|
|
||||||
end
|
|
||||||
APP_PATH = File.expand_path('../../config/application', __FILE__)
|
APP_PATH = File.expand_path('../../config/application', __FILE__)
|
||||||
require_relative '../config/boot'
|
require_relative '../config/boot'
|
||||||
require 'rails/commands'
|
require 'rails/commands'
|
||||||
|
|
5
bin/rake
5
bin/rake
|
@ -1,9 +1,4 @@
|
||||||
#!/usr/bin/env ruby
|
#!/usr/bin/env ruby
|
||||||
begin
|
|
||||||
load File.expand_path('../spring', __FILE__)
|
|
||||||
rescue LoadError => e
|
|
||||||
raise unless e.message.include?('spring')
|
|
||||||
end
|
|
||||||
require_relative '../config/boot'
|
require_relative '../config/boot'
|
||||||
require 'rake'
|
require 'rake'
|
||||||
Rake.application.run
|
Rake.application.run
|
||||||
|
|
15
bin/spring
15
bin/spring
|
@ -1,15 +0,0 @@
|
||||||
#!/usr/bin/env ruby
|
|
||||||
|
|
||||||
# This file loads spring without using Bundler, in order to be fast.
|
|
||||||
# It gets overwritten when you run the `spring binstub` command.
|
|
||||||
|
|
||||||
unless defined?(Spring)
|
|
||||||
require 'rubygems'
|
|
||||||
require 'bundler'
|
|
||||||
|
|
||||||
if (match = Bundler.default_lockfile.read.match(/^GEM$.*?^ (?: )*spring \((.*?)\)$.*?^$/m))
|
|
||||||
Gem.paths = { 'GEM_PATH' => [Bundler.bundle_path.to_s, *Gem.path].uniq }
|
|
||||||
gem 'spring', match[1]
|
|
||||||
require 'spring/binstub'
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -29,8 +29,9 @@ module Mastodon
|
||||||
config.autoload_paths += Dir[Rails.root.join('app', 'api', '*')]
|
config.autoload_paths += Dir[Rails.root.join('app', 'api', '*')]
|
||||||
|
|
||||||
config.to_prepare do
|
config.to_prepare do
|
||||||
Doorkeeper::AuthorizationsController.layout 'auth'
|
Doorkeeper::ApplicationsController.layout 'dashboard'
|
||||||
Doorkeeper::AuthorizedApplicationsController.layout 'auth'
|
Doorkeeper::AuthorizedApplicationsController.layout 'dashboard'
|
||||||
|
Doorkeeper::AuthorizationsController.layout 'auth'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
$redis = Redis.new(host: ENV['REDIS_HOST'] || 'localhost', port: ENV['REDIS_PORT'] || 6379)
|
$redis = Redis.new(host: ENV['REDIS_HOST'] || 'localhost', port: ENV['REDIS_PORT'] || 6379, driver: :hiredis)
|
||||||
|
|
13
config/puma.rb
Normal file
13
config/puma.rb
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
workers Integer(ENV['WEB_CONCURRENCY'] || 2)
|
||||||
|
threads_count = Integer(ENV['MAX_THREADS'] || 5)
|
||||||
|
threads threads_count, threads_count
|
||||||
|
|
||||||
|
preload_app!
|
||||||
|
|
||||||
|
rackup DefaultRackup
|
||||||
|
port ENV['PORT'] || 3000
|
||||||
|
environment ENV['RACK_ENV'] || 'development'
|
||||||
|
|
||||||
|
on_worker_boot do
|
||||||
|
ActiveRecord::Base.establish_connection
|
||||||
|
end
|
|
@ -49,5 +49,7 @@ Rails.application.routes.draw do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
get '/mentions', to: 'home#mentions', as: :mentions
|
||||||
|
|
||||||
root 'home#index'
|
root 'home#index'
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue