diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2016-03-12 16:09:46 +0100 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2016-03-12 16:21:53 +0100 |
commit | aab9f57e369c492bad03bcf15411394897314b4d (patch) | |
tree | ae8cf704e2b2321993cabf326af82ae0f86b6697 /app | |
parent | 447cfef62d74a670ddd600c0240f41746ac2fe0a (diff) |
Adding config for puma, dashboard layout, fixing some queries
Diffstat (limited to 'app')
-rw-r--r-- | app/assets/stylesheets/application.scss | 2 | ||||
-rw-r--r-- | app/assets/stylesheets/dashboard.scss | 130 | ||||
-rw-r--r-- | app/assets/stylesheets/stream_entries.scss | 16 | ||||
-rw-r--r-- | app/controllers/accounts_controller.rb | 2 | ||||
-rw-r--r-- | app/controllers/api/accounts_controller.rb | 2 | ||||
-rw-r--r-- | app/controllers/home_controller.rb | 8 | ||||
-rw-r--r-- | app/models/status.rb | 8 | ||||
-rw-r--r-- | app/views/api/statuses/show.rabl | 4 | ||||
-rw-r--r-- | app/views/home/index.html.haml | 2 | ||||
-rw-r--r-- | app/views/layouts/application.html.haml | 3 | ||||
-rw-r--r-- | app/views/layouts/auth.html.haml | 15 | ||||
-rw-r--r-- | app/views/layouts/dashboard.html.haml | 45 | ||||
-rw-r--r-- | app/views/layouts/doorkeeper/admin.html.erb | 37 | ||||
-rw-r--r-- | app/views/layouts/doorkeeper/application.html.erb | 23 | ||||
-rw-r--r-- | app/views/layouts/public.html.haml | 2 | ||||
-rw-r--r-- | app/views/stream_entries/_status.html.haml | 4 |
16 files changed, 225 insertions, 78 deletions
diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index d4b462cab..e393e2a23 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -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+Mono); -@import "font-awesome-sprockets"; @import "font-awesome"; /* http://meyerweb.com/eric/tools/css/reset/ @@ -334,3 +333,4 @@ body { @import 'home'; @import 'accounts'; @import 'stream_entries'; +@import 'dashboard' diff --git a/app/assets/stylesheets/dashboard.scss b/app/assets/stylesheets/dashboard.scss new file mode 100644 index 000000000..05d495988 --- /dev/null +++ b/app/assets/stylesheets/dashboard.scss @@ -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; + } + } + +} diff --git a/app/assets/stylesheets/stream_entries.scss b/app/assets/stylesheets/stream_entries.scss index 31bec6374..ef302bc89 100644 --- a/app/assets/stylesheets/stream_entries.scss +++ b/app/assets/stylesheets/stream_entries.scss @@ -14,6 +14,14 @@ &.entry-predecessor, &.entry-successor { background: #d9e1e8; border-left-color: #d9e1e8; + + .header { + .header__right { + .counter-btn { + color: darken(#d9e1e8, 15%); + } + } + } } &.entry-follow, &.entry-favourite { @@ -43,6 +51,14 @@ } } + &.activity-stream-embedded { + box-shadow: none; + + .entry { + border-radius: 0; + } + } + .entry__container { display: flex; } diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index 156926927..47d114416 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -5,7 +5,7 @@ class AccountsController < ApplicationController before_action :set_webfinger_header 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| format.html diff --git a/app/controllers/api/accounts_controller.rb b/app/controllers/api/accounts_controller.rb index ac16ed7c1..13c2b3d8a 100644 --- a/app/controllers/api/accounts_controller.rb +++ b/app/controllers/api/accounts_controller.rb @@ -15,7 +15,7 @@ class Api::AccountsController < ApiController end def statuses - @statuses = @account.statuses.order('created_at desc') + @statuses = @account.statuses.with_includes.with_counts.order('created_at desc') end def follow diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb index 294749a22..5238b2fc0 100644 --- a/app/controllers/home_controller.rb +++ b/app/controllers/home_controller.rb @@ -1,8 +1,16 @@ class HomeController < ApplicationController + layout 'dashboard' + before_action :authenticate_user! def index feed = Feed.new(:home, current_user.account) @statuses = feed.get(20, (params[:offset] || 0).to_i) end + + def mentions + feed = Feed.new(:mentions, current_user.account) + @statuses = feed.get(20, (params[:offset] || 0).to_i) + render action: :index + end end diff --git a/app/models/status.rb b/app/models/status.rb index 4fedad107..52e6f8a21 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -49,6 +49,14 @@ class Status < ActiveRecord::Base content.truncate(80, omission: "...") 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 m = [] diff --git a/app/views/api/statuses/show.rabl b/app/views/api/statuses/show.rabl index 83377e0e8..6c4063b80 100644 --- a/app/views/api/statuses/show.rabl +++ b/app/views/api/statuses/show.rabl @@ -4,8 +4,8 @@ attributes :id, :created_at, :in_reply_to_id node(:uri) { |status| uri_for_target(status) } node(:content) { |status| status.local? ? linkify(status) : status.content } node(:url) { |status| url_for_target(status) } -node(:reblogs_count) { |status| status.reblogs.count } -node(:favourites_count) { |status| status.favourites.count } +node(:reblogs_count) { |status| status.reblogs_count } +node(:favourites_count) { |status| status.favourites_count } node(:favourited) { |status| current_user.account.favourited?(status) } node(:reblogged) { |status| current_user.account.reblogged?(status) } diff --git a/app/views/home/index.html.haml b/app/views/home/index.html.haml index 068c34408..2d1e9c091 100644 --- a/app/views/home/index.html.haml +++ b/app/views/home/index.html.haml @@ -1,3 +1,3 @@ -.activity-stream.activity-stream-headless +.activity-stream.activity-stream-embedded - @statuses.each do |status| = render partial: 'stream_entries/status', locals: { status: status, include_threads: false, is_successor: false, is_predecessor: false } diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 25b3b5b49..868944a21 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -8,5 +8,4 @@ = csrf_meta_tags = yield :header_tags %body - .container - = content_for?(:content) ? yield(:content) : yield + = content_for?(:content) ? yield(:content) : yield diff --git a/app/views/layouts/auth.html.haml b/app/views/layouts/auth.html.haml index 8a2c8fa74..bddba570a 100644 --- a/app/views/layouts/auth.html.haml +++ b/app/views/layouts/auth.html.haml @@ -1,11 +1,12 @@ - content_for :content do - .logo-container - %h1 - = link_to root_path do - = render partial: 'application/logo', locals: { dim: 200 } - %small= Rails.configuration.x.local_domain + .container + .logo-container + %h1 + = link_to root_path do + = render partial: 'application/logo', locals: { dim: 200 } + %small= Rails.configuration.x.local_domain - .form-container - = yield + .form-container + = yield = render template: "layouts/application" diff --git a/app/views/layouts/dashboard.html.haml b/app/views/layouts/dashboard.html.haml new file mode 100644 index 000000000..128bf8db9 --- /dev/null +++ b/app/views/layouts/dashboard.html.haml @@ -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" diff --git a/app/views/layouts/doorkeeper/admin.html.erb b/app/views/layouts/doorkeeper/admin.html.erb deleted file mode 100644 index 1d1a688a2..000000000 --- a/app/views/layouts/doorkeeper/admin.html.erb +++ /dev/null @@ -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> diff --git a/app/views/layouts/doorkeeper/application.html.erb b/app/views/layouts/doorkeeper/application.html.erb deleted file mode 100644 index 562005af0..000000000 --- a/app/views/layouts/doorkeeper/application.html.erb +++ /dev/null @@ -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> diff --git a/app/views/layouts/public.html.haml b/app/views/layouts/public.html.haml index eb3c54f9d..2234df225 100644 --- a/app/views/layouts/public.html.haml +++ b/app/views/layouts/public.html.haml @@ -1,5 +1,5 @@ - content_for :content do - = yield + .container= yield .footer .domain= Rails.configuration.x.local_domain diff --git a/app/views/stream_entries/_status.html.haml b/app/views/stream_entries/_status.html.haml index 6323501cc..16f036ad3 100644 --- a/app/views/stream_entries/_status.html.haml +++ b/app/views/stream_entries/_status.html.haml @@ -24,10 +24,10 @@ .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 + %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 + %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) |