From 3554d638b31aa5ace2aa524db0165932c15d9a71 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 6 Oct 2016 21:27:58 +0200 Subject: [PATCH] Fix #72 - add follow/unfollow button to public profiles --- app/assets/javascripts/application_public.js | 2 ++ app/assets/stylesheets/accounts.scss | 7 +++++++ app/controllers/accounts_controller.rb | 10 ++++++++++ app/views/accounts/_header.html.haml | 7 +++++++ app/views/layouts/public.html.haml | 3 +++ config/initializers/assets.rb | 2 +- config/routes.rb | 3 +++ 7 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 app/assets/javascripts/application_public.js diff --git a/app/assets/javascripts/application_public.js b/app/assets/javascripts/application_public.js new file mode 100644 index 000000000..31a96fd2d --- /dev/null +++ b/app/assets/javascripts/application_public.js @@ -0,0 +1,2 @@ +//= require jquery +//= require jquery_ujs diff --git a/app/assets/stylesheets/accounts.scss b/app/assets/stylesheets/accounts.scss index f2be0fcf7..e1d5043db 100644 --- a/app/assets/stylesheets/accounts.scss +++ b/app/assets/stylesheets/accounts.scss @@ -58,6 +58,13 @@ } } + .controls { + position: absolute; + top: 10px; + right: 10px; + z-index: 2; + } + .details { display: flex; margin-top: 30px; diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index 9f4751771..b16938845 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -16,6 +16,16 @@ class AccountsController < ApplicationController end end + def follow + FollowService.new.call(current_user.account, @account.acct) + redirect_to account_path(@account) + end + + def unfollow + UnfollowService.new.call(current_user.account, @account) + redirect_to account_path(@account) + end + def followers @followers = @account.followers.order('follows.created_at desc').paginate(page: params[:page], per_page: 6) end diff --git a/app/views/accounts/_header.html.haml b/app/views/accounts/_header.html.haml index 371bc62c3..fb9abd691 100644 --- a/app/views/accounts/_header.html.haml +++ b/app/views/accounts/_header.html.haml @@ -1,4 +1,11 @@ .card{ style: "background-image: url(#{@account.header.url(:medium)})" } + - if user_signed_in? && current_account.id != @account.id + .controls + - if current_account.following?(@account) + = link_to 'Unfollow', unfollow_account_path(@account), data: { method: :post }, class: 'button' + - else + = link_to 'Follow', follow_account_path(@account), data: { method: :post }, class: 'button' + .avatar= image_tag @account.avatar.url(:large) %h1.name = display_name(@account) diff --git a/app/views/layouts/public.html.haml b/app/views/layouts/public.html.haml index 056393bba..0e56bef1f 100644 --- a/app/views/layouts/public.html.haml +++ b/app/views/layouts/public.html.haml @@ -1,3 +1,6 @@ +- content_for :header_tags do + = javascript_include_tag 'application_public' + - content_for :content do .container= yield .footer diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb index 23c5b0b67..14f4d1dcf 100644 --- a/config/initializers/assets.rb +++ b/config/initializers/assets.rb @@ -8,4 +8,4 @@ Rails.application.config.assets.version = '1.0' # Precompile additional assets. # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. -Rails.application.config.assets.precompile += %w( cable.js ) +Rails.application.config.assets.precompile += %w( application_public.js ) diff --git a/config/routes.rb b/config/routes.rb index 4a32cdaa2..8f9e5fe14 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -25,6 +25,9 @@ Rails.application.routes.draw do member do get :followers get :following + + post :follow + post :unfollow end end