@ -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 |
@ -1,2 +0,0 @@ | |||||
module SettingsHelper | |||||
end |
@ -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" |
@ -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 |
@ -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 |
@ -1,6 +1,6 @@ | |||||
require 'rails_helper' | require 'rails_helper' | ||||
RSpec.describe SettingsController, type: :controller do | |||||
RSpec.describe Settings::ProfilesController, type: :controller do | |||||
before do | before do | ||||
sign_in Fabricate(:user), scope: :user | sign_in Fabricate(:user), scope: :user |
@ -1,5 +0,0 @@ | |||||
require 'rails_helper' | |||||
RSpec.describe SettingsHelper, type: :helper do | |||||
end |