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.
Files changed (402) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +4 -4
  3. data/app/assets/config/fe/manifest.js +3 -0
  4. data/app/assets/config/manifest.js +3 -0
  5. data/app/assets/javascripts/application.js.erb +1 -1
  6. data/app/assets/javascripts/fe/admin.js +0 -1
  7. data/app/assets/javascripts/fe/fe.admin.js +2 -6
  8. data/app/assets/javascripts/fe/{fe.common.js → fe.common.js.erb} +14 -7
  9. data/app/assets/javascripts/fe/fe.public.js +1 -2
  10. data/app/assets/javascripts/fe/{fe.public.nojquery.js → fe.public.nojquery.js.erb} +152 -76
  11. data/app/assets/javascripts/fe/jquery.html5_upload.js +258 -0
  12. data/app/assets/stylesheets/fe/fe.screen.css.scss.erb +22 -1
  13. data/app/assets/stylesheets/fe/validation.css +5 -1
  14. data/app/controllers/{fe/concerns → concerns/fe}/admin/question_sheets_controller_concern.rb +15 -16
  15. data/app/controllers/concerns/fe/answer_pages_controller_concern.rb +131 -0
  16. data/app/controllers/{fe/concerns → concerns/fe}/answer_sheets_controller_concern.rb +14 -6
  17. data/app/controllers/{fe/concerns → concerns/fe}/application_controller_concern.rb +3 -3
  18. data/app/controllers/fe/admin/elements_controller.rb +46 -24
  19. data/app/controllers/fe/admin/email_templates_controller.rb +5 -5
  20. data/app/controllers/fe/admin/question_pages_controller.rb +8 -8
  21. data/app/controllers/fe/reference_pages_controller.rb +11 -11
  22. data/app/controllers/fe/reference_sheets_controller.rb +4 -4
  23. data/app/controllers/fe/references_controller.rb +19 -19
  24. data/app/controllers/fe/submit_pages_controller.rb +5 -5
  25. data/app/helpers/fe/answer_pages_helper.rb +1 -1
  26. data/app/helpers/fe/application_helper.rb +3 -3
  27. data/app/jobs/fe/update_reference_sheet_visibility_job.rb +11 -0
  28. data/app/mailers/fe/notifier.rb +4 -4
  29. data/app/models/answer_sheet.rb +1 -1
  30. data/app/models/application_record.rb +3 -0
  31. data/app/models/{fe/concerns → concerns/fe}/answer_concern.rb +2 -2
  32. data/app/models/{fe/concerns → concerns/fe}/answer_pages_presenter_concern.rb +6 -5
  33. data/app/models/concerns/fe/answer_sheet_concern.rb +125 -0
  34. data/app/models/{fe/concerns → concerns/fe}/choice_field_concern.rb +41 -23
  35. data/app/models/fe/address.rb +2 -2
  36. data/app/models/fe/answer.rb +1 -1
  37. data/app/models/fe/answer_sheet.rb +1 -1
  38. data/app/models/fe/answer_sheet_question_sheet.rb +2 -2
  39. data/app/models/fe/application.rb +14 -10
  40. data/app/models/fe/condition.rb +4 -4
  41. data/app/models/fe/date_field.rb +1 -1
  42. data/app/models/fe/element.rb +126 -44
  43. data/app/models/fe/email_address.rb +2 -2
  44. data/app/models/fe/email_template.rb +1 -1
  45. data/app/models/fe/page.rb +94 -19
  46. data/app/models/fe/page_element.rb +2 -2
  47. data/app/models/fe/paragraph.rb +1 -1
  48. data/app/models/fe/person.rb +5 -5
  49. data/app/models/fe/phone_number.rb +1 -1
  50. data/app/models/fe/question.rb +62 -38
  51. data/app/models/fe/question_grid.rb +15 -3
  52. data/app/models/fe/question_set.rb +53 -13
  53. data/app/models/fe/question_sheet.rb +49 -16
  54. data/app/models/fe/reference_question.rb +9 -3
  55. data/app/models/fe/reference_sheet.rb +102 -47
  56. data/app/models/fe/state_chooser.rb +2 -2
  57. data/app/models/fe/text_field.rb +2 -2
  58. data/app/models/fe/user.rb +1 -1
  59. data/app/models/staff.rb +6 -6
  60. data/app/views/fe/admin/elements/create.js.erb +3 -3
  61. data/app/views/fe/admin/elements/destroy.js.erb +1 -1
  62. data/app/views/fe/admin/elements/drop.js.erb +1 -1
  63. data/app/views/fe/admin/elements/duplicate.js.erb +1 -1
  64. data/app/views/fe/admin/elements/edit.js.erb +1 -1
  65. data/app/views/fe/admin/elements/error.js.erb +1 -1
  66. data/app/views/fe/admin/elements/new.js.erb +13 -6
  67. data/app/views/fe/admin/elements/update.js.erb +1 -1
  68. data/app/views/fe/admin/email_templates/_form.html.erb +3 -3
  69. data/app/views/fe/admin/email_templates/edit.html.erb +3 -3
  70. data/app/views/fe/admin/email_templates/index.html.erb +3 -3
  71. data/app/views/fe/admin/email_templates/new.html.erb +3 -3
  72. data/app/views/fe/admin/panels/_advanced_options.html.erb +8 -8
  73. data/app/views/fe/admin/panels/_common_boolean_fields.html.erb +1 -0
  74. data/app/views/fe/admin/panels/_common_boolean_fields_default.html.erb +11 -0
  75. data/app/views/fe/admin/panels/_common_fields.html.erb +2 -17
  76. data/app/views/fe/admin/panels/_condition.html.erb +1 -1
  77. data/app/views/fe/admin/panels/_insert.html.erb +25 -25
  78. data/app/views/fe/admin/panels/_nav_controls.html.erb +4 -4
  79. data/app/views/fe/admin/panels/_page.html.erb +1 -1
  80. data/app/views/fe/admin/panels/_pages_list.html.erb +3 -3
  81. data/app/views/fe/admin/panels/_prop_attachment_field.html.erb +2 -2
  82. data/app/views/fe/admin/panels/_prop_choice_field.html.erb +36 -17
  83. data/app/views/fe/admin/panels/_prop_date_field.html.erb +1 -1
  84. data/app/views/fe/admin/panels/_prop_element.html.erb +5 -5
  85. data/app/views/fe/admin/panels/_prop_page.html.erb +3 -3
  86. data/app/views/fe/admin/panels/_prop_paragraph.html.erb +8 -8
  87. data/app/views/fe/admin/panels/_prop_question_grid.html.erb +7 -2
  88. data/app/views/fe/admin/panels/_prop_question_grid_with_total.html.erb +2 -2
  89. data/app/views/fe/admin/panels/_prop_reference_question.html.erb +3 -3
  90. data/app/views/fe/admin/panels/_prop_section.html.erb +1 -1
  91. data/app/views/fe/admin/panels/_prop_sheet.html.erb +3 -3
  92. data/app/views/fe/admin/panels/_prop_text_field.html.erb +12 -12
  93. data/app/views/fe/admin/question_pages/_element.html.erb +7 -7
  94. data/app/views/fe/admin/question_pages/_element_show.html.erb +2 -2
  95. data/app/views/fe/admin/question_pages/_question_page.html.erb +4 -4
  96. data/app/views/fe/admin/question_pages/create.js.erb +3 -3
  97. data/app/views/fe/admin/question_pages/destroy.js.erb +3 -3
  98. data/app/views/fe/admin/question_pages/edit.js.erb +1 -1
  99. data/app/views/fe/admin/question_pages/error.js.erb +1 -1
  100. data/app/views/fe/admin/question_pages/show.js.erb +2 -2
  101. data/app/views/fe/admin/question_pages/show_panel.js.erb +1 -1
  102. data/app/views/fe/admin/question_pages/update.js.erb +1 -1
  103. data/app/views/fe/admin/question_sheets/edit.js.erb +1 -1
  104. data/app/views/fe/admin/question_sheets/error.js.erb +1 -1
  105. data/app/views/fe/admin/question_sheets/index.html.erb +8 -8
  106. data/app/views/fe/admin/question_sheets/new.html.erb +3 -3
  107. data/app/views/fe/admin/question_sheets/show.html.erb +5 -5
  108. data/app/views/fe/admin/question_sheets/update.js.erb +1 -1
  109. data/app/views/fe/answer_pages/_answer_page.html.erb +13 -14
  110. data/app/views/fe/answer_pages/_element.html.erb +22 -2
  111. data/app/views/fe/answer_pages/_page_name.html.erb +1 -1
  112. data/app/views/fe/answer_pages/show.html.erb +39 -0
  113. data/app/views/fe/answer_pages/update.js.erb +10 -2
  114. data/app/views/fe/answer_sheets/_answer_sheet.html.erb +4 -4
  115. data/app/views/fe/answer_sheets/_element.html.erb +9 -7
  116. data/app/views/fe/answer_sheets/_incomplete.html.erb +1 -1
  117. data/app/views/fe/answer_sheets/_page_link.html.erb +9 -7
  118. data/app/views/fe/answer_sheets/_pages_list.html.erb +3 -3
  119. data/app/views/fe/answer_sheets/_submit_to.html.erb +1 -1
  120. data/app/views/fe/answer_sheets/_title.html.erb +1 -1
  121. data/app/views/fe/answer_sheets/edit.html.erb +18 -18
  122. data/app/views/fe/answer_sheets/incomplete.js.erb +7 -4
  123. data/app/views/fe/answer_sheets/index.html.erb +1 -1
  124. data/app/views/fe/answer_sheets/show.html.erb +1 -1
  125. data/app/views/fe/applications/_logout.html.erb +1 -1
  126. data/app/views/fe/questions/fe/_acceptance.html.erb +10 -9
  127. data/app/views/fe/questions/fe/_attachment_field.html.erb +129 -10
  128. data/app/views/fe/questions/fe/_checkbox_field.html.erb +18 -16
  129. data/app/views/fe/questions/fe/_country.html.erb +6 -6
  130. data/app/views/fe/questions/fe/_date_field.html.erb +5 -4
  131. data/app/views/fe/questions/fe/_date_field_mmyy.html.erb +8 -8
  132. data/app/views/fe/questions/fe/_drop_down_field.html.erb +5 -5
  133. data/app/views/fe/questions/fe/_question_grid.html.erb +10 -10
  134. data/app/views/fe/questions/fe/_question_grid_with_total.html.erb +8 -8
  135. data/app/views/fe/questions/fe/_questions.html.erb +11 -5
  136. data/app/views/fe/questions/fe/_radio_button_field.html.erb +35 -19
  137. data/app/views/fe/questions/fe/_rating.html.erb +56 -18
  138. data/app/views/fe/questions/fe/_reference_discipler.html.erb +1 -1
  139. data/app/views/fe/questions/fe/_reference_friend.html.erb +1 -1
  140. data/app/views/fe/questions/fe/_reference_parent.html.erb +1 -1
  141. data/app/views/fe/questions/fe/_reference_peer.html.erb +1 -1
  142. data/app/views/fe/questions/fe/_reference_question.html.erb +40 -24
  143. data/app/views/fe/questions/fe/_reference_roommate.html.erb +1 -1
  144. data/app/views/fe/questions/fe/_reference_spiritual.html.erb +1 -1
  145. data/app/views/fe/questions/fe/_reference_staff.html.erb +1 -1
  146. data/app/views/fe/questions/fe/_state_chooser.html.erb +6 -6
  147. data/app/views/fe/questions/fe/_text_area_field.html.erb +14 -10
  148. data/app/views/fe/questions/fe/_text_field.html.erb +7 -6
  149. data/app/views/fe/questions/fe/_yes_no.html.erb +8 -8
  150. data/app/views/fe/questions/fe/_yes_no_field.erb +11 -8
  151. data/app/views/fe/reference_pages/_reference.html.erb +12 -12
  152. data/app/views/fe/reference_pages/edit.html.erb +4 -4
  153. data/app/views/fe/reference_sheets/done.html.erb +2 -2
  154. data/app/views/fe/reference_sheets/not_found.html.erb +3 -3
  155. data/app/views/fe/references/edit.html.erb +5 -5
  156. data/app/views/fe/references/show.html.erb +3 -3
  157. data/app/views/fe/references/submit.js.erb +3 -3
  158. data/app/views/fe/submit_pages/_thankyou.html.erb +1 -1
  159. data/app/views/fe/submit_pages/edit.html.erb +9 -9
  160. data/app/views/fe/submit_pages/error.js.erb +1 -1
  161. data/app/views/fe/submit_pages/submit.js.erb +2 -2
  162. data/app/views/layouts/fe/_error_messages_for.html.erb +1 -1
  163. data/app/views/layouts/fe/application.html.erb +3 -4
  164. data/app/views/layouts/fe/fe_admin.html.erb +30 -0
  165. data/app/views.current/fe/admin/elements/_errors.html.erb +11 -0
  166. data/app/views.current/fe/admin/elements/create.js.erb +12 -0
  167. data/app/views.current/fe/admin/elements/destroy.js.erb +4 -0
  168. data/app/views.current/fe/admin/elements/drop.js.erb +3 -0
  169. data/app/views.current/fe/admin/elements/duplicate.js.erb +3 -0
  170. data/app/views.current/fe/admin/elements/edit.js.erb +4 -0
  171. data/app/views.current/fe/admin/elements/error.js.erb +4 -0
  172. data/app/views.current/fe/admin/elements/new.js.erb +17 -0
  173. data/app/views.current/fe/admin/elements/update.js.erb +9 -0
  174. data/app/views.current/fe/admin/email_templates/_form.html.erb +8 -0
  175. data/app/views.current/fe/admin/email_templates/edit.html.erb +13 -0
  176. data/app/views.current/fe/admin/email_templates/index.html.erb +20 -0
  177. data/app/views.current/fe/admin/email_templates/new.html.erb +11 -0
  178. data/app/views.current/fe/admin/panels/_advanced_options.html.erb +49 -0
  179. data/app/views.current/fe/admin/panels/_common_boolean_fields.html.erb +1 -0
  180. data/app/views.current/fe/admin/panels/_common_boolean_fields_default.html.erb +11 -0
  181. data/app/views.current/fe/admin/panels/_common_fields.html.erb +23 -0
  182. data/app/views.current/fe/admin/panels/_condition.html.erb +6 -0
  183. data/app/views.current/fe/admin/panels/_insert.html.erb +39 -0
  184. data/app/views.current/fe/admin/panels/_nav_controls.html.erb +6 -0
  185. data/app/views.current/fe/admin/panels/_page.html.erb +3 -0
  186. data/app/views.current/fe/admin/panels/_pages_list.html.erb +16 -0
  187. data/app/views.current/fe/admin/panels/_prop_attachment_field.html.erb +2 -0
  188. data/app/views.current/fe/admin/panels/_prop_choice_field.html.erb +74 -0
  189. data/app/views.current/fe/admin/panels/_prop_date_field.html.erb +7 -0
  190. data/app/views.current/fe/admin/panels/_prop_element.html.erb +23 -0
  191. data/app/views.current/fe/admin/panels/_prop_page.html.erb +26 -0
  192. data/app/views.current/fe/admin/panels/_prop_paragraph.html.erb +46 -0
  193. data/app/views.current/fe/admin/panels/_prop_question_grid.html.erb +28 -0
  194. data/app/views.current/fe/admin/panels/_prop_question_grid_with_total.html.erb +14 -0
  195. data/app/views.current/fe/admin/panels/_prop_reference_question.html.erb +12 -0
  196. data/app/views.current/fe/admin/panels/_prop_section.html.erb +8 -0
  197. data/app/views.current/fe/admin/panels/_prop_sheet.html.erb +20 -0
  198. data/app/views.current/fe/admin/panels/_prop_text_field.html.erb +20 -0
  199. data/app/views.current/fe/admin/question_pages/_element.html.erb +28 -0
  200. data/app/views.current/fe/admin/question_pages/_element_show.html.erb +10 -0
  201. data/app/views.current/fe/admin/question_pages/_errors.html.erb +10 -0
  202. data/app/views.current/fe/admin/question_pages/_question_page.html.erb +13 -0
  203. data/app/views.current/fe/admin/question_pages/create.js.erb +11 -0
  204. data/app/views.current/fe/admin/question_pages/destroy.js.erb +5 -0
  205. data/app/views.current/fe/admin/question_pages/edit.js.erb +3 -0
  206. data/app/views.current/fe/admin/question_pages/error.js.erb +4 -0
  207. data/app/views.current/fe/admin/question_pages/show.js.erb +9 -0
  208. data/app/views.current/fe/admin/question_pages/show_panel.js.erb +3 -0
  209. data/app/views.current/fe/admin/question_pages/update.js.erb +2 -0
  210. data/app/views.current/fe/admin/question_sheets/_errors.html.erb +11 -0
  211. data/app/views.current/fe/admin/question_sheets/edit.js.erb +3 -0
  212. data/app/views.current/fe/admin/question_sheets/error.js.erb +5 -0
  213. data/app/views.current/fe/admin/question_sheets/index.html.erb +41 -0
  214. data/app/views.current/fe/admin/question_sheets/new.html.erb +15 -0
  215. data/app/views.current/fe/admin/question_sheets/show.html.erb +27 -0
  216. data/app/views.current/fe/admin/question_sheets/update.js.erb +2 -0
  217. data/app/views.current/fe/answer_pages/_answer_page.html.erb +53 -0
  218. data/app/views.current/fe/answer_pages/_element.html.erb +32 -0
  219. data/app/views.current/fe/answer_pages/_page_name.html.erb +1 -0
  220. data/app/views.current/fe/answer_pages/show.html.erb +39 -0
  221. data/app/views.current/fe/answer_pages/update.js.erb +13 -0
  222. data/app/views.current/fe/answer_sheets/_answer_sheet.html.erb +26 -0
  223. data/app/views.current/fe/answer_sheets/_element.html.erb +74 -0
  224. data/app/views.current/fe/answer_sheets/_incomplete.html.erb +10 -0
  225. data/app/views.current/fe/answer_sheets/_page_link.html.erb +9 -0
  226. data/app/views.current/fe/answer_sheets/_pages_list.html.erb +11 -0
  227. data/app/views.current/fe/answer_sheets/_submit_to.html.erb +1 -0
  228. data/app/views.current/fe/answer_sheets/_title.html.erb +1 -0
  229. data/app/views.current/fe/answer_sheets/edit.html.erb +66 -0
  230. data/app/views.current/fe/answer_sheets/incomplete.js.erb +11 -0
  231. data/app/views.current/fe/answer_sheets/index.html.erb +18 -0
  232. data/app/views.current/fe/answer_sheets/send_reference_invite.js.erb +8 -0
  233. data/app/views.current/fe/answer_sheets/show.html.erb +13 -0
  234. data/app/views.current/fe/applications/_logout.html.erb +1 -0
  235. data/app/views.current/fe/applications/show.html.erb +1 -0
  236. data/app/views.current/fe/help/builder.html +33 -0
  237. data/app/views.current/fe/help/question_grid.html +18 -0
  238. data/app/views.current/fe/questions/fe/_acceptance.html.erb +14 -0
  239. data/app/views.current/fe/questions/fe/_attachment_field.html.erb +165 -0
  240. data/app/views.current/fe/questions/fe/_checkbox_field.html.erb +53 -0
  241. data/app/views.current/fe/questions/fe/_country.html.erb +7 -0
  242. data/app/views.current/fe/questions/fe/_date_field.html.erb +7 -0
  243. data/app/views.current/fe/questions/fe/_date_field_mmyy.html.erb +9 -0
  244. data/app/views.current/fe/questions/fe/_drop_down_field.html.erb +8 -0
  245. data/app/views.current/fe/questions/fe/_paragraph.html.erb +1 -0
  246. data/app/views.current/fe/questions/fe/_question_grid.html.erb +70 -0
  247. data/app/views.current/fe/questions/fe/_question_grid_with_total.html.erb +64 -0
  248. data/app/views.current/fe/questions/fe/_questions.html.erb +15 -0
  249. data/app/views.current/fe/questions/fe/_radio_button_field.html.erb +60 -0
  250. data/app/views.current/fe/questions/fe/_rating.html.erb +64 -0
  251. data/app/views.current/fe/questions/fe/_reference_discipler.html.erb +1 -0
  252. data/app/views.current/fe/questions/fe/_reference_friend.html.erb +1 -0
  253. data/app/views.current/fe/questions/fe/_reference_parent.html.erb +1 -0
  254. data/app/views.current/fe/questions/fe/_reference_peer.html.erb +1 -0
  255. data/app/views.current/fe/questions/fe/_reference_question.html.erb +61 -0
  256. data/app/views.current/fe/questions/fe/_reference_roommate.html.erb +1 -0
  257. data/app/views.current/fe/questions/fe/_reference_spiritual.html.erb +1 -0
  258. data/app/views.current/fe/questions/fe/_reference_staff.html.erb +1 -0
  259. data/app/views.current/fe/questions/fe/_section.html.erb +1 -0
  260. data/app/views.current/fe/questions/fe/_state_chooser.html.erb +7 -0
  261. data/app/views.current/fe/questions/fe/_text_area_field.html.erb +17 -0
  262. data/app/views.current/fe/questions/fe/_text_field.html.erb +9 -0
  263. data/app/views.current/fe/questions/fe/_yes_no.html.erb +17 -0
  264. data/app/views.current/fe/questions/fe/_yes_no_field.erb +20 -0
  265. data/app/views.current/fe/reference_pages/_reference.html.erb +31 -0
  266. data/app/views.current/fe/reference_pages/edit.html.erb +24 -0
  267. data/app/views.current/fe/reference_sheets/done.html.erb +2 -0
  268. data/app/views.current/fe/reference_sheets/not_found.html.erb +5 -0
  269. data/app/views.current/fe/reference_sheets/submitted.js.erb +1 -0
  270. data/app/views.current/fe/references/edit.html.erb +8 -0
  271. data/app/views.current/fe/references/send_invite.js.erb +7 -0
  272. data/app/views.current/fe/references/show.html.erb +18 -0
  273. data/app/views.current/fe/references/submit.js.erb +3 -0
  274. data/app/views.current/fe/submit_pages/_errors.html.erb +1 -0
  275. data/app/views.current/fe/submit_pages/_thankyou.html.erb +2 -0
  276. data/app/views.current/fe/submit_pages/edit.html.erb +36 -0
  277. data/app/views.current/fe/submit_pages/error.js.erb +1 -0
  278. data/app/views.current/fe/submit_pages/submit.js.erb +3 -0
  279. data/app/views.current/layouts/fe/_error_messages_for.html.erb +7 -0
  280. data/app/views.current/layouts/fe/application.html.erb +47 -0
  281. data/app/{views/layouts/fe/fe.admin.html.erb → views.current/layouts/fe/fe_admin.html.erb} +4 -4
  282. data/config/initializers/paper_trail.rb +3 -0
  283. data/config/routes.rb +3 -1
  284. data/db/migrate/20131003041856_core.rb +23 -23
  285. data/db/migrate/20131003044250_create_reference_sheets.rb +1 -1
  286. data/db/migrate/20131003044436_add_element_and_answer_fields.rb +3 -3
  287. data/db/migrate/20131003044518_create_email_templates.rb +2 -2
  288. data/db/migrate/20131003044621_add_max_lengths.rb +1 -1
  289. data/db/migrate/20131003044714_create_join_table.rb +1 -1
  290. data/db/migrate/20131016162128_remove_question_id_from_element.rb +1 -1
  291. data/db/migrate/20140623153424_create_fe_people.rb +1 -1
  292. data/db/migrate/20140624180246_create_fe_addresses.rb +1 -1
  293. data/db/migrate/20140624182216_create_fe_phone_numbers.rb +1 -1
  294. data/db/migrate/20140625160545_create_fe_users.rb +1 -1
  295. data/db/migrate/20140808202507_add_conditional_type_to_elements.rb +1 -1
  296. data/db/migrate/20140808203609_add_conditional_answer_to_elements.rb +1 -1
  297. data/db/migrate/20141103204704_remove_short_value_column.rb +1 -1
  298. data/db/migrate/20141109154522_move_conditional_ids_used_for_choice_field_to_their_own_column.rb +1 -1
  299. data/db/migrate/20150504221439_add_all_element_ids_to_pages.rb +1 -1
  300. data/db/migrate/20150713022326_add_locale_columns.rb +1 -1
  301. data/db/migrate/20150714220730_add_locale_to_answer_sheet.rb +1 -1
  302. data/db/migrate/20150925181652_add_share_to_elements.rb +5 -0
  303. data/db/migrate/20150928085325_change_pages_all_element_ids_to_text.rb +1 -1
  304. data/db/migrate/20150930191538_add_locale_to_reference_sheets.rb +1 -1
  305. data/db/migrate/20151021181928_switch_conditional_answer_separator_to_semicolon.rb +7 -0
  306. data/db/migrate/20151021184250_add_question_sheet_id_in_refs.rb +12 -0
  307. data/db/migrate/20160201185838_add_visible_and_visibility_cache_key_to_reference_sheets.rb +6 -0
  308. data/db/migrate/20160805221415_add_rating_extra_labels.rb +10 -0
  309. data/db/migrate/20181108201746_create_versions.rb +80 -0
  310. data/db/migrate/20181218201130_increase_slug_length.rb +5 -0
  311. data/lib/fe/engine.rb +10 -10
  312. data/lib/fe/version.rb +1 -1
  313. data/lib/fe.rb +7 -1
  314. data/spec/controllers/fe/admin/elements_controller_spec.rb +30 -20
  315. data/spec/controllers/fe/admin/email_templates_controller_spec.rb +2 -2
  316. data/spec/controllers/fe/admin/question_pages_controller_spec.rb +1 -1
  317. data/spec/controllers/fe/admin/question_sheets_controller_spec.rb +4 -4
  318. data/spec/controllers/fe/answer_pages_controller_spec.rb +86 -30
  319. data/spec/controllers/fe/answer_sheets_controller_spec.rb +65 -9
  320. data/spec/dummy/app/assets/config/manifest.js +0 -0
  321. data/spec/dummy/app/models/user.rb +1 -1
  322. data/spec/dummy/app/views/layouts/application.html.erb +2 -2
  323. data/spec/dummy/config/application.rb +1 -0
  324. data/spec/dummy/config/environments/test.rb +3 -3
  325. data/spec/dummy/config/initializers/assets.rb +5 -2
  326. data/spec/dummy/config/initializers/fast_gettext.rb +1 -1
  327. data/spec/dummy/config/initializers/to_unsafe_h.rb +5 -0
  328. data/spec/dummy/config/initializers/to_unsafe_h.rb.new +5 -0
  329. data/spec/dummy/db/migrate/20141203214017_core.fe_engine.rb +23 -23
  330. data/spec/dummy/db/migrate/20141203214018_create_reference_sheets.fe_engine.rb +1 -1
  331. data/spec/dummy/db/migrate/20141203214019_add_element_and_answer_fields.fe_engine.rb +3 -3
  332. data/spec/dummy/db/migrate/20141203214020_create_email_templates.fe_engine.rb +2 -2
  333. data/spec/dummy/db/migrate/20141203214021_add_max_lengths.fe_engine.rb +1 -1
  334. data/spec/dummy/db/migrate/20141203214022_create_join_table.fe_engine.rb +1 -1
  335. data/spec/dummy/db/migrate/20141203214023_remove_question_id_from_element.fe_engine.rb +1 -1
  336. data/spec/dummy/db/migrate/20141203214024_create_fe_people.fe_engine.rb +1 -1
  337. data/spec/dummy/db/migrate/20141203214025_create_fe_addresses.fe_engine.rb +1 -1
  338. data/spec/dummy/db/migrate/20141203214027_create_fe_users.fe_engine.rb +1 -1
  339. data/spec/dummy/db/migrate/20141203214028_add_conditional_type_to_elements.fe_engine.rb +1 -1
  340. data/spec/dummy/db/migrate/20141203214029_add_conditional_answer_to_elements.fe_engine.rb +1 -1
  341. data/spec/dummy/db/migrate/20141203214030_remove_short_value_column.fe_engine.rb +1 -1
  342. data/spec/dummy/db/migrate/20141203214031_move_conditional_ids_used_for_choice_field_to_their_own_column.fe_engine.rb +1 -1
  343. data/spec/dummy/db/migrate/20150123215803_create_users.rb +1 -1
  344. data/spec/dummy/db/migrate/20150504222619_add_all_element_ids_to_pages.fe_engine.rb +1 -1
  345. data/spec/dummy/db/migrate/20150925192557_add_share_to_elements.fe_engine.rb +6 -0
  346. data/spec/dummy/db/migrate/20150930190001_create_fe_phone_numbers.fe_engine.rb +1 -1
  347. data/spec/dummy/db/migrate/20150930190002_add_locale_columns.fe_engine.rb +1 -1
  348. data/spec/dummy/db/migrate/20150930190003_add_locale_to_answer_sheet.fe_engine.rb +1 -1
  349. data/spec/dummy/db/migrate/20150930190004_change_pages_all_element_ids_to_text.fe_engine.rb +1 -1
  350. data/spec/dummy/db/migrate/20150930191756_add_locale_to_reference_sheets.fe_engine.rb +1 -1
  351. data/spec/dummy/db/migrate/20151021190027_add_question_sheet_id_in_refs.fe_engine.rb +13 -0
  352. data/spec/dummy/db/migrate/20160204164612_switch_conditional_answer_separator_to_semicolon.fe_engine.rb +8 -0
  353. data/spec/dummy/db/migrate/20160204164613_add_visible_and_visibility_cache_key_to_reference_sheets.fe_engine.rb +7 -0
  354. data/spec/dummy/db/migrate/20181108201746_create_versions.rb +80 -0
  355. data/spec/dummy/db/schema.rb +71 -79
  356. data/spec/dummy/log/test.log +101278 -419
  357. data/spec/factories/answer_sheet_question_sheets.rb +1 -1
  358. data/spec/factories/answer_sheets.rb +2 -2
  359. data/spec/factories/answers.rb +1 -1
  360. data/spec/factories/applications.rb +3 -3
  361. data/spec/factories/dummy_applications.rb +3 -3
  362. data/spec/factories/dummy_people.rb +3 -3
  363. data/spec/factories/dummy_users.rb +3 -3
  364. data/spec/factories/elements.rb +21 -21
  365. data/spec/factories/email_templates.rb +3 -3
  366. data/spec/factories/fe_addresses.rb +10 -10
  367. data/spec/factories/fe_email_addresses.rb +3 -3
  368. data/spec/factories/fe_email_templates.rb +4 -4
  369. data/spec/factories/fe_people.rb +5 -5
  370. data/spec/factories/fe_phone_numbers.rb +3 -3
  371. data/spec/factories/fe_user.rb +3 -3
  372. data/spec/factories/page.rb +1 -1
  373. data/spec/factories/page_elements.rb +1 -1
  374. data/spec/factories/paragraphs.rb +1 -1
  375. data/spec/factories/question_sheet.rb +2 -2
  376. data/spec/factories/reference_questions.rb +1 -1
  377. data/spec/factories/reference_sheets.rb +1 -1
  378. data/spec/jobs/fe/update_reference_sheet_visibility_job_spec.rb +40 -0
  379. data/spec/models/fe/answer_sheet_question_sheet_spec.rb +1 -1
  380. data/spec/models/fe/answer_spec.rb +2 -2
  381. data/spec/models/fe/application_spec.rb +94 -1
  382. data/spec/models/fe/choice_field_spec.rb +47 -1
  383. data/spec/models/fe/condition_spec.rb +2 -2
  384. data/spec/models/fe/element_spec.rb +252 -60
  385. data/spec/models/fe/email_template_spec.rb +1 -1
  386. data/spec/models/fe/page_element_spec.rb +1 -1
  387. data/spec/models/fe/page_spec.rb +57 -12
  388. data/spec/models/fe/person_spec.rb +1 -1
  389. data/spec/models/fe/question_set_spec.rb +91 -0
  390. data/spec/models/fe/question_sheet_spec.rb +11 -15
  391. data/spec/models/fe/question_spec.rb +73 -6
  392. data/spec/models/fe/reference_question_spec.rb +20 -0
  393. data/spec/models/fe/reference_sheet_spec.rb +287 -4
  394. data/spec/models/fe/text_field_spec.rb +22 -0
  395. data/spec/rails_helper.rb +79 -76
  396. metadata +195 -57
  397. data/app/assets/javascripts/fe/jquery.scrollTo-min.js +0 -7
  398. data/app/controllers/fe/concerns/answer_pages_controller_concern.rb +0 -84
  399. data/app/models/fe/concerns/answer_sheet_concern.rb +0 -85
  400. data/spec/dummy/db/migrate/20141203214026_create_create_fe_phone_numbers.fe_engine.rb +0 -17
  401. data/spec/dummy/log/development.log +0 -5
  402. /data/app/{assets/stylesheets/360front.css → views.current/fe/admin/elements/reorder.js.erb} +0 -0
