From 2c766bd4b4c6dcf8e7c9a6dd9421edca0de57aba Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 16 Nov 2016 17:51:02 +0100 Subject: Add user locale setting --- app/controllers/application_controller.rb | 7 +++++++ app/controllers/settings/preferences_controller.rb | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'app/controllers') diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index c7a99b22f..f9aeb127a 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -13,6 +13,7 @@ class ApplicationController < ActionController::Base rescue_from ActiveRecord::RecordNotFound, with: :not_found before_action :store_current_location, except: :raise_not_found, unless: :devise_controller? + before_action :set_locale, if: 'user_signed_in?' def raise_not_found raise ActionController::RoutingError, "No route matches #{params[:unmatched_route]}" @@ -24,6 +25,12 @@ class ApplicationController < ActionController::Base store_location_for(:user, request.url) end + def set_locale + I18n.locale = current_user.locale || I18n.default_locale + rescue I18n::InvalidLocale + I18n.locale = I18n.default_locale + end + protected def not_found diff --git a/app/controllers/settings/preferences_controller.rb b/app/controllers/settings/preferences_controller.rb index 4dc2cd61f..5be8719ae 100644 --- a/app/controllers/settings/preferences_controller.rb +++ b/app/controllers/settings/preferences_controller.rb @@ -14,7 +14,7 @@ class Settings::PreferencesController < ApplicationController 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 + if current_user.update(user_params.except(:notification_emails)) redirect_to settings_preferences_path, notice: I18n.t('generic.changes_saved_msg') else render action: :show @@ -24,6 +24,6 @@ class Settings::PreferencesController < ApplicationController private def user_params - params.require(:user).permit(notification_emails: [:follow, :reblog, :favourite, :mention]) + params.require(:user).permit(:locale, notification_emails: [:follow, :reblog, :favourite, :mention]) end end -- cgit