78 lines
1.9 KiB
Ruby
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
|