fe 1.0.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (402) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +4 -4
  3. data/app/assets/config/fe/manifest.js +3 -0
  4. data/app/assets/config/manifest.js +3 -0
  5. data/app/assets/javascripts/application.js.erb +1 -1
  6. data/app/assets/javascripts/fe/admin.js +0 -1
  7. data/app/assets/javascripts/fe/fe.admin.js +2 -6
  8. data/app/assets/javascripts/fe/{fe.common.js → fe.common.js.erb} +14 -7
  9. data/app/assets/javascripts/fe/fe.public.js +1 -2
  10. data/app/assets/javascripts/fe/{fe.public.nojquery.js → fe.public.nojquery.js.erb} +152 -76
  11. data/app/assets/javascripts/fe/jquery.html5_upload.js +258 -0
  12. data/app/assets/stylesheets/fe/fe.screen.css.scss.erb +22 -1
  13. data/app/assets/stylesheets/fe/validation.css +5 -1
  14. data/app/controllers/{fe/concerns → concerns/fe}/admin/question_sheets_controller_concern.rb +15 -16
  15. data/app/controllers/concerns/fe/answer_pages_controller_concern.rb +131 -0
  16. data/app/controllers/{fe/concerns → concerns/fe}/answer_sheets_controller_concern.rb +14 -6
  17. data/app/controllers/{fe/concerns → concerns/fe}/application_controller_concern.rb +3 -3
  18. data/app/controllers/fe/admin/elements_controller.rb +46 -24
  19. data/app/controllers/fe/admin/email_templates_controller.rb +5 -5
  20. data/app/controllers/fe/admin/question_pages_controller.rb +8 -8
  21. data/app/controllers/fe/reference_pages_controller.rb +11 -11
  22. data/app/controllers/fe/reference_sheets_controller.rb +4 -4
  23. data/app/controllers/fe/references_controller.rb +19 -19
  24. data/app/controllers/fe/submit_pages_controller.rb +5 -5
  25. data/app/helpers/fe/answer_pages_helper.rb +1 -1
  26. data/app/helpers/fe/application_helper.rb +3 -3
  27. data/app/jobs/fe/update_reference_sheet_visibility_job.rb +11 -0
  28. data/app/mailers/fe/notifier.rb +4 -4
  29. data/app/models/answer_sheet.rb +1 -1
  30. data/app/models/application_record.rb +3 -0
  31. data/app/models/{fe/concerns → concerns/fe}/answer_concern.rb +2 -2
  32. data/app/models/{fe/concerns → concerns/fe}/answer_pages_presenter_concern.rb +6 -5
  33. data/app/models/concerns/fe/answer_sheet_concern.rb +125 -0
  34. data/app/models/{fe/concerns → concerns/fe}/choice_field_concern.rb +41 -23
  35. data/app/models/fe/address.rb +2 -2
  36. data/app/models/fe/answer.rb +1 -1
  37. data/app/models/fe/answer_sheet.rb +1 -1
  38. data/app/models/fe/answer_sheet_question_sheet.rb +2 -2
  39. data/app/models/fe/application.rb +14 -10
  40. data/app/models/fe/condition.rb +4 -4
  41. data/app/models/fe/date_field.rb +1 -1
  42. data/app/models/fe/element.rb +126 -44
  43. data/app/models/fe/email_address.rb +2 -2
  44. data/app/models/fe/email_template.rb +1 -1
  45. data/app/models/fe/page.rb +94 -19
  46. data/app/models/fe/page_element.rb +2 -2
  47. data/app/models/fe/paragraph.rb +1 -1
  48. data/app/models/fe/person.rb +5 -5
  49. data/app/models/fe/phone_number.rb +1 -1
  50. data/app/models/fe/question.rb +62 -38
  51. data/app/models/fe/question_grid.rb +15 -3
  52. data/app/models/fe/question_set.rb +53 -13
  53. data/app/models/fe/question_sheet.rb +49 -16
  54. data/app/models/fe/reference_question.rb +9 -3
  55. data/app/models/fe/reference_sheet.rb +102 -47
  56. data/app/models/fe/state_chooser.rb +2 -2
  57. data/app/models/fe/text_field.rb +2 -2
  58. data/app/models/fe/user.rb +1 -1
  59. data/app/models/staff.rb +6 -6
  60. data/app/views/fe/admin/elements/create.js.erb +3 -3
  61. data/app/views/fe/admin/elements/destroy.js.erb +1 -1
  62. data/app/views/fe/admin/elements/drop.js.erb +1 -1
  63. data/app/views/fe/admin/elements/duplicate.js.erb +1 -1
  64. data/app/views/fe/admin/elements/edit.js.erb +1 -1
  65. data/app/views/fe/admin/elements/error.js.erb +1 -1
  66. data/app/views/fe/admin/elements/new.js.erb +13 -6
  67. data/app/views/fe/admin/elements/update.js.erb +1 -1
  68. data/app/views/fe/admin/email_templates/_form.html.erb +3 -3
  69. data/app/views/fe/admin/email_templates/edit.html.erb +3 -3
  70. data/app/views/fe/admin/email_templates/index.html.erb +3 -3
  71. data/app/views/fe/admin/email_templates/new.html.erb +3 -3
  72. data/app/views/fe/admin/panels/_advanced_options.html.erb +8 -8
  73. data/app/views/fe/admin/panels/_common_boolean_fields.html.erb +1 -0
  74. data/app/views/fe/admin/panels/_common_boolean_fields_default.html.erb +11 -0
  75. data/app/views/fe/admin/panels/_common_fields.html.erb +2 -17
  76. data/app/views/fe/admin/panels/_condition.html.erb +1 -1
  77. data/app/views/fe/admin/panels/_insert.html.erb +25 -25
  78. data/app/views/fe/admin/panels/_nav_controls.html.erb +4 -4
  79. data/app/views/fe/admin/panels/_page.html.erb +1 -1
  80. data/app/views/fe/admin/panels/_pages_list.html.erb +3 -3
  81. data/app/views/fe/admin/panels/_prop_attachment_field.html.erb +2 -2
  82. data/app/views/fe/admin/panels/_prop_choice_field.html.erb +36 -17
  83. data/app/views/fe/admin/panels/_prop_date_field.html.erb +1 -1
  84. data/app/views/fe/admin/panels/_prop_element.html.erb +5 -5
  85. data/app/views/fe/admin/panels/_prop_page.html.erb +3 -3
  86. data/app/views/fe/admin/panels/_prop_paragraph.html.erb +8 -8
  87. data/app/views/fe/admin/panels/_prop_question_grid.html.erb +7 -2
  88. data/app/views/fe/admin/panels/_prop_question_grid_with_total.html.erb +2 -2
  89. data/app/views/fe/admin/panels/_prop_reference_question.html.erb +3 -3
  90. data/app/views/fe/admin/panels/_prop_section.html.erb +1 -1
  91. data/app/views/fe/admin/panels/_prop_sheet.html.erb +3 -3
  92. data/app/views/fe/admin/panels/_prop_text_field.html.erb +12 -12
  93. data/app/views/fe/admin/question_pages/_element.html.erb +7 -7
  94. data/app/views/fe/admin/question_pages/_element_show.html.erb +2 -2
  95. data/app/views/fe/admin/question_pages/_question_page.html.erb +4 -4
  96. data/app/views/fe/admin/question_pages/create.js.erb +3 -3
  97. data/app/views/fe/admin/question_pages/destroy.js.erb +3 -3
  98. data/app/views/fe/admin/question_pages/edit.js.erb +1 -1
  99. data/app/views/fe/admin/question_pages/error.js.erb +1 -1
  100. data/app/views/fe/admin/question_pages/show.js.erb +2 -2
  101. data/app/views/fe/admin/question_pages/show_panel.js.erb +1 -1
  102. data/app/views/fe/admin/question_pages/update.js.erb +1 -1
  103. data/app/views/fe/admin/question_sheets/edit.js.erb +1 -1
  104. data/app/views/fe/admin/question_sheets/error.js.erb +1 -1
  105. data/app/views/fe/admin/question_sheets/index.html.erb +8 -8
  106. data/app/views/fe/admin/question_sheets/new.html.erb +3 -3
  107. data/app/views/fe/admin/question_sheets/show.html.erb +5 -5
  108. data/app/views/fe/admin/question_sheets/update.js.erb +1 -1
  109. data/app/views/fe/answer_pages/_answer_page.html.erb +13 -14
  110. data/app/views/fe/answer_pages/_element.html.erb +22 -2
  111. data/app/views/fe/answer_pages/_page_name.html.erb +1 -1
  112. data/app/views/fe/answer_pages/show.html.erb +39 -0
  113. data/app/views/fe/answer_pages/update.js.erb +10 -2
  114. data/app/views/fe/answer_sheets/_answer_sheet.html.erb +4 -4
  115. data/app/views/fe/answer_sheets/_element.html.erb +9 -7
  116. data/app/views/fe/answer_sheets/_incomplete.html.erb +1 -1
  117. data/app/views/fe/answer_sheets/_page_link.html.erb +9 -7
  118. data/app/views/fe/answer_sheets/_pages_list.html.erb +3 -3
  119. data/app/views/fe/answer_sheets/_submit_to.html.erb +1 -1
  120. data/app/views/fe/answer_sheets/_title.html.erb +1 -1
  121. data/app/views/fe/answer_sheets/edit.html.erb +18 -18
  122. data/app/views/fe/answer_sheets/incomplete.js.erb +7 -4
  123. data/app/views/fe/answer_sheets/index.html.erb +1 -1
  124. data/app/views/fe/answer_sheets/show.html.erb +1 -1
  125. data/app/views/fe/applications/_logout.html.erb +1 -1
  126. data/app/views/fe/questions/fe/_acceptance.html.erb +10 -9
  127. data/app/views/fe/questions/fe/_attachment_field.html.erb +129 -10
  128. data/app/views/fe/questions/fe/_checkbox_field.html.erb +18 -16
  129. data/app/views/fe/questions/fe/_country.html.erb +6 -6
  130. data/app/views/fe/questions/fe/_date_field.html.erb +5 -4
  131. data/app/views/fe/questions/fe/_date_field_mmyy.html.erb +8 -8
  132. data/app/views/fe/questions/fe/_drop_down_field.html.erb +5 -5
  133. data/app/views/fe/questions/fe/_question_grid.html.erb +10 -10
  134. data/app/views/fe/questions/fe/_question_grid_with_total.html.erb +8 -8
  135. data/app/views/fe/questions/fe/_questions.html.erb +11 -5
  136. data/app/views/fe/questions/fe/_radio_button_field.html.erb +35 -19
  137. data/app/views/fe/questions/fe/_rating.html.erb +56 -18
  138. data/app/views/fe/questions/fe/_reference_discipler.html.erb +1 -1
  139. data/app/views/fe/questions/fe/_reference_friend.html.erb +1 -1
  140. data/app/views/fe/questions/fe/_reference_parent.html.erb +1 -1
  141. data/app/views/fe/questions/fe/_reference_peer.html.erb +1 -1
  142. data/app/views/fe/questions/fe/_reference_question.html.erb +40 -24
  143. data/app/views/fe/questions/fe/_reference_roommate.html.erb +1 -1
  144. data/app/views/fe/questions/fe/_reference_spiritual.html.erb +1 -1
  145. data/app/views/fe/questions/fe/_reference_staff.html.erb +1 -1
  146. data/app/views/fe/questions/fe/_state_chooser.html.erb +6 -6
  147. data/app/views/fe/questions/fe/_text_area_field.html.erb +14 -10
  148. data/app/views/fe/questions/fe/_text_field.html.erb +7 -6
  149. data/app/views/fe/questions/fe/_yes_no.html.erb +8 -8
  150. data/app/views/fe/questions/fe/_yes_no_field.erb +11 -8
  151. data/app/views/fe/reference_pages/_reference.html.erb +12 -12
  152. data/app/views/fe/reference_pages/edit.html.erb +4 -4
  153. data/app/views/fe/reference_sheets/done.html.erb +2 -2
  154. data/app/views/fe/reference_sheets/not_found.html.erb +3 -3
  155. data/app/views/fe/references/edit.html.erb +5 -5
  156. data/app/views/fe/references/show.html.erb +3 -3
  157. data/app/views/fe/references/submit.js.erb +3 -3
  158. data/app/views/fe/submit_pages/_thankyou.html.erb +1 -1
  159. data/app/views/fe/submit_pages/edit.html.erb +9 -9
  160. data/app/views/fe/submit_pages/error.js.erb +1 -1
  161. data/app/views/fe/submit_pages/submit.js.erb +2 -2
  162. data/app/views/layouts/fe/_error_messages_for.html.erb +1 -1
  163. data/app/views/layouts/fe/application.html.erb +3 -4
  164. data/app/views/layouts/fe/fe_admin.html.erb +30 -0
  165. data/app/views.current/fe/admin/elements/_errors.html.erb +11 -0
  166. data/app/views.current/fe/admin/elements/create.js.erb +12 -0
  167. data/app/views.current/fe/admin/elements/destroy.js.erb +4 -0
  168. data/app/views.current/fe/admin/elements/drop.js.erb +3 -0
  169. data/app/views.current/fe/admin/elements/duplicate.js.erb +3 -0
  170. data/app/views.current/fe/admin/elements/edit.js.erb +4 -0
  171. data/app/views.current/fe/admin/elements/error.js.erb +4 -0
  172. data/app/views.current/fe/admin/elements/new.js.erb +17 -0
  173. data/app/views.current/fe/admin/elements/update.js.erb +9 -0
  174. data/app/views.current/fe/admin/email_templates/_form.html.erb +8 -0
  175. data/app/views.current/fe/admin/email_templates/edit.html.erb +13 -0
  176. data/app/views.current/fe/admin/email_templates/index.html.erb +20 -0
  177. data/app/views.current/fe/admin/email_templates/new.html.erb +11 -0
  178. data/app/views.current/fe/admin/panels/_advanced_options.html.erb +49 -0
  179. data/app/views.current/fe/admin/panels/_common_boolean_fields.html.erb +1 -0
  180. data/app/views.current/fe/admin/panels/_common_boolean_fields_default.html.erb +11 -0
  181. data/app/views.current/fe/admin/panels/_common_fields.html.erb +23 -0
  182. data/app/views.current/fe/admin/panels/_condition.html.erb +6 -0
  183. data/app/views.current/fe/admin/panels/_insert.html.erb +39 -0
  184. data/app/views.current/fe/admin/panels/_nav_controls.html.erb +6 -0
  185. data/app/views.current/fe/admin/panels/_page.html.erb +3 -0
  186. data/app/views.current/fe/admin/panels/_pages_list.html.erb +16 -0
  187. data/app/views.current/fe/admin/panels/_prop_attachment_field.html.erb +2 -0
  188. data/app/views.current/fe/admin/panels/_prop_choice_field.html.erb +74 -0
  189. data/app/views.current/fe/admin/panels/_prop_date_field.html.erb +7 -0
  190. data/app/views.current/fe/admin/panels/_prop_element.html.erb +23 -0
  191. data/app/views.current/fe/admin/panels/_prop_page.html.erb +26 -0
  192. data/app/views.current/fe/admin/panels/_prop_paragraph.html.erb +46 -0
  193. data/app/views.current/fe/admin/panels/_prop_question_grid.html.erb +28 -0
  194. data/app/views.current/fe/admin/panels/_prop_question_grid_with_total.html.erb +14 -0
  195. data/app/views.current/fe/admin/panels/_prop_reference_question.html.erb +12 -0
  196. data/app/views.current/fe/admin/panels/_prop_section.html.erb +8 -0
  197. data/app/views.current/fe/admin/panels/_prop_sheet.html.erb +20 -0
  198. data/app/views.current/fe/admin/panels/_prop_text_field.html.erb +20 -0
  199. data/app/views.current/fe/admin/question_pages/_element.html.erb +28 -0
  200. data/app/views.current/fe/admin/question_pages/_element_show.html.erb +10 -0
  201. data/app/views.current/fe/admin/question_pages/_errors.html.erb +10 -0
  202. data/app/views.current/fe/admin/question_pages/_question_page.html.erb +13 -0
  203. data/app/views.current/fe/admin/question_pages/create.js.erb +11 -0
  204. data/app/views.current/fe/admin/question_pages/destroy.js.erb +5 -0
  205. data/app/views.current/fe/admin/question_pages/edit.js.erb +3 -0
  206. data/app/views.current/fe/admin/question_pages/error.js.erb +4 -0
  207. data/app/views.current/fe/admin/question_pages/show.js.erb +9 -0
  208. data/app/views.current/fe/admin/question_pages/show_panel.js.erb +3 -0
  209. data/app/views.current/fe/admin/question_pages/update.js.erb +2 -0
  210. data/app/views.current/fe/admin/question_sheets/_errors.html.erb +11 -0
  211. data/app/views.current/fe/admin/question_sheets/edit.js.erb +3 -0
  212. data/app/views.current/fe/admin/question_sheets/error.js.erb +5 -0
  213. data/app/views.current/fe/admin/question_sheets/index.html.erb +41 -0
  214. data/app/views.current/fe/admin/question_sheets/new.html.erb +15 -0
  215. data/app/views.current/fe/admin/question_sheets/show.html.erb +27 -0
  216. data/app/views.current/fe/admin/question_sheets/update.js.erb +2 -0
  217. data/app/views.current/fe/answer_pages/_answer_page.html.erb +53 -0
  218. data/app/views.current/fe/answer_pages/_element.html.erb +32 -0
  219. data/app/views.current/fe/answer_pages/_page_name.html.erb +1 -0
  220. data/app/views.current/fe/answer_pages/show.html.erb +39 -0
  221. data/app/views.current/fe/answer_pages/update.js.erb +13 -0
  222. data/app/views.current/fe/answer_sheets/_answer_sheet.html.erb +26 -0
  223. data/app/views.current/fe/answer_sheets/_element.html.erb +74 -0
  224. data/app/views.current/fe/answer_sheets/_incomplete.html.erb +10 -0
  225. data/app/views.current/fe/answer_sheets/_page_link.html.erb +9 -0
  226. data/app/views.current/fe/answer_sheets/_pages_list.html.erb +11 -0
  227. data/app/views.current/fe/answer_sheets/_submit_to.html.erb +1 -0
  228. data/app/views.current/fe/answer_sheets/_title.html.erb +1 -0
  229. data/app/views.current/fe/answer_sheets/edit.html.erb +66 -0
  230. data/app/views.current/fe/answer_sheets/incomplete.js.erb +11 -0
  231. data/app/views.current/fe/answer_sheets/index.html.erb +18 -0
  232. data/app/views.current/fe/answer_sheets/send_reference_invite.js.erb +8 -0
  233. data/app/views.current/fe/answer_sheets/show.html.erb +13 -0
  234. data/app/views.current/fe/applications/_logout.html.erb +1 -0
  235. data/app/views.current/fe/applications/show.html.erb +1 -0
  236. data/app/views.current/fe/help/builder.html +33 -0
  237. data/app/views.current/fe/help/question_grid.html +18 -0
  238. data/app/views.current/fe/questions/fe/_acceptance.html.erb +14 -0
  239. data/app/views.current/fe/questions/fe/_attachment_field.html.erb +165 -0
  240. data/app/views.current/fe/questions/fe/_checkbox_field.html.erb +53 -0
  241. data/app/views.current/fe/questions/fe/_country.html.erb +7 -0
  242. data/app/views.current/fe/questions/fe/_date_field.html.erb +7 -0
  243. data/app/views.current/fe/questions/fe/_date_field_mmyy.html.erb +9 -0
  244. data/app/views.current/fe/questions/fe/_drop_down_field.html.erb +8 -0
  245. data/app/views.current/fe/questions/fe/_paragraph.html.erb +1 -0
  246. data/app/views.current/fe/questions/fe/_question_grid.html.erb +70 -0
  247. data/app/views.current/fe/questions/fe/_question_grid_with_total.html.erb +64 -0
  248. data/app/views.current/fe/questions/fe/_questions.html.erb +15 -0
  249. data/app/views.current/fe/questions/fe/_radio_button_field.html.erb +60 -0
  250. data/app/views.current/fe/questions/fe/_rating.html.erb +64 -0
  251. data/app/views.current/fe/questions/fe/_reference_discipler.html.erb +1 -0
  252. data/app/views.current/fe/questions/fe/_reference_friend.html.erb +1 -0
  253. data/app/views.current/fe/questions/fe/_reference_parent.html.erb +1 -0
  254. data/app/views.current/fe/questions/fe/_reference_peer.html.erb +1 -0
  255. data/app/views.current/fe/questions/fe/_reference_question.html.erb +61 -0
  256. data/app/views.current/fe/questions/fe/_reference_roommate.html.erb +1 -0
  257. data/app/views.current/fe/questions/fe/_reference_spiritual.html.erb +1 -0
  258. data/app/views.current/fe/questions/fe/_reference_staff.html.erb +1 -0
  259. data/app/views.current/fe/questions/fe/_section.html.erb +1 -0
  260. data/app/views.current/fe/questions/fe/_state_chooser.html.erb +7 -0
  261. data/app/views.current/fe/questions/fe/_text_area_field.html.erb +17 -0
  262. data/app/views.current/fe/questions/fe/_text_field.html.erb +9 -0
  263. data/app/views.current/fe/questions/fe/_yes_no.html.erb +17 -0
  264. data/app/views.current/fe/questions/fe/_yes_no_field.erb +20 -0
  265. data/app/views.current/fe/reference_pages/_reference.html.erb +31 -0
  266. data/app/views.current/fe/reference_pages/edit.html.erb +24 -0
  267. data/app/views.current/fe/reference_sheets/done.html.erb +2 -0
  268. data/app/views.current/fe/reference_sheets/not_found.html.erb +5 -0
  269. data/app/views.current/fe/reference_sheets/submitted.js.erb +1 -0
  270. data/app/views.current/fe/references/edit.html.erb +8 -0
  271. data/app/views.current/fe/references/send_invite.js.erb +7 -0
  272. data/app/views.current/fe/references/show.html.erb +18 -0
  273. data/app/views.current/fe/references/submit.js.erb +3 -0
  274. data/app/views.current/fe/submit_pages/_errors.html.erb +1 -0
  275. data/app/views.current/fe/submit_pages/_thankyou.html.erb +2 -0
  276. data/app/views.current/fe/submit_pages/edit.html.erb +36 -0
  277. data/app/views.current/fe/submit_pages/error.js.erb +1 -0
  278. data/app/views.current/fe/submit_pages/submit.js.erb +3 -0
  279. data/app/views.current/layouts/fe/_error_messages_for.html.erb +7 -0
  280. data/app/views.current/layouts/fe/application.html.erb +47 -0
  281. data/app/{views/layouts/fe/fe.admin.html.erb → views.current/layouts/fe/fe_admin.html.erb} +4 -4
  282. data/config/initializers/paper_trail.rb +3 -0
  283. data/config/routes.rb +3 -1
  284. data/db/migrate/20131003041856_core.rb +23 -23
  285. data/db/migrate/20131003044250_create_reference_sheets.rb +1 -1
  286. data/db/migrate/20131003044436_add_element_and_answer_fields.rb +3 -3
  287. data/db/migrate/20131003044518_create_email_templates.rb +2 -2
  288. data/db/migrate/20131003044621_add_max_lengths.rb +1 -1
  289. data/db/migrate/20131003044714_create_join_table.rb +1 -1
  290. data/db/migrate/20131016162128_remove_question_id_from_element.rb +1 -1
  291. data/db/migrate/20140623153424_create_fe_people.rb +1 -1
  292. data/db/migrate/20140624180246_create_fe_addresses.rb +1 -1
  293. data/db/migrate/20140624182216_create_fe_phone_numbers.rb +1 -1
  294. data/db/migrate/20140625160545_create_fe_users.rb +1 -1
  295. data/db/migrate/20140808202507_add_conditional_type_to_elements.rb +1 -1
  296. data/db/migrate/20140808203609_add_conditional_answer_to_elements.rb +1 -1
  297. data/db/migrate/20141103204704_remove_short_value_column.rb +1 -1
  298. data/db/migrate/20141109154522_move_conditional_ids_used_for_choice_field_to_their_own_column.rb +1 -1
  299. data/db/migrate/20150504221439_add_all_element_ids_to_pages.rb +1 -1
  300. data/db/migrate/20150713022326_add_locale_columns.rb +1 -1
  301. data/db/migrate/20150714220730_add_locale_to_answer_sheet.rb +1 -1
  302. data/db/migrate/20150925181652_add_share_to_elements.rb +5 -0
  303. data/db/migrate/20150928085325_change_pages_all_element_ids_to_text.rb +1 -1
  304. data/db/migrate/20150930191538_add_locale_to_reference_sheets.rb +1 -1
  305. data/db/migrate/20151021181928_switch_conditional_answer_separator_to_semicolon.rb +7 -0
  306. data/db/migrate/20151021184250_add_question_sheet_id_in_refs.rb +12 -0
  307. data/db/migrate/20160201185838_add_visible_and_visibility_cache_key_to_reference_sheets.rb +6 -0
  308. data/db/migrate/20160805221415_add_rating_extra_labels.rb +10 -0
  309. data/db/migrate/20181108201746_create_versions.rb +80 -0
  310. data/db/migrate/20181218201130_increase_slug_length.rb +5 -0
  311. data/lib/fe/engine.rb +10 -10
  312. data/lib/fe/version.rb +1 -1
  313. data/lib/fe.rb +7 -1
  314. data/spec/controllers/fe/admin/elements_controller_spec.rb +30 -20
  315. data/spec/controllers/fe/admin/email_templates_controller_spec.rb +2 -2
  316. data/spec/controllers/fe/admin/question_pages_controller_spec.rb +1 -1
  317. data/spec/controllers/fe/admin/question_sheets_controller_spec.rb +4 -4
  318. data/spec/controllers/fe/answer_pages_controller_spec.rb +86 -30
  319. data/spec/controllers/fe/answer_sheets_controller_spec.rb +65 -9
  320. data/spec/dummy/app/assets/config/manifest.js +0 -0
  321. data/spec/dummy/app/models/user.rb +1 -1
  322. data/spec/dummy/app/views/layouts/application.html.erb +2 -2
  323. data/spec/dummy/config/application.rb +1 -0
  324. data/spec/dummy/config/environments/test.rb +3 -3
  325. data/spec/dummy/config/initializers/assets.rb +5 -2
  326. data/spec/dummy/config/initializers/fast_gettext.rb +1 -1
  327. data/spec/dummy/config/initializers/to_unsafe_h.rb +5 -0
  328. data/spec/dummy/config/initializers/to_unsafe_h.rb.new +5 -0
  329. data/spec/dummy/db/migrate/20141203214017_core.fe_engine.rb +23 -23
  330. data/spec/dummy/db/migrate/20141203214018_create_reference_sheets.fe_engine.rb +1 -1
  331. data/spec/dummy/db/migrate/20141203214019_add_element_and_answer_fields.fe_engine.rb +3 -3
  332. data/spec/dummy/db/migrate/20141203214020_create_email_templates.fe_engine.rb +2 -2
  333. data/spec/dummy/db/migrate/20141203214021_add_max_lengths.fe_engine.rb +1 -1
  334. data/spec/dummy/db/migrate/20141203214022_create_join_table.fe_engine.rb +1 -1
  335. data/spec/dummy/db/migrate/20141203214023_remove_question_id_from_element.fe_engine.rb +1 -1
  336. data/spec/dummy/db/migrate/20141203214024_create_fe_people.fe_engine.rb +1 -1
  337. data/spec/dummy/db/migrate/20141203214025_create_fe_addresses.fe_engine.rb +1 -1
  338. data/spec/dummy/db/migrate/20141203214027_create_fe_users.fe_engine.rb +1 -1
  339. data/spec/dummy/db/migrate/20141203214028_add_conditional_type_to_elements.fe_engine.rb +1 -1
  340. data/spec/dummy/db/migrate/20141203214029_add_conditional_answer_to_elements.fe_engine.rb +1 -1
  341. data/spec/dummy/db/migrate/20141203214030_remove_short_value_column.fe_engine.rb +1 -1
  342. data/spec/dummy/db/migrate/20141203214031_move_conditional_ids_used_for_choice_field_to_their_own_column.fe_engine.rb +1 -1
  343. data/spec/dummy/db/migrate/20150123215803_create_users.rb +1 -1
  344. data/spec/dummy/db/migrate/20150504222619_add_all_element_ids_to_pages.fe_engine.rb +1 -1
  345. data/spec/dummy/db/migrate/20150925192557_add_share_to_elements.fe_engine.rb +6 -0
  346. data/spec/dummy/db/migrate/20150930190001_create_fe_phone_numbers.fe_engine.rb +1 -1
  347. data/spec/dummy/db/migrate/20150930190002_add_locale_columns.fe_engine.rb +1 -1
  348. data/spec/dummy/db/migrate/20150930190003_add_locale_to_answer_sheet.fe_engine.rb +1 -1
  349. data/spec/dummy/db/migrate/20150930190004_change_pages_all_element_ids_to_text.fe_engine.rb +1 -1
  350. data/spec/dummy/db/migrate/20150930191756_add_locale_to_reference_sheets.fe_engine.rb +1 -1
  351. data/spec/dummy/db/migrate/20151021190027_add_question_sheet_id_in_refs.fe_engine.rb +13 -0
  352. data/spec/dummy/db/migrate/20160204164612_switch_conditional_answer_separator_to_semicolon.fe_engine.rb +8 -0
  353. data/spec/dummy/db/migrate/20160204164613_add_visible_and_visibility_cache_key_to_reference_sheets.fe_engine.rb +7 -0
  354. data/spec/dummy/db/migrate/20181108201746_create_versions.rb +80 -0
  355. data/spec/dummy/db/schema.rb +71 -79
  356. data/spec/dummy/log/test.log +101278 -419
  357. data/spec/factories/answer_sheet_question_sheets.rb +1 -1
  358. data/spec/factories/answer_sheets.rb +2 -2
  359. data/spec/factories/answers.rb +1 -1
  360. data/spec/factories/applications.rb +3 -3
  361. data/spec/factories/dummy_applications.rb +3 -3
  362. data/spec/factories/dummy_people.rb +3 -3
  363. data/spec/factories/dummy_users.rb +3 -3
  364. data/spec/factories/elements.rb +21 -21
  365. data/spec/factories/email_templates.rb +3 -3
  366. data/spec/factories/fe_addresses.rb +10 -10
  367. data/spec/factories/fe_email_addresses.rb +3 -3
  368. data/spec/factories/fe_email_templates.rb +4 -4
  369. data/spec/factories/fe_people.rb +5 -5
  370. data/spec/factories/fe_phone_numbers.rb +3 -3
  371. data/spec/factories/fe_user.rb +3 -3
  372. data/spec/factories/page.rb +1 -1
  373. data/spec/factories/page_elements.rb +1 -1
  374. data/spec/factories/paragraphs.rb +1 -1
  375. data/spec/factories/question_sheet.rb +2 -2
  376. data/spec/factories/reference_questions.rb +1 -1
  377. data/spec/factories/reference_sheets.rb +1 -1
  378. data/spec/jobs/fe/update_reference_sheet_visibility_job_spec.rb +40 -0
  379. data/spec/models/fe/answer_sheet_question_sheet_spec.rb +1 -1
  380. data/spec/models/fe/answer_spec.rb +2 -2
  381. data/spec/models/fe/application_spec.rb +94 -1
  382. data/spec/models/fe/choice_field_spec.rb +47 -1
  383. data/spec/models/fe/condition_spec.rb +2 -2
  384. data/spec/models/fe/element_spec.rb +252 -60
  385. data/spec/models/fe/email_template_spec.rb +1 -1
  386. data/spec/models/fe/page_element_spec.rb +1 -1
  387. data/spec/models/fe/page_spec.rb +57 -12
  388. data/spec/models/fe/person_spec.rb +1 -1
  389. data/spec/models/fe/question_set_spec.rb +91 -0
  390. data/spec/models/fe/question_sheet_spec.rb +11 -15
  391. data/spec/models/fe/question_spec.rb +73 -6
  392. data/spec/models/fe/reference_question_spec.rb +20 -0
  393. data/spec/models/fe/reference_sheet_spec.rb +287 -4
  394. data/spec/models/fe/text_field_spec.rb +22 -0
  395. data/spec/rails_helper.rb +79 -76
  396. metadata +195 -57
  397. data/app/assets/javascripts/fe/jquery.scrollTo-min.js +0 -7
  398. data/app/controllers/fe/concerns/answer_pages_controller_concern.rb +0 -84
  399. data/app/models/fe/concerns/answer_sheet_concern.rb +0 -85
  400. data/spec/dummy/db/migrate/20141203214026_create_create_fe_phone_numbers.fe_engine.rb +0 -17
  401. data/spec/dummy/log/development.log +0 -5
  402. /data/app/{assets/stylesheets/360front.css → views.current/fe/admin/elements/reorder.js.erb} +0 -0
