<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>
);
}
}
+ .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;
--- /dev/null
+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
-class SettingsController < ApplicationController
+class Settings::ProfilesController < ApplicationController
layout 'auth'
before_action :authenticate_user!
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
+++ /dev/null
-module SettingsHelper
-end
= 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"
--- /dev/null
+- 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"
- 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
= f.file_field :header
.actions
- = f.button 'Save changes', type: :submit
+ = f.button 'Save changes', type: :submit
+
+.form-footer= render "settings/shared/links"
--- /dev/null
+%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
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
--- /dev/null
+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
require 'rails_helper'
-RSpec.describe SettingsController, type: :controller do
+RSpec.describe Settings::ProfilesController, type: :controller do
before do
sign_in Fabricate(:user), scope: :user
+++ /dev/null
-require 'rails_helper'
-
-RSpec.describe SettingsHelper, type: :helper do
-
-end