You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
1.4 KiB

  1. # frozen_string_literal: true
  2. module Admin
  3. class SettingsController < BaseController
  4. ADMIN_SETTINGS = %w(
  5. site_contact_username
  6. site_contact_email
  7. site_title
  8. site_description
  9. site_extended_description
  10. site_terms
  11. open_registrations
  12. closed_registrations_message
  13. open_deletion
  14. timeline_preview
  15. bootstrap_timeline_accounts
  16. thumbnail
  17. ).freeze
  18. BOOLEAN_SETTINGS = %w(
  19. open_registrations
  20. open_deletion
  21. timeline_preview
  22. ).freeze
  23. UPLOAD_SETTINGS = %w(
  24. thumbnail
  25. ).freeze
  26. def edit
  27. @admin_settings = Form::AdminSettings.new
  28. end
  29. def update
  30. settings_params.each do |key, value|
  31. if UPLOAD_SETTINGS.include?(key)
  32. upload = SiteUpload.where(var: key).first_or_initialize(var: key)
  33. upload.update(file: value)
  34. else
  35. setting = Setting.where(var: key).first_or_initialize(var: key)
  36. setting.update(value: value_for_update(key, value))
  37. end
  38. end
  39. flash[:notice] = I18n.t('generic.changes_saved_msg')
  40. redirect_to edit_admin_settings_path
  41. end
  42. private
  43. def settings_params
  44. params.require(:form_admin_settings).permit(ADMIN_SETTINGS)
  45. end
  46. def value_for_update(key, value)
  47. if BOOLEAN_SETTINGS.include?(key)
  48. value == '1'
  49. else
  50. value
  51. end
  52. end
  53. end
  54. end