@@ -1,45 +1,61 @@
1
1
  <% reference = reference_question.response(@answer_sheet) %>
2
2
  <% reference ||= Fe::ReferenceSheet.new %>
3
- <% css_class = reference_question.required?(@answer_sheet, @page) ? 'required' : '' %>
4
- <% email_css_class = reference_question.required?(@answer_sheet, @page) ? 'required email email' : '' %>
5
- <% phone_css_class = reference_question.required?(@answer_sheet, @page) ? 'required phone phone' : '' %>
6
- <%#= hidden_field_tag "reference[#{reference.id}]", :class => reference_question.required? && !reference.email_sent? ? 'required' : '' %>
3
+ <% css_class = reference_question.required?(@answer_sheet, @page) ? "required" : "" %>
4
+ <% email_css_class = reference_question.required?(@answer_sheet, @page) ? "required email email" : "" %>
5
+ <% phone_css_class = reference_question.required?(@answer_sheet, @page) ? "required phone phone" : "" %>
6
+ <%#= hidden_field_tag "reference[#{reference.id}]", class: reference_question.required? && !reference.email_sent? ? "required" : "" %>
7
7
  <div id="<%= dom_id(reference_question) %>" class="reference_question">
8
8
  <ul class="questions level1">
9
9
  <li>
