app/controllers/preferences_controller.rb
class PreferencesController < ApplicationController
def index
@page_title = t('preferences.page_title')
@prefs = current_user.prefs
@user = current_user
end
def update
@prefs = current_user.prefs
@user = current_user
user_updated = current_user.update(user_params)
prefs_updated = current_user.preference.update(prefs_params)
if (user_updated && prefs_updated)
if params['user']['password'].present? # password updated?
logout_user t('preferences.password_changed')
else
preference_updated
end
else
msg = "Preferences could not be updated: "
msg += "User model errors; " unless user_updated
msg += "Prefs model errors; " unless prefs_updated
notify :warning, msg
render 'index'
end
end
def render_date_format
format = params[:date_format]
render :body => l(Date.current, :format => format)
end
private
def prefs_params
params.require(:prefs).permit(
:date_format, :week_starts, :show_number_completed,
:show_completed_projects_in_sidebar, :show_hidden_contexts_in_sidebar,
:staleness_starts, :due_style, :locale, :title_date_format, :time_zone,
:show_hidden_projects_in_sidebar, :show_project_on_todo_done,
:review_period, :refresh, :verbose_action_descriptors,
:mobile_todos_per_page, :sms_email, :sms_context_id, :theme)
end
def user_params
params.require(:user).permit(:login, :first_name, :last_name, :email, :password_confirmation, :password, :auth_type, :open_id_url)
end
# Display notification if preferences are successful updated
def preference_updated
notify :notice, t('preferences.updated')
redirect_to :action => 'index'
end
end