Spiegel von
https://github.com/paviliondev/discourse-custom-wizard.git
synchronisiert 2024-11-24 18:30:27 +01:00
174 Zeilen
4,3 KiB
Ruby
174 Zeilen
4,3 KiB
Ruby
# frozen_string_literal: true
|
|
class CustomWizard::AdminWizardController < CustomWizard::AdminController
|
|
before_action :find_wizard, only: %i[show remove]
|
|
requires_plugin "discourse-custom-wizard"
|
|
|
|
def index
|
|
render_json_dump(
|
|
wizard_list:
|
|
ActiveModel::ArraySerializer.new(
|
|
CustomWizard::Wizard.list(current_user),
|
|
each_serializer: CustomWizard::BasicWizardSerializer,
|
|
),
|
|
field_types: CustomWizard::Field.types,
|
|
realtime_validations: CustomWizard::RealtimeValidation.types,
|
|
custom_fields: custom_field_list,
|
|
)
|
|
end
|
|
|
|
def show
|
|
params.require(:wizard_id)
|
|
|
|
if data = CustomWizard::Template.find(params[:wizard_id].underscore)
|
|
render json: data.as_json
|
|
else
|
|
render json: { none: true }
|
|
end
|
|
end
|
|
|
|
def remove
|
|
if CustomWizard::Template.remove(@wizard.id)
|
|
render json: success_json
|
|
else
|
|
render json: failed_json
|
|
end
|
|
end
|
|
|
|
def save
|
|
template = CustomWizard::Template.new(save_wizard_params.to_h)
|
|
wizard_id = template.save(create: params[:create])
|
|
|
|
if template.errors.any?
|
|
render json:
|
|
failed_json.merge(
|
|
backend_validation_error: template.errors.full_messages.join("\n\n"),
|
|
)
|
|
else
|
|
render json: success_json.merge(wizard_id: wizard_id)
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def mapped_params
|
|
[
|
|
:type,
|
|
:connector,
|
|
:output,
|
|
:output_type,
|
|
:output_connector,
|
|
pairs: [:index, :key, :key_type, :value, :value_type, :connector, value: [], key: []],
|
|
output: [],
|
|
]
|
|
end
|
|
|
|
def save_wizard_params
|
|
params.require(:wizard).permit(
|
|
:id,
|
|
:name,
|
|
:background,
|
|
:save_submissions,
|
|
:multiple_submissions,
|
|
:after_signup,
|
|
:after_time,
|
|
:after_time_scheduled,
|
|
:required,
|
|
:prompt_completion,
|
|
:restart_on_revisit,
|
|
:resume_on_revisit,
|
|
:theme_id,
|
|
permitted: mapped_params,
|
|
after_time_groups: [],
|
|
steps: [
|
|
:id,
|
|
:index,
|
|
:title,
|
|
:key,
|
|
:banner,
|
|
:banner_upload_id,
|
|
:raw_description,
|
|
:required_data_message,
|
|
:force_final,
|
|
required_data: mapped_params,
|
|
permitted_params: mapped_params,
|
|
condition: mapped_params,
|
|
fields: [
|
|
:id,
|
|
:index,
|
|
:label,
|
|
:image,
|
|
:image_upload_id,
|
|
:description,
|
|
:required,
|
|
:key,
|
|
:type,
|
|
:min_length,
|
|
:max_length,
|
|
:char_counter,
|
|
:file_types,
|
|
:format,
|
|
:limit,
|
|
:property,
|
|
:preview_template,
|
|
:placeholder,
|
|
:can_create_tag,
|
|
:category,
|
|
prefill: mapped_params,
|
|
content: mapped_params,
|
|
condition: mapped_params,
|
|
index: mapped_params,
|
|
validations: {
|
|
},
|
|
tag_groups: [],
|
|
],
|
|
],
|
|
actions: [
|
|
:id,
|
|
:run_after,
|
|
:type,
|
|
:code,
|
|
:skip_redirect,
|
|
:suppress_notifications,
|
|
:post,
|
|
:post_builder,
|
|
:post_template,
|
|
:notification_level,
|
|
:api,
|
|
:api_endpoint,
|
|
:api_body,
|
|
:wizard_user,
|
|
title: mapped_params,
|
|
category: mapped_params,
|
|
tags: mapped_params,
|
|
custom_fields: mapped_params,
|
|
visible: mapped_params,
|
|
required: mapped_params,
|
|
poster: mapped_params,
|
|
guest_email: mapped_params,
|
|
recipient: mapped_params,
|
|
categories: mapped_params,
|
|
mute_remainder: mapped_params,
|
|
profile_updates: mapped_params,
|
|
group: mapped_params,
|
|
url: mapped_params,
|
|
name: mapped_params,
|
|
slug: mapped_params,
|
|
color: mapped_params,
|
|
text_color: mapped_params,
|
|
parent_category_id: mapped_params,
|
|
permissions: mapped_params,
|
|
full_name: mapped_params,
|
|
bio_raw: mapped_params,
|
|
usernames: mapped_params,
|
|
owner_usernames: mapped_params,
|
|
grant_trust_level: mapped_params,
|
|
mentionable_level: mapped_params,
|
|
messageable_level: mapped_params,
|
|
visibility_level: mapped_params,
|
|
members_visibility_level: mapped_params,
|
|
add_event: mapped_params,
|
|
add_location: mapped_params,
|
|
],
|
|
)
|
|
end
|
|
end
|