fe 1.0.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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