mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FEATURE: Site settings defaults per locale
This change-set allows setting different defaults for different locales. It also: - Adds extensive testing around site setting validation - raises deprecation error if site setting has the default property based on env - relocated site settings for dev and tests in the initializer - deprecated client_setting in the site setting's loading process - ensure it raises when a enum site setting being set - default_locale is promoted to `required` category. - fixes incorrect default setting and validation - fixes ensure type check for site settings - creates a benchmark for site setting - sets reasonable defaults for Chinese
This commit is contained in:
66
lib/site_settings/validations.rb
Normal file
66
lib/site_settings/validations.rb
Normal file
@@ -0,0 +1,66 @@
|
||||
module SiteSettings; end
|
||||
|
||||
module SiteSettings::Validations
|
||||
def validate_error(key)
|
||||
raise Discourse::InvalidParameters.new(I18n.t("errors.site_settings.#{key}"))
|
||||
end
|
||||
|
||||
def validate_min_username_length(new_val)
|
||||
validate_error :min_username_length_range if new_val > SiteSetting.max_username_length
|
||||
validate_error :min_username_length_exists if User.where('length(username) < ?', new_val).exists?
|
||||
end
|
||||
|
||||
def validate_max_username_length(new_val)
|
||||
validate_error :min_username_length_range if new_val < SiteSetting.min_username_length
|
||||
validate_error :max_username_length_exists if User.where('length(username) > ?', new_val).exists?
|
||||
end
|
||||
|
||||
def validate_default_categories(new_val, default_categories_selected)
|
||||
validate_error :default_categories_already_selected if (new_val.split("|").to_set & default_categories_selected).size > 0
|
||||
end
|
||||
|
||||
def validate_default_categories_watching(new_val)
|
||||
default_categories_selected = [
|
||||
SiteSetting.default_categories_tracking.split("|"),
|
||||
SiteSetting.default_categories_muted.split("|"),
|
||||
SiteSetting.default_categories_watching_first_post.split("|")
|
||||
].flatten.to_set
|
||||
|
||||
validate_default_categories(new_val, default_categories_selected)
|
||||
end
|
||||
|
||||
def validate_default_categories_tracking(new_val)
|
||||
default_categories_selected = [
|
||||
SiteSetting.default_categories_watching.split("|"),
|
||||
SiteSetting.default_categories_muted.split("|"),
|
||||
SiteSetting.default_categories_watching_first_post.split("|")
|
||||
].flatten.to_set
|
||||
|
||||
validate_default_categories(new_val, default_categories_selected)
|
||||
end
|
||||
|
||||
def validate_default_categories_muted(new_val)
|
||||
default_categories_selected = [
|
||||
SiteSetting.default_categories_watching.split("|"),
|
||||
SiteSetting.default_categories_tracking.split("|"),
|
||||
SiteSetting.default_categories_watching_first_post.split("|")
|
||||
].flatten.to_set
|
||||
|
||||
validate_default_categories(new_val, default_categories_selected)
|
||||
end
|
||||
|
||||
def validate_default_categories_watching_first_post(new_val)
|
||||
default_categories_selected = [
|
||||
SiteSetting.default_categories_watching.split("|"),
|
||||
SiteSetting.default_categories_tracking.split("|"),
|
||||
SiteSetting.default_categories_muted.split("|")
|
||||
].flatten.to_set
|
||||
|
||||
validate_default_categories(new_val, default_categories_selected)
|
||||
end
|
||||
|
||||
def validate_enable_s3_uploads(new_val)
|
||||
validate_error :s3_upload_bucket_is_required if new_val == "t" && SiteSetting.s3_upload_bucket.blank?
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user