10
- <label for="<%= "name_#{reference.id}" %>" class="desc"><%= _('First Name') %></label>
11
- <%= text_field_tag "reference[#{reference.id}][first_name]", reference.first_name, :class => "text #{css_class}", :id => "name_#{reference.id}", :readonly => !@answer_sheet.try(:can_change_references?), :disabled => !@answer_sheet.try(:can_change_references?) %>
10
+ <label for="<%= "name_#{reference.id}" %>" class="desc"><%= _("First Name") %></label>
11
+ <%= text_field_tag "reference[#{reference.id}][first_name]", reference.first_name, class: "#{"form-control" if Fe.bootstrap} text #{css_class}", id: "name_#{reference.id}", readonly: reference.completed? || !@answer_sheet.try(:can_change_references?), disabled: reference.completed? || !@answer_sheet.try(:can_change_references?) %>
12
12
  </li>
13
13
  <li>
14
- <label for="<%= "name_#{reference.id}" %>" class="desc"><%= _('Last Name') %> </label>
15
- <%= text_field_tag "reference[#{reference.id}][last_name]", reference.last_name, :class => "text #{css_class}", :id => "name_#{reference.id}", :readonly => !@answer_sheet.try(:can_change_references?), :disabled => !@answer_sheet.try(:can_change_references?) %>
14
+ <label for="<%= "name_#{reference.id}" %>" class="desc"><%= _("Last Name") %> </label>
15
+ <%= text_field_tag "reference[#{reference.id}][last_name]", reference.last_name, class: "#{"form-control" if Fe.bootstrap} text #{css_class}", id: "name_#{reference.id}", readonly: reference.completed? || !@answer_sheet.try(:can_change_references?), disabled: reference.completed? || !@answer_sheet.try(:can_change_references?) %>
16
16
  </li>
