Sha256: d1d6757a6fb44adb0dffb1aef05e92132a6290a5bb4fbfe314d231920fd7979a

Contents?: true

Size: 1.59 KB

Versions: 2

Compression:

Stored size: 1.59 KB

Contents

class Api::V1::ContactFormController < Api::ApiController
  #TODO this controller must be into ContactForm plugin app
  skip_before_filter :verify_authenticity_token

  swagger_controller :contact_form, 'ContactForm'

  swagger_api :contact_form_by_slug do
    summary "Fetch a single Contact Form by slug"
    param :path, :slug, :string, :required, 'Contact form slug'
    response :ok, 'Success', :ContactForm
    response :not_found
  end

  def contact_form_by_slug
    form = current_site.contact_forms.where("parent_id is null and slug = '#{params[:slug]}'").first
    if form.nil?
      render_json_not_found
    else
      render json: {
                 :id => form.id,
                 :fields => JSON.parse(form.value).to_sym[:fields],
                 :settings => JSON.parse(form.settings).to_sym
             }
    end
  end

  swagger_api :save_form do
    summary "Submit a contact form"
    param :form, :id, :integer, :required, 'Contact form id'
    param :form, :fields, :array, :required, 'Fields'
    response :ok, 'Success'
    response :not_found
  end

  def save_form
    form = current_site.contact_forms.find_by_id(params[:id])
    unless form.nil?
      values = JSON.parse(form.value).to_sym
      settings = JSON.parse(form.settings).to_sym
      fields = params[:fields]
      errors = []
      success = []

      perform_save_form(form, values, fields, settings, success, errors)
      if success.present?
        render_json_ok(success.join('<br>'))
      else
        render_json_ok({:errors => :errors, :fields => fields})
      end
    else
      render_json_not_found
    end
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
camaleon_cms-1.1.0 app/controllers/api/v1/contact_form_controller.rb
camaleon_cms-1.0.9 app/controllers/api/v1/contact_form_controller.rb