Hold usable value lists in admin settings form (#36268)

This commit is contained in:
Matt Jankowski 2025-09-26 04:21:03 -04:00 committed by GitHub
parent 11bd515648
commit f61d8cb02a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 8 additions and 6 deletions

View File

@ -82,15 +82,17 @@ class Form::AdminSettings
}.freeze
DESCRIPTION_LIMIT = 200
DOMAIN_BLOCK_AUDIENCES = %w(disabled users all).freeze
REGISTRATION_MODES = %w(open approved none).freeze
attr_accessor(*KEYS)
validates :registrations_mode, inclusion: { in: %w(open approved none) }, if: -> { defined?(@registrations_mode) }
validates :registrations_mode, inclusion: { in: REGISTRATION_MODES }, if: -> { defined?(@registrations_mode) }
validates :site_contact_email, :site_contact_username, presence: true, if: -> { defined?(@site_contact_username) || defined?(@site_contact_email) }
validates :site_contact_username, existing_username: true, if: -> { defined?(@site_contact_username) }
validates :bootstrap_timeline_accounts, existing_username: { multiple: true }, if: -> { defined?(@bootstrap_timeline_accounts) }
validates :show_domain_blocks, inclusion: { in: %w(disabled users all) }, if: -> { defined?(@show_domain_blocks) }
validates :show_domain_blocks_rationale, inclusion: { in: %w(disabled users all) }, if: -> { defined?(@show_domain_blocks_rationale) }
validates :show_domain_blocks, inclusion: { in: DOMAIN_BLOCK_AUDIENCES }, if: -> { defined?(@show_domain_blocks) }
validates :show_domain_blocks_rationale, inclusion: { in: DOMAIN_BLOCK_AUDIENCES }, if: -> { defined?(@show_domain_blocks_rationale) }
validates :media_cache_retention_period, :content_cache_retention_period, :backups_retention_period, numericality: { only_integer: true }, allow_blank: true, if: -> { defined?(@media_cache_retention_period) || defined?(@content_cache_retention_period) || defined?(@backups_retention_period) }
validates :min_age, numericality: { only_integer: true }, allow_blank: true, if: -> { defined?(@min_age) }
validates :site_short_description, length: { maximum: DESCRIPTION_LIMIT }, if: -> { defined?(@site_short_description) }

View File

@ -24,7 +24,7 @@
.fields-row__column.fields-row__column-6.fields-group
= f.input :show_domain_blocks,
collection_wrapper_tag: 'ul',
collection: %i(disabled users all),
collection: f.object.class::DOMAIN_BLOCK_AUDIENCES,
include_blank: false,
item_wrapper_tag: 'li',
label_method: ->(value) { t("admin.settings.domain_blocks.#{value}") },
@ -32,7 +32,7 @@
.fields-row__column.fields-row__column-6.fields-group
= f.input :show_domain_blocks_rationale,
collection_wrapper_tag: 'ul',
collection: %i(disabled users all),
collection: f.object.class::DOMAIN_BLOCK_AUDIENCES,
include_blank: false,
item_wrapper_tag: 'li',
label_method: ->(value) { t("admin.settings.domain_blocks.#{value}") },

View File

@ -18,7 +18,7 @@
.fields-row
.fields-row__column.fields-row__column-6.fields-group
= f.input :registrations_mode,
collection: %w(open approved none),
collection: f.object.class::REGISTRATION_MODES,
include_blank: false,
label_method: ->(mode) { I18n.t("admin.settings.registrations_mode.modes.#{mode}") },
warning_hint: I18n.t('admin.settings.registrations_mode.warning_hint'),