diff options
Diffstat (limited to 'app/controllers/admin')
-rw-r--r-- | app/controllers/admin/settings_controller.rb | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/app/controllers/admin/settings_controller.rb b/app/controllers/admin/settings_controller.rb index fc9064068..fcd42c79c 100644 --- a/app/controllers/admin/settings_controller.rb +++ b/app/controllers/admin/settings_controller.rb @@ -2,38 +2,43 @@ module Admin class SettingsController < BaseController + ADMIN_SETTINGS = %w( + site_contact_username + site_contact_email + site_title + site_description + site_extended_description + open_registrations + closed_registrations_message + ).freeze BOOLEAN_SETTINGS = %w(open_registrations).freeze - def index + def edit @settings = Setting.all_as_records end def update - @setting = Setting.where(var: params[:id]).first_or_initialize(var: params[:id]) - @setting.update(value: value_for_update) - - respond_to do |format| - format.html { redirect_to admin_settings_path } - format.json { respond_with_bip(@setting) } + settings_params.each do |key, value| + setting = Setting.where(var: key).first_or_initialize(var: key) + setting.update(value: value_for_update(key, value)) end + + flash[:notice] = 'Success!' + redirect_to edit_admin_settings_path end private def settings_params - params.require(:setting).permit(:value) + params.permit(ADMIN_SETTINGS) end - def value_for_update - if updating_boolean_setting? - settings_params[:value] == 'true' + def value_for_update(key, value) + if BOOLEAN_SETTINGS.include?(key) + value == 'true' else - settings_params[:value] + value end end - - def updating_boolean_setting? - BOOLEAN_SETTINGS.include?(params[:id]) - end end end |