fe 0.0.4 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/README.md +4 -4
- data/Rakefile +16 -36
- data/app/assets/config/fe/manifest.js +3 -0
- data/app/assets/config/manifest.js +3 -0
- data/app/assets/javascripts/application.js.erb +1 -1
- data/app/assets/javascripts/fe/admin.js +0 -2
- data/app/assets/javascripts/fe/fe.admin.js +40 -20
- data/app/assets/javascripts/fe/fe.common.js.erb +98 -0
- data/app/assets/javascripts/fe/fe.public.js +2 -416
- data/app/assets/javascripts/fe/fe.public.nojquery.js.erb +526 -0
- data/app/assets/javascripts/fe/jquery.html5_upload.js +258 -0
- data/app/assets/javascripts/fe/jquery.validate.pack.js +3 -15
- data/app/assets/stylesheets/fe/fe.screen.css.scss.erb +90 -10
- data/app/assets/stylesheets/fe/validation.css +5 -1
- data/app/controllers/concerns/fe/admin/question_sheets_controller_concern.rb +111 -0
- data/app/controllers/concerns/fe/answer_pages_controller_concern.rb +131 -0
- data/app/controllers/{fe/concerns → concerns/fe}/answer_sheets_controller_concern.rb +15 -7
- data/app/controllers/{fe/concerns → concerns/fe}/application_controller_concern.rb +15 -2
- data/app/controllers/fe/admin/elements_controller.rb +102 -64
- data/app/controllers/fe/admin/email_templates_controller.rb +7 -7
- data/app/controllers/fe/admin/question_pages_controller.rb +9 -9
- data/app/controllers/fe/admin/question_sheets_controller.rb +2 -103
- data/app/controllers/fe/reference_pages_controller.rb +11 -11
- data/app/controllers/fe/reference_sheets_controller.rb +6 -4
- data/app/controllers/fe/references_controller.rb +20 -19
- data/app/controllers/fe/submit_pages_controller.rb +5 -5
- data/app/helpers/fe/answer_pages_helper.rb +1 -1
- data/app/helpers/fe/application_helper.rb +8 -3
- data/app/jobs/fe/update_reference_sheet_visibility_job.rb +11 -0
- data/app/mailers/fe/notifier.rb +12 -5
- data/app/models/answer_sheet.rb +2 -0
- data/app/models/application_record.rb +3 -0
- data/app/models/{fe/concerns → concerns/fe}/answer_concern.rb +2 -2
- data/app/models/{fe/concerns → concerns/fe}/answer_pages_presenter_concern.rb +15 -5
- data/app/models/concerns/fe/answer_sheet_concern.rb +125 -0
- data/app/models/{fe/concerns → concerns/fe}/choice_field_concern.rb +56 -31
- data/app/models/fe/address.rb +2 -2
- data/app/models/fe/answer.rb +1 -1
- data/app/models/fe/answer_sheet.rb +1 -1
- data/app/models/fe/answer_sheet_question_sheet.rb +2 -2
- data/app/models/fe/application.rb +15 -10
- data/app/models/fe/condition.rb +4 -4
- data/app/models/fe/date_field.rb +2 -2
- data/app/models/fe/element.rb +201 -45
- data/app/models/fe/email_address.rb +2 -2
- data/app/models/fe/email_template.rb +1 -1
- data/app/models/fe/page.rb +138 -31
- data/app/models/fe/page_element.rb +8 -3
- data/app/models/fe/page_link.rb +6 -3
- data/app/models/fe/paragraph.rb +1 -1
- data/app/models/fe/person.rb +16 -13
- data/app/models/fe/phone_number.rb +1 -1
- data/app/models/fe/question.rb +64 -44
- data/app/models/fe/question_grid.rb +16 -4
- data/app/models/fe/question_grid_with_total.rb +15 -0
- data/app/models/fe/question_set.rb +54 -14
- data/app/models/fe/question_sheet.rb +54 -19
- data/app/models/fe/reference_question.rb +9 -13
- data/app/models/fe/reference_sheet.rb +113 -54
- data/app/models/fe/state_chooser.rb +2 -2
- data/app/models/fe/text_field.rb +2 -2
- data/app/models/fe/user.rb +1 -1
- data/app/models/staff.rb +8 -6
- data/app/validators/email_validator.rb +11 -0
- data/app/views/fe/admin/elements/create.js.erb +4 -3
- data/app/views/fe/admin/elements/destroy.js.erb +1 -1
- data/app/views/fe/admin/elements/drop.js.erb +2 -1
- data/app/views/fe/admin/elements/duplicate.js.erb +2 -1
- data/app/views/fe/admin/elements/edit.js.erb +1 -1
- data/app/views/fe/admin/elements/error.js.erb +1 -1
- data/app/views/fe/admin/elements/new.js.erb +13 -6
- data/app/views/fe/admin/elements/update.js.erb +1 -1
- data/app/views/fe/admin/email_templates/_form.html.erb +3 -3
- data/app/views/fe/admin/email_templates/edit.html.erb +3 -3
- data/app/views/fe/admin/email_templates/index.html.erb +3 -3
- data/app/views/fe/admin/email_templates/new.html.erb +3 -3
- data/app/views/fe/admin/panels/_advanced_options.html.erb +16 -10
- data/app/views/fe/admin/panels/_common_boolean_fields.html.erb +1 -0
- data/app/views/fe/admin/panels/_common_boolean_fields_default.html.erb +11 -0
- data/app/views/fe/admin/panels/_common_fields.html.erb +18 -19
- data/app/views/fe/admin/panels/_condition.html.erb +1 -1
- data/app/views/fe/admin/panels/_insert.html.erb +25 -25
- data/app/views/fe/admin/panels/_nav_controls.html.erb +4 -4
- data/app/views/fe/admin/panels/_page.html.erb +2 -2
- data/app/views/fe/admin/panels/_pages_list.html.erb +3 -3
- data/app/views/fe/admin/panels/_prop_attachment_field.html.erb +2 -2
- data/app/views/fe/admin/panels/_prop_choice_field.html.erb +52 -24
- data/app/views/fe/admin/panels/_prop_date_field.html.erb +1 -1
- data/app/views/fe/admin/panels/_prop_element.html.erb +7 -14
- data/app/views/fe/admin/panels/_prop_page.html.erb +11 -6
- data/app/views/fe/admin/panels/_prop_paragraph.html.erb +38 -24
- data/app/views/fe/admin/panels/_prop_question_grid.html.erb +7 -2
- data/app/views/fe/admin/panels/_prop_question_grid_with_total.html.erb +2 -2
- data/app/views/fe/admin/panels/_prop_reference_question.html.erb +3 -3
- data/app/views/fe/admin/panels/_prop_section.html.erb +8 -2
- data/app/views/fe/admin/panels/_prop_sheet.html.erb +7 -4
- data/app/views/fe/admin/panels/_prop_text_field.html.erb +12 -12
- data/app/views/fe/admin/question_pages/_element.html.erb +16 -6
- data/app/views/fe/admin/question_pages/_element_show.html.erb +2 -2
- data/app/views/fe/admin/question_pages/_question_page.html.erb +4 -4
- data/app/views/fe/admin/question_pages/create.js.erb +3 -3
- data/app/views/fe/admin/question_pages/destroy.js.erb +3 -3
- data/app/views/fe/admin/question_pages/edit.js.erb +1 -1
- data/app/views/fe/admin/question_pages/error.js.erb +1 -1
- data/app/views/fe/admin/question_pages/show.js.erb +2 -2
- data/app/views/fe/admin/question_pages/show_panel.js.erb +1 -1
- data/app/views/fe/admin/question_pages/update.js.erb +1 -1
- data/app/views/fe/admin/question_sheets/edit.js.erb +1 -1
- data/app/views/fe/admin/question_sheets/error.js.erb +1 -1
- data/app/views/fe/admin/question_sheets/index.html.erb +8 -8
- data/app/views/fe/admin/question_sheets/new.html.erb +3 -3
- data/app/views/fe/admin/question_sheets/show.html.erb +5 -5
- data/app/views/fe/admin/question_sheets/update.js.erb +1 -1
- data/app/views/fe/answer_pages/_answer_page.html.erb +14 -14
- data/app/views/fe/answer_pages/_element.html.erb +25 -6
- data/app/views/fe/answer_pages/_page_name.html.erb +1 -0
- data/app/views/fe/answer_pages/show.html.erb +39 -0
- data/app/views/fe/answer_pages/update.js.erb +11 -3
- data/app/views/fe/answer_sheets/_answer_sheet.html.erb +6 -6
- data/app/views/fe/answer_sheets/_element.html.erb +55 -35
- data/app/views/fe/answer_sheets/_incomplete.html.erb +1 -1
- data/app/views/fe/answer_sheets/_page_link.html.erb +9 -7
- data/app/views/fe/answer_sheets/_pages_list.html.erb +4 -4
- data/app/views/fe/answer_sheets/_submit_to.html.erb +1 -0
- data/app/views/fe/answer_sheets/_title.html.erb +1 -1
- data/app/views/fe/answer_sheets/edit.html.erb +24 -24
- data/app/views/fe/answer_sheets/incomplete.js.erb +9 -3
- data/app/views/fe/answer_sheets/index.html.erb +3 -3
- data/app/views/fe/answer_sheets/show.html.erb +1 -1
- data/app/views/fe/applications/_logout.html.erb +1 -0
- data/app/views/fe/applications/show.html.erb +1 -0
- data/app/views/fe/questions/fe/_acceptance.html.erb +11 -10
- data/app/views/fe/questions/fe/_attachment_field.html.erb +133 -10
- data/app/views/fe/questions/fe/_checkbox_field.html.erb +34 -30
- data/app/views/fe/questions/fe/_country.html.erb +6 -6
- data/app/views/fe/questions/fe/_date_field.html.erb +5 -5
- data/app/views/fe/questions/fe/_date_field_mmyy.html.erb +8 -8
- data/app/views/fe/questions/fe/_drop_down_field.html.erb +7 -6
- data/app/views/fe/questions/fe/_paragraph.html.erb +1 -1
- data/app/views/fe/questions/fe/_question_grid.html.erb +21 -16
- data/app/views/fe/questions/fe/_question_grid_with_total.html.erb +25 -18
- data/app/views/fe/questions/fe/_questions.html.erb +11 -5
- data/app/views/fe/questions/fe/_radio_button_field.html.erb +42 -25
- data/app/views/fe/questions/fe/_rating.html.erb +57 -18
- data/app/views/fe/questions/fe/_reference_discipler.html.erb +1 -1
- data/app/views/fe/questions/fe/_reference_friend.html.erb +1 -1
- data/app/views/fe/questions/fe/_reference_parent.html.erb +1 -1
- data/app/views/fe/questions/fe/_reference_peer.html.erb +1 -1
- data/app/views/fe/questions/fe/_reference_question.html.erb +44 -21
- data/app/views/fe/questions/fe/_reference_roommate.html.erb +1 -1
- data/app/views/fe/questions/fe/_reference_spiritual.html.erb +1 -1
- data/app/views/fe/questions/fe/_reference_staff.html.erb +1 -1
- data/app/views/fe/questions/fe/_section.html.erb +1 -1
- data/app/views/fe/questions/fe/_state_chooser.html.erb +6 -6
- data/app/views/fe/questions/fe/_text_area_field.html.erb +17 -6
- data/app/views/fe/questions/fe/_text_field.html.erb +7 -6
- data/app/views/fe/questions/fe/_yes_no.html.erb +8 -8
- data/app/views/fe/questions/fe/_yes_no_field.erb +12 -9
- data/app/views/fe/reference_pages/_reference.html.erb +15 -15
- data/app/views/fe/reference_pages/edit.html.erb +9 -9
- data/app/views/fe/reference_sheets/done.html.erb +2 -2
- data/app/views/fe/reference_sheets/not_found.html.erb +4 -4
- data/app/views/fe/references/edit.html.erb +6 -6
- data/app/views/fe/references/show.html.erb +8 -8
- data/app/views/fe/references/submit.js.erb +3 -3
- data/app/views/fe/submit_pages/_thankyou.html.erb +1 -1
- data/app/views/fe/submit_pages/edit.html.erb +12 -12
- data/app/views/fe/submit_pages/error.js.erb +1 -1
- data/app/views/fe/submit_pages/submit.js.erb +2 -2
- data/app/views/layouts/fe/_error_messages_for.html.erb +7 -0
- data/app/views/layouts/fe/application.html.erb +4 -5
- data/app/views/layouts/fe/fe_admin.html.erb +30 -0
- data/app/views.current/fe/admin/elements/_errors.html.erb +11 -0
- data/app/views.current/fe/admin/elements/create.js.erb +12 -0
- data/app/views.current/fe/admin/elements/destroy.js.erb +4 -0
- data/app/views.current/fe/admin/elements/drop.js.erb +3 -0
- data/app/views.current/fe/admin/elements/duplicate.js.erb +3 -0
- data/app/views.current/fe/admin/elements/edit.js.erb +4 -0
- data/app/views.current/fe/admin/elements/error.js.erb +4 -0
- data/app/views.current/fe/admin/elements/new.js.erb +17 -0
- data/app/views.current/fe/admin/elements/reorder.js.erb +0 -0
- data/app/views.current/fe/admin/elements/update.js.erb +9 -0
- data/app/views.current/fe/admin/email_templates/_form.html.erb +8 -0
- data/app/views.current/fe/admin/email_templates/edit.html.erb +13 -0
- data/app/views.current/fe/admin/email_templates/index.html.erb +20 -0
- data/app/views.current/fe/admin/email_templates/new.html.erb +11 -0
- data/app/views.current/fe/admin/panels/_advanced_options.html.erb +49 -0
- data/app/views.current/fe/admin/panels/_common_boolean_fields.html.erb +1 -0
- data/app/views.current/fe/admin/panels/_common_boolean_fields_default.html.erb +11 -0
- data/app/views.current/fe/admin/panels/_common_fields.html.erb +23 -0
- data/app/views.current/fe/admin/panels/_condition.html.erb +6 -0
- data/app/views.current/fe/admin/panels/_insert.html.erb +39 -0
- data/app/views.current/fe/admin/panels/_nav_controls.html.erb +6 -0
- data/app/views.current/fe/admin/panels/_page.html.erb +3 -0
- data/app/views.current/fe/admin/panels/_pages_list.html.erb +16 -0
- data/app/views.current/fe/admin/panels/_prop_attachment_field.html.erb +2 -0
- data/app/views.current/fe/admin/panels/_prop_choice_field.html.erb +74 -0
- data/app/views.current/fe/admin/panels/_prop_date_field.html.erb +7 -0
- data/app/views.current/fe/admin/panels/_prop_element.html.erb +23 -0
- data/app/views.current/fe/admin/panels/_prop_page.html.erb +26 -0
- data/app/views.current/fe/admin/panels/_prop_paragraph.html.erb +46 -0
- data/app/views.current/fe/admin/panels/_prop_question_grid.html.erb +28 -0
- data/app/views.current/fe/admin/panels/_prop_question_grid_with_total.html.erb +14 -0
- data/app/views.current/fe/admin/panels/_prop_reference_question.html.erb +12 -0
- data/app/views.current/fe/admin/panels/_prop_section.html.erb +8 -0
- data/app/views.current/fe/admin/panels/_prop_sheet.html.erb +20 -0
- data/app/views.current/fe/admin/panels/_prop_text_field.html.erb +20 -0
- data/app/views.current/fe/admin/question_pages/_element.html.erb +28 -0
- data/app/views.current/fe/admin/question_pages/_element_show.html.erb +10 -0
- data/app/views.current/fe/admin/question_pages/_errors.html.erb +10 -0
- data/app/views.current/fe/admin/question_pages/_question_page.html.erb +13 -0
- data/app/views.current/fe/admin/question_pages/create.js.erb +11 -0
- data/app/views.current/fe/admin/question_pages/destroy.js.erb +5 -0
- data/app/views.current/fe/admin/question_pages/edit.js.erb +3 -0
- data/app/views.current/fe/admin/question_pages/error.js.erb +4 -0
- data/app/views.current/fe/admin/question_pages/show.js.erb +9 -0
- data/app/views.current/fe/admin/question_pages/show_panel.js.erb +3 -0
- data/app/views.current/fe/admin/question_pages/update.js.erb +2 -0
- data/app/views.current/fe/admin/question_sheets/_errors.html.erb +11 -0
- data/app/views.current/fe/admin/question_sheets/edit.js.erb +3 -0
- data/app/views.current/fe/admin/question_sheets/error.js.erb +5 -0
- data/app/views.current/fe/admin/question_sheets/index.html.erb +41 -0
- data/app/views.current/fe/admin/question_sheets/new.html.erb +15 -0
- data/app/views.current/fe/admin/question_sheets/show.html.erb +27 -0
- data/app/views.current/fe/admin/question_sheets/update.js.erb +2 -0
- data/app/views.current/fe/answer_pages/_answer_page.html.erb +53 -0
- data/app/views.current/fe/answer_pages/_element.html.erb +32 -0
- data/app/views.current/fe/answer_pages/_page_name.html.erb +1 -0
- data/app/views.current/fe/answer_pages/show.html.erb +39 -0
- data/app/views.current/fe/answer_pages/update.js.erb +13 -0
- data/app/views.current/fe/answer_sheets/_answer_sheet.html.erb +26 -0
- data/app/views.current/fe/answer_sheets/_element.html.erb +74 -0
- data/app/views.current/fe/answer_sheets/_incomplete.html.erb +10 -0
- data/app/views.current/fe/answer_sheets/_page_link.html.erb +9 -0
- data/app/views.current/fe/answer_sheets/_pages_list.html.erb +11 -0
- data/app/views.current/fe/answer_sheets/_submit_to.html.erb +1 -0
- data/app/views.current/fe/answer_sheets/_title.html.erb +1 -0
- data/app/views.current/fe/answer_sheets/edit.html.erb +66 -0
- data/app/views.current/fe/answer_sheets/incomplete.js.erb +11 -0
- data/app/views.current/fe/answer_sheets/index.html.erb +18 -0
- data/app/views.current/fe/answer_sheets/send_reference_invite.js.erb +8 -0
- data/app/views.current/fe/answer_sheets/show.html.erb +13 -0
- data/app/views.current/fe/applications/_logout.html.erb +1 -0
- data/app/views.current/fe/applications/show.html.erb +1 -0
- data/app/views.current/fe/help/builder.html +33 -0
- data/app/views.current/fe/help/question_grid.html +18 -0
- data/app/views.current/fe/questions/fe/_acceptance.html.erb +14 -0
- data/app/views.current/fe/questions/fe/_attachment_field.html.erb +165 -0
- data/app/views.current/fe/questions/fe/_checkbox_field.html.erb +53 -0
- data/app/views.current/fe/questions/fe/_country.html.erb +7 -0
- data/app/views.current/fe/questions/fe/_date_field.html.erb +7 -0
- data/app/views.current/fe/questions/fe/_date_field_mmyy.html.erb +9 -0
- data/app/views.current/fe/questions/fe/_drop_down_field.html.erb +8 -0
- data/app/views.current/fe/questions/fe/_paragraph.html.erb +1 -0
- data/app/views.current/fe/questions/fe/_question_grid.html.erb +70 -0
- data/app/views.current/fe/questions/fe/_question_grid_with_total.html.erb +64 -0
- data/app/views.current/fe/questions/fe/_questions.html.erb +15 -0
- data/app/views.current/fe/questions/fe/_radio_button_field.html.erb +60 -0
- data/app/views.current/fe/questions/fe/_rating.html.erb +64 -0
- data/app/views.current/fe/questions/fe/_reference_discipler.html.erb +1 -0
- data/app/views.current/fe/questions/fe/_reference_friend.html.erb +1 -0
- data/app/views.current/fe/questions/fe/_reference_parent.html.erb +1 -0
- data/app/views.current/fe/questions/fe/_reference_peer.html.erb +1 -0
- data/app/views.current/fe/questions/fe/_reference_question.html.erb +61 -0
- data/app/views.current/fe/questions/fe/_reference_roommate.html.erb +1 -0
- data/app/views.current/fe/questions/fe/_reference_spiritual.html.erb +1 -0
- data/app/views.current/fe/questions/fe/_reference_staff.html.erb +1 -0
- data/app/views.current/fe/questions/fe/_section.html.erb +1 -0
- data/app/views.current/fe/questions/fe/_state_chooser.html.erb +7 -0
- data/app/views.current/fe/questions/fe/_text_area_field.html.erb +17 -0
- data/app/views.current/fe/questions/fe/_text_field.html.erb +9 -0
- data/app/views.current/fe/questions/fe/_yes_no.html.erb +17 -0
- data/app/views.current/fe/questions/fe/_yes_no_field.erb +20 -0
- data/app/views.current/fe/reference_pages/_reference.html.erb +31 -0
- data/app/views.current/fe/reference_pages/edit.html.erb +24 -0
- data/app/views.current/fe/reference_sheets/done.html.erb +2 -0
- data/app/views.current/fe/reference_sheets/not_found.html.erb +5 -0
- data/app/views.current/fe/reference_sheets/submitted.js.erb +1 -0
- data/app/views.current/fe/references/edit.html.erb +8 -0
- data/app/views.current/fe/references/send_invite.js.erb +7 -0
- data/app/views.current/fe/references/show.html.erb +18 -0
- data/app/views.current/fe/references/submit.js.erb +3 -0
- data/app/views.current/fe/submit_pages/_errors.html.erb +1 -0
- data/app/views.current/fe/submit_pages/_thankyou.html.erb +2 -0
- data/app/views.current/fe/submit_pages/edit.html.erb +36 -0
- data/app/views.current/fe/submit_pages/error.js.erb +1 -0
- data/app/views.current/fe/submit_pages/submit.js.erb +3 -0
- data/app/views.current/layouts/fe/_error_messages_for.html.erb +7 -0
- data/app/views.current/layouts/fe/application.html.erb +47 -0
- data/app/{views/layouts/fe/fe.admin.html.erb → views.current/layouts/fe/fe_admin.html.erb} +4 -4
- data/config/initializers/paper_trail.rb +3 -0
- data/config/routes.rb +3 -37
- data/db/migrate/20131003041856_core.rb +23 -23
- data/db/migrate/20131003044250_create_reference_sheets.rb +2 -1
- data/db/migrate/20131003044436_add_element_and_answer_fields.rb +3 -3
- data/db/migrate/20131003044518_create_email_templates.rb +2 -2
- data/db/migrate/20131003044621_add_max_lengths.rb +1 -1
- data/db/migrate/20131003044714_create_join_table.rb +1 -1
- data/db/migrate/20131016162128_remove_question_id_from_element.rb +1 -1
- data/db/migrate/20140623153424_create_fe_people.rb +2 -2
- data/db/migrate/20140624180246_create_fe_addresses.rb +2 -2
- data/db/migrate/{20140624182216_create_create_fe_phone_numbers.rb → 20140624182216_create_fe_phone_numbers.rb} +2 -2
- data/db/migrate/20140625160545_create_fe_users.rb +2 -2
- data/db/migrate/20140808202507_add_conditional_type_to_elements.rb +1 -1
- data/db/migrate/20140808203609_add_conditional_answer_to_elements.rb +1 -1
- data/db/migrate/20141103204704_remove_short_value_column.rb +1 -1
- data/db/migrate/20141109154522_move_conditional_ids_used_for_choice_field_to_their_own_column.rb +1 -1
- data/db/migrate/20150504221439_add_all_element_ids_to_pages.rb +5 -0
- data/db/migrate/20150713022326_add_locale_columns.rb +9 -0
- data/db/migrate/20150714220730_add_locale_to_answer_sheet.rb +5 -0
- data/db/migrate/20150925181652_add_share_to_elements.rb +5 -0
- data/db/migrate/20150928085325_change_pages_all_element_ids_to_text.rb +5 -0
- data/db/migrate/20150930191538_add_locale_to_reference_sheets.rb +5 -0
- data/db/migrate/20151021181928_switch_conditional_answer_separator_to_semicolon.rb +7 -0
- data/db/migrate/20151021184250_add_question_sheet_id_in_refs.rb +12 -0
- data/db/migrate/20160201185838_add_visible_and_visibility_cache_key_to_reference_sheets.rb +6 -0
- data/db/migrate/20160805221415_add_rating_extra_labels.rb +10 -0
- data/db/migrate/20181108201746_create_versions.rb +80 -0
- data/db/migrate/20181218201130_increase_slug_length.rb +5 -0
- data/lib/access_key_generator.rb +12 -0
- data/lib/distinct_distinct_patch.rb +20 -0
- data/lib/fe/engine.rb +26 -14
- data/lib/fe/version.rb +1 -1
- data/lib/fe.rb +11 -1
- data/spec/controllers/fe/admin/elements_controller_spec.rb +211 -1
- data/spec/controllers/fe/admin/email_templates_controller_spec.rb +26 -1
- data/spec/controllers/fe/admin/question_pages_controller_spec.rb +8 -1
- data/spec/controllers/fe/admin/question_sheets_controller_spec.rb +48 -1
- data/spec/controllers/fe/answer_pages_controller_spec.rb +129 -1
- data/spec/controllers/fe/answer_sheets_controller_spec.rb +136 -1
- data/spec/controllers/fe/reference_pages_controller.rb +4 -0
- data/spec/controllers/fe/references_controller_spec.rb +4 -0
- data/spec/controllers/fe/submit_pages_controller_spec.rb +4 -0
- data/spec/dummy/app/assets/config/manifest.js +0 -0
- data/spec/dummy/app/controllers/application_controller.rb +5 -0
- data/spec/dummy/app/helpers/application_helper.rb +9 -0
- data/spec/dummy/app/models/application.rb +3 -0
- data/spec/dummy/app/models/person.rb +11 -0
- data/spec/dummy/app/models/user.rb +3 -0
- data/spec/dummy/app/views/layouts/application.html.erb +2 -2
- data/spec/dummy/config/application.rb +3 -1
- data/spec/dummy/config/database.yml +20 -17
- data/spec/dummy/config/environments/production.rb +1 -5
- data/spec/dummy/config/environments/test.rb +4 -2
- data/spec/dummy/config/initializers/assets.rb +5 -2
- data/spec/dummy/config/initializers/fast_gettext.rb +5 -0
- data/spec/dummy/config/initializers/to_unsafe_h.rb +5 -0
- data/spec/dummy/config/initializers/to_unsafe_h.rb.new +5 -0
- data/spec/dummy/config/secrets.yml +2 -2
- data/spec/dummy/db/migrate/20141203214017_core.fe_engine.rb +92 -0
- data/spec/dummy/db/migrate/20141203214018_create_reference_sheets.fe_engine.rb +25 -0
- data/spec/dummy/db/migrate/20141203214019_add_element_and_answer_fields.fe_engine.rb +11 -0
- data/spec/dummy/db/migrate/20141203214020_create_email_templates.fe_engine.rb +18 -0
- data/spec/dummy/db/migrate/20141203214021_add_max_lengths.fe_engine.rb +9 -0
- data/spec/dummy/db/migrate/20141203214022_create_join_table.fe_engine.rb +12 -0
- data/spec/dummy/db/migrate/20141203214023_remove_question_id_from_element.fe_engine.rb +10 -0
- data/spec/dummy/db/migrate/20141203214024_create_fe_people.fe_engine.rb +13 -0
- data/spec/dummy/db/migrate/20141203214025_create_fe_addresses.fe_engine.rb +21 -0
- data/spec/dummy/db/migrate/20141203214027_create_fe_users.fe_engine.rb +13 -0
- data/spec/dummy/db/migrate/20141203214028_add_conditional_type_to_elements.fe_engine.rb +6 -0
- data/spec/dummy/db/migrate/20141203214029_add_conditional_answer_to_elements.fe_engine.rb +6 -0
- data/spec/dummy/db/migrate/20141203214030_remove_short_value_column.fe_engine.rb +6 -0
- data/spec/dummy/db/migrate/20141203214031_move_conditional_ids_used_for_choice_field_to_their_own_column.fe_engine.rb +8 -0
- data/spec/dummy/db/migrate/20150123215803_create_users.rb +9 -0
- data/spec/dummy/db/migrate/20150504222619_add_all_element_ids_to_pages.fe_engine.rb +6 -0
- data/spec/dummy/db/migrate/20150925192557_add_share_to_elements.fe_engine.rb +6 -0
- data/spec/dummy/db/migrate/20150930190001_create_fe_phone_numbers.fe_engine.rb +20 -0
- data/spec/dummy/db/migrate/20150930190002_add_locale_columns.fe_engine.rb +10 -0
- data/spec/dummy/db/migrate/20150930190003_add_locale_to_answer_sheet.fe_engine.rb +6 -0
- data/spec/dummy/db/migrate/20150930190004_change_pages_all_element_ids_to_text.fe_engine.rb +6 -0
- data/spec/dummy/db/migrate/20150930191756_add_locale_to_reference_sheets.fe_engine.rb +6 -0
- data/spec/dummy/db/migrate/20151021190027_add_question_sheet_id_in_refs.fe_engine.rb +13 -0
- data/spec/dummy/db/migrate/20160204164612_switch_conditional_answer_separator_to_semicolon.fe_engine.rb +8 -0
- data/spec/dummy/db/migrate/20160204164613_add_visible_and_visibility_cache_key_to_reference_sheets.fe_engine.rb +7 -0
- data/spec/dummy/db/migrate/20181108201746_create_versions.rb +80 -0
- data/spec/dummy/db/schema.rb +91 -69
- data/spec/dummy/log/test.log +101278 -419
- data/spec/factories/answer_sheet_question_sheets.rb +1 -1
- data/spec/factories/answer_sheets.rb +2 -2
- data/spec/factories/answers.rb +1 -1
- data/spec/factories/applications.rb +3 -4
- data/spec/factories/dummy_applications.rb +6 -0
- data/spec/factories/dummy_people.rb +6 -0
- data/spec/factories/dummy_users.rb +6 -0
- data/spec/factories/elements.rb +35 -10
- data/spec/factories/email_templates.rb +5 -0
- data/spec/factories/fe_addresses.rb +10 -10
- data/spec/factories/fe_email_addresses.rb +3 -3
- data/spec/factories/fe_email_templates.rb +9 -0
- data/spec/factories/fe_people.rb +5 -7
- data/spec/factories/fe_phone_numbers.rb +3 -3
- data/spec/factories/fe_user.rb +6 -0
- data/spec/factories/page.rb +1 -1
- data/spec/factories/page_elements.rb +1 -1
- data/spec/factories/paragraphs.rb +1 -1
- data/spec/factories/question_sheet.rb +3 -3
- data/spec/factories/reference_questions.rb +1 -1
- data/spec/factories/reference_sheets.rb +9 -0
- data/spec/jobs/fe/update_reference_sheet_visibility_job_spec.rb +40 -0
- data/spec/mailers/fe/notifier_spec.rb +39 -0
- data/spec/models/fe/answer_sheet_question_sheet_spec.rb +1 -1
- data/spec/models/fe/answer_spec.rb +2 -2
- data/spec/models/fe/application_spec.rb +94 -1
- data/spec/models/fe/choice_field_spec.rb +66 -0
- data/spec/models/fe/condition_spec.rb +2 -2
- data/spec/models/fe/element_spec.rb +414 -37
- data/spec/models/fe/email_template_spec.rb +1 -1
- data/spec/models/fe/page_element_spec.rb +1 -1
- data/spec/models/fe/page_spec.rb +168 -11
- data/spec/models/fe/person_spec.rb +1 -1
- data/spec/models/fe/question_set_spec.rb +91 -0
- data/spec/models/fe/question_sheet_spec.rb +103 -1
- data/spec/models/fe/question_spec.rb +73 -6
- data/spec/models/fe/reference_question_spec.rb +20 -0
- data/spec/models/fe/reference_sheet_spec.rb +305 -2
- data/spec/models/fe/text_field_spec.rb +22 -0
- data/spec/rails_helper.rb +85 -54
- data/spec/support/choices.xml +6 -0
- metadata +310 -84
- data/app/assets/javascripts/fe/fe.common.js +0 -57
- data/app/assets/javascripts/fe/jquery.scrollTo-min.js +0 -7
- data/app/assets/javascripts/fe/rails.extra.js +0 -6
- data/app/controllers/fe/applications_controller.rb +0 -183
- data/app/controllers/fe/concerns/answer_pages_controller_concern.rb +0 -83
- data/app/controllers/fe/payments_controller.rb +0 -184
- data/app/models/fe/concerns/answer_sheet_concern.rb +0 -55
- data/app/models/fe/payment.rb +0 -77
- data/app/models/fe/payment_question.rb +0 -22
- data/app/views/fe/admin/panels/_prop_payment_question.html.erb +0 -1
- data/app/views/fe/application/_logout.html.erb +0 -1
- data/app/views/fe/payment_pages/_credit.html.erb +0 -47
- data/app/views/fe/payment_pages/_mail.html.erb +0 -27
- data/app/views/fe/payment_pages/_payment.html.erb +0 -6
- data/app/views/fe/payment_pages/_staff.html.erb +0 -25
- data/app/views/fe/payment_pages/_staff_results.html.erb +0 -17
- data/app/views/fe/payment_pages/edit.html.erb +0 -75
- data/app/views/fe/payment_pages/staff_search.js.erb +0 -2
- data/app/views/fe/payments/_credit.html.erb +0 -47
- data/app/views/fe/payments/_errors.html.erb +0 -1
- data/app/views/fe/payments/_payment.html.erb +0 -13
- data/app/views/fe/payments/_staff.html.erb +0 -21
- data/app/views/fe/payments/_staff_results.html.erb +0 -18
- data/app/views/fe/payments/approve.js.erb +0 -3
- data/app/views/fe/payments/create.js.erb +0 -19
- data/app/views/fe/payments/destroy.js.erb +0 -7
- data/app/views/fe/payments/edit.html.erb +0 -56
- data/app/views/fe/payments/error.js.erb +0 -3
- data/app/views/fe/payments/no_access.html.erb +0 -7
- data/app/views/fe/payments/staff_search.js.erb +0 -1
- data/app/views/fe/payments/update.html.erb +0 -24
- data/app/views/fe/questions/fe/_payment_question.html.erb +0 -70
- data/db/migrate/20140828045339_create_payments.rb +0 -13
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/factories/payments.rb +0 -7
- data/spec/models/fe/payment_question_spec.rb +0 -65
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
<h3>Credit/Debit Card Payment</h3>
|
|
2
|
-
|
|
3
|
-
<p>Please fill out your payment information below. NOTE: We will
|
|
4
|
-
attempt to bill <strong><%= number_to_currency(@application.sleeve.fee_amount) %></strong> to
|
|
5
|
-
your credit card immediately when you press the 'Submit'
|
|
6
|
-
button below.</p>
|
|
7
|
-
|
|
8
|
-
<h4>Billing Address</h4>
|
|
9
|
-
|
|
10
|
-
<p class="field"><label for="payment_first_name" class="required">First Name</label>
|
|
11
|
-
<%= text_field :payment, :first_name %></p>
|
|
12
|
-
|
|
13
|
-
<p class="field"><label for="payment_last_name" class="required">Last Name</label>
|
|
14
|
-
<%= text_field :payment, :last_name %></p>
|
|
15
|
-
|
|
16
|
-
<p class="field"><label for="payment_address" class="required">Address</label>
|
|
17
|
-
<%= text_field :payment, :address %></p>
|
|
18
|
-
|
|
19
|
-
<p class="field"><label for="payment_city" class="required">City</label>
|
|
20
|
-
<%= text_field :payment, :city %></p>
|
|
21
|
-
|
|
22
|
-
<p class="field"><label for="payment_state" class="required">State</label>
|
|
23
|
-
<%= select :payment, :state, State::NAMES, {:include_blank => true} %></p>
|
|
24
|
-
|
|
25
|
-
<p class="field"><label for="payment_zip" class="required">Zip Code</label>
|
|
26
|
-
<%= text_field :payment, :zip, {:size => "5"} %></p>
|
|
27
|
-
|
|
28
|
-
<h4>Card Information</h4>
|
|
29
|
-
|
|
30
|
-
<p class="field"><label for="payment_card_number" class="required">Credit Card Number</label>
|
|
31
|
-
<%= text_field :payment, :card_number, {:size => "18", :maxlength => "16", :onblur => "checkCard(this.value);"} %>
|
|
32
|
-
<%= image_tag "/images/cc_visa_on.gif", :class => "cc_type", :id => "cc_visa" %>
|
|
33
|
-
<%= image_tag "/images/cc_master_on.gif", :class => "cc_type", :id => "cc_master" %>
|
|
34
|
-
<%= image_tag "/images/cc_american_express_on.gif", :class => "cc_type", :id => "cc_american_express" %>
|
|
35
|
-
<%= image_tag "/images/cc_discover_on.gif", :class => "cc_type", :id => "cc_discover" %>
|
|
36
|
-
<span id="cc_invalid" style="display: none; color: red;">Invalid card number</span>
|
|
37
|
-
<%= hidden_field :payment, :card_type %></p>
|
|
38
|
-
|
|
39
|
-
<p class="field"><label for="payment_expiration_month">Expiration Date</label>
|
|
40
|
-
<%= select :payment, :expiration_month, ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'], {:include_blank => true} %>
|
|
41
|
-
<%= select :payment, :expiration_year, ((Time.now.year)..(Time.now.year+8)).to_a.map(&:to_s), {:include_blank => true} %></p>
|
|
42
|
-
|
|
43
|
-
<p class="field"><label for="payment_card_number" class="required">Security Code (3-4 digit code on back of card)</label>
|
|
44
|
-
<%= text_field :payment, :security_code, {:size => "9", :maxlength => "5"} %></p>
|
|
45
|
-
|
|
46
|
-
<p class="buttons">
|
|
47
|
-
<%= submit_to_remote "submit", "Submit Payment", :url => application_payments_path(@application) %></p>
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
<h3>Check or Money Order</h3>
|
|
2
|
-
|
|
3
|
-
<p>Please note that your application <strong>will not</strong> be
|
|
4
|
-
processed until your mailed payment is received. We suggest that
|
|
5
|
-
you take a moment right now to write your check and put it in the mail.</p>
|
|
6
|
-
|
|
7
|
-
<ol>
|
|
8
|
-
<li>Make your check or money order for <strong><%= number_to_currency(@application.sleeve.fee_amount) %></strong>
|
|
9
|
-
payable to "Campus Crusade for Christ".</li>
|
|
10
|
-
<li>Write your <strong>Full Name</strong> as entered on this
|
|
11
|
-
application (<%= @application.applicant.full_name %>) on a separate
|
|
12
|
-
piece of paper and include it in the envelope with
|
|
13
|
-
your check.</li>
|
|
14
|
-
</ol>
|
|
15
|
-
|
|
16
|
-
<h4>Mail to:</h4>
|
|
17
|
-
|
|
18
|
-
<p>Campus Crusade for Christ<br/>
|
|
19
|
-
Dept 2500 - STINT Coordinator<br/>
|
|
20
|
-
100 Lake Hart Drive<br/>
|
|
21
|
-
Orlando, FL 32832</p>
|
|
22
|
-
|
|
23
|
-
<p class="buttons">
|
|
24
|
-
<%=submit_to_remote "submit", "Click here if you have mailed your payment",
|
|
25
|
-
:html => {:class => "button"},
|
|
26
|
-
:url => application_payments_path(@application),
|
|
27
|
-
:loading => "new Effect.Fade('pay_mail');" %></p>
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
<tr id="<%= dom_id(payment) %>">
|
|
2
|
-
<td width="25%"><%= payment.payment_type%></td>
|
|
3
|
-
<td width="25%"><%= datestamp payment.created_at %></td>
|
|
4
|
-
<td width="25*"><%= payment.status == "Approved" ? number_to_currency(payment.amount) : payment.status %> <% if (payment.payment_type == 'Staff' && payment.status == 'Pending') -%>(Request sent)<% end -%></td>
|
|
5
|
-
<td width="*" style="text-align: right;"><% if (payment.payment_type != "Credit Card" && payment.status != "Approved" && !@application.frozen?) %><%= link_to_remote("Delete", {:url => application_payment_path(@application, payment), :method => :DELETE, :confirm => "Are you sure?"}, :class => "destroy")%><% end -%></td>
|
|
6
|
-
</tr>
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
<h3>Transfer from a Staff/Project/Scholarship Fund</h3>
|
|
2
|
-
|
|
3
|
-
<p>Please enter the First and Last name of the Campus Crusade for
|
|
4
|
-
Christ staff member who will provide the funds for your application,
|
|
5
|
-
then press "Search for Staff". From the list of matching staff,
|
|
6
|
-
select the correct person. An email will then be sent to them with
|
|
7
|
-
your payment request.</p>
|
|
8
|
-
|
|
9
|
-
<p>Please note that your application <strong>can not be processed</strong>
|
|
10
|
-
until they initiate the funds transfer. Once the staff member responds,
|
|
11
|
-
an email will be sent to you.</p>
|
|
12
|
-
|
|
13
|
-
<h4>Search for Staff</h4>
|
|
14
|
-
|
|
15
|
-
<p><label for="payment_staff_first">First & Last Name</label>
|
|
16
|
-
<%= text_field :payment, :staff_first, {:size => 10, :onkeydown => "submitOnEnter('submit_staff_search',event);" }%>
|
|
17
|
-
<%= text_field :payment, :staff_last, {:size => 10, :onkeydown => "submitOnEnter('submit_staff_search',event);" }%>
|
|
18
|
-
<%=submit_to_remote "submit_staff_search", "Search", :html => {:class => "button", :id => "submit_staff_search"},
|
|
19
|
-
:url => staff_search_application_payment_page_path(@application),
|
|
20
|
-
:loading => "Element.show('spinner_staff2');" %>
|
|
21
|
-
<%= image_tag "/images/fe/ajax-loader.gif", :id => "spinner_staff", :style => 'display:none' %></p>
|
|
22
|
-
|
|
23
|
-
<div id="staff_results"></div>
|
|
24
|
-
|
|
25
|
-
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
<% if @results.nil? -%>
|
|
2
|
-
<strong>Please provide the first and last name of the person you want to search for. Partial names will work too (e.g. John S).</strong>
|
|
3
|
-
<% elsif @results.size == 0 -%>
|
|
4
|
-
<strong>Sorry, we could not find anyone with the name you specified. Please try again.</strong>
|
|
5
|
-
<% else -%>
|
|
6
|
-
<p>Send a payment request to:</p>
|
|
7
|
-
|
|
8
|
-
<ul style="margin-left: 35px;">
|
|
9
|
-
<% @results.each do |staff| -%>
|
|
10
|
-
<li style="margin: 0;"><%= radio_button :payment, :payment_account_no, staff.accountNo -%>
|
|
11
|
-
<label for="payment_payment_account_no_<%=staff.accountNo%>" style="display: inline; float: none; font-weight: normal;"><%= staff.firstName %> <%= staff.lastName %> <<i><%= staff.email %></i>></label></li>
|
|
12
|
-
<% end -%>
|
|
13
|
-
</ul>
|
|
14
|
-
|
|
15
|
-
<p class="buttons">
|
|
16
|
-
<%= submit_to_remote "submit", "Send Payment Request", :url => application_payments_path(@application) %></p>
|
|
17
|
-
<% end -%>
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
<% page_dom = 'payment_page'
|
|
2
|
-
next_js = load_page_js(@next_page) -%>
|
|
3
|
-
|
|
4
|
-
<div id="<%= page_dom %>" class="answer-page" style="display: none;"> <!-- this id is parsed by public.js -->
|
|
5
|
-
|
|
6
|
-
<h2>Payment</h2>
|
|
7
|
-
|
|
8
|
-
<div id="page-preview">
|
|
9
|
-
<div class="page">
|
|
10
|
-
|
|
11
|
-
<%= form_tag application_payment_page_path(@application), :id => "#{page_dom}-form", :onsubmit => next_js + "; return false;" do -%>
|
|
12
|
-
|
|
13
|
-
<p>Application Fee: <%= number_to_currency(@application.sleeve.fee_amount) %></p>
|
|
14
|
-
|
|
15
|
-
<p>Current payments:</p>
|
|
16
|
-
<table cellspacing="0" class="list" style="margin-bottom: 27px; width: 95%;">
|
|
17
|
-
<tbody id="payment_table">
|
|
18
|
-
<tr>
|
|
19
|
-
<th>Payment Type</th>
|
|
20
|
-
<th>Payment Date</th>
|
|
21
|
-
<th>Amount Paid</th>
|
|
22
|
-
<th> </th>
|
|
23
|
-
</tr>
|
|
24
|
-
<% @application.payments.each do |payment| -%>
|
|
25
|
-
<%= render :partial => 'payment', :locals => {:payment => payment}%>
|
|
26
|
-
<% end -%>
|
|
27
|
-
<td colspan="3" id="no-payments" <% if @application.payments.length > 0 -%>style="display: none;"<% end -%>>You have not yet applied any payments to this application.</td>
|
|
28
|
-
</tbody>
|
|
29
|
-
</table>
|
|
30
|
-
|
|
31
|
-
<p>Please select one of the following three options for paying your application fee.</p>
|
|
32
|
-
|
|
33
|
-
<ul class="list-choices">
|
|
34
|
-
<li><%= radio_button :payment, :payment_type, "Credit Card", {:onclick => "swapPayment('credit');",
|
|
35
|
-
:disabled => @application.frozen?&&@reference.nil?,
|
|
36
|
-
:readonly => @application.frozen?&&@reference.nil?} %>
|
|
37
|
-
<label for="payment_payment_type_credit_card">Credit/Debit Card (Fastest - Processed immediately online)</label></li>
|
|
38
|
-
<li><%= radio_button :payment, :payment_type, "Mail", {:onclick => "swapPayment('mail');",
|
|
39
|
-
:disabled => @application.frozen?&&@reference.nil?,
|
|
40
|
-
:readonly => @application.frozen?&&@reference.nil?} %>
|
|
41
|
-
<label for="payment_payment_type_mail">Check or Money Order via Postal Mail</label></li>
|
|
42
|
-
<li><%= radio_button :payment, :payment_type, "Staff", {:onclick => "swapPayment('staff');",
|
|
43
|
-
:disabled => @application.frozen?&&@reference.nil?,
|
|
44
|
-
:readonly => @application.frozen?&&@reference.nil?} %>
|
|
45
|
-
<label for="payment_payment_type_staff">Transfer from a Staff/Project/Scholarship Fund</label></li>
|
|
46
|
-
</ul>
|
|
47
|
-
|
|
48
|
-
<div id="payment_errors">
|
|
49
|
-
<%= render :partial => "payments/errors", :locals => {:payment => @payment} %>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
<div id="pay_credit" class="pay_view" <% unless @payment.payment_type == "Credit Card" -%>style="display: none;"<% end -%>>
|
|
53
|
-
<%= render :partial => 'credit' %>
|
|
54
|
-
</div>
|
|
55
|
-
|
|
56
|
-
<div id="pay_mail" class="pay_view" <% unless @payment.payment_type == "Mail" -%>style="display: none;"<% end -%>>
|
|
57
|
-
<%= render :partial => 'mail' %>
|
|
58
|
-
</div>
|
|
59
|
-
|
|
60
|
-
<div id="pay_staff" class="pay_view" <% unless @payment.payment_type == "Staff" -%>style="display: none;"<% end -%>>
|
|
61
|
-
<%= render :partial => 'staff' %>
|
|
62
|
-
</div>
|
|
63
|
-
|
|
64
|
-
<% end -%>
|
|
65
|
-
|
|
66
|
-
<%= button_to_function "Next", next_js unless next_js.empty? %>
|
|
67
|
-
|
|
68
|
-
</div>
|
|
69
|
-
</div>
|
|
70
|
-
|
|
71
|
-
</div>
|
|
72
|
-
|
|
73
|
-
<script language="javascript" type="text/javascript">
|
|
74
|
-
|
|
75
|
-
</script>
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
<h3>Credit/Debit Card Payment</h3>
|
|
2
|
-
|
|
3
|
-
<p>Please fill out your payment information below. NOTE: We will
|
|
4
|
-
attempt to bill <strong><%= number_to_currency(Fe::Application::COST) %></strong> to
|
|
5
|
-
your credit card immediately when you press the 'Submit'
|
|
6
|
-
button below.</p>
|
|
7
|
-
|
|
8
|
-
<h4>Billing Address</h4>
|
|
9
|
-
|
|
10
|
-
<p class="field"><label for="payment_first_name" class="required">First Name</label>
|
|
11
|
-
<%= text_field :payment, :first_name %></p>
|
|
12
|
-
|
|
13
|
-
<p class="field"><label for="payment_last_name" class="required">Last Name</label>
|
|
14
|
-
<%= text_field :payment, :last_name %></p>
|
|
15
|
-
|
|
16
|
-
<p class="field"><label for="payment_address" class="required">Address</label>
|
|
17
|
-
<%= text_field :payment, :address %></p>
|
|
18
|
-
|
|
19
|
-
<p class="field"><label for="payment_city" class="required">City</label>
|
|
20
|
-
<%= text_field :payment, :city %></p>
|
|
21
|
-
|
|
22
|
-
<p class="field"><label for="payment_state" class="required">State</label>
|
|
23
|
-
<%= select :payment, :state, State::NAMES, {:include_blank => true} %></p>
|
|
24
|
-
|
|
25
|
-
<p class="field"><label for="payment_zip" class="required">Zip Code</label>
|
|
26
|
-
<%= text_field :payment, :zip, {:size => "5"} %></p>
|
|
27
|
-
|
|
28
|
-
<h4>Card Information</h4>
|
|
29
|
-
|
|
30
|
-
<p class="field"><label for="payment_card_number" class="required">Credit Card Number</label>
|
|
31
|
-
<%= text_field :payment, :card_number, {:size => "18", :maxlength => "16"} %> <!-- , :onblur => "checkCard(this.value);" -->
|
|
32
|
-
<%= image_tag "/images/cc_visa_on.gif", :class => "cc_type", :id => "cc_visa" %>
|
|
33
|
-
<%= image_tag "/images/cc_master_on.gif", :class => "cc_type", :id => "cc_master" %>
|
|
34
|
-
<%= image_tag "/images/cc_american_express_on.gif", :class => "cc_type", :id => "cc_american_express" %>
|
|
35
|
-
<%= image_tag "/images/cc_discover_on.gif", :class => "cc_type", :id => "cc_discover" %>
|
|
36
|
-
<span id="cc_invalid" style="display: none; color: red;">Invalid card number</span>
|
|
37
|
-
<%= hidden_field :payment, :card_type %></p>
|
|
38
|
-
|
|
39
|
-
<p class="field"><label for="payment_expiration_month">Expiration Date</label>
|
|
40
|
-
<%= select :payment, :expiration_month, ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'], {:include_blank => true} %>
|
|
41
|
-
<%= select :payment, :expiration_year, ((Time.now.year)..(Time.now.year+8)).to_a.map(&:to_s), {:include_blank => true} %></p>
|
|
42
|
-
|
|
43
|
-
<p class="field"><label for="payment_card_number" class="required">Security Code (3-4 digit code on back of card)</label>
|
|
44
|
-
<%= text_field :payment, :security_code, {:size => "9", :maxlength => "5"} %></p>
|
|
45
|
-
|
|
46
|
-
<p class="buttons">
|
|
47
|
-
<%= submit_tag "Submit Payment", :class => 'submit_payment', 'data-url' => fe_application_payments_path(@application) %></p>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<%= error_messages_for :payment %>
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
<tr id="<%= dom_id(payment) %>" class="payment">
|
|
2
|
-
<td><%= payment.payment_type%></td>
|
|
3
|
-
<td><%= l(payment.created_at) if payment.created_at %></td>
|
|
4
|
-
<td>
|
|
5
|
-
<%= payment.status == "Approved" ? number_to_currency(payment.amount) : payment.status %>
|
|
6
|
-
<% if (payment.payment_type == 'Staff' && payment.status == 'Pending') -%>(Request sent)<% end -%>
|
|
7
|
-
</td>
|
|
8
|
-
<td style="text-align: right;">
|
|
9
|
-
<% if (payment.payment_type != "Credit Card" && !payment.approved? && !@application.frozen?) %>
|
|
10
|
-
<%= link_to("Delete", fe_application_payment_path(@application, payment), :method => :delete, :data => { :confirm => "Are you sure?" }, :remote => true, :class => "destroy")%>
|
|
11
|
-
<% end -%>
|
|
12
|
-
</td>
|
|
13
|
-
</tr>
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
<h3>Transfer from a Staff/Project/Scholarship Fund</h3>
|
|
2
|
-
|
|
3
|
-
<p>Please enter the First and Last name of the Campus Crusade for
|
|
4
|
-
Christ staff member who will provide the funds for your application,
|
|
5
|
-
then press "Search for Staff". From the list of matching staff,
|
|
6
|
-
select the correct person. An email will then be sent to them with
|
|
7
|
-
your payment request.</p>
|
|
8
|
-
|
|
9
|
-
<p>Please note that your application <strong>can not be processed</strong>
|
|
10
|
-
until they initiate the funds transfer. Once the staff member responds,
|
|
11
|
-
an email will be sent to you.</p>
|
|
12
|
-
|
|
13
|
-
<h4>Search for Staff</h4>
|
|
14
|
-
|
|
15
|
-
<p><label for="payment_staff_first">First & Last Name</label>
|
|
16
|
-
<%= text_field :payment, :staff_first, { :size => 10 }%>
|
|
17
|
-
<%= text_field :payment, :staff_last, { :size => 10 }%>
|
|
18
|
-
<%= submit_tag "Search", :id => 'staff_search', :class => 'submit_payment', 'data-url' => staff_search_fe_application_payments_path(@application) %>
|
|
19
|
-
</p>
|
|
20
|
-
|
|
21
|
-
<div id="staff_results"></div>
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
<% if @results.nil? -%>
|
|
2
|
-
<strong>Please provide the first and last name of the person you want to search for. Partial names will work too (e.g. John S).</strong>
|
|
3
|
-
<% elsif @results.size == 0 -%>
|
|
4
|
-
<strong>Sorry, we could not find anyone with the name you specified. Please try again.</strong>
|
|
5
|
-
<% else -%>
|
|
6
|
-
<p>Send a payment request to:</p>
|
|
7
|
-
|
|
8
|
-
<ul style="margin-left: 35px;">
|
|
9
|
-
<% @results.each do |staff| -%>
|
|
10
|
-
<li style="margin: 0;"><%= radio_button :payment, :payment_account_no, staff.accountNo, :onclick => "$('#staff_submit').show()" -%>
|
|
11
|
-
<label for="payment_payment_account_no_<%=staff.accountNo%>" style="display: inline; float: none; font-weight: normal;"><%= staff.firstName %> <%= staff.lastName %> <<i><%= staff.email %></i>></label></li>
|
|
12
|
-
<% end -%>
|
|
13
|
-
</ul>
|
|
14
|
-
|
|
15
|
-
<p class="buttons">
|
|
16
|
-
<%= submit_tag "Submit Payment", :id => 'staff_submit', :class => 'submit_payment', 'data-url' => fe_application_payments_path(@application), :style => 'display:none' %>
|
|
17
|
-
</p>
|
|
18
|
-
<% end -%>
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
$.scrollTo('.paymentquestion')
|
|
2
|
-
$('.pay_view').hide();
|
|
3
|
-
<% if @payment.errors.empty? %>
|
|
4
|
-
$("#no-payments").hide();
|
|
5
|
-
$('#payment_table').append('<%= escape_javascript(render('payment', :payment => @payment)) %>')
|
|
6
|
-
$('#payment_table').effect('highlight')
|
|
7
|
-
$('#payment_choices').hide()
|
|
8
|
-
<% else %>
|
|
9
|
-
$('#payment_errors').html('<%= escape_javascript(render('errors', :payment => @payment)) %>')
|
|
10
|
-
<% case @payment.payment_type %>
|
|
11
|
-
<% when "Credit Card" %>
|
|
12
|
-
$('#pay_credit').html('<%= escape_javascript(render('credit')) %>')
|
|
13
|
-
$('#pay_credit').show();
|
|
14
|
-
<% when "Mail" %>
|
|
15
|
-
$('#pay_mail').show();
|
|
16
|
-
<% when "Staff" %>
|
|
17
|
-
$('#pay_staff').show();
|
|
18
|
-
<% end %>
|
|
19
|
-
<% end %>
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
<% person = @application.applicant %>
|
|
2
|
-
<% @title = "Receive Payments" %>
|
|
3
|
-
|
|
4
|
-
<div id="controls">
|
|
5
|
-
<div id="panel">
|
|
6
|
-
<div class="panel">
|
|
7
|
-
<p>Please fully read the instructions to the right and complete the
|
|
8
|
-
necessary fields. Click "Process Payment" when you are done.</p>
|
|
9
|
-
</div>
|
|
10
|
-
</div>
|
|
11
|
-
</div>
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
<div id="preview">
|
|
15
|
-
<%= form_tag application_payment_path(@application, @payment), :method => :put do -%>
|
|
16
|
-
|
|
17
|
-
<h2>Staff Account Transfer Payment</h2>
|
|
18
|
-
|
|
19
|
-
<div class="page" style="padding: 18px;">
|
|
20
|
-
<p><b><%= person.informal_full_name %></b> has just applied for an exciting missions opportunity this
|
|
21
|
-
summer with Campus Crusade for Christ and has indicated you have agreed to
|
|
22
|
-
pay the application fee of <%= number_to_currency(@payment.amount) %>.</p>
|
|
23
|
-
|
|
24
|
-
<p>If you could take a minute and indicate the account
|
|
25
|
-
to use, we can continue with the application process. The application materials
|
|
26
|
-
will then be reviewed and a decision will be given as soon as possible.</p>
|
|
27
|
-
|
|
28
|
-
<p>The applicant's application will not be processed until payment is made.
|
|
29
|
-
Thank you for your help in sending this applicant into the harvest!</p>
|
|
30
|
-
|
|
31
|
-
<p>You may contact the applicant by email at <b><%= person.current_address.email %></b>
|
|
32
|
-
or by phone at <b><%= person.current_address.home_phone %></b>.</p>
|
|
33
|
-
|
|
34
|
-
<p>Please choose one of the following options:</p>
|
|
35
|
-
|
|
36
|
-
<p style="font-weight: bold;">Choose Payment type:</p>
|
|
37
|
-
<ul class="list-choices">
|
|
38
|
-
<li><%= radio_button :payment, :status, "Denied" %>
|
|
39
|
-
<label for="payment_status_denied" style="display:inline">I do not want to pay for this applicant's application.</label></li>
|
|
40
|
-
<li><%= radio_button :payment, :status, "Approved" %>
|
|
41
|
-
<label for="payment_status_approved" style="display:inline">I authorize <%= number_to_currency(@payment.amount) %> to be transferred from my account (<%= @payment.payment_account_no %>) for this applicant's application.</label></li>
|
|
42
|
-
<li><%= radio_button :payment, :status, "Other Account" %>
|
|
43
|
-
I authorize <%= number_to_currency(@payment.amount) %> to be transferred from this specific account:<br/>
|
|
44
|
-
<div style="margin-left: 25px;"><%= text_field_tag :other_account, '', :size => 30 %><br />
|
|
45
|
-
IMPORTANT: If you enter another account and the number you enter is not a
|
|
46
|
-
valid account, your <strong>PERSONAL</strong> account (<%= @payment.payment_account_no %>)
|
|
47
|
-
will be charged. The account designation should be in the new format
|
|
48
|
-
similar to: 'CAMPS/NCO/MYDEPT/MYPROJ'</div></li>
|
|
49
|
-
</ul>
|
|
50
|
-
|
|
51
|
-
<p class="buttons"><%= submit_tag "Process Payment" %></p>
|
|
52
|
-
|
|
53
|
-
<% end -%>
|
|
54
|
-
</div>
|
|
55
|
-
|
|
56
|
-
</div>
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
<p>
|
|
2
|
-
<% if current_person.isStaff? %>
|
|
3
|
-
Sorry, but the payment you are trying to view is not a Staff Transfer.
|
|
4
|
-
<% else %>
|
|
5
|
-
Sorry, but you need to be on staff to approve a Staff Transfer.
|
|
6
|
-
<% end %>
|
|
7
|
-
If you have any questions, email <a href="mailto:gosummerproject@uscm.org">gosummerproject@uscm.org</a>. </p>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
$('#staff_results').html('<%= escape_javascript(render('staff_results')) %>')
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
<% @title = "Receive Payments" %>
|
|
2
|
-
|
|
3
|
-
<div id="controls">
|
|
4
|
-
<div id="panel">
|
|
5
|
-
<div class="panel">
|
|
6
|
-
<p>Thank you.</p>
|
|
7
|
-
</div>
|
|
8
|
-
</div>
|
|
9
|
-
</div>
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
<div id="preview">
|
|
13
|
-
<h2>Staff Account Transfer Payment</h2>
|
|
14
|
-
<div class="page" style="padding: 18px;">
|
|
15
|
-
<% if @payment.approved? -%>
|
|
16
|
-
Thank you for paying the application fee for <%= @person.informal_full_name %>'s applcation.
|
|
17
|
-
<% else -%>
|
|
18
|
-
Thank you for taking the time to deny <%= @person.informal_full_name %>'s
|
|
19
|
-
scholarship request.
|
|
20
|
-
<% end -%>
|
|
21
|
-
<br /><br />
|
|
22
|
-
You may close this window now.
|
|
23
|
-
</div>
|
|
24
|
-
</div>
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
<% @payment = Fe::Payment.new %>
|
|
2
|
-
<% @application = @answer_sheet %>
|
|
3
|
-
<div id="<%= dom_id(payment_question) %>" class="payment_question <%= 'required' if payment_question.required? %>">
|
|
4
|
-
<h2>
|
|
5
|
-
Payment
|
|
6
|
-
</h2>
|
|
7
|
-
<% if @application %>
|
|
8
|
-
<p class="appfee">
|
|
9
|
-
Application Fee: <%= number_to_currency(Fe::Application::COST) %>
|
|
10
|
-
</p>
|
|
11
|
-
<p class="currpayments">
|
|
12
|
-
Current payments:
|
|
13
|
-
</p>
|
|
14
|
-
<table cellspacing="0" class="list" style="margin-bottom: 27px; width: 100%;">
|
|
15
|
-
<thead>
|
|
16
|
-
<tr>
|
|
17
|
-
<th>
|
|
18
|
-
Payment Type
|
|
19
|
-
</th>
|
|
20
|
-
<th>
|
|
21
|
-
Payment Date
|
|
22
|
-
</th>
|
|
23
|
-
<th>
|
|
24
|
-
Amount Paid
|
|
25
|
-
</th>
|
|
26
|
-
<th>
|
|
27
|
-
|
|
28
|
-
</th>
|
|
29
|
-
</tr>
|
|
30
|
-
</thead>
|
|
31
|
-
<tbody id="payment_table">
|
|
32
|
-
<% if @application.payments.empty? %>
|
|
33
|
-
<tr>
|
|
34
|
-
<td colspan="4" id="no-payments" <% if @application.payments.length > 0 -%> style="display: none;" <% end -%>>
|
|
35
|
-
You have not yet applied any payments to this application.
|
|
36
|
-
</td>
|
|
37
|
-
</tr>
|
|
38
|
-
<% else %>
|
|
39
|
-
<% @application.payments.each do |payment| -%><%= render :partial => 'fe/payments/payment', :locals => {:payment => payment}%><% end -%>
|
|
40
|
-
<% end %>
|
|
41
|
-
</tbody>
|
|
42
|
-
</table>
|
|
43
|
-
<div id="payment_choices" style="<%= 'display:none' unless @application.payments.non_denied.empty? %>">
|
|
44
|
-
<p>
|
|
45
|
-
Please select one of the following three options for paying your application fee.
|
|
46
|
-
</p>
|
|
47
|
-
<div id="payment_errors">
|
|
48
|
-
<%= render :partial => "fe/payments/errors", :locals => {:payment => @payment} %>
|
|
49
|
-
</div>
|
|
50
|
-
<ul class="list-choices">
|
|
51
|
-
<li>
|
|
52
|
-
<div class="field field_check">
|
|
53
|
-
<%= radio_button :payment, :payment_type, "Credit Card", {:onclick => "swapPayment('credit');"} %><label for="payment_payment_type_credit_card">Credit/Debit Card (Fastest - Processed immediately online)</label>
|
|
54
|
-
<div id="pay_credit" class="pay_view" <% unless @payment.payment_type == "Credit Card" -%> style="display: none;" <% end -%>>
|
|
55
|
-
<%= render :partial => 'fe/payments/credit' %>
|
|
56
|
-
</div>
|
|
57
|
-
</div>
|
|
58
|
-
</li>
|
|
59
|
-
<li>
|
|
60
|
-
<div class="field field_check">
|
|
61
|
-
<%= radio_button :payment, :payment_type, "Staff", {:onclick => "swapPayment('staff');"} %><label for="payment_payment_type_staff">Transfer from a Staff/Project/Scholarship Fund</label>
|
|
62
|
-
<div id="pay_staff" class="pay_view" <% unless @payment.payment_type == "Staff" -%> style="display: none;" <% end -%>>
|
|
63
|
-
<%= render :partial => 'fe/payments/staff' %>
|
|
64
|
-
</div>
|
|
65
|
-
</div>
|
|
66
|
-
</li>
|
|
67
|
-
</ul>
|
|
68
|
-
</div>
|
|
69
|
-
<% end -%>
|
|
70
|
-
</div>
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
class CreatePayments < ActiveRecord::Migration
|
|
2
|
-
def change
|
|
3
|
-
create_table Fe::Payment.table_name do |t|
|
|
4
|
-
t.timestamps
|
|
5
|
-
t.integer "application_id"
|
|
6
|
-
t.string "payment_type"
|
|
7
|
-
t.string "amount"
|
|
8
|
-
t.string "payment_account_no"
|
|
9
|
-
t.string "auth_code"
|
|
10
|
-
t.string "status"
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
data/spec/dummy/db/test.sqlite3
DELETED
|
Binary file
|
data/spec/factories/payments.rb
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
require 'rails_helper'
|
|
2
|
-
|
|
3
|
-
describe Fe::PaymentQuestion do
|
|
4
|
-
before(:all) do
|
|
5
|
-
@person = create(:fe_person)
|
|
6
|
-
@application = create(:application, applicant: @person)
|
|
7
|
-
@payment_question = Fe::PaymentQuestion.new
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
describe "when calling 'response' function" do
|
|
11
|
-
it 'returns a new payment if no application specified' do
|
|
12
|
-
response = @payment_question.send(:response)
|
|
13
|
-
expect(response.new_record?).to be_truthy
|
|
14
|
-
end
|
|
15
|
-
it 'returns the existing application payment if the application already have payments' do
|
|
16
|
-
payment = create(:payment, application: @application)
|
|
17
|
-
response = @payment_question.send(:response, @application).first
|
|
18
|
-
expect(response.id).to be payment.id
|
|
19
|
-
end
|
|
20
|
-
it 'returns a new application payment if the application do not have payments yet' do
|
|
21
|
-
response = @payment_question.send(:response, @application)
|
|
22
|
-
expect(response).not_to be nil
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
describe "when calling 'display_response' function" do
|
|
27
|
-
it 'returns a blank string if no application specified' do
|
|
28
|
-
expect(@payment_question).to receive(:response)
|
|
29
|
-
response = @payment_question.send(:display_response)
|
|
30
|
-
expect(response).to eq('')
|
|
31
|
-
end
|
|
32
|
-
it 'returns an existing application payment string if the application already have payments' do
|
|
33
|
-
payment = create(:payment, application: @application)
|
|
34
|
-
expect(@payment_question).to receive(:response).with(@application).and_return(payment)
|
|
35
|
-
response = @payment_question.send(:display_response, @application)
|
|
36
|
-
expect(response).not_to be_blank
|
|
37
|
-
end
|
|
38
|
-
it 'returns a blank string if the application do not have payments yet' do
|
|
39
|
-
expect(@payment_question).to receive(:response).with(@application)
|
|
40
|
-
response = @payment_question.send(:display_response, @application)
|
|
41
|
-
expect(response).to eq('')
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
#describe "when calling 'has_response' function" do
|
|
46
|
-
#before(:each) do
|
|
47
|
-
#question_sheet = create(:question_sheet)
|
|
48
|
-
#answer_sheet = create(:answer_sheet)
|
|
49
|
-
#answer_sheet_question_sheet = create(:answer_sheet_question_sheet, answer_sheet: answer_sheet, question_sheet: question_sheet)
|
|
50
|
-
#end
|
|
51
|
-
#it "returns a boolean 'false' if no application specified" do
|
|
52
|
-
#response = @payment_question.send(:has_response?)
|
|
53
|
-
#response.should be false
|
|
54
|
-
#end
|
|
55
|
-
#it "returns a boolean 'true' if the application already have payments" do
|
|
56
|
-
#payment = create(:payment, application: @application)
|
|
57
|
-
#response = @payment_question.send(:has_response?, @application)
|
|
58
|
-
#response.should be true
|
|
59
|
-
#end
|
|
60
|
-
#it "returns a boolean 'false' if the application do not have payments yet" do
|
|
61
|
-
#response = @payment_question.send(:has_response?, @application)
|
|
62
|
-
#response.should be false
|
|
63
|
-
#end
|
|
64
|
-
#end
|
|
65
|
-
end
|