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:
Penar Musaraj
2019-06-21 13:49:14 -04:00
committed by GitHub
parent 2738d11f60
commit e51de4cc25
8 changed files with 111 additions and 6 deletions

View File

@ -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?