Skip to content

Commit

Permalink
E-mail preferences page
Browse files Browse the repository at this point in the history
  • Loading branch information
Gargron committed Oct 14, 2016
1 parent 9b195f5 commit 7a6d95f
Show file tree
Hide file tree
Showing 13 changed files with 107 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ const NavigationBar = React.createClass({

<div style={{ flex: '1 1 auto', marginLeft: '8px', color: '#9baec8' }}>
<strong style={{ fontWeight: '500', display: 'block', color: '#fff' }}>{this.props.account.get('acct')}</strong>
<a href='/settings' style={{ color: 'inherit', textDecoration: 'none' }}>Settings</a> · <Link to='/statuses/all' style={{ color: 'inherit', textDecoration: 'none' }}>Public timeline</Link> · <a href='/auth/sign_out' data-method='delete' style={{ color: 'inherit', textDecoration: 'none' }}>Logout</a>
<a href='/settings/profile' style={{ color: 'inherit', textDecoration: 'none' }}>Settings</a> · <Link to='/statuses/all' style={{ color: 'inherit', textDecoration: 'none' }}>Public timeline</Link> · <a href='/auth/sign_out' data-method='delete' style={{ color: 'inherit', textDecoration: 'none' }}>Logout</a>
</div>
</div>
);
Expand Down
19 changes: 19 additions & 0 deletions app/assets/stylesheets/application.scss
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,25 @@ body {
}
}

.fields-group {
margin-bottom: 25px;
}

.boolean-field {
margin-bottom: 5px;

label {
font-family: 'Roboto';
font-size: 14px;
color: #9baec8;
}

input[type=checkbox] {
display: inline-block;
margin-bottom: -13px;
}
}

input[type=text], input[type=email], input[type=password], textarea {
background: transparent;
border: 0;
Expand Down
27 changes: 27 additions & 0 deletions app/controllers/settings/preferences_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
class Settings::PreferencesController < ApplicationController
layout 'auth'

before_action :authenticate_user!

def show
end

def update
current_user.settings(:notification_emails).follow = user_params[:notification_emails][:follow] == '1'
current_user.settings(:notification_emails).reblog = user_params[:notification_emails][:reblog] == '1'
current_user.settings(:notification_emails).favourite = user_params[:notification_emails][:favourite] == '1'
current_user.settings(:notification_emails).mention = user_params[:notification_emails][:mention] == '1'

if current_user.save
redirect_to settings_preferences_path, notice: 'Changes successfully saved!'
else
render action: :show
end
end

private

def user_params
params.require(:user).permit(notification_emails: [:follow, :reblog, :favourite, :mention])
end
end
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
class SettingsController < ApplicationController
class Settings::ProfilesController < ApplicationController
layout 'auth'

before_action :authenticate_user!
Expand All @@ -9,7 +9,7 @@ def show

def update
if @account.update(account_params)
redirect_to settings_path, notice: 'Changes successfully saved!'
redirect_to settings_profile_path, notice: 'Changes successfully saved!'
else
render action: :show
end
Expand Down
2 changes: 0 additions & 2 deletions app/helpers/settings_helper.rb

This file was deleted.

3 changes: 3 additions & 0 deletions app/views/auth/registrations/edit.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,8 @@
= f.password_field :password_confirmation, autocomplete: "off", placeholder: 'Confirm new password'
.field
= f.password_field :current_password, autocomplete: "off", placeholder: 'Current password'

.actions
= f.button "Save changes", type: 'submit'

.form-footer= render "settings/shared/links"
22 changes: 22 additions & 0 deletions app/views/settings/preferences/show.html.haml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
- content_for :page_title do
Preferences

= form_for current_user, url: settings_preferences_path, html: { method: :put } do |f|
= f.fields_for :notification_emails, current_user.settings(:notification_emails) do |ff|
.boolean-field
= ff.check_box :follow
= ff.label :follow, 'Send e-mail when someone follows you'
.boolean-field
= ff.check_box :reblog
= ff.label :reblog, 'Send e-mail when someone reblogs your status'
.boolean-field
= ff.check_box :favourite
= ff.label :favourite, 'Send e-mail when someone favourites your status'
.boolean-field
= ff.check_box :mention
= ff.label :mention, 'Send e-mail when someone mentions you'

.actions
= f.button 'Save changes', type: :submit

.form-footer= render "settings/shared/links"
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
- content_for :page_title do
Edit profile

= form_for @account, url: settings_path, html: { method: :put } do |f|
= form_for @account, url: settings_profile_path, html: { method: :put } do |f|
.field
= f.text_field :display_name, placeholder: 'Display name'
.field
Expand All @@ -14,4 +14,6 @@
= f.file_field :header

.actions
= f.button 'Save changes', type: :submit
= f.button 'Save changes', type: :submit

.form-footer= render "settings/shared/links"
7 changes: 7 additions & 0 deletions app/views/settings/shared/_links.html.haml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
%ul.no-list
- if controller_name != 'profiles'
%li= link_to "Edit profile", settings_profile_path
- if controller_name != 'preferences'
%li= link_to "Preferences", settings_preferences_path
- if controller_name != 'registrations'
%li= link_to "Change password", edit_user_registration_path
6 changes: 5 additions & 1 deletion config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,11 @@
end
end

resource :settings, only: [:show, :update]
namespace :settings do
resource :profile, only: [:show, :update]
resource :preferences, only: [:show, :update]
end

resources :media, only: [:show]

namespace :api do
Expand Down
16 changes: 16 additions & 0 deletions spec/controllers/settings/preferences_controller_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
require 'rails_helper'

RSpec.describe Settings::PreferencesController, type: :controller do

before do
sign_in Fabricate(:user), scope: :user
end

describe "GET #show" do
it "returns http success" do
get :show
expect(response).to have_http_status(:success)
end
end

end
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
require 'rails_helper'

RSpec.describe SettingsController, type: :controller do
RSpec.describe Settings::ProfilesController, type: :controller do

before do
sign_in Fabricate(:user), scope: :user
Expand Down
5 changes: 0 additions & 5 deletions spec/helpers/settings_helper_spec.rb

This file was deleted.

0 comments on commit 7a6d95f

Please sign in to comment.