17
17
  <li>
18
- <label for="<%= "name_#{reference.id}" %>" class="desc"><%= _('Relationship to You') %></label>
19
- <%= text_field_tag "reference[#{reference.id}][relationship]", reference.relationship, :class => "text #{css_class}", :id => "name_#{reference.id}", :readonly => !@answer_sheet.try(:can_change_references?), :disabled => !@answer_sheet.try(:can_change_references?) %>
18
+ <label for="<%= "name_#{reference.id}" %>" class="desc"><%= _("Relationship to You") %></label>
19
+ <%= text_field_tag "reference[#{reference.id}][relationship]", reference.relationship, class: "#{"form-control" if Fe.bootstrap} text #{css_class}", id: "name_#{reference.id}", readonly: reference.completed? || !@answer_sheet.try(:can_change_references?), disabled: reference.completed? || !@answer_sheet.try(:can_change_references?) %>
20
20
  </li>
21
21
  <li>
22
- <label for="<%= "email_#{reference.id}" %>" class="desc"><%= _('E-mail') %></label>
22
+ <label for="<%= "email_#{reference.id}" %>" class="desc"><%= _("E-mail") %></label>
23
23
  <% if (!reference.email.blank?) %>
24
24
  <div class="warningText">
25
- <%= _('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.') %>
25
+ <%= _("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.") %>
26
26
  </div>
