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
@@ -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
@@ -38,7 +39,7 @@ Rails.application.routes.draw do
38
39
  # form capture and review
39
40
  namespace "fe" do
40
41
  resources :reference_sheets
41
- resources :answer_sheets do
42
+ resources :answer_sheets, except: :new do
42
43
  member do
43
44
  post :send_reference_invite
44
45
  post :submit
@@ -46,6 +47,7 @@ Rails.application.routes.draw do
46
47
  resources :page, :controller => :answer_pages do
47
48
  member do
48
49
  post :save_file
50
+ delete :delete_file
49
51
  end
50
52
  end
51
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
@@ -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,4 +1,4 @@
1
- class CreateFePeople < ActiveRecord::Migration
1
+ class CreateFePeople < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  create_table Fe::Person.table_name do |t|
4
4
  t.string :first_name
@@ -1,4 +1,4 @@
1
- class CreateFeAddresses < ActiveRecord::Migration
1
+ class CreateFeAddresses < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  create_table Fe::Address.table_name do |t|
4
4
  t.datetime :startdate
@@ -1,4 +1,4 @@
1
- class CreateFePhoneNumbers < ActiveRecord::Migration
1
+ class CreateFePhoneNumbers < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  create_table Fe::PhoneNumber do |t|
4
4
  t.string :number
@@ -1,4 +1,4 @@
1
- class CreateFeUsers < ActiveRecord::Migration
1
+ class CreateFeUsers < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  create_table Fe::User do |t|
4
4
  t.integer :user_id
@@ -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
@@ -1,4 +1,4 @@
1
- class AddAllElementIdsToPages < ActiveRecord::Migration
1
+ class AddAllElementIdsToPages < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  add_column Fe::Page.table_name, :all_element_ids, :text
4
4
  end
@@ -1,4 +1,4 @@
1
- class AddLocaleColumns < ActiveRecord::Migration
1
+ class AddLocaleColumns < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  add_column Fe::QuestionSheet.table_name, :languages, :text
4
4
  add_column Fe::Element.table_name, :label_translations, :text
@@ -1,4 +1,4 @@
1
- class AddLocaleToAnswerSheet < ActiveRecord::Migration
1
+ class AddLocaleToAnswerSheet < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  add_column Fe.answer_sheet_class.constantize.table_name, :locale, :string, default: 'en'
4
4
  end
@@ -0,0 +1,5 @@
1
+ class AddShareToElements < ActiveRecord::Migration[4.2]
2
+ def change
3
+ add_column Fe::Element.table_name, :share, :boolean, default: false
4
+ end
5
+ end
@@ -1,4 +1,4 @@
1
- class ChangePagesAllElementIdsToText < ActiveRecord::Migration
1
+ class ChangePagesAllElementIdsToText < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  change_column Fe::Page.table_name, :all_element_ids, :text
4
4
  end
@@ -1,4 +1,4 @@
1
- class AddLocaleToReferenceSheets < ActiveRecord::Migration
1
+ class AddLocaleToReferenceSheets < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  add_column Fe::ReferenceSheet.table_name, :locale, :string, default: 'en'
4
4
  end
@@ -0,0 +1,7 @@
1
+ class SwitchConditionalAnswerSeparatorToSemicolon < ActiveRecord::Migration[4.2]
2
+ def change
3
+ Fe::Element.where("conditional_answer IS NOT NULL AND conditional_answer != ''").each do |e|
4
+ e.update_column :conditional_answer, e.conditional_answer.gsub(',', ';')
5
+ end
6
+ end
7
+ end