@@ -1,8 +1,8 @@
1
1
  class Fe::Admin::ElementsController < ApplicationController
2
- before_filter :check_valid_user
3
- layout 'fe/fe.admin'
2
+ before_action :check_valid_user
3
+ layout 'fe/fe_admin'
4
4
 
5
- before_filter :get_page
5
+ before_action :get_page
6
6
 
7
7
  # GET /element/1/edit
8
8
  def edit
@@ -20,11 +20,11 @@ class Fe::Admin::ElementsController < ApplicationController
20
20
  end
21
21
 
22
22
  def new
23
- @questions = params[:element_type].constantize.active.order('label')
23
+ @questions = params[:element_type].constantize.active.shared.order('label')
24
24
 
25
25
  @style = element_params[:style]
26
26
  if @style
27
- @questions = @questions.where(:style => @style).to_a.uniq
27
+ @questions = @questions.where(style: @style).to_a.uniq
28
28
  end
29
29
  end
30
30
 
@@ -32,12 +32,21 @@ class Fe::Admin::ElementsController < ApplicationController
32
32
  @element = Fe::Element.find(params[:id]) # NOTE the enclosing app might want to override this method and check that they have access to the questionnaire that the existing element is used on
33
33
  # Don't put the same question on a questionnaire twice
34
34
  unless @page.question_sheet.elements.include?(@element)
