mirror of
https://github.com/discourse/discourse.git
synced 2025-05-23 23:31:18 +08:00
DEV: the ability to define setting areas (#28570)
A new setting attribute is used to define the areas (separated by `|`). In addition, endpoint `/admin/config/site_settings.json` accepts new `filter_area` data.
This commit is contained in:

committed by
GitHub

parent
050c665160
commit
7577231ba2
@ -87,6 +87,10 @@ module SiteSettingExtension
|
||||
@categories ||= {}
|
||||
end
|
||||
|
||||
def areas
|
||||
@areas ||= {}
|
||||
end
|
||||
|
||||
def mandatory_values
|
||||
@mandatory_values ||= {}
|
||||
end
|
||||
@ -194,7 +198,8 @@ module SiteSettingExtension
|
||||
filter_categories: nil,
|
||||
filter_plugin: nil,
|
||||
filter_names: nil,
|
||||
filter_allowed_hidden: nil
|
||||
filter_allowed_hidden: nil,
|
||||
filter_area: nil
|
||||
)
|
||||
locale_setting_hash = {
|
||||
setting: "default_locale",
|
||||
@ -231,6 +236,13 @@ module SiteSettingExtension
|
||||
true
|
||||
end
|
||||
end
|
||||
.select do |setting_name, _|
|
||||
if filter_area
|
||||
Array.wrap(areas[setting_name]).include?(filter_area)
|
||||
else
|
||||
true
|
||||
end
|
||||
end
|
||||
.select do |setting_name, _|
|
||||
if filter_plugin
|
||||
plugins[setting_name] == filter_plugin
|
||||
@ -681,6 +693,15 @@ module SiteSettingExtension
|
||||
|
||||
categories[name] = opts[:category] || :uncategorized
|
||||
|
||||
if opts[:area]
|
||||
split_areas = opts[:area].split("|")
|
||||
if split_areas.any? { |area| !SiteSetting::VALID_AREAS.include?(area) }
|
||||
raise Discourse::InvalidParameters.new(
|
||||
"Area is incorrect. Valid areas: #{SiteSetting::VALID_AREAS.join(", ")}",
|
||||
)
|
||||
end
|
||||
areas[name] = split_areas
|
||||
end
|
||||
hidden_settings_provider.add_hidden(name) if opts[:hidden]
|
||||
|
||||
if GlobalSetting.respond_to?(name)
|
||||
|
Reference in New Issue
Block a user