settings_controller.rb 1.8 KB

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