Sha256: e54fba2f4dfdc63dd5c298d34f1b1d906a1a475a1b989552043bce8af6ade17b
Contents?: true
Size: 1.9 KB
Versions: 1
Compression:
Stored size: 1.9 KB
Contents
class FormsController < ApplicationController no_login_required skip_before_filter :verify_authenticity_token def new @response = find_or_create_response @response.update_attribute(:result, nil) redirect_to :back rescue redirect_to '/' end def update set_page set_form set_response set_configuration execute_extensions begin @response.save! redirect_to @form.redirect_to.present? ? @form.redirect_to : @page.url rescue "Form '#{@form.title}' could not be submitted." end end protected def set_page @page = Page.find(params[:page_id]) rescue Page.first @page.data = params @page.request = OpenStruct.new({ :referrer => request.referer, :session => session # Creating a pretend response object }) end def set_form @form = Form.find(params[:id]) @form.page = @page end def set_response @response = find_or_create_response @response.result = Forms::Config.deep_symbolize_keys(params) end def set_configuration begin # Grab the form configuration data @form[:extensions] = Forms::Config.convert(@form.config) rescue raise "Form '#{@form.title}' has not been configured" end end def execute_extensions @results = {} # Iterate through each configured extension @form[:extensions].each do |name, config| result = @form.call_extension(name,config) @results.merge!({ name.to_sym => result }) session.merge!(result[:session]) if result[:session].present? end # Those results are merged into the response object @response.result = @response.result.merge!({ :results => @results}) begin @response.save! redirect_to (@form.redirect_to.present? ? @form.redirect_to : (params[:redirect_to] || :back)) rescue "Form '#{@form.title}' could not be submitted." end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
radiant-forms-extension-3.2.8 | app/controllers/forms_controller.rb |