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.

73 lines
1.6 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. show_staff_badge
  16. bootstrap_timeline_accounts
  17. thumbnail
  18. min_invite_role
  19. activity_api_enabled
  20. peers_api_enabled
  21. ).freeze
  22. BOOLEAN_SETTINGS = %w(
  23. open_registrations
  24. open_deletion
  25. timeline_preview
  26. show_staff_badge
  27. activity_api_enabled
  28. peers_api_enabled
  29. ).freeze
  30. UPLOAD_SETTINGS = %w(
  31. thumbnail
  32. ).freeze
  33. def edit
  34. authorize :settings, :show?
  35. @admin_settings = Form::AdminSettings.new
  36. end
  37. def update
  38. authorize :settings, :update?
  39. settings_params.each do |key, value|
  40. if UPLOAD_SETTINGS.include?(key)
  41. upload = SiteUpload.where(var: key).first_or_initialize(var: key)
  42. upload.update(file: value)
  43. else
  44. setting = Setting.where(var: key).first_or_initialize(var: key)
  45. setting.update(value: value_for_update(key, value))
  46. end
  47. end
  48. flash[:notice] = I18n.t('generic.changes_saved_msg')
  49. redirect_to edit_admin_settings_path
  50. end
  51. private
  52. def settings_params
  53. params.require(:form_admin_settings).permit(ADMIN_SETTINGS)
  54. end
  55. def value_for_update(key, value)
  56. if BOOLEAN_SETTINGS.include?(key)
  57. value == '1'
  58. else
  59. value
  60. end
  61. end
  62. end
  63. end