27
27
  <% end %>
28
- <%= text_field_tag "reference[#{reference.id}][email]", reference.email, :class => "text #{email_css_class}", :id => "email_#{reference.id}", :readonly => !@answer_sheet.try(:can_change_references?), :disabled => !@answer_sheet.try(:can_change_references?) %>
28
+ <%= text_field_tag "reference[#{reference.id}][email]", reference.email, class: "#{"form-control" if Fe.bootstrap} text #{email_css_class}", id: "email_#{reference.id}", readonly: reference.completed? || !@answer_sheet.try(:can_change_references?), disabled: reference.completed? || !@answer_sheet.try(:can_change_references?) %>
29
29
  </li>
30
30
  <li>
31
- <label for="<%= "phone_#{reference.id}" %>" class="desc"><%= _('Phone') %></label>
32
- <%= text_field_tag "reference[#{reference.id}][phone]", reference.phone, :class => "text #{phone_css_class}", :id => "phone_#{reference.id}", :readonly => !@answer_sheet.try(:can_change_references?), :disabled => !@answer_sheet.try(:can_change_references?) %>
31
+ <label for="<%= "phone_#{reference.id}" %>" class="desc"><%= _("Phone") %></label>
32
+ <%= text_field_tag "reference[#{reference.id}][phone]", reference.phone, class: "#{"form-control" if Fe.bootstrap} text #{phone_css_class}", id: "phone_#{reference.id}", readonly: reference.completed? || !@answer_sheet.try(:can_change_references?), disabled: reference.completed? || !@answer_sheet.try(:can_change_references?) %>
33
33
  </li>
