]> cat aescling's git repositories - mastodon.git/blob - app/controllers/admin/settings_controller.rb
Replace SVG asset with Custom mascot (#8766)
[mastodon.git] / app / controllers / admin / settings_controller.rb
1 # frozen_string_literal: true
2
3 module Admin
4 class SettingsController < BaseController
5 ADMIN_SETTINGS = %w(
6 site_contact_username
7 site_contact_email
8 site_title
9 site_short_description
10 site_description
11 site_extended_description
12 site_terms
13 open_registrations
14 closed_registrations_message
15 open_deletion
16 timeline_preview
17 show_staff_badge
18 bootstrap_timeline_accounts
19 theme
20 thumbnail
21 hero
22 mascot
23 min_invite_role
24 activity_api_enabled
25 peers_api_enabled
26 show_known_fediverse_at_about_page
27 preview_sensitive_media
28 custom_css
29 ).freeze
30
31 BOOLEAN_SETTINGS = %w(
32 open_registrations
33 open_deletion
34 timeline_preview
35 show_staff_badge
36 activity_api_enabled
37 peers_api_enabled
38 show_known_fediverse_at_about_page
39 preview_sensitive_media
40 ).freeze
41
42 UPLOAD_SETTINGS = %w(
43 thumbnail
44 hero
45 mascot
46 ).freeze
47
48 def edit
49 authorize :settings, :show?
50 @admin_settings = Form::AdminSettings.new
51 end
52
53 def update
54 authorize :settings, :update?
55
56 settings_params.each do |key, value|
57 if UPLOAD_SETTINGS.include?(key)
58 upload = SiteUpload.where(var: key).first_or_initialize(var: key)
59 upload.update(file: value)
60 else
61 setting = Setting.where(var: key).first_or_initialize(var: key)
62 setting.update(value: value_for_update(key, value))
63 end
64 end
65
66 flash[:notice] = I18n.t('generic.changes_saved_msg')
67 redirect_to edit_admin_settings_path
68 end
69
70 private
71
72 def settings_params
73 params.require(:form_admin_settings).permit(ADMIN_SETTINGS)
74 end
75
76 def value_for_update(key, value)
77 if BOOLEAN_SETTINGS.include?(key)
78 value == '1'
79 else
80 value
81 end
82 end
83 end
84 end
This page took 0.106387 seconds and 5 git commands to generate.