mirror of
https://github.com/discourse/discourse.git
synced 2025-05-31 21:45:26 +08:00
FEATURE: Add endpoint to individually update a theme setting (#7789)
- also adds a new staff action type called "change theme setting" for easier logging of staff changes to theme settings
This commit is contained in:
@ -261,6 +261,24 @@ class Admin::ThemesController < Admin::AdminController
|
||||
end
|
||||
end
|
||||
|
||||
def update_single_setting
|
||||
params.require("name")
|
||||
@theme = Theme.find_by(id: params[:id])
|
||||
raise Discourse::InvalidParameters.new(:id) unless @theme
|
||||
|
||||
setting_name = params[:name].to_sym
|
||||
new_value = params[:value] || nil
|
||||
|
||||
previous_value = @theme.included_settings[setting_name]
|
||||
@theme.update_setting(setting_name, new_value)
|
||||
@theme.save
|
||||
|
||||
log_theme_setting_change(setting_name, previous_value, new_value)
|
||||
|
||||
updated_setting = @theme.included_settings.select { |key, val| key == setting_name }
|
||||
render json: updated_setting, status: :ok
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def update_default_theme
|
||||
@ -328,6 +346,10 @@ class Admin::ThemesController < Admin::AdminController
|
||||
StaffActionLogger.new(current_user).log_theme_change(old_record, new_record)
|
||||
end
|
||||
|
||||
def log_theme_setting_change(setting_name, previous_value, new_value)
|
||||
StaffActionLogger.new(current_user).log_theme_setting_change(setting_name, previous_value, new_value, @theme)
|
||||
end
|
||||
|
||||
def handle_switch
|
||||
param = theme_params[:component]
|
||||
if param.to_s == "false" && @theme.component?
|
||||
|
Reference in New Issue
Block a user