logo

mastofe

My custom branche(s) on git.pleroma.social/pleroma/mastofe
commit: 7a6d95f70ccb12d61355ecd677eff40dd13260b7
parent: 9b195f5dd34ad646e1300abaaa42e10cf43cd5db
Author: Eugen Rochko <eugen@zeonfederated.com>
Date:   Fri, 14 Oct 2016 02:28:49 +0200

E-mail preferences page

Diffstat:

Mapp/assets/javascripts/components/features/ui/components/navigation_bar.jsx2+-
Mapp/assets/stylesheets/application.scss19+++++++++++++++++++
Aapp/controllers/settings/preferences_controller.rb27+++++++++++++++++++++++++++
Aapp/controllers/settings/profiles_controller.rb27+++++++++++++++++++++++++++
Dapp/controllers/settings_controller.rb27---------------------------
Dapp/helpers/settings_helper.rb2--
Mapp/views/auth/registrations/edit.html.haml3+++
Aapp/views/settings/preferences/show.html.haml22++++++++++++++++++++++
Aapp/views/settings/profiles/show.html.haml19+++++++++++++++++++
Aapp/views/settings/shared/_links.html.haml7+++++++
Dapp/views/settings/show.html.haml17-----------------
Mconfig/routes.rb6+++++-
Aspec/controllers/settings/preferences_controller_spec.rb16++++++++++++++++
Aspec/controllers/settings/profiles_controller_spec.rb16++++++++++++++++
Dspec/controllers/settings_controller_spec.rb16----------------
Dspec/helpers/settings_helper_spec.rb5-----
16 files changed, 162 insertions(+), 69 deletions(-)

diff --git a/app/assets/javascripts/components/features/ui/components/navigation_bar.jsx b/app/assets/javascripts/components/features/ui/components/navigation_bar.jsx @@ -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> ); diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss @@ -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; diff --git a/app/controllers/settings/preferences_controller.rb b/app/controllers/settings/preferences_controller.rb @@ -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 diff --git a/app/controllers/settings/profiles_controller.rb b/app/controllers/settings/profiles_controller.rb @@ -0,0 +1,27 @@ +class Settings::ProfilesController < ApplicationController + layout 'auth' + + before_action :authenticate_user! + before_action :set_account + + def show + end + + def update + if @account.update(account_params) + redirect_to settings_profile_path, notice: 'Changes successfully saved!' + else + render action: :show + end + end + + private + + def account_params + params.require(:account).permit(:display_name, :note, :avatar, :header) + end + + def set_account + @account = current_user.account + end +end diff --git a/app/controllers/settings_controller.rb b/app/controllers/settings_controller.rb @@ -1,27 +0,0 @@ -class SettingsController < ApplicationController - layout 'auth' - - before_action :authenticate_user! - before_action :set_account - - def show - end - - def update - if @account.update(account_params) - redirect_to settings_path, notice: 'Changes successfully saved!' - else - render action: :show - end - end - - private - - def account_params - params.require(:account).permit(:display_name, :note, :avatar, :header) - end - - def set_account - @account = current_user.account - end -end diff --git a/app/helpers/settings_helper.rb b/app/helpers/settings_helper.rb @@ -1,2 +0,0 @@ -module SettingsHelper -end diff --git a/app/views/auth/registrations/edit.html.haml b/app/views/auth/registrations/edit.html.haml @@ -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" diff --git a/app/views/settings/preferences/show.html.haml b/app/views/settings/preferences/show.html.haml @@ -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" diff --git a/app/views/settings/profiles/show.html.haml b/app/views/settings/profiles/show.html.haml @@ -0,0 +1,19 @@ +- content_for :page_title do + Edit profile + += form_for @account, url: settings_profile_path, html: { method: :put } do |f| + .field + = f.text_field :display_name, placeholder: 'Display name' + .field + = f.text_area :note, placeholder: 'Bio' + .file-field + = f.label :avatar + = f.file_field :avatar + .file-field + = f.label :header + = f.file_field :header + + .actions + = f.button 'Save changes', type: :submit + +.form-footer= render "settings/shared/links" diff --git a/app/views/settings/shared/_links.html.haml b/app/views/settings/shared/_links.html.haml @@ -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 diff --git a/app/views/settings/show.html.haml b/app/views/settings/show.html.haml @@ -1,17 +0,0 @@ -- content_for :page_title do - Edit profile - -= form_for @account, url: settings_path, html: { method: :put } do |f| - .field - = f.text_field :display_name, placeholder: 'Display name' - .field - = f.text_area :note, placeholder: 'Bio' - .file-field - = f.label :avatar - = f.file_field :avatar - .file-field - = f.label :header - = f.file_field :header - - .actions - = f.button 'Save changes', type: :submit diff --git a/config/routes.rb b/config/routes.rb @@ -31,7 +31,11 @@ Rails.application.routes.draw do 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 diff --git a/spec/controllers/settings/preferences_controller_spec.rb b/spec/controllers/settings/preferences_controller_spec.rb @@ -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 diff --git a/spec/controllers/settings/profiles_controller_spec.rb b/spec/controllers/settings/profiles_controller_spec.rb @@ -0,0 +1,16 @@ +require 'rails_helper' + +RSpec.describe Settings::ProfilesController, 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 diff --git a/spec/controllers/settings_controller_spec.rb b/spec/controllers/settings_controller_spec.rb @@ -1,16 +0,0 @@ -require 'rails_helper' - -RSpec.describe SettingsController, 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 diff --git a/spec/helpers/settings_helper_spec.rb b/spec/helpers/settings_helper_spec.rb @@ -1,5 +0,0 @@ -require 'rails_helper' - -RSpec.describe SettingsHelper, type: :helper do - -end