35
- @page_element = Fe::PageElement.create(:element => @element, :page => @page)
35
+ @page_element = Fe::PageElement.create(element: @element, page: @page)
36
36
  end
37
37
  @question_sheet = @page.question_sheet
38
38
  render :create
39
39
  end
40
40
 
41
+ def copy_existing
42
+ @element = Fe::Element.find(params[:id]) # NOTE the enclosing app might want to override this method and check that they have access to the questionnaire that the existing element is used on
43
+ # duplicate the elements
44
+ @element = @element.duplicate(@page)
45
+ @element.update_attribute(:share, false)
46
+ @page_element = Fe::PageElement.where(element: @element, page: @page).first_or_create
47
+ render :create
48
+ end
49
+
41
50
  # POST /elements
42
51
  def create
43
52
  @element = params[:element_type].constantize.new(element_params)
@@ -46,10 +55,10 @@ class Fe::Admin::ElementsController < ApplicationController
46
55
 
47
56
  respond_to do |format|
48
57
  if @element.save
49
- @page_element = Fe::PageElement.create(:element => @element, :page => @page)
58
+ @page_element = Fe::PageElement.create(element: @element, page: @page)
50
59
  format.js
51
60
  else
52
- format.js { render :action => 'error.js.erb' }
61
+ format.js { render action: 'error.js.erb' }
53
62
  end
