discourse/app/controllers/admin/form_templates_controller.rb
2023-05-29 14:47:18 -07:00

78 lines
1.9 KiB
Ruby

# frozen_string_literal: true
class Admin::FormTemplatesController < Admin::StaffController
before_action :ensure_form_templates_enabled
def index
form_templates = FormTemplate.all.order(:id)
render_serialized(form_templates, AdminFormTemplateSerializer, root: "form_templates")
end
def new
end
def preview
params.require(:name)
params.require(:template)
if params[:id].present?
template = FormTemplate.find(params[:id])
template.assign_attributes(name: params[:name], template: params[:template])
else
template = FormTemplate.new(name: params[:name], template: params[:template])
end
begin
template.validate!
render json: success_json
rescue FormTemplate::NotAllowed => err
render_json_error(err.message)
end
end
def create
params.require(:name)
params.require(:template)
begin
template = FormTemplate.create!(name: params[:name], template: params[:template])
render_serialized(template, AdminFormTemplateSerializer, root: "form_template")
rescue FormTemplate::NotAllowed => err
render_json_error(err.message)
end
end
def show
template = FormTemplate.find(params[:id])
render_serialized(template, AdminFormTemplateSerializer, root: "form_template")
end
def edit
FormTemplate.find(params[:id])
end
def update
template = FormTemplate.find(params[:id])
begin
template.update!(name: params[:name], template: params[:template])
render_serialized(template, AdminFormTemplateSerializer, root: "form_template")
rescue FormTemplate::NotAllowed => err
render_json_error(err.message)
end
end
def destroy
template = FormTemplate.find(params[:id])
template.destroy!
render json: success_json
end
private
def ensure_form_templates_enabled
raise Discourse::InvalidAccess.new unless SiteSetting.experimental_form_templates
end
end