34
- <li><p>
35
- <%= _("An invitation will be sent to this reference when you submit your application. If you would " \
36
- "like to get a head start, please feel free to click 'Send Email Invitation' below.") %><br/>
37
- <em><strong>
38
- <%= _('If you already submitted your application and have returned to update your reference information - you must click "Send Email Invitation" after you ' \
39
- 'have edited the information in order for your reference to receive another email.') %>
40
- </strong></em></p></li>
34
+ <li>
35
+ <% if reference.completed? %>
36
+ <p><strong><%= _("This reference is completed") %></strong></p>
37
+ <% else %>
38
+ <p>
39
+ <%= _("An invitation will be sent to this reference when you submit your application. If you would " \
40
+ "like to get a head start, please feel free to click "Send Email Invitation" below.") %><br/>
41
+ <em><strong>
42
+ <%= _("If you already submitted your application and have returned to update your reference information - you must click "Send Email Invitation" after you " \
43
+ "have edited the information in order for your reference to receive another email.") %>
44
+ </strong></em></p></li>
41
45
 
42
- <li><%= link_to(_('Send Email Invitation'), @answer_sheet ? send_reference_invite_fe_answer_sheet_path(@answer_sheet, :reference_id => reference.id) : '#', :class => 'reference_send_invite button no-left-margin') %>
43
- <br/><%= _('Invitation last sent:') %> <span id="ref_last_sent_<%= reference.id %>"><% if reference.email_sent_at.nil? -%><%= _('Never') %><% else %><%= reference.email_sent_at.strftime("%Y-%m-%d @ %I:%M%p") %><% end %></span></li>
46
+ <li><%= link_to(_("Send Email Invitation"), @answer_sheet ? send_reference_invite_fe_answer_sheet_path(@answer_sheet, reference_id: reference.id) : "#", class: "#{"form-control" if Fe.bootstrap} reference_send_invite button no-left-margin", disabled: !reference.all_affecting_questions_answered) %>
47
+ <% if reference.question && !reference.all_affecting_questions_answered %>
48
+ <div>
49
+ <strong><i>This button is disabled because there are questions that affect whether this reference is required that need to answered first:</i></strong>
50
+ <ul>
51
+ <% reference.question.visibility_affecting_questions.each do |q| %>
52
+ <% next if q.has_response?(@answer_sheet) %>
53
+ <li>"<%= q.pages.where(question_sheet_id: @answer_sheet.question_sheet_ids).first.label %>" Page: "<%= q.label %>"</li>
54
+ <% end %>
55
+ </ul>
56
+ </div>
57
+ <% end %>
58
+ <br/><%= _("Invitation last sent:") %> <span id="ref_last_sent_<%= reference.id %>"><% if reference.email_sent_at.nil? -%><%= _("Never") %><% else %><%= reference.email_sent_at.strftime("%Y-%m-%d @ %I:%M%p") %><% end %></span></li>
59
+ <% end %>
44
60
  </ul>
45
61
  </div>
@@ -1 +1 @@
1
- <%= render 'fe/questions/fe/reference_question', :reference_question => reference_roommate, :title => _('Roommate Reference') %>
1
+ <%= render "fe/questions/fe/reference_question", reference_question: reference_roommate, title: _("Roommate Reference") %>
@@ -1 +1 @@
1
- <%= render 'fe/questions/fe/reference_question', :reference_question => reference_spiritual, :title => _('Spiritual Reference') %>
1
+ <%= render "fe/questions/fe/reference_question", reference_question: reference_spiritual, title: _("Spiritual Reference") %>
@@ -1 +1 @@
1
- <%= render 'fe/questions/fe/reference_question', :reference_question => reference_staff, :title => _('Staff Reference') %>
1
+ <%= render "fe/questions/fe/reference_question", reference_question: reference_staff, title: _("Staff Reference") %>
@@ -1,7 +1,7 @@
1
- <% locked = state_chooser.locked?(params, @answer_sheet, @presenter) %>
1
+ <% locked = state_chooser.locked?(params, @answer_sheet, @presenter, current_person) %>
2
2
  <%= select_tag "answers[#{state_chooser.id}]",
3
- options_for_select(["", ['Not Listed','N/A']] + state_chooser.choices, [state_chooser.response(@answer_sheet).to_s]),
4
- :class => 'select ' + state_chooser.validation_class(@answer_sheet),
5
- :id => dom_id(state_chooser),
6
- :disabled => locked,
7
- :readonly => locked %>
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 %>
@@ -1,13 +1,17 @@
1
- <% max_length = text_area_field.max_length.to_i > 0 ? text_area_field.max_length : 4000 %>
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
+ %>
2
5
  <% response = text_area_field.response(@answer_sheet).to_s %>
3
6
  <%= text_area_tag "answers[#{text_area_field.id}]", response,
4
- :class => 'text ' + text_area_field.validation_class(@answer_sheet),
5
- :id => dom_id(text_area_field),
6
- :rows => 6,
7
- :disabled => @answer_sheet.frozen?&&!@presenter.try(:reference?),
8
- :readonly => @answer_sheet.frozen?&&!@presenter.try(:reference?),
9
- :maxlength => max_length %>
10
- <div class="small" align="right"><span class="small notice"><%= _('(Please use paragraphs for long answers)') %></span>
11
- <%= _('Characters remaining: ') %>
12
- <input type="text" id="<%= dom_id(text_area_field)+'_count' %>" size="4" value="<%= max_length - response.length %>" disabled="" class="small char-count">
7
+ class: "text #{"form-control" if Fe.bootstrap}" + 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">
13
17
  </div>
@@ -1,8 +1,9 @@
1
- <% locked = text_field.locked?(params, @answer_sheet, @presenter) %>
1
+ <% locked = text_field.locked?(params, @answer_sheet, @presenter, current_person) %>
2
2
  <%= text_field_tag "answers[#{text_field.id}]", text_field.response(@answer_sheet),
3
- :class => "text #{text_field.css_class} #{text_field.question_grid_id.present? ? "col_#{text_field.question_grid_id}_#{col}" : ''}" + text_field.validation_class(@answer_sheet),
4
- :id => dom_id(text_field),
5
- :disabled => locked,
6
- :readonly => locked,
7
- :maxlength => text_field.max_length.to_i > 0 ? text_field.max_length : 255 %>
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 %>
8
9
 
@@ -1,17 +1,17 @@
1
- <%- if ['question_pages', 'question_sheets', 'elements'].include?(controller.controller_name) -%>
1
+ <%- if ["question_pages", "question_sheets", "elements"].include?(controller.controller_name) -%>
2
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 %>
3
+ <%= render "fe/questions/fe/yes_no_field", yes_no: yes_no %>
4
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} %>
5
+ <%= render partial: "fe/admin/question_pages/element", collection: yes_no.elements, locals: {in_grid: true} %>
6
6
  </ul>
7
7
  </div>
8
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} %>
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
12
  </ul>
13
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'); });
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
16
  </script>
17
17
  <% end %>
@@ -1,16 +1,19 @@
1
+ <% locked = yes_no.locked?(params, @answer_sheet, @presenter, current_person) %>
1
2
  <div id="<%= dom_id(yes_no) %>" class="choice_field" style="white-space: nowrap;">
2
3
  <% css_class = "#{yes_no.css_class} " -%>
3
4
  <% yes_no.choices.each_with_index do |choice, num| -%>
4
5
  <% dom_id = dom_id(yes_no) + "_" + pretty_tag(choice[1])
