fe 0.0.4 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (456) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +4 -4
  3. data/Rakefile +16 -36
  4. data/app/assets/config/fe/manifest.js +3 -0
  5. data/app/assets/config/manifest.js +3 -0
  6. data/app/assets/javascripts/application.js.erb +1 -1
  7. data/app/assets/javascripts/fe/admin.js +0 -2
  8. data/app/assets/javascripts/fe/fe.admin.js +40 -20
  9. data/app/assets/javascripts/fe/fe.common.js.erb +98 -0
  10. data/app/assets/javascripts/fe/fe.public.js +2 -416
  11. data/app/assets/javascripts/fe/fe.public.nojquery.js.erb +526 -0
  12. data/app/assets/javascripts/fe/jquery.html5_upload.js +258 -0
  13. data/app/assets/javascripts/fe/jquery.validate.pack.js +3 -15
  14. data/app/assets/stylesheets/fe/fe.screen.css.scss.erb +90 -10
  15. data/app/assets/stylesheets/fe/validation.css +5 -1
  16. data/app/controllers/concerns/fe/admin/question_sheets_controller_concern.rb +111 -0
  17. data/app/controllers/concerns/fe/answer_pages_controller_concern.rb +131 -0
  18. data/app/controllers/{fe/concerns → concerns/fe}/answer_sheets_controller_concern.rb +15 -7
  19. data/app/controllers/{fe/concerns → concerns/fe}/application_controller_concern.rb +15 -2
  20. data/app/controllers/fe/admin/elements_controller.rb +102 -64
  21. data/app/controllers/fe/admin/email_templates_controller.rb +7 -7
  22. data/app/controllers/fe/admin/question_pages_controller.rb +9 -9
  23. data/app/controllers/fe/admin/question_sheets_controller.rb +2 -103
  24. data/app/controllers/fe/reference_pages_controller.rb +11 -11
  25. data/app/controllers/fe/reference_sheets_controller.rb +6 -4
  26. data/app/controllers/fe/references_controller.rb +20 -19
  27. data/app/controllers/fe/submit_pages_controller.rb +5 -5
  28. data/app/helpers/fe/answer_pages_helper.rb +1 -1
  29. data/app/helpers/fe/application_helper.rb +8 -3
  30. data/app/jobs/fe/update_reference_sheet_visibility_job.rb +11 -0
  31. data/app/mailers/fe/notifier.rb +12 -5
  32. data/app/models/answer_sheet.rb +2 -0
  33. data/app/models/application_record.rb +3 -0
  34. data/app/models/{fe/concerns → concerns/fe}/answer_concern.rb +2 -2
  35. data/app/models/{fe/concerns → concerns/fe}/answer_pages_presenter_concern.rb +15 -5
  36. data/app/models/concerns/fe/answer_sheet_concern.rb +125 -0
  37. data/app/models/{fe/concerns → concerns/fe}/choice_field_concern.rb +56 -31
  38. data/app/models/fe/address.rb +2 -2
  39. data/app/models/fe/answer.rb +1 -1
  40. data/app/models/fe/answer_sheet.rb +1 -1
  41. data/app/models/fe/answer_sheet_question_sheet.rb +2 -2
  42. data/app/models/fe/application.rb +15 -10
  43. data/app/models/fe/condition.rb +4 -4
  44. data/app/models/fe/date_field.rb +2 -2
  45. data/app/models/fe/element.rb +201 -45
  46. data/app/models/fe/email_address.rb +2 -2
  47. data/app/models/fe/email_template.rb +1 -1
  48. data/app/models/fe/page.rb +138 -31
  49. data/app/models/fe/page_element.rb +8 -3
  50. data/app/models/fe/page_link.rb +6 -3
  51. data/app/models/fe/paragraph.rb +1 -1
  52. data/app/models/fe/person.rb +16 -13
  53. data/app/models/fe/phone_number.rb +1 -1
  54. data/app/models/fe/question.rb +64 -44
  55. data/app/models/fe/question_grid.rb +16 -4
  56. data/app/models/fe/question_grid_with_total.rb +15 -0
  57. data/app/models/fe/question_set.rb +54 -14
  58. data/app/models/fe/question_sheet.rb +54 -19
  59. data/app/models/fe/reference_question.rb +9 -13
  60. data/app/models/fe/reference_sheet.rb +113 -54
  61. data/app/models/fe/state_chooser.rb +2 -2
  62. data/app/models/fe/text_field.rb +2 -2
  63. data/app/models/fe/user.rb +1 -1
  64. data/app/models/staff.rb +8 -6
  65. data/app/validators/email_validator.rb +11 -0
  66. data/app/views/fe/admin/elements/create.js.erb +4 -3
  67. data/app/views/fe/admin/elements/destroy.js.erb +1 -1
  68. data/app/views/fe/admin/elements/drop.js.erb +2 -1
  69. data/app/views/fe/admin/elements/duplicate.js.erb +2 -1
  70. data/app/views/fe/admin/elements/edit.js.erb +1 -1
  71. data/app/views/fe/admin/elements/error.js.erb +1 -1
  72. data/app/views/fe/admin/elements/new.js.erb +13 -6
  73. data/app/views/fe/admin/elements/update.js.erb +1 -1
  74. data/app/views/fe/admin/email_templates/_form.html.erb +3 -3
  75. data/app/views/fe/admin/email_templates/edit.html.erb +3 -3
  76. data/app/views/fe/admin/email_templates/index.html.erb +3 -3
  77. data/app/views/fe/admin/email_templates/new.html.erb +3 -3
  78. data/app/views/fe/admin/panels/_advanced_options.html.erb +16 -10
  79. data/app/views/fe/admin/panels/_common_boolean_fields.html.erb +1 -0
  80. data/app/views/fe/admin/panels/_common_boolean_fields_default.html.erb +11 -0
  81. data/app/views/fe/admin/panels/_common_fields.html.erb +18 -19
  82. data/app/views/fe/admin/panels/_condition.html.erb +1 -1
  83. data/app/views/fe/admin/panels/_insert.html.erb +25 -25
  84. data/app/views/fe/admin/panels/_nav_controls.html.erb +4 -4
  85. data/app/views/fe/admin/panels/_page.html.erb +2 -2
  86. data/app/views/fe/admin/panels/_pages_list.html.erb +3 -3
  87. data/app/views/fe/admin/panels/_prop_attachment_field.html.erb +2 -2
  88. data/app/views/fe/admin/panels/_prop_choice_field.html.erb +52 -24
  89. data/app/views/fe/admin/panels/_prop_date_field.html.erb +1 -1
  90. data/app/views/fe/admin/panels/_prop_element.html.erb +7 -14
  91. data/app/views/fe/admin/panels/_prop_page.html.erb +11 -6
  92. data/app/views/fe/admin/panels/_prop_paragraph.html.erb +38 -24
  93. data/app/views/fe/admin/panels/_prop_question_grid.html.erb +7 -2
  94. data/app/views/fe/admin/panels/_prop_question_grid_with_total.html.erb +2 -2
  95. data/app/views/fe/admin/panels/_prop_reference_question.html.erb +3 -3
  96. data/app/views/fe/admin/panels/_prop_section.html.erb +8 -2
  97. data/app/views/fe/admin/panels/_prop_sheet.html.erb +7 -4
  98. data/app/views/fe/admin/panels/_prop_text_field.html.erb +12 -12
  99. data/app/views/fe/admin/question_pages/_element.html.erb +16 -6
  100. data/app/views/fe/admin/question_pages/_element_show.html.erb +2 -2
  101. data/app/views/fe/admin/question_pages/_question_page.html.erb +4 -4
  102. data/app/views/fe/admin/question_pages/create.js.erb +3 -3
  103. data/app/views/fe/admin/question_pages/destroy.js.erb +3 -3
  104. data/app/views/fe/admin/question_pages/edit.js.erb +1 -1
  105. data/app/views/fe/admin/question_pages/error.js.erb +1 -1
  106. data/app/views/fe/admin/question_pages/show.js.erb +2 -2
  107. data/app/views/fe/admin/question_pages/show_panel.js.erb +1 -1
  108. data/app/views/fe/admin/question_pages/update.js.erb +1 -1
  109. data/app/views/fe/admin/question_sheets/edit.js.erb +1 -1
  110. data/app/views/fe/admin/question_sheets/error.js.erb +1 -1
  111. data/app/views/fe/admin/question_sheets/index.html.erb +8 -8
  112. data/app/views/fe/admin/question_sheets/new.html.erb +3 -3
  113. data/app/views/fe/admin/question_sheets/show.html.erb +5 -5
  114. data/app/views/fe/admin/question_sheets/update.js.erb +1 -1
  115. data/app/views/fe/answer_pages/_answer_page.html.erb +14 -14
  116. data/app/views/fe/answer_pages/_element.html.erb +25 -6
  117. data/app/views/fe/answer_pages/_page_name.html.erb +1 -0
  118. data/app/views/fe/answer_pages/show.html.erb +39 -0
  119. data/app/views/fe/answer_pages/update.js.erb +11 -3
  120. data/app/views/fe/answer_sheets/_answer_sheet.html.erb +6 -6
  121. data/app/views/fe/answer_sheets/_element.html.erb +55 -35
  122. data/app/views/fe/answer_sheets/_incomplete.html.erb +1 -1
  123. data/app/views/fe/answer_sheets/_page_link.html.erb +9 -7
  124. data/app/views/fe/answer_sheets/_pages_list.html.erb +4 -4
  125. data/app/views/fe/answer_sheets/_submit_to.html.erb +1 -0
  126. data/app/views/fe/answer_sheets/_title.html.erb +1 -1
  127. data/app/views/fe/answer_sheets/edit.html.erb +24 -24
  128. data/app/views/fe/answer_sheets/incomplete.js.erb +9 -3
  129. data/app/views/fe/answer_sheets/index.html.erb +3 -3
  130. data/app/views/fe/answer_sheets/show.html.erb +1 -1
  131. data/app/views/fe/applications/_logout.html.erb +1 -0
  132. data/app/views/fe/applications/show.html.erb +1 -0
  133. data/app/views/fe/questions/fe/_acceptance.html.erb +11 -10
  134. data/app/views/fe/questions/fe/_attachment_field.html.erb +133 -10
  135. data/app/views/fe/questions/fe/_checkbox_field.html.erb +34 -30
  136. data/app/views/fe/questions/fe/_country.html.erb +6 -6
  137. data/app/views/fe/questions/fe/_date_field.html.erb +5 -5
  138. data/app/views/fe/questions/fe/_date_field_mmyy.html.erb +8 -8
  139. data/app/views/fe/questions/fe/_drop_down_field.html.erb +7 -6
  140. data/app/views/fe/questions/fe/_paragraph.html.erb +1 -1
  141. data/app/views/fe/questions/fe/_question_grid.html.erb +21 -16
  142. data/app/views/fe/questions/fe/_question_grid_with_total.html.erb +25 -18
  143. data/app/views/fe/questions/fe/_questions.html.erb +11 -5
  144. data/app/views/fe/questions/fe/_radio_button_field.html.erb +42 -25
  145. data/app/views/fe/questions/fe/_rating.html.erb +57 -18
  146. data/app/views/fe/questions/fe/_reference_discipler.html.erb +1 -1
  147. data/app/views/fe/questions/fe/_reference_friend.html.erb +1 -1
  148. data/app/views/fe/questions/fe/_reference_parent.html.erb +1 -1
  149. data/app/views/fe/questions/fe/_reference_peer.html.erb +1 -1
  150. data/app/views/fe/questions/fe/_reference_question.html.erb +44 -21
  151. data/app/views/fe/questions/fe/_reference_roommate.html.erb +1 -1
  152. data/app/views/fe/questions/fe/_reference_spiritual.html.erb +1 -1
  153. data/app/views/fe/questions/fe/_reference_staff.html.erb +1 -1
  154. data/app/views/fe/questions/fe/_section.html.erb +1 -1
  155. data/app/views/fe/questions/fe/_state_chooser.html.erb +6 -6
  156. data/app/views/fe/questions/fe/_text_area_field.html.erb +17 -6
  157. data/app/views/fe/questions/fe/_text_field.html.erb +7 -6
  158. data/app/views/fe/questions/fe/_yes_no.html.erb +8 -8
  159. data/app/views/fe/questions/fe/_yes_no_field.erb +12 -9
  160. data/app/views/fe/reference_pages/_reference.html.erb +15 -15
  161. data/app/views/fe/reference_pages/edit.html.erb +9 -9
  162. data/app/views/fe/reference_sheets/done.html.erb +2 -2
  163. data/app/views/fe/reference_sheets/not_found.html.erb +4 -4
  164. data/app/views/fe/references/edit.html.erb +6 -6
  165. data/app/views/fe/references/show.html.erb +8 -8
  166. data/app/views/fe/references/submit.js.erb +3 -3
  167. data/app/views/fe/submit_pages/_thankyou.html.erb +1 -1
  168. data/app/views/fe/submit_pages/edit.html.erb +12 -12
  169. data/app/views/fe/submit_pages/error.js.erb +1 -1
  170. data/app/views/fe/submit_pages/submit.js.erb +2 -2
  171. data/app/views/layouts/fe/_error_messages_for.html.erb +7 -0
  172. data/app/views/layouts/fe/application.html.erb +4 -5
  173. data/app/views/layouts/fe/fe_admin.html.erb +30 -0
  174. data/app/views.current/fe/admin/elements/_errors.html.erb +11 -0
  175. data/app/views.current/fe/admin/elements/create.js.erb +12 -0
  176. data/app/views.current/fe/admin/elements/destroy.js.erb +4 -0
  177. data/app/views.current/fe/admin/elements/drop.js.erb +3 -0
  178. data/app/views.current/fe/admin/elements/duplicate.js.erb +3 -0
  179. data/app/views.current/fe/admin/elements/edit.js.erb +4 -0
  180. data/app/views.current/fe/admin/elements/error.js.erb +4 -0
  181. data/app/views.current/fe/admin/elements/new.js.erb +17 -0
  182. data/app/views.current/fe/admin/elements/reorder.js.erb +0 -0
  183. data/app/views.current/fe/admin/elements/update.js.erb +9 -0
  184. data/app/views.current/fe/admin/email_templates/_form.html.erb +8 -0
  185. data/app/views.current/fe/admin/email_templates/edit.html.erb +13 -0
  186. data/app/views.current/fe/admin/email_templates/index.html.erb +20 -0
  187. data/app/views.current/fe/admin/email_templates/new.html.erb +11 -0
  188. data/app/views.current/fe/admin/panels/_advanced_options.html.erb +49 -0
  189. data/app/views.current/fe/admin/panels/_common_boolean_fields.html.erb +1 -0
  190. data/app/views.current/fe/admin/panels/_common_boolean_fields_default.html.erb +11 -0
  191. data/app/views.current/fe/admin/panels/_common_fields.html.erb +23 -0
  192. data/app/views.current/fe/admin/panels/_condition.html.erb +6 -0
  193. data/app/views.current/fe/admin/panels/_insert.html.erb +39 -0
  194. data/app/views.current/fe/admin/panels/_nav_controls.html.erb +6 -0
  195. data/app/views.current/fe/admin/panels/_page.html.erb +3 -0
  196. data/app/views.current/fe/admin/panels/_pages_list.html.erb +16 -0
  197. data/app/views.current/fe/admin/panels/_prop_attachment_field.html.erb +2 -0
  198. data/app/views.current/fe/admin/panels/_prop_choice_field.html.erb +74 -0
  199. data/app/views.current/fe/admin/panels/_prop_date_field.html.erb +7 -0
  200. data/app/views.current/fe/admin/panels/_prop_element.html.erb +23 -0
  201. data/app/views.current/fe/admin/panels/_prop_page.html.erb +26 -0
  202. data/app/views.current/fe/admin/panels/_prop_paragraph.html.erb +46 -0
  203. data/app/views.current/fe/admin/panels/_prop_question_grid.html.erb +28 -0
  204. data/app/views.current/fe/admin/panels/_prop_question_grid_with_total.html.erb +14 -0
  205. data/app/views.current/fe/admin/panels/_prop_reference_question.html.erb +12 -0
  206. data/app/views.current/fe/admin/panels/_prop_section.html.erb +8 -0
  207. data/app/views.current/fe/admin/panels/_prop_sheet.html.erb +20 -0
  208. data/app/views.current/fe/admin/panels/_prop_text_field.html.erb +20 -0
  209. data/app/views.current/fe/admin/question_pages/_element.html.erb +28 -0
  210. data/app/views.current/fe/admin/question_pages/_element_show.html.erb +10 -0
  211. data/app/views.current/fe/admin/question_pages/_errors.html.erb +10 -0
  212. data/app/views.current/fe/admin/question_pages/_question_page.html.erb +13 -0
  213. data/app/views.current/fe/admin/question_pages/create.js.erb +11 -0
  214. data/app/views.current/fe/admin/question_pages/destroy.js.erb +5 -0
  215. data/app/views.current/fe/admin/question_pages/edit.js.erb +3 -0
  216. data/app/views.current/fe/admin/question_pages/error.js.erb +4 -0
  217. data/app/views.current/fe/admin/question_pages/show.js.erb +9 -0
  218. data/app/views.current/fe/admin/question_pages/show_panel.js.erb +3 -0
  219. data/app/views.current/fe/admin/question_pages/update.js.erb +2 -0
  220. data/app/views.current/fe/admin/question_sheets/_errors.html.erb +11 -0
  221. data/app/views.current/fe/admin/question_sheets/edit.js.erb +3 -0
  222. data/app/views.current/fe/admin/question_sheets/error.js.erb +5 -0
  223. data/app/views.current/fe/admin/question_sheets/index.html.erb +41 -0
  224. data/app/views.current/fe/admin/question_sheets/new.html.erb +15 -0
  225. data/app/views.current/fe/admin/question_sheets/show.html.erb +27 -0
  226. data/app/views.current/fe/admin/question_sheets/update.js.erb +2 -0
  227. data/app/views.current/fe/answer_pages/_answer_page.html.erb +53 -0
  228. data/app/views.current/fe/answer_pages/_element.html.erb +32 -0
  229. data/app/views.current/fe/answer_pages/_page_name.html.erb +1 -0
  230. data/app/views.current/fe/answer_pages/show.html.erb +39 -0
  231. data/app/views.current/fe/answer_pages/update.js.erb +13 -0
  232. data/app/views.current/fe/answer_sheets/_answer_sheet.html.erb +26 -0
  233. data/app/views.current/fe/answer_sheets/_element.html.erb +74 -0
  234. data/app/views.current/fe/answer_sheets/_incomplete.html.erb +10 -0
  235. data/app/views.current/fe/answer_sheets/_page_link.html.erb +9 -0
  236. data/app/views.current/fe/answer_sheets/_pages_list.html.erb +11 -0
  237. data/app/views.current/fe/answer_sheets/_submit_to.html.erb +1 -0
  238. data/app/views.current/fe/answer_sheets/_title.html.erb +1 -0
  239. data/app/views.current/fe/answer_sheets/edit.html.erb +66 -0
  240. data/app/views.current/fe/answer_sheets/incomplete.js.erb +11 -0
  241. data/app/views.current/fe/answer_sheets/index.html.erb +18 -0
  242. data/app/views.current/fe/answer_sheets/send_reference_invite.js.erb +8 -0
  243. data/app/views.current/fe/answer_sheets/show.html.erb +13 -0
  244. data/app/views.current/fe/applications/_logout.html.erb +1 -0
  245. data/app/views.current/fe/applications/show.html.erb +1 -0
  246. data/app/views.current/fe/help/builder.html +33 -0
  247. data/app/views.current/fe/help/question_grid.html +18 -0
  248. data/app/views.current/fe/questions/fe/_acceptance.html.erb +14 -0
  249. data/app/views.current/fe/questions/fe/_attachment_field.html.erb +165 -0
  250. data/app/views.current/fe/questions/fe/_checkbox_field.html.erb +53 -0
  251. data/app/views.current/fe/questions/fe/_country.html.erb +7 -0
  252. data/app/views.current/fe/questions/fe/_date_field.html.erb +7 -0
  253. data/app/views.current/fe/questions/fe/_date_field_mmyy.html.erb +9 -0
  254. data/app/views.current/fe/questions/fe/_drop_down_field.html.erb +8 -0
  255. data/app/views.current/fe/questions/fe/_paragraph.html.erb +1 -0
  256. data/app/views.current/fe/questions/fe/_question_grid.html.erb +70 -0
  257. data/app/views.current/fe/questions/fe/_question_grid_with_total.html.erb +64 -0
  258. data/app/views.current/fe/questions/fe/_questions.html.erb +15 -0
  259. data/app/views.current/fe/questions/fe/_radio_button_field.html.erb +60 -0
  260. data/app/views.current/fe/questions/fe/_rating.html.erb +64 -0
  261. data/app/views.current/fe/questions/fe/_reference_discipler.html.erb +1 -0
  262. data/app/views.current/fe/questions/fe/_reference_friend.html.erb +1 -0
  263. data/app/views.current/fe/questions/fe/_reference_parent.html.erb +1 -0
  264. data/app/views.current/fe/questions/fe/_reference_peer.html.erb +1 -0
  265. data/app/views.current/fe/questions/fe/_reference_question.html.erb +61 -0
  266. data/app/views.current/fe/questions/fe/_reference_roommate.html.erb +1 -0
  267. data/app/views.current/fe/questions/fe/_reference_spiritual.html.erb +1 -0
  268. data/app/views.current/fe/questions/fe/_reference_staff.html.erb +1 -0
  269. data/app/views.current/fe/questions/fe/_section.html.erb +1 -0
  270. data/app/views.current/fe/questions/fe/_state_chooser.html.erb +7 -0
  271. data/app/views.current/fe/questions/fe/_text_area_field.html.erb +17 -0
  272. data/app/views.current/fe/questions/fe/_text_field.html.erb +9 -0
  273. data/app/views.current/fe/questions/fe/_yes_no.html.erb +17 -0
  274. data/app/views.current/fe/questions/fe/_yes_no_field.erb +20 -0
  275. data/app/views.current/fe/reference_pages/_reference.html.erb +31 -0
  276. data/app/views.current/fe/reference_pages/edit.html.erb +24 -0
  277. data/app/views.current/fe/reference_sheets/done.html.erb +2 -0
  278. data/app/views.current/fe/reference_sheets/not_found.html.erb +5 -0
  279. data/app/views.current/fe/reference_sheets/submitted.js.erb +1 -0
  280. data/app/views.current/fe/references/edit.html.erb +8 -0
  281. data/app/views.current/fe/references/send_invite.js.erb +7 -0
  282. data/app/views.current/fe/references/show.html.erb +18 -0
  283. data/app/views.current/fe/references/submit.js.erb +3 -0
  284. data/app/views.current/fe/submit_pages/_errors.html.erb +1 -0
  285. data/app/views.current/fe/submit_pages/_thankyou.html.erb +2 -0
  286. data/app/views.current/fe/submit_pages/edit.html.erb +36 -0
  287. data/app/views.current/fe/submit_pages/error.js.erb +1 -0
  288. data/app/views.current/fe/submit_pages/submit.js.erb +3 -0
  289. data/app/views.current/layouts/fe/_error_messages_for.html.erb +7 -0
  290. data/app/views.current/layouts/fe/application.html.erb +47 -0
  291. data/app/{views/layouts/fe/fe.admin.html.erb → views.current/layouts/fe/fe_admin.html.erb} +4 -4
  292. data/config/initializers/paper_trail.rb +3 -0
  293. data/config/routes.rb +3 -37
  294. data/db/migrate/20131003041856_core.rb +23 -23
  295. data/db/migrate/20131003044250_create_reference_sheets.rb +2 -1
  296. data/db/migrate/20131003044436_add_element_and_answer_fields.rb +3 -3
  297. data/db/migrate/20131003044518_create_email_templates.rb +2 -2
  298. data/db/migrate/20131003044621_add_max_lengths.rb +1 -1
  299. data/db/migrate/20131003044714_create_join_table.rb +1 -1
  300. data/db/migrate/20131016162128_remove_question_id_from_element.rb +1 -1
  301. data/db/migrate/20140623153424_create_fe_people.rb +2 -2
  302. data/db/migrate/20140624180246_create_fe_addresses.rb +2 -2
  303. data/db/migrate/{20140624182216_create_create_fe_phone_numbers.rb → 20140624182216_create_fe_phone_numbers.rb} +2 -2
  304. data/db/migrate/20140625160545_create_fe_users.rb +2 -2
  305. data/db/migrate/20140808202507_add_conditional_type_to_elements.rb +1 -1
  306. data/db/migrate/20140808203609_add_conditional_answer_to_elements.rb +1 -1
  307. data/db/migrate/20141103204704_remove_short_value_column.rb +1 -1
  308. data/db/migrate/20141109154522_move_conditional_ids_used_for_choice_field_to_their_own_column.rb +1 -1
  309. data/db/migrate/20150504221439_add_all_element_ids_to_pages.rb +5 -0
  310. data/db/migrate/20150713022326_add_locale_columns.rb +9 -0
  311. data/db/migrate/20150714220730_add_locale_to_answer_sheet.rb +5 -0
  312. data/db/migrate/20150925181652_add_share_to_elements.rb +5 -0
  313. data/db/migrate/20150928085325_change_pages_all_element_ids_to_text.rb +5 -0
  314. data/db/migrate/20150930191538_add_locale_to_reference_sheets.rb +5 -0
  315. data/db/migrate/20151021181928_switch_conditional_answer_separator_to_semicolon.rb +7 -0
  316. data/db/migrate/20151021184250_add_question_sheet_id_in_refs.rb +12 -0
  317. data/db/migrate/20160201185838_add_visible_and_visibility_cache_key_to_reference_sheets.rb +6 -0
  318. data/db/migrate/20160805221415_add_rating_extra_labels.rb +10 -0
  319. data/db/migrate/20181108201746_create_versions.rb +80 -0
  320. data/db/migrate/20181218201130_increase_slug_length.rb +5 -0
  321. data/lib/access_key_generator.rb +12 -0
  322. data/lib/distinct_distinct_patch.rb +20 -0
  323. data/lib/fe/engine.rb +26 -14
  324. data/lib/fe/version.rb +1 -1
  325. data/lib/fe.rb +11 -1
  326. data/spec/controllers/fe/admin/elements_controller_spec.rb +211 -1
  327. data/spec/controllers/fe/admin/email_templates_controller_spec.rb +26 -1
  328. data/spec/controllers/fe/admin/question_pages_controller_spec.rb +8 -1
  329. data/spec/controllers/fe/admin/question_sheets_controller_spec.rb +48 -1
  330. data/spec/controllers/fe/answer_pages_controller_spec.rb +129 -1
  331. data/spec/controllers/fe/answer_sheets_controller_spec.rb +136 -1
  332. data/spec/controllers/fe/reference_pages_controller.rb +4 -0
  333. data/spec/controllers/fe/references_controller_spec.rb +4 -0
  334. data/spec/controllers/fe/submit_pages_controller_spec.rb +4 -0
  335. data/spec/dummy/app/assets/config/manifest.js +0 -0
  336. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  337. data/spec/dummy/app/helpers/application_helper.rb +9 -0
  338. data/spec/dummy/app/models/application.rb +3 -0
  339. data/spec/dummy/app/models/person.rb +11 -0
  340. data/spec/dummy/app/models/user.rb +3 -0
  341. data/spec/dummy/app/views/layouts/application.html.erb +2 -2
  342. data/spec/dummy/config/application.rb +3 -1
  343. data/spec/dummy/config/database.yml +20 -17
  344. data/spec/dummy/config/environments/production.rb +1 -5
  345. data/spec/dummy/config/environments/test.rb +4 -2
  346. data/spec/dummy/config/initializers/assets.rb +5 -2
  347. data/spec/dummy/config/initializers/fast_gettext.rb +5 -0
  348. data/spec/dummy/config/initializers/to_unsafe_h.rb +5 -0
  349. data/spec/dummy/config/initializers/to_unsafe_h.rb.new +5 -0
  350. data/spec/dummy/config/secrets.yml +2 -2
  351. data/spec/dummy/db/migrate/20141203214017_core.fe_engine.rb +92 -0
  352. data/spec/dummy/db/migrate/20141203214018_create_reference_sheets.fe_engine.rb +25 -0
  353. data/spec/dummy/db/migrate/20141203214019_add_element_and_answer_fields.fe_engine.rb +11 -0
  354. data/spec/dummy/db/migrate/20141203214020_create_email_templates.fe_engine.rb +18 -0
  355. data/spec/dummy/db/migrate/20141203214021_add_max_lengths.fe_engine.rb +9 -0
  356. data/spec/dummy/db/migrate/20141203214022_create_join_table.fe_engine.rb +12 -0
  357. data/spec/dummy/db/migrate/20141203214023_remove_question_id_from_element.fe_engine.rb +10 -0
  358. data/spec/dummy/db/migrate/20141203214024_create_fe_people.fe_engine.rb +13 -0
  359. data/spec/dummy/db/migrate/20141203214025_create_fe_addresses.fe_engine.rb +21 -0
  360. data/spec/dummy/db/migrate/20141203214027_create_fe_users.fe_engine.rb +13 -0
  361. data/spec/dummy/db/migrate/20141203214028_add_conditional_type_to_elements.fe_engine.rb +6 -0
  362. data/spec/dummy/db/migrate/20141203214029_add_conditional_answer_to_elements.fe_engine.rb +6 -0
  363. data/spec/dummy/db/migrate/20141203214030_remove_short_value_column.fe_engine.rb +6 -0
  364. data/spec/dummy/db/migrate/20141203214031_move_conditional_ids_used_for_choice_field_to_their_own_column.fe_engine.rb +8 -0
  365. data/spec/dummy/db/migrate/20150123215803_create_users.rb +9 -0
  366. data/spec/dummy/db/migrate/20150504222619_add_all_element_ids_to_pages.fe_engine.rb +6 -0
  367. data/spec/dummy/db/migrate/20150925192557_add_share_to_elements.fe_engine.rb +6 -0
  368. data/spec/dummy/db/migrate/20150930190001_create_fe_phone_numbers.fe_engine.rb +20 -0
  369. data/spec/dummy/db/migrate/20150930190002_add_locale_columns.fe_engine.rb +10 -0
  370. data/spec/dummy/db/migrate/20150930190003_add_locale_to_answer_sheet.fe_engine.rb +6 -0
  371. data/spec/dummy/db/migrate/20150930190004_change_pages_all_element_ids_to_text.fe_engine.rb +6 -0
  372. data/spec/dummy/db/migrate/20150930191756_add_locale_to_reference_sheets.fe_engine.rb +6 -0
  373. data/spec/dummy/db/migrate/20151021190027_add_question_sheet_id_in_refs.fe_engine.rb +13 -0
  374. data/spec/dummy/db/migrate/20160204164612_switch_conditional_answer_separator_to_semicolon.fe_engine.rb +8 -0
  375. data/spec/dummy/db/migrate/20160204164613_add_visible_and_visibility_cache_key_to_reference_sheets.fe_engine.rb +7 -0
  376. data/spec/dummy/db/migrate/20181108201746_create_versions.rb +80 -0
  377. data/spec/dummy/db/schema.rb +91 -69
  378. data/spec/dummy/log/test.log +101278 -419
  379. data/spec/factories/answer_sheet_question_sheets.rb +1 -1
  380. data/spec/factories/answer_sheets.rb +2 -2
  381. data/spec/factories/answers.rb +1 -1
  382. data/spec/factories/applications.rb +3 -4
  383. data/spec/factories/dummy_applications.rb +6 -0
  384. data/spec/factories/dummy_people.rb +6 -0
  385. data/spec/factories/dummy_users.rb +6 -0
  386. data/spec/factories/elements.rb +35 -10
  387. data/spec/factories/email_templates.rb +5 -0
  388. data/spec/factories/fe_addresses.rb +10 -10
  389. data/spec/factories/fe_email_addresses.rb +3 -3
  390. data/spec/factories/fe_email_templates.rb +9 -0
  391. data/spec/factories/fe_people.rb +5 -7
  392. data/spec/factories/fe_phone_numbers.rb +3 -3
  393. data/spec/factories/fe_user.rb +6 -0
  394. data/spec/factories/page.rb +1 -1
  395. data/spec/factories/page_elements.rb +1 -1
  396. data/spec/factories/paragraphs.rb +1 -1
  397. data/spec/factories/question_sheet.rb +3 -3
  398. data/spec/factories/reference_questions.rb +1 -1
  399. data/spec/factories/reference_sheets.rb +9 -0
  400. data/spec/jobs/fe/update_reference_sheet_visibility_job_spec.rb +40 -0
  401. data/spec/mailers/fe/notifier_spec.rb +39 -0
  402. data/spec/models/fe/answer_sheet_question_sheet_spec.rb +1 -1
  403. data/spec/models/fe/answer_spec.rb +2 -2
  404. data/spec/models/fe/application_spec.rb +94 -1
  405. data/spec/models/fe/choice_field_spec.rb +66 -0
  406. data/spec/models/fe/condition_spec.rb +2 -2
  407. data/spec/models/fe/element_spec.rb +414 -37
  408. data/spec/models/fe/email_template_spec.rb +1 -1
  409. data/spec/models/fe/page_element_spec.rb +1 -1
  410. data/spec/models/fe/page_spec.rb +168 -11
  411. data/spec/models/fe/person_spec.rb +1 -1
  412. data/spec/models/fe/question_set_spec.rb +91 -0
  413. data/spec/models/fe/question_sheet_spec.rb +103 -1
  414. data/spec/models/fe/question_spec.rb +73 -6
  415. data/spec/models/fe/reference_question_spec.rb +20 -0
  416. data/spec/models/fe/reference_sheet_spec.rb +305 -2
  417. data/spec/models/fe/text_field_spec.rb +22 -0
  418. data/spec/rails_helper.rb +85 -54
  419. data/spec/support/choices.xml +6 -0
  420. metadata +310 -84
  421. data/app/assets/javascripts/fe/fe.common.js +0 -57
  422. data/app/assets/javascripts/fe/jquery.scrollTo-min.js +0 -7
  423. data/app/assets/javascripts/fe/rails.extra.js +0 -6
  424. data/app/controllers/fe/applications_controller.rb +0 -183
  425. data/app/controllers/fe/concerns/answer_pages_controller_concern.rb +0 -83
  426. data/app/controllers/fe/payments_controller.rb +0 -184
  427. data/app/models/fe/concerns/answer_sheet_concern.rb +0 -55
  428. data/app/models/fe/payment.rb +0 -77
  429. data/app/models/fe/payment_question.rb +0 -22
  430. data/app/views/fe/admin/panels/_prop_payment_question.html.erb +0 -1
  431. data/app/views/fe/application/_logout.html.erb +0 -1
  432. data/app/views/fe/payment_pages/_credit.html.erb +0 -47
  433. data/app/views/fe/payment_pages/_mail.html.erb +0 -27
  434. data/app/views/fe/payment_pages/_payment.html.erb +0 -6
  435. data/app/views/fe/payment_pages/_staff.html.erb +0 -25
  436. data/app/views/fe/payment_pages/_staff_results.html.erb +0 -17
  437. data/app/views/fe/payment_pages/edit.html.erb +0 -75
  438. data/app/views/fe/payment_pages/staff_search.js.erb +0 -2
  439. data/app/views/fe/payments/_credit.html.erb +0 -47
  440. data/app/views/fe/payments/_errors.html.erb +0 -1
  441. data/app/views/fe/payments/_payment.html.erb +0 -13
  442. data/app/views/fe/payments/_staff.html.erb +0 -21
  443. data/app/views/fe/payments/_staff_results.html.erb +0 -18
  444. data/app/views/fe/payments/approve.js.erb +0 -3
  445. data/app/views/fe/payments/create.js.erb +0 -19
  446. data/app/views/fe/payments/destroy.js.erb +0 -7
  447. data/app/views/fe/payments/edit.html.erb +0 -56
  448. data/app/views/fe/payments/error.js.erb +0 -3
  449. data/app/views/fe/payments/no_access.html.erb +0 -7
  450. data/app/views/fe/payments/staff_search.js.erb +0 -1
  451. data/app/views/fe/payments/update.html.erb +0 -24
  452. data/app/views/fe/questions/fe/_payment_question.html.erb +0 -70
  453. data/db/migrate/20140828045339_create_payments.rb +0 -13
  454. data/spec/dummy/db/test.sqlite3 +0 -0
  455. data/spec/factories/payments.rb +0 -7
  456. data/spec/models/fe/payment_question_spec.rb +0 -65