54
63
  end
55
64
  end
@@ -59,10 +68,10 @@ class Fe::Admin::ElementsController < ApplicationController
59
68
  @element = @page.all_elements.find(params[:id])
60
69
 
61
70
  respond_to do |format|
62
- if @element.update_attributes(element_params)
71
+ if @element.update(element_params)
63
72
  format.js
64
73
  else
65
- format.js { render :action => 'error.js.erb' }
74
+ format.js { render action: 'error.js.erb' }
66
75
  end
67
76
  end
68
77
  end
@@ -72,12 +81,12 @@ class Fe::Admin::ElementsController < ApplicationController
72
81
  def destroy
73
82
  @element = @page.all_elements.find(params[:id])
74
83
  # Start by removing the element from the page
75
- page_element = Fe::PageElement.where(:element_id => @element.id, :page_id => @page.id).first
84
+ page_element = Fe::PageElement.where(element_id: @element.id, page_id: @page.id).first
76
85
  page_element.destroy if page_element
77
86
 
78
87
  # If this element is not on any other pages, is not a question or has no answers, Destroy it
79
- if @element.reuseable? && (Fe::PageElement.where(:element_id => params[:id]).present? || @element.has_response?)
80
- @element.update_attributes(:question_grid_id => nil, :conditional_id => nil)
88
+ if @element.reuseable? && (Fe::PageElement.where(element_id: params[:id]).present? || @element.has_response?)
89
+ @element.update(question_grid_id: nil, conditional_id: nil)
81
90
  else
