discourse/app/controllers/admin/config/site_settings_controller.rb
Martin Brennan 5bc7371192
FEATURE: Localization admin settings config page (#31085)
This commit adds a new Localization config page for
admins, as a basic filtered site setting page similar
to Legal and Notifications. Included settings are:

* default locale
* allow user locale
* set locale from accept langauge header
* onebox locale
* display local time in user card
* discourse local dates enabled
* support mixed text direction
* unicode usernames
* allowed unicode username characters
2025-01-31 12:55:30 +10:00

34 lines
1.2 KiB
Ruby

# frozen_string_literal: true
class Admin::Config::SiteSettingsController < Admin::AdminController
ADMIN_CONFIG_AREA_ALLOWLISTED_HIDDEN_SETTINGS = %i[
extended_site_description
about_banner_image
community_owner
]
# This endpoint is intended to be used only for admin config areas,
# for a specific collection of site settings. The admin site settings
# UI itself uses the Admin::SiteSettingsController#index endpoint,
# which also supports a `category` and `plugin` filter.
def index
if params[:plugin].blank? && params[:categories].blank? && params[:filter_names].blank? &&
SiteSetting.valid_areas.exclude?(params[:filter_area])
raise Discourse::InvalidParameters
end
render_json_dump(
site_settings:
SiteSetting.all_settings(
filter_names: params[:filter_names],
filter_area: params[:filter_area],
filter_plugin: params[:plugin],
filter_categories: Array.wrap(params[:categories]),
include_locale_setting: params[:filter_area] == "localization",
include_hidden: true,
filter_allowed_hidden: ADMIN_CONFIG_AREA_ALLOWLISTED_HIDDEN_SETTINGS,
),
)
end
end