@@ -0,0 +1,7 @@
1
+ <% locked = state_chooser.locked?(params, @answer_sheet, @presenter, current_person) %>
2
+ <%= select_tag "answers[#{state_chooser.id}]",
3
+ options_for_select(["", ["Not Listed","N/A"]] + state_chooser.choices(session[:locale]), [state_chooser.response(@answer_sheet).to_s]),
4
+ class: "#{"form-control" if Fe.bootstrap} select " + state_chooser.validation_class(@answer_sheet, @page),
5
+ id: dom_id(state_chooser),
6
+ disabled: locked,
7
+ readonly: locked %>
@@ -0,0 +1,17 @@
1
+ <%
2
+ max_length = text_area_field.max_length.to_i > 0 ? text_area_field.max_length : 4000
3
+ locked = text_area_field.locked?(params, @answer_sheet, @presenter, current_person)
4
+ %>
5
+ <% response = text_area_field.response(@answer_sheet).to_s %>
6
+ <%= text_area_tag "answers[#{text_area_field.id}]", response,
7
+ class: "text " + text_area_field.validation_class(@answer_sheet, @page),
8
+ id: dom_id(text_area_field),
9
+ rows: 6,
10
+ autocomplete: "off",
11
+ disabled: locked,
12
+ readonly: locked,
13
+ maxlength: max_length %>
14
+ <div class="small" align="right"><span class="small notice"><%= _("(Please use paragraphs for long answers)") %></span>
15
+ <%= _("Characters remaining: ") %>
16
+ <input type="text" id="<%= dom_id(text_area_field)+"_count" %>" size="4" value="<%= max_length - response.length %>" disabled="" class="small char-count">
17
+ </div>
@@ -0,0 +1,9 @@
1
+ <% locked = text_field.locked?(params, @answer_sheet, @presenter, current_person) %>
2
+ <%= text_field_tag "answers[#{text_field.id}]", text_field.response(@answer_sheet),
3
+ class: "#{"form-control" if Fe.bootstrap} text #{text_field.css_class} #{text_field.question_grid_id.present? ? "col_#{text_field.question_grid_id}_#{col}" : ""}" + text_field.validation_class(@answer_sheet, @page),
4
+ id: dom_id(text_field),
5
+ disabled: locked,
6
+ autocomplete: "off",
7
+ readonly: locked,
8
+ maxlength: text_field.max_length.to_i > 0 ? text_field.max_length : 255 %>
9
+
@@ -0,0 +1,17 @@
1
+ <%- if ["question_pages", "question_sheets", "elements"].include?(controller.controller_name) -%>
2
+ <div class="droppable" data-url="<%= drop_fe_admin_question_sheet_page_element_path(@page.question_sheet_id, @page.id, yes_no.id) %>">
3
+ <%= render "fe/questions/fe/yes_no_field", yes_no: yes_no %>
4
+ <ul class="questions" id="questions_list_<%= yes_no.id %>" data-sortable="true" data-sortable-url="<%= reorder_fe_admin_question_sheet_page_elements_path(@page.question_sheet_id, @page.id) %>" data-sortable-handle=".handle">
5
+ <%= render partial: "fe/admin/question_pages/element", collection: yes_no.elements, locals: {in_grid: true} %>
6
+ </ul>
7
+ </div>
8
+ <% else %>
9
+ <%= render "fe/questions/fe/yes_no_field", yes_no: yes_no %>
10
+ <ul class="questions" id="questions_list_<%= yes_no.id %>" style="<%= yes_no.has_answer?(1,@answer_sheet) ? "" : "display:none" %>">
11
+ <%= render partial: "fe/answer_pages/element", collection: yes_no.elements, locals: {in_grid: false, in_conditional: true} %>
12
+ </ul>
13
+ <script type="text/javascript" charset="utf-8">
14
+ $(document).on("click", "#<%= dom_id(yes_no) %>_1", function() {$("#questions_list_<%= yes_no.id %>").show(); $("input", "#questions_list_<%= yes_no.id %>").addClass("required"); });
15
+ $(document).on("click", "#<%= dom_id(yes_no) %>_0", function() {$("#questions_list_<%= yes_no.id %>").hide(); $("input", "#questions_list_<%= yes_no.id %>").removeClass("required"); });
16
+ </script>
17
+ <% end %>
@@ -0,0 +1,20 @@
1
+ <% locked = yes_no.locked?(params, @answer_sheet, @presenter, current_person) %>
2
+ <div id="<%= dom_id(yes_no) %>" class="choice_field" style="white-space: nowrap;">
3
+ <% css_class = "#{yes_no.css_class} " -%>
4
+ <% yes_no.choices.each_with_index do |choice, num| -%>
5
+ <% dom_id = dom_id(yes_no) + "_" + pretty_tag(choice[1])
6
+ css_class += yes_no.validation_class(@answer_sheet, @page) if num == 0
7
+ checked = yes_no.has_answer?(choice[1],@answer_sheet) -%>
8
+ <div class="<% if Fe.bootstrap %>radio<% end %> field field_check yesno">
9
+ <% if Fe.bootstrap %><label class="choice horiz" for="<%= dom_id %>"><% end %>
10
+ <%= radio_button_tag "answers[#{yes_no.id}]", choice[1], checked,
11
+ id: dom_id,
12
+ class: css_class,
13
+ disabled: locked,
14
+ readonly: locked %>
15
+ <% if Fe.bootstrap %><%= choice[0] %><% end %>
16
+ <% unless Fe.bootstrap %><label class="choice horiz" for="<%= dom_id %>"><%= choice[0] %></label><% end %>
17
+ </div>
18
+ <% end -%>
19
+ <div class="clear"></div>
20
+ </div>
@@ -0,0 +1,31 @@
1
+ <% index = reference.applicant_answer_sheet_id -%>
2
+
3
+ <h3><%= h reference.title %></h3>
4
+
5
+ <ul class="questions">
6
+ <li>
7
+ <label for="<%= "name_#{index}" %>" class="desc"><%= _("Name") %></label>
8
+ <%= text_field_tag "references[#{index}][name]", reference.name, class: "text required", id: "name_#{index}" %>
9
+ </li>
10
+ <li>
11
+ <label for="<%= "email_#{index}" %>" class="desc"><%= _("E-mail") %></label>
12
+ <% if (!reference.email.blank?) %><div class="warningText">Please be aware that any changes to this email address after your reference has started filling out their form will cause their answers to be lost.</div><% end %>
13
+ <%= text_field_tag "references[#{index}][email]", reference.email, class: "text required validate-email", id: "email_#{index}" %>
14
+ </li>
15
+ <li>
16
+ <label for="<%= "phone_#{index}" %>" class="desc"><%= _("Phone") %></label>
17
+ <%= text_field_tag "references[#{index}][phone]", reference.phone, class: "text required validate-phone", id: "phone_#{index}" %>
18
+ </li>
19
+ <li>
20
+ <label for="<%= "months_known_#{index}" %>" class="desc"><%= _("Length of acquaintance") %></label>
21
+ <%= select_tag "references[#{index}][months_known]",
22
+ options_for_select([""] + Fe::ReferencePagesController::MONTHS_KNOWN_OPTIONS, reference.months_known),
23
+ class: "select validate-selection",
24
+ id: "months_known[#{index}]" %>
25
+ </li>
26
+ <li><p><%= _("An invitation will be sent to this reference when you submit your application. If you would " \
27
+ "like to get a headstart, please feel free to click "Send Email Invitation" below.") %></p></li>
28
+
29
+ <li><%= submit_tag(_("Send Email Invitation")) %>
30
+ <%= _("Invitation last sent:") %> <span id="ref_last_sent_<%= reference.id %>"><% unless reference.email_sent_at.nil? -%><%= reference.email_sent_at.strftime("%Y-%m-%d @ %I:%M%p") %><% end -%></span></li>
31
+ </ul>
@@ -0,0 +1,24 @@
1
+ <% page_dom = "reference_page"
2
+ next_js = load_page_js(@next_page) -%>
3
+
4
+ <div id="<%= page_dom %>" class="answer-page" style="display: none;"> <!-- this id is parsed by public.js -->
5
+
6
+ <h2>References</h2>
7
+
8
+ <div id="page-preview">
9
+ <div class="page">
10
+
11
+ <%= form_tag fe_application_reference_page_path(@application), remote: true, id: "#{page_dom}-form", onsubmit: next_js + "; return false;" do %>
12
+
13
+ <p><%= _("Please provide your references.") %></p>
14
+
15
+ <%= render partial: "reference", collection: @references, locals: {page_dom: page_dom} %>
16
+
17
+ <% end -%>
18
+
19
+ <%= button_to_function _("Next"), next_js unless next_js.empty? %>
20
+
21
+ </div>
22
+ </div>
23
+
24
+ </div>
@@ -0,0 +1,2 @@
1
+ <p><%= _("Thank you for completing this reference. Your input is so valuable to us. If you are not familiar with Cru, why not visit our website to learn more?") %> <%= link_to("http://cru.org", "http://cru.org") %></p>
2
+ <p><%= _("If you have any questions or concerns, email us at %{email}") % { email: Fe.from_email } %></p>
@@ -0,0 +1,5 @@
1
+ <%= _("We weren"t able to find a reference associated with this link. The are two common reason for this issue:") %>
2
+ <ol>
3
+ <li><%= _("The applicant has picked someone else to do their reference.") %></li>
4
+ <li><%= _("The link in your email was wrapped onto two lines. Check to make sure what you see in the address bar of your browser is the full link you see in your email.") %></li>
5
+ </ol>
@@ -0,0 +1 @@
1
+ document.location = '/fe/references/done'
@@ -0,0 +1,8 @@
1
+ <%= _("We"re sorry, but the reference form you are trying to access is no longer available.") %><br/>
2
+ <br/>
3
+ <%= _("If the applicant (the person you are attempting to fill out a reference for) has changed or updated any information about the reference, " \
4
+ "that would invalidate this form. If you know that you are supposed to fill out a reference for this person, please check the link " \
5
+ "that you clicked on and make sure the entire address is displayed in the address bar. Sometimes the link doesn’t fully cut and paste.") %><br/>
6
+ <br/>
7
+ <%= _("If you still require assistance, please forward the email you received that contained the link you clicked to %{email} with a description of your problem.") %
8
+ { email: Fe.from_email } %>
@@ -0,0 +1,7 @@
1
+ if @sent
2
+ page.replace_html "ref_last_sent_#{@reference.id}", @reference.email_sent_at.strftime("%m/%d/%Y @ %I:%M%p")
3
+ page.visual_effect :highlight, "ref_last_sent_#{@reference.id}"
4
+ else
5
+ page.replace_html "ref_last_sent_#{@reference.id}", "<b>Error sending email. Make sure email address is valid.</b>"
6
+ page.visual_effect :highlight, "ref_last_sent_#{@reference.id}"
7
+ end
@@ -0,0 +1,18 @@
1
+ <div id="controls">
2
+ <div id="panel">
3
+ <div class="panel">
4
+ <% unless @reference.question_sheet.nil? -%>
5
+ <h2><%= @reference.question_sheet.label %></h2>
6
+
7
+ <p><label class="desc"><%= _("Applicant:") %></label> <%= @application.applicant.informal_full_name %></p>
8
+ <p><label class="desc"><%= _("Reference:") %></label> <%= @reference.name %></p>
9
+ <% end -%>
10
+ </div>
11
+ </div>
12
+ </div>
13
+
14
+ <div id="preview" class="answer-page">
15
+
16
+ <%= render partial: "/answer_sheets/answer_sheet", locals: {answer_sheet: @answer_sheet, elements: @elements } %>
17
+
18
+ </div>
@@ -0,0 +1,3 @@
1
+ $('#submit_message, .submit_message').html("<%= _("Thank you for submitting your reference.") %>")
2
+ $('#submit_message, .submit_message').show()
3
+ $('.page:visible #submit_button').hide()
@@ -0,0 +1 @@
1
+ <%= error_messages_for :application %>
@@ -0,0 +1,2 @@
1
+ <p><%= _("Thank you for submitting your application. It has been accepted for processing.") %></p>
2
+
@@ -0,0 +1,36 @@
1
+ <% page_dom = "submit_page"
2
+ next_js = load_page_js(@next_page) -%>
3
+
4
+ <div id="<%= page_dom %>" class="answer-page"> <!-- this id is parsed by public.js -->
5
+
6
+ <h2>Submit Application</h2>
7
+
8
+ <div id="page-preview">
9
+ <div class="page">
10
+
11
+ <%= form_tag fe_application_submit_page_path(@application), id: "#{page_dom}-form", autocomplete: "off", onsubmit: "page_handler.validateAll(); return false;" do -%>
12
+
13
+ <div id="submit_app">
14
+ <% if @application.frozen? -%>
15
+ <p><%= _("You have already submitted this application.") %></p>
16
+ <% else -%>
17
+ <p><%= _("If you are sure you are finished with the application, click "Submit Application". " \
18
+ "After you submit your application, you will not be able to edit your answers in your " \
19
+ "application, but you will be able to change your your personal information, your " \
20
+ "school information, and your reference information as necessary.") %></p>
21
+
22
+ <div id="application_errors">
23
+ <%= render partial: "errors"%>
24
+ </div>
25
+
26
+ <%= hidden_field_tag "submit_to", submit_fe_application_submit_page_path(@application) %>
27
+ <div id="submit_message" class="validation-advice" style="display: none;"></div>
28
+ <p class="buttons"><%= submit_tag(_("Submit Application")) %></p>
29
+ <% end -%>
30
+ </div>
31
+
32
+ <% end -%>
33
+
34
+ </div>
35
+ </div>
36
+ </div>
@@ -0,0 +1 @@
1
+ page.replace_html 'application_errors', partial: 'errors', locals: {application: @application}
@@ -0,0 +1,3 @@
1
+ page.replace_html "submit_app", partial: "thankyou"
2
+ page.replace "meta", partial: "fe/applications/meta_info"
3
+ page << "new Effect.ScrollTo('meta');"
@@ -0,0 +1,7 @@
1
+ <% if record && record.errors.any? %>
2
+ <ul>
3
+ <% record.errors.full_messages.each do |msg| %>
4
+ <li><%= msg %></li>
5
+ <% end %>
6
+ </ul>
7
+ <% end %>
@@ -0,0 +1,47 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
3
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
5
+ <head>
6
+ <title><%= @title %></title>
7
+ <%= stylesheet_link_tag "print", media: "print" %>
8
+ <%= stylesheet_link_tag "base" %>
9
+
10
+ <script type="text/javascript" charset="utf-8">
11
+ var answer_sheet_type = "<%= @answer_sheet.class %>"
12
+ </script>
13
+ <%= csrf_meta_tag %>
14
+ <%= stylesheet_link_tag asset_path("fe/fe.screen.css") %>
15
+ <script type="text/javascript" charset="utf-8">
16
+ <%#= raw Rack::TimeZone::Javascript %>
17
+ setTimezoneCookie()
18
+ </script>
19
+ <%= javascript_include_tag asset_path("fe/fe.public.js") %>
20
+ </head>
21
+ <body>
22
+
23
+ <div id="wrapper">
24
+
25
+ <div id="header" style="height: 72px;">
26
+ <h1 style="display: inline; position: absolute; color: #F3F3F3; margin: 4.5px 10px; line-height: 36px;"><%= @title %></h1>
27
+
28
+ <%= render "fe/applications/logout" %>
29
+ </div>
30
+
31
+ <% flash.each do |key, value| %>
32
+ <div class="alert alert-<%= key %>"><%= value %></div>
33
+ <% end %>
34
+
35
+ <div id="main">
36
+ <%= yield %>
37
+ </div>
38
+ </div>
39
+ <div id="footerwrap">
40
+ <div style="clear:both"></div>
41
+ <div id="footer">
42
+ <!-- anything in here my be custom branded -->
43
+ <center>Form Engine Footer</center>
44
+ </div>
45
+ </div>
46
+ </body>
47
+ </html>
@@ -4,19 +4,19 @@
4
4
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
5
5
  <head>
6
6
  <title>Dynamic Forms</title>
7
- <%= stylesheet_link_tag 'fe/fe.screen' %>
7
+ <%= stylesheet_link_tag "fe/fe.screen" %>
8
8
 
9
- <%= javascript_include_tag 'fe/admin' %>
9
+ <%= javascript_include_tag "fe/admin" %>
10
10
  <%= csrf_meta_tag %>
11
11
  </head>
12
12
  <body>
13
13
 
14
- <div id="status" style="display: none;"><div class="status_content"><%= image_tag('fe/status.gif', :id => "status-img" ) %> <span id="status-msg">Please Wait...</span></div></div>
14
+ <div id="status" style="display: none;"><div class="status_content"><%= image_tag("fe/status.gif", id: "status-img" ) %> <span id="status-msg">Please Wait...</span></div></div>
15
15
 
16
16
  <div id="wrapper">
17
17
  <div id="header">
18
18
  <ul id="nav-main">
19
- <li class="active"><%= link_to 'Forms', fe_admin_question_sheets_path %></li>
19
+ <li class="active"><%= link_to "Forms", fe_admin_question_sheets_path %></li>
20
20
  <div class="clear"></div>
21
21
  </ul>
22
22
  </div>
@@ -0,0 +1,3 @@
1
+ if PaperTrail.version < "11"
2
+ PaperTrail.config.track_associations = false
3
+ end
data/config/routes.rb CHANGED
@@ -24,6 +24,7 @@ Rails.application.routes.draw do
24
24
  member do
25
25
  get :remove_from_grid
26
26
  post :use_existing
27
+ post :copy_existing
27
28
  post :drop
28
29
  post :duplicate
29
30
  end
@@ -34,13 +35,11 @@ Rails.application.routes.draw do
34
35
  end
35
36
 
36
37
  match 'fe/references/done' => "fe/reference_sheets#done", via: [:get, :post]
37
- match 'fe/applications/show_default' => 'fe/applications#show_default', :as => 'show_default', via: [:get, :post]
38
- match 'fe/payment_pages/staff_search' => 'fe/payment_pages#staff_search', :as => :payment_page_staff_search, via: [:get, :post]
39
38
 
40
39
  # form capture and review
41
40
  namespace "fe" do
42
41
  resources :reference_sheets
43
- resources :answer_sheets do
42
+ resources :answer_sheets, except: :new do
44
43
  member do
45
44
  post :send_reference_invite
46
45
  post :submit
@@ -48,40 +47,7 @@ Rails.application.routes.draw do
48
47
  resources :page, :controller => :answer_pages do
49
48
  member do
50
49
  post :save_file
51
- end
52
- end
53
- end
54
- resources :applications do
55
- member do
56
- get :no_ref
57
- get :no_conf
58
- get :collated_refs
59
- get :done
60
- end
61
-
62
- resources :references do
63
- member do
64
- get :print
65
- post :submit
66
- post :send_invite
67
- end
68
- end
69
-
70
- # custom pages (singular resources)
71
- resource :reference_page
72
-
73
- resources :payments do
74
- member do
75
- get :approve
76
- end
77
- collection do
78
- post :staff_search
79
- end
80
- end
81
-
82
- resource :submit_page do
83
- member do
84
- post :submit
50
+ delete :delete_file
85
51
  end
86
52
  end
87
53
  end
@@ -1,8 +1,8 @@
1
- class Core < ActiveRecord::Migration
1
+ class Core < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  create_table Fe::QuestionSheet.table_name do |t|
4
- t.string :label, :limit => 100, :null => false # name used internally in admin
5
- t.boolean :archived, :default => false, :nil => false
4
+ t.string :label, limit: 100, null: false # name used internally in admin
5
+ t.boolean :archived, default: false, nil: false
6
6
  t.timestamps
7
7
  end
8
8
 
@@ -16,33 +16,33 @@
16
16
  add_index Fe.answer_sheet_class.constantize.table_name, :applicant_id, name: 'question_sheet_id'
17
17
 
18
18
  create_table Fe::Page.table_name do |t|
19
- t.integer :question_sheet_id, :null => false
20
- t.string :label, :limit => 60, :null => false # page title
19
+ t.integer :question_sheet_id, null: false
20
+ t.string :label, limit: 60, null: false # page title
21
21
  t.integer :number # page number (order)
22
- t.boolean :no_cache, :default => false
23
- t.boolean :hidden, :default => false
22
+ t.boolean :no_cache, default: false
23
+ t.boolean :hidden, default: false
24
24
  t.timestamps
25
25
  end
26
26
 
27
27
  create_table Fe::Element.table_name do |t|
28
- t.integer :question_grid_id, :null => true
29
- t.string :kind, :limit => 40, :null => false # single table inheritance: class name
30
- t.string :style, :limit => 40 # render style
31
- t.string :label, :limit => 255 # question label, section heading
32
- t.text :content, :null => true # for content/instructions, and for choices (one per line)
28
+ t.integer :question_grid_id, null: true
29
+ t.string :kind, limit: 40, null: false # single table inheritance: class name
30
+ t.string :style, limit: 40 # render style
31
+ t.string :label, limit: 255 # question label, section heading
32
+ t.text :content, null: true # for content/instructions, and for choices (one per line)
33
33
  t.boolean :required # question is required?
34
- t.string :slug, :limit => 36 # variable reference
34
+ t.string :slug, limit: 36 # variable reference
35
35
  t.integer :position
36
36
  t.string :object_name, :attribute_name
37
37
  t.string :source
38
38
  t.string :value_xpath
39
39
  t.string :text_xpath
40
40
  t.string :cols
41
- t.boolean :is_confidential, :default => false
41
+ t.boolean :is_confidential, default: false
42
42
  t.string :total_cols
43
43
  t.string :css_id
44
44
  t.string :css_class
45
- t.integer :question_sheet_id, :null => false
45
+ t.integer :question_sheet_id, null: false
46
46
  t.timestamps
47
47
  end
48
48
  add_index Fe::Element.table_name, :slug
@@ -58,10 +58,10 @@
58
58
 
59
59
 
60
60
  create_table Fe::Answer.table_name do |t|
61
- t.integer :answer_sheet_id, :null => false
62
- t.integer :question_id, :null => false
61
+ t.integer :answer_sheet_id, null: false
62
+ t.integer :question_id, null: false
63
63
  t.text :value
64
- t.string :short_value, :null => true, :limit => 255 # indexed copy of :value
64
+ t.string :short_value, null: true, limit: 255 # indexed copy of :value
65
65
  # paperclip columns
66
66
  t.integer :attachment_file_size
67
67
  t.string :attachment_content_type
@@ -74,11 +74,11 @@
74
74
  add_index Fe::Answer.table_name, [:answer_sheet_id, :question_id], name: 'answer_sheet_question'
75
75
 
76
76
  create_table Fe::Condition.table_name do |t|
77
- t.integer :question_sheet_id, :null => false
78
- t.integer :trigger_id, :null => false
79
- t.string :expression, :null => false, :limit => 255
80
- t.integer :toggle_page_id, :null => false
81
- t.integer :toggle_id, :null => true # null if toggles whole page
77
+ t.integer :question_sheet_id, null: false
78
+ t.integer :trigger_id, null: false
79
+ t.string :expression, null: false, limit: 255
80
+ t.integer :toggle_page_id, null: false
81
+ t.integer :toggle_id, null: true # null if toggles whole page
82
82
  t.timestamps
83
83
  end
84
84
 
@@ -1,4 +1,4 @@
1
- class CreateReferenceSheets < ActiveRecord::Migration
1
+ class CreateReferenceSheets < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  create_table Fe::ReferenceSheet.table_name do |t|
4
4
  t.integer :question_id
@@ -12,6 +12,7 @@ class CreateReferenceSheets < ActiveRecord::Migration
12
12
  t.string :email
13
13
  t.string :status
14
14
  t.datetime :submitted_at
15
+ t.datetime :started_at
15
16
  t.string :access_key
16
17
  t.timestamps
17
18
  end
@@ -1,9 +1,9 @@
1
- class AddElementAndAnswerFields < ActiveRecord::Migration
1
+ class AddElementAndAnswerFields < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  add_column Fe::Element.table_name, :conditional_id, :integer
4
4
  add_column Fe::Element.table_name, :tooltip, :text
5
- add_column Fe::Element.table_name, :hide_label, :boolean, :default => false, :nil => false
6
- add_column Fe::Element.table_name, :hide_option_labels, :boolean, :default => false, :nil => false
5
+ add_column Fe::Element.table_name, :hide_label, :boolean, default: false, nil: false
6
+ add_column Fe::Element.table_name, :hide_option_labels, :boolean, default: false, nil: false
7
7
 
8
8
  #add_index Fe::Element.table_name, :conditional_id
9
9
  end
@@ -1,7 +1,7 @@
1
- class CreateEmailTemplates < ActiveRecord::Migration
1
+ class CreateEmailTemplates < ActiveRecord::Migration[4.2]
2
2
  def up
3
3
  create_table Fe::EmailTemplate.table_name do |t|
4
- t.string :name, :limit => 1000, :null => false
4
+ t.string :name, limit: 1000, null: false
5
5
  t.text :content
6
6
  t.boolean :enabled
7
7
  t.string :subject
@@ -1,4 +1,4 @@
1
- class AddMaxLengths < ActiveRecord::Migration
1
+ class AddMaxLengths < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  add_column Fe::Element.table_name, :max_length, :integer
4
4
 
@@ -1,4 +1,4 @@
1
- class CreateJoinTable < ActiveRecord::Migration
1
+ class CreateJoinTable < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  create_table Fe::AnswerSheetQuestionSheet.table_name do |t|
4
4
  t.integer :answer_sheet_id
@@ -1,4 +1,4 @@
1
- class RemoveQuestionIdFromElement < ActiveRecord::Migration
1
+ class RemoveQuestionIdFromElement < ActiveRecord::Migration[4.2]
2
2
  def up
3
3
  remove_column Fe::Element.table_name, :question_sheet_id
4
4
  end
@@ -1,6 +1,6 @@
1
- class CreateFePeople < ActiveRecord::Migration
1
+ class CreateFePeople < ActiveRecord::Migration[4.2]
2
2
  def change
3
- create_table :fe_people do |t|
3
+ create_table Fe::Person.table_name do |t|
4
4
  t.string :first_name
5
5
  t.string :last_name
6
6
  t.integer :user_id
@@ -1,6 +1,6 @@
1
- class CreateFeAddresses < ActiveRecord::Migration
1
+ class CreateFeAddresses < ActiveRecord::Migration[4.2]
2
2
  def change
3
- create_table :fe_addresses do |t|
3
+ create_table Fe::Address.table_name do |t|
4
4
  t.datetime :startdate
5
5
  t.datetime :enddate
6
6
  t.string :address1
@@ -1,6 +1,6 @@
1
- class CreateCreateFePhoneNumbers < ActiveRecord::Migration
1
+ class CreateFePhoneNumbers < ActiveRecord::Migration[4.2]
2
2
  def change
3
- create_table :create_fe_phone_numbers do |t|
3
+ create_table Fe::PhoneNumber do |t|
4
4
  t.string :number
5
5
  t.string :extensions
6
6
  t.integer :person_id
@@ -1,6 +1,6 @@
1
- class CreateFeUsers < ActiveRecord::Migration
1
+ class CreateFeUsers < ActiveRecord::Migration[4.2]
2
2
  def change
3
- create_table :fe_users do |t|
3
+ create_table Fe::User do |t|
4
4
  t.integer :user_id
5
5
  t.datetime :last_login
6
6
  t.string :type
@@ -1,4 +1,4 @@
1
- class AddConditionalTypeToElements < ActiveRecord::Migration
1
+ class AddConditionalTypeToElements < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  add_column Fe::Element.table_name, :conditional_type, :string
4
4
  end
@@ -1,4 +1,4 @@
1
- class AddConditionalAnswerToElements < ActiveRecord::Migration
1
+ class AddConditionalAnswerToElements < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  add_column Fe::Element.table_name, :conditional_answer, :text
4
4
  end
@@ -1,4 +1,4 @@
1
- class RemoveShortValueColumn < ActiveRecord::Migration
1
+ class RemoveShortValueColumn < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  remove_column Fe::Answer.table_name, :short_value
4
4
  end
@@ -1,4 +1,4 @@
1
- class MoveConditionalIdsUsedForChoiceFieldToTheirOwnColumn < ActiveRecord::Migration
1
+ class MoveConditionalIdsUsedForChoiceFieldToTheirOwnColumn < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  add_column Fe::Element.table_name, :choice_field_id, :integer
4
4
  Fe::Element.reset_column_information
@@ -0,0 +1,5 @@
1
+ class AddAllElementIdsToPages < ActiveRecord::Migration[4.2]
2
+ def change
3
+ add_column Fe::Page.table_name, :all_element_ids, :text
4
+ end
5
+ end