51 lines
1.0 KiB
Ruby
51 lines
1.0 KiB
Ruby
class Admin::SettingsController < Admin::BaseController
|
|
before_action :set_current_section
|
|
|
|
def index
|
|
end
|
|
|
|
def update_settings
|
|
@errors = ActiveModel::Errors.new(Setting.new)
|
|
changed_keys = []
|
|
|
|
setting_params.keys.each do |key|
|
|
next if clean_param(key).nil? ||
|
|
(Setting.send(key).to_s == clean_param(key))
|
|
|
|
changed_keys.push(key)
|
|
setting = Setting.new(var: key)
|
|
setting.value = clean_param(key)
|
|
unless setting.valid?
|
|
@errors.merge!(setting.errors)
|
|
end
|
|
end
|
|
|
|
if @errors.any?
|
|
render :show and return
|
|
end
|
|
|
|
changed_keys.each do |key|
|
|
|
|
Setting.send("#{key}=", clean_param(key))
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def set_current_section
|
|
@current_section = :settings
|
|
end
|
|
|
|
def setting_params
|
|
params.require(:setting).permit(Setting.editable_keys.map(&:to_sym))
|
|
end
|
|
|
|
def clean_param(key)
|
|
if Setting.get_field(key)[:type] == :string
|
|
setting_params[key].strip!
|
|
else
|
|
setting_params[key]
|
|
end
|
|
end
|
|
end
|