82
91
  @element.destroy
83
92
  end
@@ -89,7 +98,7 @@ class Fe::Admin::ElementsController < ApplicationController
89
98
 
90
99
  def reorder
91
100
  # since we don't know the name of the list, just find the first param that is an array
92
- params.each_key do |key|
101
+ params.permit!.to_h.each_key do |key|
93
102
  if key.include?('questions_list')
94
103
  grid_id = key.sub('questions_list_', '').to_i
95
104
  # See if we're ordering inside of a grid
@@ -97,14 +106,14 @@ class Fe::Admin::ElementsController < ApplicationController
97
106
  @page.all_elements.find(grid_id).elements.each do |element|
98
107
  if index = params[key].index(element.id.to_s)
99
108
  element.position = index + 1
100
- element.save(:validate => false)
109
+ element.save(validate: false)
101
110
  end
102
111
  end
103
112
  else
104
113
  @page.page_elements.each do |page_element|
105
114
  if index = params[key].index(page_element.element_id.to_s)
106
115
  page_element.position = index + 1
107
- page_element.save(:validate => false)
116
+ page_element.save(validate: false)
108
117
  @element = page_element.element
109
118
  end
110
119
  end
@@ -135,7 +144,7 @@ class Fe::Admin::ElementsController < ApplicationController
135
144
  end
