fe 1.0.0 → 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/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 -1
- data/app/assets/javascripts/fe/fe.admin.js +2 -6
- data/app/assets/javascripts/fe/{fe.common.js → fe.common.js.erb} +14 -7
- data/app/assets/javascripts/fe/fe.public.js +1 -2
- data/app/assets/javascripts/fe/{fe.public.nojquery.js → fe.public.nojquery.js.erb} +152 -76
- data/app/assets/javascripts/fe/jquery.html5_upload.js +258 -0
- data/app/assets/stylesheets/fe/fe.screen.css.scss.erb +22 -1
- data/app/assets/stylesheets/fe/validation.css +5 -1
- data/app/controllers/{fe/concerns → concerns/fe}/admin/question_sheets_controller_concern.rb +15 -16
- data/app/controllers/concerns/fe/answer_pages_controller_concern.rb +131 -0
- data/app/controllers/{fe/concerns → concerns/fe}/answer_sheets_controller_concern.rb +14 -6
- data/app/controllers/{fe/concerns → concerns/fe}/application_controller_concern.rb +3 -3
- data/app/controllers/fe/admin/elements_controller.rb +46 -24
- data/app/controllers/fe/admin/email_templates_controller.rb +5 -5
- data/app/controllers/fe/admin/question_pages_controller.rb +8 -8
- data/app/controllers/fe/reference_pages_controller.rb +11 -11
- data/app/controllers/fe/reference_sheets_controller.rb +4 -4
- data/app/controllers/fe/references_controller.rb +19 -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 +3 -3
- data/app/jobs/fe/update_reference_sheet_visibility_job.rb +11 -0
- data/app/mailers/fe/notifier.rb +4 -4
- data/app/models/answer_sheet.rb +1 -1
- 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 +6 -5
- data/app/models/concerns/fe/answer_sheet_concern.rb +125 -0
- data/app/models/{fe/concerns → concerns/fe}/choice_field_concern.rb +41 -23
- 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 +14 -10
- data/app/models/fe/condition.rb +4 -4
- data/app/models/fe/date_field.rb +1 -1
- data/app/models/fe/element.rb +126 -44
- data/app/models/fe/email_address.rb +2 -2
- data/app/models/fe/email_template.rb +1 -1
- data/app/models/fe/page.rb +94 -19
- data/app/models/fe/page_element.rb +2 -2
- data/app/models/fe/paragraph.rb +1 -1
- data/app/models/fe/person.rb +5 -5
- data/app/models/fe/phone_number.rb +1 -1
- data/app/models/fe/question.rb +62 -38
- data/app/models/fe/question_grid.rb +15 -3
- data/app/models/fe/question_set.rb +53 -13
- data/app/models/fe/question_sheet.rb +49 -16
- data/app/models/fe/reference_question.rb +9 -3
- data/app/models/fe/reference_sheet.rb +102 -47
- 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 +6 -6
- data/app/views/fe/admin/elements/create.js.erb +3 -3
- data/app/views/fe/admin/elements/destroy.js.erb +1 -1
- data/app/views/fe/admin/elements/drop.js.erb +1 -1
- data/app/views/fe/admin/elements/duplicate.js.erb +1 -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 +8 -8
- 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 +2 -17
- 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 +1 -1
- 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 +36 -17
- data/app/views/fe/admin/panels/_prop_date_field.html.erb +1 -1
- data/app/views/fe/admin/panels/_prop_element.html.erb +5 -5
- data/app/views/fe/admin/panels/_prop_page.html.erb +3 -3
- data/app/views/fe/admin/panels/_prop_paragraph.html.erb +8 -8
- 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 +1 -1
- data/app/views/fe/admin/panels/_prop_sheet.html.erb +3 -3
- data/app/views/fe/admin/panels/_prop_text_field.html.erb +12 -12
- data/app/views/fe/admin/question_pages/_element.html.erb +7 -7
- 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 +13 -14
- data/app/views/fe/answer_pages/_element.html.erb +22 -2
- data/app/views/fe/answer_pages/_page_name.html.erb +1 -1
- data/app/views/fe/answer_pages/show.html.erb +39 -0
- data/app/views/fe/answer_pages/update.js.erb +10 -2
- data/app/views/fe/answer_sheets/_answer_sheet.html.erb +4 -4
- data/app/views/fe/answer_sheets/_element.html.erb +9 -7
- 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 +3 -3
- data/app/views/fe/answer_sheets/_submit_to.html.erb +1 -1
- data/app/views/fe/answer_sheets/_title.html.erb +1 -1
- data/app/views/fe/answer_sheets/edit.html.erb +18 -18
- data/app/views/fe/answer_sheets/incomplete.js.erb +7 -4
- data/app/views/fe/answer_sheets/index.html.erb +1 -1
- data/app/views/fe/answer_sheets/show.html.erb +1 -1
- data/app/views/fe/applications/_logout.html.erb +1 -1
- data/app/views/fe/questions/fe/_acceptance.html.erb +10 -9
- data/app/views/fe/questions/fe/_attachment_field.html.erb +129 -10
- data/app/views/fe/questions/fe/_checkbox_field.html.erb +18 -16
- data/app/views/fe/questions/fe/_country.html.erb +6 -6
- data/app/views/fe/questions/fe/_date_field.html.erb +5 -4
- data/app/views/fe/questions/fe/_date_field_mmyy.html.erb +8 -8
- data/app/views/fe/questions/fe/_drop_down_field.html.erb +5 -5
- data/app/views/fe/questions/fe/_question_grid.html.erb +10 -10
- data/app/views/fe/questions/fe/_question_grid_with_total.html.erb +8 -8
- data/app/views/fe/questions/fe/_questions.html.erb +11 -5
- data/app/views/fe/questions/fe/_radio_button_field.html.erb +35 -19
- data/app/views/fe/questions/fe/_rating.html.erb +56 -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 +40 -24
- 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/_state_chooser.html.erb +6 -6
- data/app/views/fe/questions/fe/_text_area_field.html.erb +14 -10
- 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 +11 -8
- data/app/views/fe/reference_pages/_reference.html.erb +12 -12
- data/app/views/fe/reference_pages/edit.html.erb +4 -4
- data/app/views/fe/reference_sheets/done.html.erb +2 -2
- data/app/views/fe/reference_sheets/not_found.html.erb +3 -3
- data/app/views/fe/references/edit.html.erb +5 -5
- data/app/views/fe/references/show.html.erb +3 -3
- 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 +9 -9
- 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 +1 -1
- data/app/views/layouts/fe/application.html.erb +3 -4
- 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/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 -1
- data/db/migrate/20131003041856_core.rb +23 -23
- data/db/migrate/20131003044250_create_reference_sheets.rb +1 -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 +1 -1
- data/db/migrate/20140624180246_create_fe_addresses.rb +1 -1
- data/db/migrate/20140624182216_create_fe_phone_numbers.rb +1 -1
- data/db/migrate/20140625160545_create_fe_users.rb +1 -1
- 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 +1 -1
- data/db/migrate/20150713022326_add_locale_columns.rb +1 -1
- data/db/migrate/20150714220730_add_locale_to_answer_sheet.rb +1 -1
- data/db/migrate/20150925181652_add_share_to_elements.rb +5 -0
- data/db/migrate/20150928085325_change_pages_all_element_ids_to_text.rb +1 -1
- data/db/migrate/20150930191538_add_locale_to_reference_sheets.rb +1 -1
- 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/fe/engine.rb +10 -10
- data/lib/fe/version.rb +1 -1
- data/lib/fe.rb +7 -1
- data/spec/controllers/fe/admin/elements_controller_spec.rb +30 -20
- data/spec/controllers/fe/admin/email_templates_controller_spec.rb +2 -2
- data/spec/controllers/fe/admin/question_pages_controller_spec.rb +1 -1
- data/spec/controllers/fe/admin/question_sheets_controller_spec.rb +4 -4
- data/spec/controllers/fe/answer_pages_controller_spec.rb +86 -30
- data/spec/controllers/fe/answer_sheets_controller_spec.rb +65 -9
- data/spec/dummy/app/assets/config/manifest.js +0 -0
- data/spec/dummy/app/models/user.rb +1 -1
- data/spec/dummy/app/views/layouts/application.html.erb +2 -2
- data/spec/dummy/config/application.rb +1 -0
- data/spec/dummy/config/environments/test.rb +3 -3
- data/spec/dummy/config/initializers/assets.rb +5 -2
- data/spec/dummy/config/initializers/fast_gettext.rb +1 -1
- 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/db/migrate/20141203214017_core.fe_engine.rb +23 -23
- data/spec/dummy/db/migrate/20141203214018_create_reference_sheets.fe_engine.rb +1 -1
- data/spec/dummy/db/migrate/20141203214019_add_element_and_answer_fields.fe_engine.rb +3 -3
- data/spec/dummy/db/migrate/20141203214020_create_email_templates.fe_engine.rb +2 -2
- data/spec/dummy/db/migrate/20141203214021_add_max_lengths.fe_engine.rb +1 -1
- data/spec/dummy/db/migrate/20141203214022_create_join_table.fe_engine.rb +1 -1
- data/spec/dummy/db/migrate/20141203214023_remove_question_id_from_element.fe_engine.rb +1 -1
- data/spec/dummy/db/migrate/20141203214024_create_fe_people.fe_engine.rb +1 -1
- data/spec/dummy/db/migrate/20141203214025_create_fe_addresses.fe_engine.rb +1 -1
- data/spec/dummy/db/migrate/20141203214027_create_fe_users.fe_engine.rb +1 -1
- data/spec/dummy/db/migrate/20141203214028_add_conditional_type_to_elements.fe_engine.rb +1 -1
- data/spec/dummy/db/migrate/20141203214029_add_conditional_answer_to_elements.fe_engine.rb +1 -1
- data/spec/dummy/db/migrate/20141203214030_remove_short_value_column.fe_engine.rb +1 -1
- data/spec/dummy/db/migrate/20141203214031_move_conditional_ids_used_for_choice_field_to_their_own_column.fe_engine.rb +1 -1
- data/spec/dummy/db/migrate/20150123215803_create_users.rb +1 -1
- data/spec/dummy/db/migrate/20150504222619_add_all_element_ids_to_pages.fe_engine.rb +1 -1
- 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 +1 -1
- data/spec/dummy/db/migrate/20150930190002_add_locale_columns.fe_engine.rb +1 -1
- data/spec/dummy/db/migrate/20150930190003_add_locale_to_answer_sheet.fe_engine.rb +1 -1
- data/spec/dummy/db/migrate/20150930190004_change_pages_all_element_ids_to_text.fe_engine.rb +1 -1
- data/spec/dummy/db/migrate/20150930191756_add_locale_to_reference_sheets.fe_engine.rb +1 -1
- 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 +71 -79
- 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 -3
- data/spec/factories/dummy_applications.rb +3 -3
- data/spec/factories/dummy_people.rb +3 -3
- data/spec/factories/dummy_users.rb +3 -3
- data/spec/factories/elements.rb +21 -21
- data/spec/factories/email_templates.rb +3 -3
- data/spec/factories/fe_addresses.rb +10 -10
- data/spec/factories/fe_email_addresses.rb +3 -3
- data/spec/factories/fe_email_templates.rb +4 -4
- data/spec/factories/fe_people.rb +5 -5
- data/spec/factories/fe_phone_numbers.rb +3 -3
- data/spec/factories/fe_user.rb +3 -3
- 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 +2 -2
- data/spec/factories/reference_questions.rb +1 -1
- data/spec/factories/reference_sheets.rb +1 -1
- data/spec/jobs/fe/update_reference_sheet_visibility_job_spec.rb +40 -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 +47 -1
- data/spec/models/fe/condition_spec.rb +2 -2
- data/spec/models/fe/element_spec.rb +252 -60
- 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 +57 -12
- 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 +11 -15
- 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 +287 -4
- data/spec/models/fe/text_field_spec.rb +22 -0
- data/spec/rails_helper.rb +79 -76
- metadata +195 -57
- data/app/assets/javascripts/fe/jquery.scrollTo-min.js +0 -7
- data/app/controllers/fe/concerns/answer_pages_controller_concern.rb +0 -84
- data/app/models/fe/concerns/answer_sheet_concern.rb +0 -85
- data/spec/dummy/db/migrate/20141203214026_create_create_fe_phone_numbers.fe_engine.rb +0 -17
- data/spec/dummy/log/development.log +0 -5
- /data/app/{assets/stylesheets/360front.css → views.current/fe/admin/elements/reorder.js.erb} +0 -0
|
@@ -16,7 +16,7 @@ describe Fe::AnswerSheetsController, type: :controller do
|
|
|
16
16
|
it 'should work' do
|
|
17
17
|
create(:answer_sheet_question_sheet, question_sheet: question_sheet, answer_sheet: answer_sheet)
|
|
18
18
|
|
|
19
|
-
post :create, question_sheet_id: question_sheet.id
|
|
19
|
+
post :create, params: {question_sheet_id: question_sheet.id}
|
|
20
20
|
expect(assigns(:answer_sheet)).to_not be_nil
|
|
21
21
|
end
|
|
22
22
|
end
|
|
@@ -25,7 +25,7 @@ describe Fe::AnswerSheetsController, type: :controller do
|
|
|
25
25
|
create(:answer_sheet_question_sheet, question_sheet: question_sheet, answer_sheet: answer_sheet)
|
|
26
26
|
page = create(:page, question_sheet: question_sheet)
|
|
27
27
|
|
|
28
|
-
get :edit, id: answer_sheet.id
|
|
28
|
+
get :edit, params: {id: answer_sheet.id}
|
|
29
29
|
expect(assigns(:elements)).to eq([])
|
|
30
30
|
expect(assigns(:page)).to eq(page)
|
|
31
31
|
end
|
|
@@ -35,7 +35,7 @@ describe Fe::AnswerSheetsController, type: :controller do
|
|
|
35
35
|
create(:answer_sheet_question_sheet, question_sheet: question_sheet, answer_sheet: answer_sheet)
|
|
36
36
|
request.env['HTTP_REFERER'] = '/referrer'
|
|
37
37
|
|
|
38
|
-
get :edit, id: answer_sheet.id
|
|
38
|
+
get :edit, params: {id: answer_sheet.id}
|
|
39
39
|
expect(response).to redirect_to('http://test.host/referrer')
|
|
40
40
|
end
|
|
41
41
|
end
|
|
@@ -43,22 +43,63 @@ describe Fe::AnswerSheetsController, type: :controller do
|
|
|
43
43
|
it 'should render an empty page with a flash message' do
|
|
44
44
|
create(:answer_sheet_question_sheet, question_sheet: question_sheet, answer_sheet: answer_sheet)
|
|
45
45
|
|
|
46
|
-
get :edit, id: answer_sheet.id
|
|
46
|
+
get :edit, params: {id: answer_sheet.id}
|
|
47
47
|
expect(response.body['Sorry, there are no questions for this form yet.']).to_not be_nil
|
|
48
48
|
end
|
|
49
49
|
end
|
|
50
50
|
end
|
|
51
51
|
end
|
|
52
52
|
context '#show' do
|
|
53
|
+
let(:page) { create(:page, question_sheet: question_sheet) }
|
|
54
|
+
let(:el_confidential) { create(:text_field_element, is_confidential: true) }
|
|
55
|
+
let(:el_visible) { create(:text_field_element, is_confidential: false) }
|
|
56
|
+
|
|
57
|
+
before do
|
|
58
|
+
answer_sheet.question_sheets << question_sheet
|
|
59
|
+
end
|
|
60
|
+
|
|
53
61
|
it 'should work' do
|
|
54
|
-
create(:answer_sheet_question_sheet, question_sheet: question_sheet, answer_sheet: answer_sheet)
|
|
55
|
-
page = create(:page, question_sheet: question_sheet)
|
|
56
62
|
text_field = create(:text_field_element)
|
|
57
|
-
|
|
63
|
+
page.elements << text_field
|
|
58
64
|
|
|
59
|
-
get :show, id: answer_sheet.id
|
|
65
|
+
get :show, params: {id: answer_sheet.id}
|
|
60
66
|
expect(assigns(:elements)).to eq(page => [text_field])
|
|
61
67
|
end
|
|
68
|
+
context 'filtering' do
|
|
69
|
+
let(:el_confidential) { create(:text_field_element, is_confidential: true) }
|
|
70
|
+
let(:el_visible) { create(:text_field_element, is_confidential: false) }
|
|
71
|
+
let(:el_visible2) { create(:text_field_element, is_confidential: false) }
|
|
72
|
+
|
|
73
|
+
before do
|
|
74
|
+
page.elements << el_confidential << el_visible << el_visible2
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it 'should filter out elements' do
|
|
78
|
+
allow_any_instance_of(Fe::AnswerSheetsController).to receive(:get_filter).and_return(filter_default: :show, filter: [ :is_confidential ])
|
|
79
|
+
|
|
80
|
+
get :show, params: {id: answer_sheet.id}
|
|
81
|
+
expect(assigns(:elements)).to eq(page => [el_visible, el_visible2])
|
|
82
|
+
end
|
|
83
|
+
it 'should filter in elements' do
|
|
84
|
+
allow_any_instance_of(Fe::AnswerSheetsController).to receive(:get_filter).and_return(filter_default: :hide, filter: [ :is_confidential ])
|
|
85
|
+
|
|
86
|
+
get :show, params: {id: answer_sheet.id}
|
|
87
|
+
expect(assigns(:elements)).to eq(page => [el_confidential])
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
context 'element on multiple pages' do
|
|
91
|
+
let!(:question_sheet2) { create(:question_sheet) }
|
|
92
|
+
let!(:page2) { create(:page, question_sheet: question_sheet2) }
|
|
93
|
+
|
|
94
|
+
it 'should pull the right page' do
|
|
95
|
+
text_field = create(:text_field_element)
|
|
96
|
+
page.elements << text_field
|
|
97
|
+
page2.elements << text_field
|
|
98
|
+
|
|
99
|
+
get :show, params: {id: answer_sheet.id}
|
|
100
|
+
expect(assigns(:elements)).to eq(page => [text_field])
|
|
101
|
+
end
|
|
102
|
+
end
|
|
62
103
|
end
|
|
63
104
|
context '#send_reference_invite' do
|
|
64
105
|
it 'should work' do
|
|
@@ -70,7 +111,14 @@ describe Fe::AnswerSheetsController, type: :controller do
|
|
|
70
111
|
create(:email_template, name: 'Reference Invite')
|
|
71
112
|
create(:email_template, name: 'Reference Notification to Applicant')
|
|
72
113
|
|
|
73
|
-
|
|
114
|
+
post :send_reference_invite, params: {
|
|
115
|
+
reference: {
|
|
116
|
+
ref_sheet.id.to_s => {
|
|
117
|
+
relationship: 'rel', title: 'title', first_name: 'first_name',
|
|
118
|
+
last_name: 'last_name', phone: 'phone', email: 'email@email.com' }
|
|
119
|
+
},
|
|
120
|
+
reference_id: ref_sheet.id, id: answer_sheet.id
|
|
121
|
+
}, xhr: true
|
|
74
122
|
ref_sheet.reload
|
|
75
123
|
expect(ref_sheet.relationship).to eq('rel')
|
|
76
124
|
expect(ref_sheet.title).to eq('title')
|
|
@@ -80,4 +128,12 @@ describe Fe::AnswerSheetsController, type: :controller do
|
|
|
80
128
|
expect(ref_sheet.email).to eq('email@email.com')
|
|
81
129
|
end
|
|
82
130
|
end
|
|
131
|
+
context '#pages' do
|
|
132
|
+
it 'filters out hidden pages' do
|
|
133
|
+
create(:answer_sheet_question_sheet, question_sheet: question_sheet, answer_sheet: answer_sheet)
|
|
134
|
+
page = create(:page, question_sheet: question_sheet)
|
|
135
|
+
page2 = create(:page, question_sheet: question_sheet, hidden: true)
|
|
136
|
+
expect(answer_sheet.pages).to eq([page])
|
|
137
|
+
end
|
|
138
|
+
end
|
|
83
139
|
end
|
|
File without changes
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
<html>
|
|
3
3
|
<head>
|
|
4
4
|
<title>Dummy</title>
|
|
5
|
-
<%= stylesheet_link_tag
|
|
6
|
-
<%= javascript_include_tag
|
|
5
|
+
<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>
|
|
6
|
+
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
|
|
7
7
|
<%= csrf_meta_tags %>
|
|
8
8
|
</head>
|
|
9
9
|
<body>
|
|
@@ -13,8 +13,8 @@ Rails.application.configure do
|
|
|
13
13
|
config.eager_load = false
|
|
14
14
|
|
|
15
15
|
# Configure static asset server for tests with Cache-Control for performance.
|
|
16
|
-
config.
|
|
17
|
-
config.
|
|
16
|
+
config.public_file_server.enabled = true
|
|
17
|
+
config.public_file_server.headers = { 'Cache-Control' => 'public, max-age=3600' }
|
|
18
18
|
|
|
19
19
|
# Show full error reports and disable caching.
|
|
20
20
|
config.consider_all_requests_local = true
|
|
@@ -37,5 +37,5 @@ Rails.application.configure do
|
|
|
37
37
|
# Raises error for missing translations
|
|
38
38
|
# config.action_view.raise_on_missing_translations = true
|
|
39
39
|
|
|
40
|
-
config.action_mailer.default_url_options = { :
|
|
40
|
+
config.action_mailer.default_url_options = { host: 'test.com' }
|
|
41
41
|
end
|
|
@@ -4,5 +4,8 @@
|
|
|
4
4
|
Rails.application.config.assets.version = '1.0'
|
|
5
5
|
|
|
6
6
|
# Precompile additional assets.
|
|
7
|
-
|
|
8
|
-
#
|
|
7
|
+
|
|
8
|
+
# javascripts
|
|
9
|
+
Rails.application.config.assets.precompile += %w(fe/fe.public.js)
|
|
10
|
+
# images
|
|
11
|
+
Rails.application.config.assets.precompile += %w(fe/ajax-loader.gif fe/status.gif fe/icons/question-balloon.png)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
FastGettext.add_text_domain 'app', :
|
|
1
|
+
FastGettext.add_text_domain 'app', path: 'locale', type: :po
|
|
2
2
|
FastGettext.default_available_locales = ['en', 'fr'] #all you want to allow
|
|
3
3
|
FastGettext.default_text_domain = 'app'
|
|
4
4
|
FastGettext.locale = 'en'
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# This migration comes from fe_engine (originally 20131003041856)
|
|
2
|
-
class Core < ActiveRecord::Migration
|
|
2
|
+
class Core < ActiveRecord::Migration[4.2]
|
|
3
3
|
def change
|
|
4
4
|
create_table Fe::QuestionSheet.table_name do |t|
|
|
5
|
-
t.string :label, :
|
|
6
|
-
t.boolean :archived, :
|
|
5
|
+
t.string :label, limit: 100, null: false # name used internally in admin
|
|
6
|
+
t.boolean :archived, default: false, nil: false
|
|
7
7
|
t.timestamps
|
|
8
8
|
end
|
|
9
9
|
|
|
@@ -17,33 +17,33 @@
|
|
|
17
17
|
add_index Fe.answer_sheet_class.constantize.table_name, :applicant_id, name: 'question_sheet_id'
|
|
18
18
|
|
|
19
19
|
create_table Fe::Page.table_name do |t|
|
|
20
|
-
t.integer :question_sheet_id, :
|
|
21
|
-
t.string :label, :
|
|
20
|
+
t.integer :question_sheet_id, null: false
|
|
21
|
+
t.string :label, limit: 60, null: false # page title
|
|
22
22
|
t.integer :number # page number (order)
|
|
23
|
-
t.boolean :no_cache, :
|
|
24
|
-
t.boolean :hidden, :
|
|
23
|
+
t.boolean :no_cache, default: false
|
|
24
|
+
t.boolean :hidden, default: false
|
|
25
25
|
t.timestamps
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
create_table Fe::Element.table_name do |t|
|
|
29
|
-
t.integer :question_grid_id, :
|
|
30
|
-
t.string :kind, :
|
|
31
|
-
t.string :style, :
|
|
32
|
-
t.string :label, :
|
|
33
|
-
t.text :content, :
|
|
29
|
+
t.integer :question_grid_id, null: true
|
|
30
|
+
t.string :kind, limit: 40, null: false # single table inheritance: class name
|
|
31
|
+
t.string :style, limit: 40 # render style
|
|
32
|
+
t.string :label, limit: 255 # question label, section heading
|
|
33
|
+
t.text :content, null: true # for content/instructions, and for choices (one per line)
|
|
34
34
|
t.boolean :required # question is required?
|
|
35
|
-
t.string :slug, :
|
|
35
|
+
t.string :slug, limit: 36 # variable reference
|
|
36
36
|
t.integer :position
|
|
37
37
|
t.string :object_name, :attribute_name
|
|
38
38
|
t.string :source
|
|
39
39
|
t.string :value_xpath
|
|
40
40
|
t.string :text_xpath
|
|
41
41
|
t.string :cols
|
|
42
|
-
t.boolean :is_confidential, :
|
|
42
|
+
t.boolean :is_confidential, default: false
|
|
43
43
|
t.string :total_cols
|
|
44
44
|
t.string :css_id
|
|
45
45
|
t.string :css_class
|
|
46
|
-
t.integer :question_sheet_id, :
|
|
46
|
+
t.integer :question_sheet_id, null: false
|
|
47
47
|
t.timestamps
|
|
48
48
|
end
|
|
49
49
|
add_index Fe::Element.table_name, :slug
|
|
@@ -59,10 +59,10 @@
|
|
|
59
59
|
|
|
60
60
|
|
|
61
61
|
create_table Fe::Answer.table_name do |t|
|
|
62
|
-
t.integer :answer_sheet_id, :
|
|
63
|
-
t.integer :question_id, :
|
|
62
|
+
t.integer :answer_sheet_id, null: false
|
|
63
|
+
t.integer :question_id, null: false
|
|
64
64
|
t.text :value
|
|
65
|
-
t.string :short_value, :
|
|
65
|
+
t.string :short_value, null: true, limit: 255 # indexed copy of :value
|
|
66
66
|
# paperclip columns
|
|
67
67
|
t.integer :attachment_file_size
|
|
68
68
|
t.string :attachment_content_type
|
|
@@ -75,11 +75,11 @@
|
|
|
75
75
|
add_index Fe::Answer.table_name, [:answer_sheet_id, :question_id], name: 'answer_sheet_question'
|
|
76
76
|
|
|
77
77
|
create_table Fe::Condition.table_name do |t|
|
|
78
|
-
t.integer :question_sheet_id, :
|
|
79
|
-
t.integer :trigger_id, :
|
|
80
|
-
t.string :expression, :
|
|
81
|
-
t.integer :toggle_page_id, :
|
|
82
|
-
t.integer :toggle_id, :
|
|
78
|
+
t.integer :question_sheet_id, null: false
|
|
79
|
+
t.integer :trigger_id, null: false
|
|
80
|
+
t.string :expression, null: false, limit: 255
|
|
81
|
+
t.integer :toggle_page_id, null: false
|
|
82
|
+
t.integer :toggle_id, null: true # null if toggles whole page
|
|
83
83
|
t.timestamps
|
|
84
84
|
end
|
|
85
85
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# This migration comes from fe_engine (originally 20131003044250)
|
|
2
|
-
class CreateReferenceSheets < ActiveRecord::Migration
|
|
2
|
+
class CreateReferenceSheets < ActiveRecord::Migration[4.2]
|
|
3
3
|
def change
|
|
4
4
|
create_table Fe::ReferenceSheet.table_name do |t|
|
|
5
5
|
t.integer :question_id
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# This migration comes from fe_engine (originally 20131003044436)
|
|
2
|
-
class AddElementAndAnswerFields < ActiveRecord::Migration
|
|
2
|
+
class AddElementAndAnswerFields < ActiveRecord::Migration[4.2]
|
|
3
3
|
def change
|
|
4
4
|
add_column Fe::Element.table_name, :conditional_id, :integer
|
|
5
5
|
add_column Fe::Element.table_name, :tooltip, :text
|
|
6
|
-
add_column Fe::Element.table_name, :hide_label, :boolean, :
|
|
7
|
-
add_column Fe::Element.table_name, :hide_option_labels, :boolean, :
|
|
6
|
+
add_column Fe::Element.table_name, :hide_label, :boolean, default: false, nil: false
|
|
7
|
+
add_column Fe::Element.table_name, :hide_option_labels, :boolean, default: false, nil: false
|
|
8
8
|
|
|
9
9
|
#add_index Fe::Element.table_name, :conditional_id
|
|
10
10
|
end
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# This migration comes from fe_engine (originally 20131003044518)
|
|
2
|
-
class CreateEmailTemplates < ActiveRecord::Migration
|
|
2
|
+
class CreateEmailTemplates < ActiveRecord::Migration[4.2]
|
|
3
3
|
def up
|
|
4
4
|
create_table Fe::EmailTemplate.table_name do |t|
|
|
5
|
-
t.string :name, :
|
|
5
|
+
t.string :name, limit: 1000, null: false
|
|
6
6
|
t.text :content
|
|
7
7
|
t.boolean :enabled
|
|
8
8
|
t.string :subject
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# This migration comes from fe_engine (originally 20131003044714)
|
|
2
|
-
class CreateJoinTable < ActiveRecord::Migration
|
|
2
|
+
class CreateJoinTable < ActiveRecord::Migration[4.2]
|
|
3
3
|
def change
|
|
4
4
|
create_table Fe::AnswerSheetQuestionSheet.table_name do |t|
|
|
5
5
|
t.integer :answer_sheet_id
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# This migration comes from fe_engine (originally 20140808202507)
|
|
2
|
-
class AddConditionalTypeToElements < ActiveRecord::Migration
|
|
2
|
+
class AddConditionalTypeToElements < ActiveRecord::Migration[4.2]
|
|
3
3
|
def change
|
|
4
4
|
add_column Fe::Element.table_name, :conditional_type, :string
|
|
5
5
|
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# This migration comes from fe_engine (originally 20140808203609)
|
|
2
|
-
class AddConditionalAnswerToElements < ActiveRecord::Migration
|
|
2
|
+
class AddConditionalAnswerToElements < ActiveRecord::Migration[4.2]
|
|
3
3
|
def change
|
|
4
4
|
add_column Fe::Element.table_name, :conditional_answer, :text
|
|
5
5
|
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# This migration comes from fe_engine (originally 20141109154522)
|
|
2
|
-
class MoveConditionalIdsUsedForChoiceFieldToTheirOwnColumn < ActiveRecord::Migration
|
|
2
|
+
class MoveConditionalIdsUsedForChoiceFieldToTheirOwnColumn < ActiveRecord::Migration[4.2]
|
|
3
3
|
def change
|
|
4
4
|
add_column Fe::Element.table_name, :choice_field_id, :integer
|
|
5
5
|
Fe::Element.reset_column_information
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# This migration comes from fe_engine (originally 20150713022326)
|
|
2
|
-
class AddLocaleColumns < ActiveRecord::Migration
|
|
2
|
+
class AddLocaleColumns < ActiveRecord::Migration[4.2]
|
|
3
3
|
def change
|
|
4
4
|
add_column Fe::QuestionSheet.table_name, :languages, :text
|
|
5
5
|
add_column Fe::Element.table_name, :label_translations, :text
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# This migration comes from fe_engine (originally 20150714220730)
|
|
2
|
-
class AddLocaleToAnswerSheet < ActiveRecord::Migration
|
|
2
|
+
class AddLocaleToAnswerSheet < ActiveRecord::Migration[4.2]
|
|
3
3
|
def change
|
|
4
4
|
add_column Fe.answer_sheet_class.constantize.table_name, :locale, :string, default: 'en'
|
|
5
5
|
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# This migration comes from fe_engine (originally 20150928085325)
|
|
2
|
-
class ChangePagesAllElementIdsToText < ActiveRecord::Migration
|
|
2
|
+
class ChangePagesAllElementIdsToText < ActiveRecord::Migration[4.2]
|
|
3
3
|
def change
|
|
4
4
|
change_column Fe::Page.table_name, :all_element_ids, :text
|
|
5
5
|
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# This migration comes from fe_engine (originally 20150930191538)
|
|
2
|
-
class AddLocaleToReferenceSheets < ActiveRecord::Migration
|
|
2
|
+
class AddLocaleToReferenceSheets < ActiveRecord::Migration[4.2]
|
|
3
3
|
def change
|
|
4
4
|
add_column Fe::ReferenceSheet.table_name, :locale, :string, default: 'en'
|
|
5
5
|
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# This migration comes from fe_engine (originally 20151021184250)
|
|
2
|
+
class AddQuestionSheetIdInRefs < ActiveRecord::Migration[4.2]
|
|
3
|
+
def change
|
|
4
|
+
add_column Fe::ReferenceSheet.table_name, :question_sheet_id, :integer
|
|
5
|
+
|
|
6
|
+
# set initial question_sheet_id on all refs
|
|
7
|
+
# NOTE: doing an update on a join query is a pain to do in both mysql and postgres
|
|
8
|
+
# and since there's not that many reference questions, this should be fine
|
|
9
|
+
Fe::ReferenceQuestion.all.each do |rq|
|
|
10
|
+
Fe::ReferenceSheet.where(question_id: rq.id).update_all(question_sheet_id: rq.related_question_sheet_id)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# This migration comes from fe_engine (originally 20151021181928)
|
|
2
|
+
class SwitchConditionalAnswerSeparatorToSemicolon < ActiveRecord::Migration[4.2]
|
|
3
|
+
def change
|
|
4
|
+
Fe::Element.where("conditional_answer IS NOT NULL AND conditional_answer != ''").each do |e|
|
|
5
|
+
e.update_column :conditional_answer, e.conditional_answer.gsub(',', ';')
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
end
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# This migration comes from fe_engine (originally 20160201185838)
|
|
2
|
+
class AddVisibleAndVisibilityCacheKeyToReferenceSheets < ActiveRecord::Migration[4.2]
|
|
3
|
+
def change
|
|
4
|
+
add_column Fe::ReferenceSheet.table_name, :visible, :boolean
|
|
5
|
+
add_column Fe::ReferenceSheet.table_name, :visibility_cache_key, :string
|
|
6
|
+
end
|
|
7
|
+
end
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# This migration creates the `versions` table, the only schema PT requires.
|
|
2
|
+
# All other migrations PT provides are optional.
|
|
3
|
+
class CreateVersions < ActiveRecord::Migration[4.2]
|
|
4
|
+
# Class names of MySQL adapters.
|
|
5
|
+
# - `MysqlAdapter` - Used by gems: `mysql`, `activerecord-jdbcmysql-adapter`.
|
|
6
|
+
# - `Mysql2Adapter` - Used by `mysql2` gem.
|
|
7
|
+
MYSQL_ADAPTERS = [
|
|
8
|
+
"ActiveRecord::ConnectionAdapters::MysqlAdapter",
|
|
9
|
+
"ActiveRecord::ConnectionAdapters::Mysql2Adapter"
|
|
10
|
+
].freeze
|
|
11
|
+
|
|
12
|
+
# The largest text column available in all supported RDBMS is
|
|
13
|
+
# 1024^3 - 1 bytes, roughly one gibibyte. We specify a size
|
|
14
|
+
# so that MySQL will use `longtext` instead of `text`. Otherwise,
|
|
15
|
+
# when serializing very large objects, `text` might not be big enough.
|
|
16
|
+
TEXT_BYTES = 1_073_741_823
|
|
17
|
+
|
|
18
|
+
def change
|
|
19
|
+
create_table :versions, versions_table_options do |t|
|
|
20
|
+
t.string :item_type, item_type_options
|
|
21
|
+
t.integer :item_id, null: false
|
|
22
|
+
t.string :event, null: false
|
|
23
|
+
t.string :whodunnit
|
|
24
|
+
t.text :object, limit: TEXT_BYTES
|
|
25
|
+
|
|
26
|
+
# Known issue in MySQL: fractional second precision
|
|
27
|
+
# -------------------------------------------------
|
|
28
|
+
#
|
|
29
|
+
# MySQL timestamp columns do not support fractional seconds unless
|
|
30
|
+
# defined with "fractional seconds precision". MySQL users should manually
|
|
31
|
+
# add fractional seconds precision to this migration, specifically, to
|
|
32
|
+
# the `created_at` column.
|
|
33
|
+
# (https://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html)
|
|
34
|
+
#
|
|
35
|
+
# MySQL users should also upgrade to rails 4.2, which is the first
|
|
36
|
+
# version of ActiveRecord with support for fractional seconds in MySQL.
|
|
37
|
+
# (https://github.com/rails/rails/pull/14359)
|
|
38
|
+
#
|
|
39
|
+
t.datetime :created_at
|
|
40
|
+
end
|
|
41
|
+
add_index :versions, [:item_type, :item_id]
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
private
|
|
45
|
+
|
|
46
|
+
# MySQL 5.6 utf8mb4 limit is 191 chars for keys used in indexes.
|
|
47
|
+
# See https://github.com/airblade/paper_trail/issues/651
|
|
48
|
+
def item_type_options
|
|
49
|
+
opt = { null: false }
|
|
50
|
+
opt[:limit] = 191 if mysql?
|
|
51
|
+
opt
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def mysql?
|
|
55
|
+
MYSQL_ADAPTERS.include?(connection.class.name)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Even modern versions of MySQL still use `latin1` as the default character
|
|
59
|
+
# encoding. Many users are not aware of this, and run into trouble when they
|
|
60
|
+
# try to use PaperTrail in apps that otherwise tend to use UTF-8. Postgres, by
|
|
61
|
+
# comparison, uses UTF-8 except in the unusual case where the OS is configured
|
|
62
|
+
# with a custom locale.
|
|
63
|
+
#
|
|
64
|
+
# - https://dev.mysql.com/doc/refman/5.7/en/charset-applications.html
|
|
65
|
+
# - http://www.postgresql.org/docs/9.4/static/multibyte.html
|
|
66
|
+
#
|
|
67
|
+
# Furthermore, MySQL's original implementation of UTF-8 was flawed, and had
|
|
68
|
+
# to be fixed later by introducing a new charset, `utf8mb4`.
|
|
69
|
+
#
|
|
70
|
+
# - https://mathiasbynens.be/notes/mysql-utf8mb4
|
|
71
|
+
# - https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html
|
|
72
|
+
#
|
|
73
|
+
def versions_table_options
|
|
74
|
+
if mysql?
|
|
75
|
+
{ options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci" }
|
|
76
|
+
else
|
|
77
|
+
{}
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|