ref: master
plugins/custom_forms/controllers/custom_forms_plugin_profile_controller.rb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
class CustomFormsPluginProfileController < ProfileController before_filter :has_access, :show def show extend(CustomFormsPlugin::Helper) @form = CustomFormsPlugin::Form.find(params[:id]) if user @submission = CustomFormsPlugin::Submission.find_by form_id: @form.id, profile_id: user.id @submission ||= CustomFormsPlugin::Submission.new(:form => @form, :profile => user) else @submission = CustomFormsPlugin::Submission.new(:form => @form) end # build the answers @answers = if params[:submission] then @submission.build_answers params[:submission] else @submission.answers end if request.post? begin raise 'Submission already present!' if user.present? && CustomFormsPlugin::Submission.find_by(form_id: @form.id, profile_id: user.id) raise 'Form expired!' if @form.expired? if !user @submission.author_name = params[:author_name] @submission.author_email = params[:author_email] end if not @submission.save raise 'Submission failed: answers not valid' end session[:notice] = _('Submission saved') redirect_to :action => 'show' rescue session[:notice] = _('Submission could not be saved') end end end private def has_access form = CustomFormsPlugin::Form.find(params[:id]) render_access_denied if !form.accessible_to(user) end end |