The code powering m.abunchtell.com https://m.abunchtell.com
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.
 
 
 
 

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