136
145
 
137
146
  # remove question grid / choice_field ref since it's directly on the page now
138
- element.update_attributes(question_grid_id: nil, choice_field_id: nil)
147
+ element.update(question_grid_id: nil, choice_field_id: nil)
139
148
  return
140
149
  end
141
150
 
@@ -143,7 +152,7 @@ class Fe::Admin::ElementsController < ApplicationController
143
152
  when 'Fe::QuestionGrid', 'Fe::QuestionGridWithTotal'
144
153
  # abort if the element is already in this box
145
154
  if element.question_grid_id == params[:id].to_i
146
- render :nothing => true
155
+ render nothing: true
147
156
  else
148
157
  element.question_grid_id = params[:id]
149
158
  element.save!
@@ -151,19 +160,19 @@ class Fe::Admin::ElementsController < ApplicationController
151
160
  when 'Fe::ChoiceField'
152
161
  # abort if the element is already in this box
153
162
  if element.choice_field_id == params[:id].to_i
154
- render :nothing => true
163
+ render nothing: true
155
164
  else
156
165
  element.choice_field_id = params[:id]
157
166
  element.save!
158
167
  end
159
168
  end
160
169
  # Remove page element for this page since it's now in a grid
161
- Fe::PageElement.where(:page_id => @page.id, :element_id => element.id).first.try(:destroy)
170
+ Fe::PageElement.where(page_id: @page.id, element_id: element.id).first.try(:destroy)
162
171
  end
163
172
 
164
173
  def remove_from_grid
165
174
  element = @page.all_elements.find(params[:id])
166
- Fe::PageElement.create(:element_id => element.id, :page_id => @page.id) unless Fe::PageElement.where(:element_id => element.id, :page_id => @page.id).first
175
+ Fe::PageElement.create(element_id: element.id, page_id: @page.id) unless Fe::PageElement.where(element_id: element.id, page_id: @page.id).first
167
176
  if element.question_grid_id
168
177
  element.set_position(element.question_grid.position(@page), @page)
169
178
  element.question_grid_id = nil
@@ -172,7 +181,7 @@ class Fe::Admin::ElementsController < ApplicationController
172
181
  element.choice_field_id = nil
173
182
  end
174
183
  element.save!
175
- render :action => :drop
184
+ render action: :drop
176
185
  end
177
186
 
178
187
  def duplicate
@@ -183,19 +192,32 @@ class Fe::Admin::ElementsController < ApplicationController
183
192
  end
184
193
  end
185
194
 
195
+ # give enclosing apps a way to permit their own element attributes by overriding this method
196
+ def extra_element_params
197
+ []
198
+ end
199
+
186
200
  private
201
+
187
202
  def get_page
188
203
  @page = Fe::Page.find(params[:page_id])
189
204
  end
190
205
 
191
206
  def element_params
192
- params.fetch(:element, {}).permit({label_translations: Fe::LANGUAGES.keys}, {tip_translations: Fe::LANGUAGES.keys}, {content_translations: Fe::LANGUAGES.keys},
207
+ params.fetch(:element, {}).permit([{label_translations: Fe::LANGUAGES.keys},
208
+ {tip_translations: Fe::LANGUAGES.keys},
209
+ {content_translations: Fe::LANGUAGES.keys},
210
+ {rating_before_label_translations: Fe::LANGUAGES.keys},
211
+ {rating_after_label_translations: Fe::LANGUAGES.keys},
212
+ {rating_na_label_translations: Fe::LANGUAGES.keys},
213
+ :rating_before_label, :rating_after_label, :rating_na_label,
193
214
  :style, :label, :tooltip,
194
215
  :position, :source, :value_xpath,
195
216
  :text_xpath, :question_grid_id, :cols, :total_cols, :css_id, :css_class,
196
217
  :related_question_sheet_id, :conditional_id, :hide_option_labels, :slug,
197
218
  :required, :is_confidential, :hide_label, :object_name, :attribute_name,
198
- :max_length, :content, :conditional_type, :conditional_id, :conditional_answer)
219
+ :max_length, :content, :conditional_type, :conditional_id, :conditional_answer,
220
+ :share] + extra_element_params)
199
221
  end
200
222
 
201
223
  end
@@ -1,6 +1,6 @@
1
1
  class Fe::Admin::EmailTemplatesController < ApplicationController
2
- before_filter :check_valid_user
3
- layout 'fe/fe.admin'
2
+ before_action :check_valid_user
3
+ layout 'fe/fe_admin'
4
4
 
5
5
  def index
6
6
  @email_templates = Fe::EmailTemplate.order('name')
@@ -33,7 +33,7 @@ class Fe::Admin::EmailTemplatesController < ApplicationController
33
33
  if @email_template.save
34
34
  format.html { redirect_to fe_admin_email_templates_path }
35
35
  else
36
- format.html { render :action => :new }
36
+ format.html { render action: :new }
37
37
  end
