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.

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