5
- css_class += yes_no.validation_class(@answer_sheet) if num == 0
6
+ css_class += yes_no.validation_class(@answer_sheet, @page) if num == 0
6
7
  checked = yes_no.has_answer?(choice[1],@answer_sheet) -%>
7
- <div class="field field_check yesno">
8
- <%= radio_button_tag "answers[#{yes_no.id}]", choice[1], checked,
9
- :id => dom_id,
10
- :class => css_class,
11
- :disabled => @answer_sheet.frozen?&&!@presenter.try(:reference?),
12
- :readonly => @answer_sheet.frozen?&&!@presenter.try(:reference?) %>
13
- <label class="choice horiz" for="<%= dom_id %>"><%= choice[0] %></label>
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 %>
14
17
  </div>
15
18
  <% end -%>
16
19
  <div class="clear"></div>
@@ -4,28 +4,28 @@
4
4
 
5
5
  <ul class="questions">
6
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}" %>
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
9
  </li>
10
10
  <li>
11
- <label for="<%= "email_#{index}" %>" class="desc"><%= _('E-mail') %></label>
11
+ <label for="<%= "email_#{index}" %>" class="desc"><%= _("E-mail") %></label>
12
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}" %>
13
+ <%= text_field_tag "references[#{index}][email]", reference.email, class: "text required validate-email", id: "email_#{index}" %>
14
14
  </li>
15
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}" %>
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
18
  </li>
19
19
  <li>
20
- <label for="<%= "months_known_#{index}" %>" class="desc"><%= _('Length of acquaintance') %></label>
20
+ <label for="<%= "months_known_#{index}" %>" class="desc"><%= _("Length of acquaintance") %></label>
21
21
  <%= select_tag "references[#{index}][months_known]",
22
22
  options_for_select([""] + Fe::ReferencePagesController::MONTHS_KNOWN_OPTIONS, reference.months_known),
23
- :class => 'select validate-selection',
24
- :id => "months_known[#{index}]" %>
23
+ class: "select validate-selection",
24
+ id: "months_known[#{index}]" %>
25
25
  </li>
26
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>
27
+ "like to get a headstart, please feel free to click "Send Email Invitation" below.") %></p></li>
28
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>
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
31
  </ul>
@@ -1,4 +1,4 @@
1
- <% page_dom = 'reference_page'
1
+ <% page_dom = "reference_page"
2
2
  next_js = load_page_js(@next_page) -%>
3
3
 
4
4
  <div id="<%= page_dom %>" class="answer-page" style="display: none;"> <!-- this id is parsed by public.js -->
@@ -10,13 +10,13 @@
10
10
 
11
11
  <%= form_tag fe_application_reference_page_path(@application), remote: true, id: "#{page_dom}-form", onsubmit: next_js + "; return false;" do %>
12
12
 
13
- <p><%= _('Please provide your references.') %></p>
13
+ <p><%= _("Please provide your references.") %></p>
14
14
 
15
- <%= render :partial => 'reference', :collection => @references, :locals => {:page_dom => page_dom} %>
15
+ <%= render partial: "reference", collection: @references, locals: {page_dom: page_dom} %>
16
16
 
17
17
  <% end -%>
18
18
 
19
- <%= button_to_function _('Next'), next_js unless next_js.empty? %>
19
+ <%= button_to_function _("Next"), next_js unless next_js.empty? %>
20
20
 
21
21
  </div>
22
22
  </div>
