Spiegel von
https://github.com/paviliondev/discourse-custom-wizard.git
synchronisiert 2024-12-01 13:01:10 +01:00
46 Zeilen
1,3 KiB
Ruby
46 Zeilen
1,3 KiB
Ruby
# frozen_string_literal: true
|
|
class CustomWizard::AdminSubmissionsController < CustomWizard::AdminController
|
|
skip_before_action :preload_json, :check_xhr, only: [:download]
|
|
before_action :find_wizard, except: [:index]
|
|
|
|
def index
|
|
render json: ActiveModel::ArraySerializer.new(
|
|
CustomWizard::Wizard.list(current_user),
|
|
each_serializer: CustomWizard::BasicWizardSerializer
|
|
)
|
|
end
|
|
|
|
def show
|
|
render_json_dump(
|
|
wizard: CustomWizard::BasicWizardSerializer.new(@wizard, root: false),
|
|
submissions: build_submissions.as_json
|
|
)
|
|
end
|
|
|
|
def download
|
|
send_data build_submissions.to_json,
|
|
filename: "#{Discourse.current_hostname}-wizard-submissions-#{@wizard.name}.json",
|
|
content_type: "application/json",
|
|
disposition: "attachment"
|
|
end
|
|
|
|
private
|
|
|
|
def build_submissions
|
|
PluginStoreRow.where(plugin_name: "#{@wizard.id}_submissions")
|
|
.order('id DESC')
|
|
.map do |row|
|
|
value = ::JSON.parse(row.value)
|
|
|
|
if user = User.find_by(id: row.key)
|
|
username = user.username
|
|
else
|
|
username = I18n.t('admin.wizard.submissions.no_user', id: row.key)
|
|
end
|
|
|
|
value.map do |v|
|
|
{ username: username }.merge!(v.except("redirect_to"))
|
|
end
|
|
end.flatten
|
|
end
|
|
end
|