38
38
  end
39
39
  end
@@ -42,10 +42,10 @@ class Fe::Admin::EmailTemplatesController < ApplicationController
42
42
  @email_template = Fe::EmailTemplate.find(params[:id])
43
43
 
44
44
  respond_to do |format|
45
- if @email_template.update_attributes(email_template_params)
45
+ if @email_template.update(email_template_params)
46
46
  format.html { redirect_to fe_admin_email_templates_path }
47
47
  else
48
- format.html { render :action => "edit" }
48
+ format.html { render action: "edit" }
49
49
  end
50
50
  end
51
51
  end
@@ -1,8 +1,8 @@
1
1
  class Fe::Admin::QuestionPagesController < ApplicationController
2
- before_filter :check_valid_user
3
- layout 'fe/fe.admin'
2
+ before_action :check_valid_user
3
+ layout 'fe/fe_admin'
4
4
 
5
- before_filter :get_sheet
5
+ before_action :get_sheet
6
6
 
7
7
  # selecting a page
8
8
  # GET /pages/1
@@ -26,14 +26,14 @@ class Fe::Admin::QuestionPagesController < ApplicationController
26
26
 
27
27
  # POST /pages
28
28
  def create
29
- @page = @question_sheet.pages.build(:label => next_label, :number => @question_sheet.pages.length + 1)
29
+ @page = @question_sheet.pages.build(label: next_label, number: @question_sheet.pages.length + 1)
30
30
  @all_pages = @question_sheet.pages
31
31
 
32
32
  respond_to do |format|
33
33
  if @page.save
34
34
  format.js
35
35
  else
36
- format.js { render :action => "error.rjs"}
36
+ format.js { render action: "error.rjs"}
37
37
  end
38
38
  end
39
39
  end
@@ -43,11 +43,11 @@ class Fe::Admin::QuestionPagesController < ApplicationController
43
43
  @page = @question_sheet.pages.find(params[:id])
44
44
 
45
45
  respond_to do |format|
46
- if @page.update_attributes(page_params)
46
+ if @page.update(page_params)
47
47
  @all_pages = @question_sheet.pages
48
48
  format.js { render action: :destroy }
49
49
  else
50
- format.js { render :action => "error.rjs"}
50
+ format.js { render action: "error.rjs"}
51
51
  end
52
52
  end
53
53
  end
@@ -88,7 +88,7 @@ class Fe::Admin::QuestionPagesController < ApplicationController
88
88
  @page = page
89
89
  end
90
90
  end
91
- render :nothing => true
91
+ render nothing: true
92
92
  end
93
93
 
94
94
  private
@@ -1,12 +1,12 @@
1
1
  # gather reference information from Applicant
2
2
  module Fe
3
3
  class ReferencePagesController < ApplicationController
4
- skip_before_filter :cas_filter
5
- skip_before_filter :authentication_filter
6
-
4
+ skip_before_action :cas_filter, raise: false
5
+ skip_before_action :authentication_filter, raise: false
6
+
7
7
  layout nil
8
-
9
- before_filter :setup
8
+
9
+ before_action :setup
10
10
 
11
11
  MONTHS_KNOWN_OPTIONS = [
12
12
  ["3 months", 3],
@@ -15,27 +15,27 @@ module Fe
15
15
  ["2 years", 24],
16
16
  ["3 or more years", 36]
17
17
  ]
18
-
18
+
19
19
  # Allow applicant to edit reference
20
20
  # /applications/1/reference_page/edit
21
21
  # js: provide a partial to replace the answer_sheets page area
22
22
  # html?: return a full page for editing reference independantly (after submission)
23
23
  def edit
24
24
  @references = @application.reference_sheets
25
-
25
+
26
26
  # NEXT: skipping all the fancy answer sheets stuff since all custom pages come after those
27
27
  @next_page = next_custom_page(@application, 'reference_page')
28
28
  end
29
-
29
+
30
30
  def update
31
31
  #update_references
32
32
  head :ok
33
33
  end
34
-
34
+
35
35
  private
36
36
  def setup
37
37
  @application = Application.find(params[:application_id])
38
- end
39
-
38
+ end
39
+
40
40
  end
41
41
  end
@@ -1,7 +1,7 @@
1
1
  # TODO determine how this relates to Fe::ReferencesController and if we can delete one of the two
2
2
  class Fe::ReferenceSheetsController < Fe::AnswerSheetsController
3
- skip_before_filter :ssm_login_required, :login
4
- before_filter :edit_only, :except => [:edit]
3
+ skip_before_action :ssm_login_required, :login, raise: false
4
+ before_action :edit_only, except: [:edit]
5
5
 
6
6
  def edit
7
7
  @reference_sheet = @answer_sheet
@@ -18,13 +18,13 @@ class Fe::ReferenceSheetsController < Fe::AnswerSheetsController
18
18
  @page = @presenter.pages.first
19
19
  render 'fe/answer_sheets/edit', layout: 'fe/application'
20
20
  end
21
-
21
+
22
22
  protected
23
23
  def get_answer_sheet
24
24
  @answer_sheet ||= Fe::ReferenceSheet.find_by_id_and_access_key(params[:id], params[:a])
25
25
  return false unless @answer_sheet
26
26
  end
27
-
27
+
28
28
  def edit_only
29
29
  return false
30
30
  end
@@ -2,49 +2,49 @@
2
2
  # TODO determine how this relates to Fe::ReferenceSheetsController and if we can delete one of the two
3
3
  module Fe
4
4
  class ReferencesController < ApplicationController
5
- skip_before_filter :cas_filter
6
- skip_before_filter :authentication_filter
7
-
8
- before_filter :setup
9
-
5
+ skip_before_action :cas_filter, raise: false
6
+ skip_before_action :authentication_filter, raise: false
7
+
8
+ before_action :setup
9
+
10
10
  layout 'public'
11
11
 
12
12
  # AnswerSheet for reference to fill in
13
13
  # /applications/1/references/{token}
14
14
  def edit
15
15
  ref = Fe::ReferenceSheet.find_by_access_key(params[:id])
16
- redirect_to edit_fe_reference_sheet_path(ref, :a => params[:id])
16
+ redirect_to edit_fe_reference_sheet_path(ref, a: params[:id])
17
17
  end
18
18
 
19
19
  # final submission
20
20
  def submit
21
21
  @reference = @application.references.find(params[:id])
22
22
  @reference.submit!
23
-
23
+
24
24
  # Send Reference Thank You
