44 lines
1.4 KiB
Ruby
44 lines
1.4 KiB
Ruby
class PreferencesController < ApplicationController
|
|
layout "site"
|
|
|
|
before_action :authorize_web
|
|
before_action :set_locale
|
|
|
|
authorize_resource :class => false
|
|
|
|
before_action :check_database_readable
|
|
before_action :check_database_writable, :only => [:update]
|
|
|
|
def show; end
|
|
|
|
def update
|
|
current_user.languages = params[:user][:languages].split(",")
|
|
|
|
current_user.preferred_editor = if params[:user][:preferred_editor] == "default"
|
|
nil
|
|
else
|
|
params[:user][:preferred_editor]
|
|
end
|
|
|
|
success = current_user.save
|
|
|
|
if params[:site_color_scheme]
|
|
site_color_scheme_preference = current_user.preferences.find_or_create_by(:k => "site.color_scheme")
|
|
success &= site_color_scheme_preference.update(:v => params[:site_color_scheme])
|
|
end
|
|
|
|
if params[:map_color_scheme]
|
|
map_color_scheme_preference = current_user.preferences.find_or_create_by(:k => "map.color_scheme")
|
|
success &= map_color_scheme_preference.update(:v => params[:map_color_scheme])
|
|
end
|
|
|
|
if success
|
|
# Use a partial so that it is rendered during the next page load in the correct language.
|
|
flash[:notice] = { :partial => "preferences/update_success_flash" }
|
|
redirect_to preferences_path
|
|
else
|
|
flash.now[:error] = t ".failure"
|
|
render :show
|
|
end
|
|
end
|
|
end
|