Spiegel von
https://github.com/paviliondev/discourse-custom-wizard.git
synchronisiert 2024-11-30 04:30:29 +01:00
66 Zeilen
1,4 KiB
Ruby
66 Zeilen
1,4 KiB
Ruby
# frozen_string_literal: true
|
|
class CustomWizard::AdminCustomFieldsController < CustomWizard::AdminController
|
|
def index
|
|
render_json_dump(
|
|
custom_fields: custom_field_list
|
|
)
|
|
end
|
|
|
|
def update
|
|
errors = []
|
|
field_id = nil
|
|
field_data = {}
|
|
|
|
if saved_field = CustomWizard::CustomField.find(field_params[:id].to_i)
|
|
CustomWizard::CustomField::ATTRS.each do |attr|
|
|
field_data[attr] = saved_field.send(attr)
|
|
end
|
|
field_id = saved_field.id
|
|
end
|
|
|
|
CustomWizard::CustomField::ATTRS.each do |attr|
|
|
field_data[attr] = field_params[attr]
|
|
end
|
|
|
|
field = CustomWizard::CustomField.new(field_id, field_data)
|
|
|
|
PluginStoreRow.transaction do
|
|
unless field.save
|
|
field_errors = field.errors.any? ?
|
|
field.errors.full_messages.join("\n\n") :
|
|
I18n.t("wizard.custom_field.error.save_default", name: field.name)
|
|
errors << field_errors
|
|
raise ActiveRecord::Rollback.new
|
|
end
|
|
end
|
|
|
|
if errors.any?
|
|
render json: failed_json.merge(messages: errors)
|
|
else
|
|
render json: success_json
|
|
end
|
|
end
|
|
|
|
def destroy
|
|
params.require(:name)
|
|
|
|
if CustomWizard::CustomField.destroy(params[:name])
|
|
render json: success_json
|
|
else
|
|
render json: failed_json
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def field_params
|
|
params.required(:custom_field)
|
|
.permit(
|
|
:id,
|
|
:name,
|
|
:klass,
|
|
:type,
|
|
serializers: []
|
|
)
|
|
end
|
|
end
|