25
25
  Fe::Notifier.notification(@reference.email,
26
- Fe.from_email,
27
- "Reference Thank You",
28
- {'reference_full_name' => @reference.name,
26
+ Fe.from_email,
27
+ "Reference Thank You",
28
+ {'reference_full_name' => @reference.name,
29
29
  'applicant_full_name' => @application.applicant.informal_full_name}).deliver
30
30
 
31
-
31
+
32
32
  # Send Reference Completion Notice
33
33
  Fe::Notifier.notification(@application.applicant.email,
34
- Fe.from_email,
35
- "Reference Complete",
36
- {'reference_full_name' => @reference.name,
34
+ Fe.from_email,
35
+ "Reference Complete",
36
+ {'reference_full_name' => @reference.name,
37
37
  'applicant_full_name' => @application.applicant.informal_full_name,
38
38
  'reference_submission_date' => @reference.submitted_at.strftime("%m/%d/%Y")}).deliver
39
-
39
+
40
40
  end
41
41
 
42
-
42
+
43
43
  def show
44
44
  @reference = @application.references.find_by_access_key(params[:id])
45
45
 
46
46
  if @reference.nil?
47
- render :action => :edit
47
+ render action: :edit
48
48
  else
49
49
  @answer_sheet = @reference
50
50
  @question_sheet = @answer_sheet.question_sheet
@@ -58,11 +58,11 @@ module Fe
58
58
  end
59
59
  end
60
60
  end
61
-
61
+
62
62
  def send_invite
63
63
  # Save references on page first
64
64
  #update_references
65
-
65
+
66
66
  @reference = Fe::ReferenceSheet.find(params[:id])
67
67
  send_reference_invite(@reference)
68
68
  end
@@ -1,14 +1,14 @@
1
1
  class Fe::SubmitPagesController < ApplicationController
2
2
 
3
- before_filter :setup
4
- skip_before_filter :get_answer_sheet
3
+ before_action :setup
4
+ skip_before_action :get_answer_sheet, raise: false
5
5
 
6
6
  layout nil
7
-
7
+
8
8
  def edit
9
9
  @next_page = next_custom_page(@application, 'submit_page')
10
10
  end
11
-
11
+
12
12
  # save any changes on the submit_page (for auto-save, no server-validation)
13
13
  def update
14
14
  head :ok
@@ -18,5 +18,5 @@ class Fe::SubmitPagesController < ApplicationController
18
18
 
19
19
  def setup
20
20
  @application = @answer_sheet = Fe.answer_sheet_class.constantize.find(params[:application_id]) unless @application
21
- end
21
+ end
22
22
  end
@@ -13,7 +13,7 @@ module Fe::AnswerPagesHelper
13
13
  def load_page_js(page_link)
14
14
  return '' if page_link.nil?
15
15
 
16
- %{$.fe.pageHandler.loadPage('#{page_link.dom_id}','#{page_link.load_path}')}
16
+ %{fe.pageHandler.loadPage('#{page_link.dom_id}','#{page_link.load_path}')}
17
17
  end
18
18
 
19
19
  end
@@ -37,12 +37,12 @@ module Fe
37
37
  end
38
38
 
39
39
  def tip(t)
40
- image_tag('fe/icons/question-balloon.png', :title => t, :class => 'tip')
40
+ image_tag('fe/icons/question-balloon.png', title: t, class: 'tip')
41
41
  end
42
42
 
43
43
  def spinner(extra = nil)
44
44
  e = extra ? "spinner_#{extra}" : 'spinner'
45
- image_tag('spinner.gif', :id => e, :style => 'display:none', :class => 'spinner')
45
+ image_tag('spinner.gif', id: e, style: 'display:none', class: 'spinner')
46
46
  end
47
47
 
48
48
  def link_to_function(name, *args, &block)
@@ -52,7 +52,7 @@ module Fe
52
52
  onclick = "#{"#{html_options[:onclick]}; " if html_options[:onclick]}#{function}; return false;"
53
53
  href = html_options[:href] || '#'
54
54
 
55
- content_tag(:a, name, html_options.merge(:href => href, :onclick => onclick))
55
+ content_tag(:a, name, html_options.merge(href: href, onclick: onclick))
56
56
  end
57
57
 
58
58
  def error_messages_for(model)
@@ -0,0 +1,11 @@
1
+ class Fe::UpdateReferenceSheetVisibilityJob < ActiveJob::Base
2
+ def perform(answer_sheet, question_ids)
3
+ answer_sheet.question_sheets_all_reference_elements.each do |r|
4
+ if (r.visibility_affecting_element_ids & question_ids).any?
5
+ answer_sheet.all_references.where(question_id: r.id).each do |ref|
6
+ ref.update_visible
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -9,14 +9,14 @@ module Fe
9
9
  raise "Email Template '#{template_name}' could not be found"
10
10
  else
11
11
  set_format = options.delete(:format)
12
- mail({:to => p_recipients,
13
- :from => p_from,
14
- :subject => Liquid::Template.parse(email_template.subject).render(template_params)}.merge(options)) do |format|
12
+ mail({to: p_recipients,
13
+ from: p_from,
14
+ subject: Liquid::Template.parse(email_template.subject).render(template_params)}.merge(options)) do |format|
15
15
  case set_format.to_s
16
16
  when 'html'
17
17
  format.html { render html: Liquid::Template.parse(email_template.content).render(template_params) }
18
18
  else
19
- format.text { render text: Liquid::Template.parse(email_template.content).render(template_params) }
19
+ format.text { render plain: Liquid::Template.parse(email_template.content).render(template_params) }
20
20
  end
21
21
  end
22
22
  @recipients = p_recipients
@@ -1,2 +1,2 @@
1
- class AnswerSheet < ActiveRecord::Base
1
+ class AnswerSheet < ApplicationRecord
2
2
  end
@@ -0,0 +1,3 @@
1
+ class ApplicationRecord < ActiveRecord::Base
2
+ self.abstract_class = true
3
+ end
@@ -6,8 +6,8 @@ module Fe
6
6
  begin
7
7
  included do
8
8
 
9
- belongs_to :answer_sheet
10
- belongs_to :question, :class_name => "Element", :foreign_key => "question_id"
9
+ belongs_to :answer_sheet, optional: true
10
+ belongs_to :question, optional: true, class_name: "Element", foreign_key: "question_id"
11
11
 
12
12
  before_save :set_value_from_filename
13
13
  end
@@ -9,11 +9,11 @@ module Fe
9
9
  rescue ActiveSupport::Concern::MultipleIncludedBlocks
10
10
  end
11
11
 
12
- def initialize(controller, answer_sheets, a = nil, custom_pages = nil)
12
+ def initialize(controller, answer_sheets, a = nil, custom_pages = nil, show_hidden_pages = false)
13
13
  super(controller)
14
14
  @answer_sheets = Array.wrap(answer_sheets)
15
15
  @active_answer_sheet = @answer_sheets.first
16
- initialize_pages(@active_answer_sheet)
16
+ initialize_pages(@active_answer_sheet, show_hidden_pages)
17
17
 
18
18
  @page_links = page_list(@answer_sheets, a, custom_pages)
19
19
  end
@@ -72,10 +72,11 @@ module Fe
72
72
  end
73
73
  end
74
74
 
75
- def initialize_pages(answer_sheet)
75
+ def initialize_pages(answer_sheet, show_hidden_pages = false)
76
76
  @pages = []
77
77
  answer_sheet.question_sheets.each do |qs|
78
- qs.pages.visible.each do |page|
78
+ pages = show_hidden_pages ? qs.pages : qs.pages.visible
79
+ pages.each do |page|
79
80
  @pages << page
80
81
  end
81
82
  end
@@ -90,7 +91,7 @@ module Fe
90
91
  end
91
92
 
92
93
  def new_page_link(answer_sheet, page, a = nil)
93
- Fe::PageLink.new(edit_fe_answer_sheet_page_path(answer_sheet, page, :a => a), dom_page(answer_sheet, page), page) if page
94
+ Fe::PageLink.new(edit_fe_answer_sheet_page_path(answer_sheet, page, a: a), dom_page(answer_sheet, page), page) if page
94
95
  end
95
96
 
96
97
  protected