@@ -1,2 +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>
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>
@@ -1,5 +1,5 @@
1
- <%= _("We weren't able to find a reference associated with this link. The are two common reason for this issue:") %>
1
+ <%= _("We weren"t able to find a reference associated with this link. The are two common reason for this issue:") %>
2
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>
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
5
  </ol>
@@ -1,8 +1,8 @@
1
- <%= _("We're sorry, but the reference form you are trying to access is no longer available.") %><br/>
1
+ <%= _("We"re sorry, but the reference form you are trying to access is no longer available.") %><br/>
2
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/>
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
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.') %
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
8
  { email: Fe.from_email } %>
@@ -4,8 +4,8 @@
4
4
  <% unless @reference.question_sheet.nil? -%>
5
5
  <h2><%= @reference.question_sheet.label %></h2>
6
6
 
7
- <p><label class="desc"><%= _('Applicant:') %></label> <%= @application.applicant.informal_full_name %></p>
8
- <p><label class="desc"><%= _('Reference:') %></label> <%= @reference.name %></p>
7
+ <p><label class="desc"><%= _("Applicant:") %></label> <%= @application.applicant.informal_full_name %></p>
8
+ <p><label class="desc"><%= _("Reference:") %></label> <%= @reference.name %></p>
9
9
  <% end -%>
10
10
  </div>
11
11
  </div>
@@ -13,6 +13,6 @@
13
13
 
14
14
  <div id="preview" class="answer-page">
15
15
 
16
- <%= render :partial => '/answer_sheets/answer_sheet', :locals => {:answer_sheet => @answer_sheet, :elements => @elements } %>
16
+ <%= render partial: "/answer_sheets/answer_sheet", locals: {answer_sheet: @answer_sheet, elements: @elements } %>
17
17
 
18
18
  </div>
@@ -1,3 +1,3 @@
1
- $('#submit_message').html("<%= _('Thank you for submitting your reference.') %>")
2
- $('#submit_message').show()
3
- $('#submit_button').hide()
1
+ $('#submit_message, .submit_message').html("<%= _("Thank you for submitting your reference.") %>")
2
+ $('#submit_message, .submit_message').show()
3
+ $('.page:visible #submit_button').hide()
@@ -1,2 +1,2 @@
1
- <p><%= _('Thank you for submitting your application. It has been accepted for processing.') %></p>
1
+ <p><%= _("Thank you for submitting your application. It has been accepted for processing.") %></p>
2
2
 
@@ -1,4 +1,4 @@
1
- <% page_dom = 'submit_page'
1
+ <% page_dom = "submit_page"
2
2
  next_js = load_page_js(@next_page) -%>
3
3
 
4
4
  <div id="<%= page_dom %>" class="answer-page"> <!-- this id is parsed by public.js -->
@@ -8,24 +8,24 @@
8
8
  <div id="page-preview">
9
9
  <div class="page">
10
10
 
11
- <%= form_tag fe_application_submit_page_path(@application), :id => "#{page_dom}-form", :onsubmit => "page_handler.validateAll(); return false;" do -%>
11
+ <%= form_tag fe_application_submit_page_path(@application), id: "#{page_dom}-form", autocomplete: "off", onsubmit: "page_handler.validateAll(); return false;" do -%>
12
12
 
13
13
  <div id="submit_app">
14
14
  <% if @application.frozen? -%>
15
- <p><%= _('You have already submitted this application.') %></p>
15
+ <p><%= _("You have already submitted this application.") %></p>
16
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>
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
21
 
22
22
  <div id="application_errors">
23
- <%= render :partial => "errors"%>
23
+ <%= render partial: "errors"%>
24
24
  </div>
25
25
 
26
26
  <%= hidden_field_tag "submit_to", submit_fe_application_submit_page_path(@application) %>
27
27
  <div id="submit_message" class="validation-advice" style="display: none;"></div>
28
- <p class="buttons"><%= submit_tag(_('Submit Application')) %></p>
28
+ <p class="buttons"><%= submit_tag(_("Submit Application")) %></p>
29
29
  <% end -%>
30
30
  </div>
31
31
 
@@ -1 +1 @@
1
- page.replace_html 'application_errors', :partial => 'errors', :locals => {:application => @application}
1
+ page.replace_html 'application_errors', partial: 'errors', locals: {application: @application}
@@ -1,3 +1,3 @@
1
- page.replace_html "submit_app", :partial => "thankyou"
2
- page.replace "meta", :partial => "fe/applications/meta_info"
1
+ page.replace_html "submit_app", partial: "thankyou"
2
+ page.replace "meta", partial: "fe/applications/meta_info"
3
3
  page << "new Effect.ScrollTo('meta');"
@@ -1,4 +1,4 @@
1
- <% if record.errors.any? %>
1
+ <% if record && record.errors.any? %>
2
2
  <ul>
3
3
  <% record.errors.full_messages.each do |msg| %>
4
4
  <li><%= msg %></li>
@@ -4,15 +4,14 @@
4
4
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
5
5
  <head>
6
6
  <title><%= @title %></title>
7
- <%= stylesheet_link_tag "print", :media => 'print' %>
7
+ <%= stylesheet_link_tag "print", media: "print" %>
8
8
  <%= stylesheet_link_tag "base" %>
9
9
 
10
10
  <script type="text/javascript" charset="utf-8">
11
- var answer_sheet_type = '<%= @answer_sheet.class %>'
11
+ var answer_sheet_type = "<%= @answer_sheet.class %>"
12
12
  </script>
13
13
  <%= csrf_meta_tag %>
14
- <%= stylesheet_link_tag 'message_block' %>
15
- <%= stylesheet_link_tag asset_path('fe/fe.screen.css') %>
14
+ <%= stylesheet_link_tag asset_path("fe/fe.screen.css") %>
16
15
  <script type="text/javascript" charset="utf-8">
17
16
  <%#= raw Rack::TimeZone::Javascript %>
18
17
  setTimezoneCookie()
@@ -0,0 +1,30 @@
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>Dynamic Forms</title>
7
+ <%= stylesheet_link_tag "fe/fe.screen" %>
8
+
9
+ <%= javascript_include_tag "fe/admin" %>
10
+ <%= csrf_meta_tag %>
11
+ </head>
12
+ <body>
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>
15
+
16
+ <div id="wrapper">
17
+ <div id="header">
18
+ <ul id="nav-main">
19
+ <li class="active"><%= link_to "Forms", fe_admin_question_sheets_path %></li>
20
+ <div class="clear"></div>
21
+ </ul>
22
+ </div>
23
+
24
+ <div id="main">
25
+ <%= yield %>
26
+ </div>
27
+ </div>
28
+
29
+ </body>
30
+ </html>
@@ -0,0 +1,11 @@
1
+ <% if @element.errors.any? %>
2
+ <div class="errors">
3
+ <h2>There was a problem saving this element</h2>
4
+ <ul>
5
+ <% @element.errors.full_messages.each do |msg| %>
6
+ <li><%= msg %></li>
7
+ <% end %>
8
+ </ul>
9
+ </div>
10
+ <% end %>
11
+
@@ -0,0 +1,12 @@
1
+ <% if @page_element %>
2
+ $('#question_modal').dialog('close');
3
+ $('#page-preview').html('<%= escape_javascript(render("fe/admin/question_pages/question_page")) %>');
4
+ $('#element_<%= dom_id(@element) %>').hide();
5
+ $('#element_form_<%= dom_id(@element) %>').html('<%= escape_javascript(render("fe/admin/panels/prop_element", element: @element)) %>');
6
+ $('#element_form_<%= dom_id(@element) %>').show();
7
+ selectElement("#element_<%= @element.id %>");
8
+ scrollTo("#element_<%= @element.id %>");
9
+ setUpSortables();
10
+ <% else %>
11
+ alert('That question already exists on this question sheet')
12
+ <% end %>
@@ -0,0 +1,4 @@
1
+ $('#element_<%= @element.id %>').remove()
2
+ $('#panel').html('<%= escape_javascript(render("fe/admin/panels/insert")) %>')
3
+ activeElement = ''
4
+ switchTab('insert')
@@ -0,0 +1,3 @@
1
+ $('#page-preview').html('<%= escape_javascript(render("fe/admin/question_pages/question_page", page: @page)) %>')
2
+ $('#list-pages li').removeClass('active')
3
+ setUpJsHelpers();
@@ -0,0 +1,3 @@
1
+ $('#page-preview').html('<%= escape_javascript(render("fe/admin/question_pages/question_page")) %>')
2
+ selectElement("#element_<%= @element.id %>")
3
+ setUpSortables();
@@ -0,0 +1,4 @@
1
+ $('#element_<%= dom_id(@element) %>').hide()
2
+ $('#element_form_<%= dom_id(@element) %>').html('<%= escape_javascript(render("fe/admin/panels/prop_element", element: @element)) %>')
3
+ $('#element_form_<%= dom_id(@element) %>').show();
4
+ selectElement("#element_<%= @element.id %>")
@@ -0,0 +1,4 @@
1
+ $('#errors').html('<%= escape_javascript(render("errors", element: @element)) %>')
2
+ <% @element.errors.each do |attr_name, message| %>
3
+ addError('element_<%= attr_name %>')
4
+ <% end %>
@@ -0,0 +1,17 @@
1
+ <% if @questions.any? %>
2
+ if ($('#question_modal')[0] == null) {
3
+ $('body').append('<div id="question_modal"></div>');
4
+ }
5
+ $('#question_modal').html('<%= link_to("Add \"#{params[:human_type]}\"", fe_admin_question_sheet_page_elements_path(question_sheet_id: @page.question_sheet_id, page_id: @page.id,
6
+ element_type: params[:element_type], "element[style]" => @style, format: :js),
7
+ remote: true,
8
+ method: :post,
9
+ class: "add_type",
10
+ data: { disable_with: "Add \"#{params[:human_type]}\"" }) %><p>Or you can also copy an existing <%= params[:human_type] %> element. If you are unsure, just <strong>Add <%= params[:human_type] %>.</strong></p><div id="questions_div" title=""></div>');
11
+ $('#questions_div').html("<%= escape_javascript(render("fe/questions/fe/questions", questions: @questions)) %>")
12
+ $('#question_modal').dialog({width: 500, height: 400});
13
+ <% else %>
14
+ $.post('<%= fe_admin_question_sheet_page_elements_path(question_sheet_id: @page.question_sheet_id,
15
+ page_id: @page.id,
16
+ element_type: params[:element_type], "element[style]" => @style, format: :js) %>');
17
+ <% end %>
@@ -0,0 +1,9 @@
1
+ $('#element_form_<%= dom_id(@element) %>').hide();
2
+ $('#element_<%= dom_id(@element) %>').html('<%= escape_javascript(render("fe/admin/question_pages/element_show", element: @element)) %>')
3
+ $('#element_<%= dom_id(@element) %>').show()
4
+ clearCurrentElement()
5
+ $('#questions_list').sortable('refresh');
6
+
7
+ <% @page.question_grids.each do |grid| %>
8
+ $('#questions_list_<%= grid.id %>').sortable('refresh');
9
+ <% end %>
@@ -0,0 +1,8 @@
1
+ <p><label for="email_template_name" class="desc">Template Name</label>
2
+ <%= f.text_field :name, class: "text", size: 93 %></p>
3
+
4
+ <p><label for="email_template_subject" class="desc">Subject</label>
5
+ <%= f.text_field :subject, class: "text", size: 93 %></p>
6
+
7
+ <p><label for="email_template_content" class="desc">Content</label>
8
+ <%= f.text_area :content, rows: 25, cols: 80, class: "text" %>
@@ -0,0 +1,13 @@
1
+ <div id="content">
2
+ <h1>Edit Email Template</h1>
3
+
4
+ <%= error_messages_for :email_template %>
5
+
6
+ <%= form_for(:email_template, url: fe_admin_email_template_path(@email_template), html: { method: :put } ) do |f| %>
7
+ <%= render "form", f: f %>
8
+
9
+ <p><%= submit_tag "Update" %> or <%= link_to "Cancel", fe_admin_email_templates_path, class: "cancel" %></p>
10
+ <% end %>
11
+
12
+
13
+ </div>