fe 0.0.4 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (456) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +4 -4
  3. data/Rakefile +16 -36
  4. data/app/assets/config/fe/manifest.js +3 -0
  5. data/app/assets/config/manifest.js +3 -0
  6. data/app/assets/javascripts/application.js.erb +1 -1
  7. data/app/assets/javascripts/fe/admin.js +0 -2
  8. data/app/assets/javascripts/fe/fe.admin.js +40 -20
  9. data/app/assets/javascripts/fe/fe.common.js.erb +98 -0
  10. data/app/assets/javascripts/fe/fe.public.js +2 -416
  11. data/app/assets/javascripts/fe/fe.public.nojquery.js.erb +526 -0
  12. data/app/assets/javascripts/fe/jquery.html5_upload.js +258 -0
  13. data/app/assets/javascripts/fe/jquery.validate.pack.js +3 -15
  14. data/app/assets/stylesheets/fe/fe.screen.css.scss.erb +90 -10
  15. data/app/assets/stylesheets/fe/validation.css +5 -1
  16. data/app/controllers/concerns/fe/admin/question_sheets_controller_concern.rb +111 -0
  17. data/app/controllers/concerns/fe/answer_pages_controller_concern.rb +131 -0
  18. data/app/controllers/{fe/concerns → concerns/fe}/answer_sheets_controller_concern.rb +15 -7
  19. data/app/controllers/{fe/concerns → concerns/fe}/application_controller_concern.rb +15 -2
  20. data/app/controllers/fe/admin/elements_controller.rb +102 -64
  21. data/app/controllers/fe/admin/email_templates_controller.rb +7 -7
  22. data/app/controllers/fe/admin/question_pages_controller.rb +9 -9
  23. data/app/controllers/fe/admin/question_sheets_controller.rb +2 -103
  24. data/app/controllers/fe/reference_pages_controller.rb +11 -11
  25. data/app/controllers/fe/reference_sheets_controller.rb +6 -4
  26. data/app/controllers/fe/references_controller.rb +20 -19
  27. data/app/controllers/fe/submit_pages_controller.rb +5 -5
  28. data/app/helpers/fe/answer_pages_helper.rb +1 -1
  29. data/app/helpers/fe/application_helper.rb +8 -3
  30. data/app/jobs/fe/update_reference_sheet_visibility_job.rb +11 -0
  31. data/app/mailers/fe/notifier.rb +12 -5
  32. data/app/models/answer_sheet.rb +2 -0
  33. data/app/models/application_record.rb +3 -0
  34. data/app/models/{fe/concerns → concerns/fe}/answer_concern.rb +2 -2
  35. data/app/models/{fe/concerns → concerns/fe}/answer_pages_presenter_concern.rb +15 -5
  36. data/app/models/concerns/fe/answer_sheet_concern.rb +125 -0
  37. data/app/models/{fe/concerns → concerns/fe}/choice_field_concern.rb +56 -31
  38. data/app/models/fe/address.rb +2 -2
  39. data/app/models/fe/answer.rb +1 -1
  40. data/app/models/fe/answer_sheet.rb +1 -1
  41. data/app/models/fe/answer_sheet_question_sheet.rb +2 -2
  42. data/app/models/fe/application.rb +15 -10
  43. data/app/models/fe/condition.rb +4 -4
  44. data/app/models/fe/date_field.rb +2 -2
  45. data/app/models/fe/element.rb +201 -45
  46. data/app/models/fe/email_address.rb +2 -2
  47. data/app/models/fe/email_template.rb +1 -1
  48. data/app/models/fe/page.rb +138 -31
  49. data/app/models/fe/page_element.rb +8 -3
  50. data/app/models/fe/page_link.rb +6 -3
  51. data/app/models/fe/paragraph.rb +1 -1
  52. data/app/models/fe/person.rb +16 -13
  53. data/app/models/fe/phone_number.rb +1 -1
  54. data/app/models/fe/question.rb +64 -44
  55. data/app/models/fe/question_grid.rb +16 -4
  56. data/app/models/fe/question_grid_with_total.rb +15 -0
  57. data/app/models/fe/question_set.rb +54 -14
  58. data/app/models/fe/question_sheet.rb +54 -19
  59. data/app/models/fe/reference_question.rb +9 -13
  60. data/app/models/fe/reference_sheet.rb +113 -54
  61. data/app/models/fe/state_chooser.rb +2 -2
  62. data/app/models/fe/text_field.rb +2 -2
  63. data/app/models/fe/user.rb +1 -1
  64. data/app/models/staff.rb +8 -6
  65. data/app/validators/email_validator.rb +11 -0
  66. data/app/views/fe/admin/elements/create.js.erb +4 -3
  67. data/app/views/fe/admin/elements/destroy.js.erb +1 -1
  68. data/app/views/fe/admin/elements/drop.js.erb +2 -1
  69. data/app/views/fe/admin/elements/duplicate.js.erb +2 -1
  70. data/app/views/fe/admin/elements/edit.js.erb +1 -1
  71. data/app/views/fe/admin/elements/error.js.erb +1 -1
  72. data/app/views/fe/admin/elements/new.js.erb +13 -6
  73. data/app/views/fe/admin/elements/update.js.erb +1 -1
  74. data/app/views/fe/admin/email_templates/_form.html.erb +3 -3
  75. data/app/views/fe/admin/email_templates/edit.html.erb +3 -3
  76. data/app/views/fe/admin/email_templates/index.html.erb +3 -3
  77. data/app/views/fe/admin/email_templates/new.html.erb +3 -3
  78. data/app/views/fe/admin/panels/_advanced_options.html.erb +16 -10
  79. data/app/views/fe/admin/panels/_common_boolean_fields.html.erb +1 -0
  80. data/app/views/fe/admin/panels/_common_boolean_fields_default.html.erb +11 -0
  81. data/app/views/fe/admin/panels/_common_fields.html.erb +18 -19
  82. data/app/views/fe/admin/panels/_condition.html.erb +1 -1
  83. data/app/views/fe/admin/panels/_insert.html.erb +25 -25
  84. data/app/views/fe/admin/panels/_nav_controls.html.erb +4 -4
  85. data/app/views/fe/admin/panels/_page.html.erb +2 -2
  86. data/app/views/fe/admin/panels/_pages_list.html.erb +3 -3
  87. data/app/views/fe/admin/panels/_prop_attachment_field.html.erb +2 -2
  88. data/app/views/fe/admin/panels/_prop_choice_field.html.erb +52 -24
  89. data/app/views/fe/admin/panels/_prop_date_field.html.erb +1 -1
  90. data/app/views/fe/admin/panels/_prop_element.html.erb +7 -14
  91. data/app/views/fe/admin/panels/_prop_page.html.erb +11 -6
  92. data/app/views/fe/admin/panels/_prop_paragraph.html.erb +38 -24
  93. data/app/views/fe/admin/panels/_prop_question_grid.html.erb +7 -2
  94. data/app/views/fe/admin/panels/_prop_question_grid_with_total.html.erb +2 -2
  95. data/app/views/fe/admin/panels/_prop_reference_question.html.erb +3 -3
  96. data/app/views/fe/admin/panels/_prop_section.html.erb +8 -2
  97. data/app/views/fe/admin/panels/_prop_sheet.html.erb +7 -4
  98. data/app/views/fe/admin/panels/_prop_text_field.html.erb +12 -12
  99. data/app/views/fe/admin/question_pages/_element.html.erb +16 -6
  100. data/app/views/fe/admin/question_pages/_element_show.html.erb +2 -2
  101. data/app/views/fe/admin/question_pages/_question_page.html.erb +4 -4
  102. data/app/views/fe/admin/question_pages/create.js.erb +3 -3
  103. data/app/views/fe/admin/question_pages/destroy.js.erb +3 -3
  104. data/app/views/fe/admin/question_pages/edit.js.erb +1 -1
  105. data/app/views/fe/admin/question_pages/error.js.erb +1 -1
  106. data/app/views/fe/admin/question_pages/show.js.erb +2 -2
  107. data/app/views/fe/admin/question_pages/show_panel.js.erb +1 -1
  108. data/app/views/fe/admin/question_pages/update.js.erb +1 -1
  109. data/app/views/fe/admin/question_sheets/edit.js.erb +1 -1
  110. data/app/views/fe/admin/question_sheets/error.js.erb +1 -1
  111. data/app/views/fe/admin/question_sheets/index.html.erb +8 -8
  112. data/app/views/fe/admin/question_sheets/new.html.erb +3 -3
  113. data/app/views/fe/admin/question_sheets/show.html.erb +5 -5
  114. data/app/views/fe/admin/question_sheets/update.js.erb +1 -1
  115. data/app/views/fe/answer_pages/_answer_page.html.erb +14 -14
  116. data/app/views/fe/answer_pages/_element.html.erb +25 -6
  117. data/app/views/fe/answer_pages/_page_name.html.erb +1 -0
  118. data/app/views/fe/answer_pages/show.html.erb +39 -0
  119. data/app/views/fe/answer_pages/update.js.erb +11 -3
  120. data/app/views/fe/answer_sheets/_answer_sheet.html.erb +6 -6
  121. data/app/views/fe/answer_sheets/_element.html.erb +55 -35
  122. data/app/views/fe/answer_sheets/_incomplete.html.erb +1 -1
  123. data/app/views/fe/answer_sheets/_page_link.html.erb +9 -7
  124. data/app/views/fe/answer_sheets/_pages_list.html.erb +4 -4
  125. data/app/views/fe/answer_sheets/_submit_to.html.erb +1 -0
  126. data/app/views/fe/answer_sheets/_title.html.erb +1 -1
  127. data/app/views/fe/answer_sheets/edit.html.erb +24 -24
  128. data/app/views/fe/answer_sheets/incomplete.js.erb +9 -3
  129. data/app/views/fe/answer_sheets/index.html.erb +3 -3
  130. data/app/views/fe/answer_sheets/show.html.erb +1 -1
  131. data/app/views/fe/applications/_logout.html.erb +1 -0
  132. data/app/views/fe/applications/show.html.erb +1 -0
  133. data/app/views/fe/questions/fe/_acceptance.html.erb +11 -10
  134. data/app/views/fe/questions/fe/_attachment_field.html.erb +133 -10
  135. data/app/views/fe/questions/fe/_checkbox_field.html.erb +34 -30
  136. data/app/views/fe/questions/fe/_country.html.erb +6 -6
  137. data/app/views/fe/questions/fe/_date_field.html.erb +5 -5
  138. data/app/views/fe/questions/fe/_date_field_mmyy.html.erb +8 -8
  139. data/app/views/fe/questions/fe/_drop_down_field.html.erb +7 -6
  140. data/app/views/fe/questions/fe/_paragraph.html.erb +1 -1
  141. data/app/views/fe/questions/fe/_question_grid.html.erb +21 -16
  142. data/app/views/fe/questions/fe/_question_grid_with_total.html.erb +25 -18
  143. data/app/views/fe/questions/fe/_questions.html.erb +11 -5
  144. data/app/views/fe/questions/fe/_radio_button_field.html.erb +42 -25
  145. data/app/views/fe/questions/fe/_rating.html.erb +57 -18
  146. data/app/views/fe/questions/fe/_reference_discipler.html.erb +1 -1
  147. data/app/views/fe/questions/fe/_reference_friend.html.erb +1 -1
  148. data/app/views/fe/questions/fe/_reference_parent.html.erb +1 -1
  149. data/app/views/fe/questions/fe/_reference_peer.html.erb +1 -1
  150. data/app/views/fe/questions/fe/_reference_question.html.erb +44 -21
  151. data/app/views/fe/questions/fe/_reference_roommate.html.erb +1 -1
  152. data/app/views/fe/questions/fe/_reference_spiritual.html.erb +1 -1
  153. data/app/views/fe/questions/fe/_reference_staff.html.erb +1 -1
  154. data/app/views/fe/questions/fe/_section.html.erb +1 -1
  155. data/app/views/fe/questions/fe/_state_chooser.html.erb +6 -6
  156. data/app/views/fe/questions/fe/_text_area_field.html.erb +17 -6
  157. data/app/views/fe/questions/fe/_text_field.html.erb +7 -6
  158. data/app/views/fe/questions/fe/_yes_no.html.erb +8 -8
  159. data/app/views/fe/questions/fe/_yes_no_field.erb +12 -9
  160. data/app/views/fe/reference_pages/_reference.html.erb +15 -15
  161. data/app/views/fe/reference_pages/edit.html.erb +9 -9
  162. data/app/views/fe/reference_sheets/done.html.erb +2 -2
  163. data/app/views/fe/reference_sheets/not_found.html.erb +4 -4
  164. data/app/views/fe/references/edit.html.erb +6 -6
  165. data/app/views/fe/references/show.html.erb +8 -8
  166. data/app/views/fe/references/submit.js.erb +3 -3
  167. data/app/views/fe/submit_pages/_thankyou.html.erb +1 -1
  168. data/app/views/fe/submit_pages/edit.html.erb +12 -12
  169. data/app/views/fe/submit_pages/error.js.erb +1 -1
  170. data/app/views/fe/submit_pages/submit.js.erb +2 -2
  171. data/app/views/layouts/fe/_error_messages_for.html.erb +7 -0
  172. data/app/views/layouts/fe/application.html.erb +4 -5
  173. data/app/views/layouts/fe/fe_admin.html.erb +30 -0
  174. data/app/views.current/fe/admin/elements/_errors.html.erb +11 -0
  175. data/app/views.current/fe/admin/elements/create.js.erb +12 -0
  176. data/app/views.current/fe/admin/elements/destroy.js.erb +4 -0
  177. data/app/views.current/fe/admin/elements/drop.js.erb +3 -0
  178. data/app/views.current/fe/admin/elements/duplicate.js.erb +3 -0
  179. data/app/views.current/fe/admin/elements/edit.js.erb +4 -0
  180. data/app/views.current/fe/admin/elements/error.js.erb +4 -0
  181. data/app/views.current/fe/admin/elements/new.js.erb +17 -0
  182. data/app/views.current/fe/admin/elements/reorder.js.erb +0 -0
  183. data/app/views.current/fe/admin/elements/update.js.erb +9 -0
  184. data/app/views.current/fe/admin/email_templates/_form.html.erb +8 -0
  185. data/app/views.current/fe/admin/email_templates/edit.html.erb +13 -0
  186. data/app/views.current/fe/admin/email_templates/index.html.erb +20 -0
  187. data/app/views.current/fe/admin/email_templates/new.html.erb +11 -0
  188. data/app/views.current/fe/admin/panels/_advanced_options.html.erb +49 -0
  189. data/app/views.current/fe/admin/panels/_common_boolean_fields.html.erb +1 -0
  190. data/app/views.current/fe/admin/panels/_common_boolean_fields_default.html.erb +11 -0
  191. data/app/views.current/fe/admin/panels/_common_fields.html.erb +23 -0
  192. data/app/views.current/fe/admin/panels/_condition.html.erb +6 -0
  193. data/app/views.current/fe/admin/panels/_insert.html.erb +39 -0
  194. data/app/views.current/fe/admin/panels/_nav_controls.html.erb +6 -0
  195. data/app/views.current/fe/admin/panels/_page.html.erb +3 -0
  196. data/app/views.current/fe/admin/panels/_pages_list.html.erb +16 -0
  197. data/app/views.current/fe/admin/panels/_prop_attachment_field.html.erb +2 -0
  198. data/app/views.current/fe/admin/panels/_prop_choice_field.html.erb +74 -0
  199. data/app/views.current/fe/admin/panels/_prop_date_field.html.erb +7 -0
  200. data/app/views.current/fe/admin/panels/_prop_element.html.erb +23 -0
  201. data/app/views.current/fe/admin/panels/_prop_page.html.erb +26 -0
  202. data/app/views.current/fe/admin/panels/_prop_paragraph.html.erb +46 -0
  203. data/app/views.current/fe/admin/panels/_prop_question_grid.html.erb +28 -0
  204. data/app/views.current/fe/admin/panels/_prop_question_grid_with_total.html.erb +14 -0
  205. data/app/views.current/fe/admin/panels/_prop_reference_question.html.erb +12 -0
  206. data/app/views.current/fe/admin/panels/_prop_section.html.erb +8 -0
  207. data/app/views.current/fe/admin/panels/_prop_sheet.html.erb +20 -0
  208. data/app/views.current/fe/admin/panels/_prop_text_field.html.erb +20 -0
  209. data/app/views.current/fe/admin/question_pages/_element.html.erb +28 -0
  210. data/app/views.current/fe/admin/question_pages/_element_show.html.erb +10 -0
  211. data/app/views.current/fe/admin/question_pages/_errors.html.erb +10 -0
  212. data/app/views.current/fe/admin/question_pages/_question_page.html.erb +13 -0
  213. data/app/views.current/fe/admin/question_pages/create.js.erb +11 -0
  214. data/app/views.current/fe/admin/question_pages/destroy.js.erb +5 -0
  215. data/app/views.current/fe/admin/question_pages/edit.js.erb +3 -0
  216. data/app/views.current/fe/admin/question_pages/error.js.erb +4 -0
  217. data/app/views.current/fe/admin/question_pages/show.js.erb +9 -0
  218. data/app/views.current/fe/admin/question_pages/show_panel.js.erb +3 -0
  219. data/app/views.current/fe/admin/question_pages/update.js.erb +2 -0
  220. data/app/views.current/fe/admin/question_sheets/_errors.html.erb +11 -0
  221. data/app/views.current/fe/admin/question_sheets/edit.js.erb +3 -0
  222. data/app/views.current/fe/admin/question_sheets/error.js.erb +5 -0
  223. data/app/views.current/fe/admin/question_sheets/index.html.erb +41 -0
  224. data/app/views.current/fe/admin/question_sheets/new.html.erb +15 -0
  225. data/app/views.current/fe/admin/question_sheets/show.html.erb +27 -0
  226. data/app/views.current/fe/admin/question_sheets/update.js.erb +2 -0
  227. data/app/views.current/fe/answer_pages/_answer_page.html.erb +53 -0
  228. data/app/views.current/fe/answer_pages/_element.html.erb +32 -0
  229. data/app/views.current/fe/answer_pages/_page_name.html.erb +1 -0
  230. data/app/views.current/fe/answer_pages/show.html.erb +39 -0
  231. data/app/views.current/fe/answer_pages/update.js.erb +13 -0
  232. data/app/views.current/fe/answer_sheets/_answer_sheet.html.erb +26 -0
  233. data/app/views.current/fe/answer_sheets/_element.html.erb +74 -0
  234. data/app/views.current/fe/answer_sheets/_incomplete.html.erb +10 -0
  235. data/app/views.current/fe/answer_sheets/_page_link.html.erb +9 -0
  236. data/app/views.current/fe/answer_sheets/_pages_list.html.erb +11 -0
  237. data/app/views.current/fe/answer_sheets/_submit_to.html.erb +1 -0
  238. data/app/views.current/fe/answer_sheets/_title.html.erb +1 -0
  239. data/app/views.current/fe/answer_sheets/edit.html.erb +66 -0
  240. data/app/views.current/fe/answer_sheets/incomplete.js.erb +11 -0
  241. data/app/views.current/fe/answer_sheets/index.html.erb +18 -0
  242. data/app/views.current/fe/answer_sheets/send_reference_invite.js.erb +8 -0
  243. data/app/views.current/fe/answer_sheets/show.html.erb +13 -0
  244. data/app/views.current/fe/applications/_logout.html.erb +1 -0
  245. data/app/views.current/fe/applications/show.html.erb +1 -0
  246. data/app/views.current/fe/help/builder.html +33 -0
  247. data/app/views.current/fe/help/question_grid.html +18 -0
  248. data/app/views.current/fe/questions/fe/_acceptance.html.erb +14 -0
  249. data/app/views.current/fe/questions/fe/_attachment_field.html.erb +165 -0
  250. data/app/views.current/fe/questions/fe/_checkbox_field.html.erb +53 -0
  251. data/app/views.current/fe/questions/fe/_country.html.erb +7 -0
  252. data/app/views.current/fe/questions/fe/_date_field.html.erb +7 -0
  253. data/app/views.current/fe/questions/fe/_date_field_mmyy.html.erb +9 -0
  254. data/app/views.current/fe/questions/fe/_drop_down_field.html.erb +8 -0
  255. data/app/views.current/fe/questions/fe/_paragraph.html.erb +1 -0
  256. data/app/views.current/fe/questions/fe/_question_grid.html.erb +70 -0
  257. data/app/views.current/fe/questions/fe/_question_grid_with_total.html.erb +64 -0
  258. data/app/views.current/fe/questions/fe/_questions.html.erb +15 -0
  259. data/app/views.current/fe/questions/fe/_radio_button_field.html.erb +60 -0
  260. data/app/views.current/fe/questions/fe/_rating.html.erb +64 -0
  261. data/app/views.current/fe/questions/fe/_reference_discipler.html.erb +1 -0
  262. data/app/views.current/fe/questions/fe/_reference_friend.html.erb +1 -0
  263. data/app/views.current/fe/questions/fe/_reference_parent.html.erb +1 -0
  264. data/app/views.current/fe/questions/fe/_reference_peer.html.erb +1 -0
  265. data/app/views.current/fe/questions/fe/_reference_question.html.erb +61 -0
  266. data/app/views.current/fe/questions/fe/_reference_roommate.html.erb +1 -0
  267. data/app/views.current/fe/questions/fe/_reference_spiritual.html.erb +1 -0
  268. data/app/views.current/fe/questions/fe/_reference_staff.html.erb +1 -0
  269. data/app/views.current/fe/questions/fe/_section.html.erb +1 -0
  270. data/app/views.current/fe/questions/fe/_state_chooser.html.erb +7 -0
  271. data/app/views.current/fe/questions/fe/_text_area_field.html.erb +17 -0
  272. data/app/views.current/fe/questions/fe/_text_field.html.erb +9 -0
  273. data/app/views.current/fe/questions/fe/_yes_no.html.erb +17 -0
  274. data/app/views.current/fe/questions/fe/_yes_no_field.erb +20 -0
  275. data/app/views.current/fe/reference_pages/_reference.html.erb +31 -0
  276. data/app/views.current/fe/reference_pages/edit.html.erb +24 -0
  277. data/app/views.current/fe/reference_sheets/done.html.erb +2 -0
  278. data/app/views.current/fe/reference_sheets/not_found.html.erb +5 -0
  279. data/app/views.current/fe/reference_sheets/submitted.js.erb +1 -0
  280. data/app/views.current/fe/references/edit.html.erb +8 -0
  281. data/app/views.current/fe/references/send_invite.js.erb +7 -0
  282. data/app/views.current/fe/references/show.html.erb +18 -0
  283. data/app/views.current/fe/references/submit.js.erb +3 -0
  284. data/app/views.current/fe/submit_pages/_errors.html.erb +1 -0
  285. data/app/views.current/fe/submit_pages/_thankyou.html.erb +2 -0
  286. data/app/views.current/fe/submit_pages/edit.html.erb +36 -0
  287. data/app/views.current/fe/submit_pages/error.js.erb +1 -0
  288. data/app/views.current/fe/submit_pages/submit.js.erb +3 -0
  289. data/app/views.current/layouts/fe/_error_messages_for.html.erb +7 -0
  290. data/app/views.current/layouts/fe/application.html.erb +47 -0
  291. data/app/{views/layouts/fe/fe.admin.html.erb → views.current/layouts/fe/fe_admin.html.erb} +4 -4
  292. data/config/initializers/paper_trail.rb +3 -0
  293. data/config/routes.rb +3 -37
  294. data/db/migrate/20131003041856_core.rb +23 -23
  295. data/db/migrate/20131003044250_create_reference_sheets.rb +2 -1
  296. data/db/migrate/20131003044436_add_element_and_answer_fields.rb +3 -3
  297. data/db/migrate/20131003044518_create_email_templates.rb +2 -2
  298. data/db/migrate/20131003044621_add_max_lengths.rb +1 -1
  299. data/db/migrate/20131003044714_create_join_table.rb +1 -1
  300. data/db/migrate/20131016162128_remove_question_id_from_element.rb +1 -1
  301. data/db/migrate/20140623153424_create_fe_people.rb +2 -2
  302. data/db/migrate/20140624180246_create_fe_addresses.rb +2 -2
  303. data/db/migrate/{20140624182216_create_create_fe_phone_numbers.rb → 20140624182216_create_fe_phone_numbers.rb} +2 -2
  304. data/db/migrate/20140625160545_create_fe_users.rb +2 -2
  305. data/db/migrate/20140808202507_add_conditional_type_to_elements.rb +1 -1
  306. data/db/migrate/20140808203609_add_conditional_answer_to_elements.rb +1 -1
  307. data/db/migrate/20141103204704_remove_short_value_column.rb +1 -1
  308. data/db/migrate/20141109154522_move_conditional_ids_used_for_choice_field_to_their_own_column.rb +1 -1
  309. data/db/migrate/20150504221439_add_all_element_ids_to_pages.rb +5 -0
  310. data/db/migrate/20150713022326_add_locale_columns.rb +9 -0
  311. data/db/migrate/20150714220730_add_locale_to_answer_sheet.rb +5 -0
  312. data/db/migrate/20150925181652_add_share_to_elements.rb +5 -0
  313. data/db/migrate/20150928085325_change_pages_all_element_ids_to_text.rb +5 -0
  314. data/db/migrate/20150930191538_add_locale_to_reference_sheets.rb +5 -0
  315. data/db/migrate/20151021181928_switch_conditional_answer_separator_to_semicolon.rb +7 -0
  316. data/db/migrate/20151021184250_add_question_sheet_id_in_refs.rb +12 -0
  317. data/db/migrate/20160201185838_add_visible_and_visibility_cache_key_to_reference_sheets.rb +6 -0
  318. data/db/migrate/20160805221415_add_rating_extra_labels.rb +10 -0
  319. data/db/migrate/20181108201746_create_versions.rb +80 -0
  320. data/db/migrate/20181218201130_increase_slug_length.rb +5 -0
  321. data/lib/access_key_generator.rb +12 -0
  322. data/lib/distinct_distinct_patch.rb +20 -0
  323. data/lib/fe/engine.rb +26 -14
  324. data/lib/fe/version.rb +1 -1
  325. data/lib/fe.rb +11 -1
  326. data/spec/controllers/fe/admin/elements_controller_spec.rb +211 -1
  327. data/spec/controllers/fe/admin/email_templates_controller_spec.rb +26 -1
  328. data/spec/controllers/fe/admin/question_pages_controller_spec.rb +8 -1
  329. data/spec/controllers/fe/admin/question_sheets_controller_spec.rb +48 -1
  330. data/spec/controllers/fe/answer_pages_controller_spec.rb +129 -1
  331. data/spec/controllers/fe/answer_sheets_controller_spec.rb +136 -1
  332. data/spec/controllers/fe/reference_pages_controller.rb +4 -0
  333. data/spec/controllers/fe/references_controller_spec.rb +4 -0
  334. data/spec/controllers/fe/submit_pages_controller_spec.rb +4 -0
  335. data/spec/dummy/app/assets/config/manifest.js +0 -0
  336. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  337. data/spec/dummy/app/helpers/application_helper.rb +9 -0
  338. data/spec/dummy/app/models/application.rb +3 -0
  339. data/spec/dummy/app/models/person.rb +11 -0
  340. data/spec/dummy/app/models/user.rb +3 -0
  341. data/spec/dummy/app/views/layouts/application.html.erb +2 -2
  342. data/spec/dummy/config/application.rb +3 -1
  343. data/spec/dummy/config/database.yml +20 -17
  344. data/spec/dummy/config/environments/production.rb +1 -5
  345. data/spec/dummy/config/environments/test.rb +4 -2
  346. data/spec/dummy/config/initializers/assets.rb +5 -2
  347. data/spec/dummy/config/initializers/fast_gettext.rb +5 -0
  348. data/spec/dummy/config/initializers/to_unsafe_h.rb +5 -0
  349. data/spec/dummy/config/initializers/to_unsafe_h.rb.new +5 -0
  350. data/spec/dummy/config/secrets.yml +2 -2
  351. data/spec/dummy/db/migrate/20141203214017_core.fe_engine.rb +92 -0
  352. data/spec/dummy/db/migrate/20141203214018_create_reference_sheets.fe_engine.rb +25 -0
  353. data/spec/dummy/db/migrate/20141203214019_add_element_and_answer_fields.fe_engine.rb +11 -0
  354. data/spec/dummy/db/migrate/20141203214020_create_email_templates.fe_engine.rb +18 -0
  355. data/spec/dummy/db/migrate/20141203214021_add_max_lengths.fe_engine.rb +9 -0
  356. data/spec/dummy/db/migrate/20141203214022_create_join_table.fe_engine.rb +12 -0
  357. data/spec/dummy/db/migrate/20141203214023_remove_question_id_from_element.fe_engine.rb +10 -0
  358. data/spec/dummy/db/migrate/20141203214024_create_fe_people.fe_engine.rb +13 -0
  359. data/spec/dummy/db/migrate/20141203214025_create_fe_addresses.fe_engine.rb +21 -0
  360. data/spec/dummy/db/migrate/20141203214027_create_fe_users.fe_engine.rb +13 -0
  361. data/spec/dummy/db/migrate/20141203214028_add_conditional_type_to_elements.fe_engine.rb +6 -0
  362. data/spec/dummy/db/migrate/20141203214029_add_conditional_answer_to_elements.fe_engine.rb +6 -0
  363. data/spec/dummy/db/migrate/20141203214030_remove_short_value_column.fe_engine.rb +6 -0
  364. data/spec/dummy/db/migrate/20141203214031_move_conditional_ids_used_for_choice_field_to_their_own_column.fe_engine.rb +8 -0
  365. data/spec/dummy/db/migrate/20150123215803_create_users.rb +9 -0
  366. data/spec/dummy/db/migrate/20150504222619_add_all_element_ids_to_pages.fe_engine.rb +6 -0
  367. data/spec/dummy/db/migrate/20150925192557_add_share_to_elements.fe_engine.rb +6 -0
  368. data/spec/dummy/db/migrate/20150930190001_create_fe_phone_numbers.fe_engine.rb +20 -0
  369. data/spec/dummy/db/migrate/20150930190002_add_locale_columns.fe_engine.rb +10 -0
  370. data/spec/dummy/db/migrate/20150930190003_add_locale_to_answer_sheet.fe_engine.rb +6 -0
  371. data/spec/dummy/db/migrate/20150930190004_change_pages_all_element_ids_to_text.fe_engine.rb +6 -0
  372. data/spec/dummy/db/migrate/20150930191756_add_locale_to_reference_sheets.fe_engine.rb +6 -0
  373. data/spec/dummy/db/migrate/20151021190027_add_question_sheet_id_in_refs.fe_engine.rb +13 -0
  374. data/spec/dummy/db/migrate/20160204164612_switch_conditional_answer_separator_to_semicolon.fe_engine.rb +8 -0
  375. data/spec/dummy/db/migrate/20160204164613_add_visible_and_visibility_cache_key_to_reference_sheets.fe_engine.rb +7 -0
  376. data/spec/dummy/db/migrate/20181108201746_create_versions.rb +80 -0
  377. data/spec/dummy/db/schema.rb +91 -69
  378. data/spec/dummy/log/test.log +101278 -419
  379. data/spec/factories/answer_sheet_question_sheets.rb +1 -1
  380. data/spec/factories/answer_sheets.rb +2 -2
  381. data/spec/factories/answers.rb +1 -1
  382. data/spec/factories/applications.rb +3 -4
  383. data/spec/factories/dummy_applications.rb +6 -0
  384. data/spec/factories/dummy_people.rb +6 -0
  385. data/spec/factories/dummy_users.rb +6 -0
  386. data/spec/factories/elements.rb +35 -10
  387. data/spec/factories/email_templates.rb +5 -0
  388. data/spec/factories/fe_addresses.rb +10 -10
  389. data/spec/factories/fe_email_addresses.rb +3 -3
  390. data/spec/factories/fe_email_templates.rb +9 -0
  391. data/spec/factories/fe_people.rb +5 -7
  392. data/spec/factories/fe_phone_numbers.rb +3 -3
  393. data/spec/factories/fe_user.rb +6 -0
  394. data/spec/factories/page.rb +1 -1
  395. data/spec/factories/page_elements.rb +1 -1
  396. data/spec/factories/paragraphs.rb +1 -1
  397. data/spec/factories/question_sheet.rb +3 -3
  398. data/spec/factories/reference_questions.rb +1 -1
  399. data/spec/factories/reference_sheets.rb +9 -0
  400. data/spec/jobs/fe/update_reference_sheet_visibility_job_spec.rb +40 -0
  401. data/spec/mailers/fe/notifier_spec.rb +39 -0
  402. data/spec/models/fe/answer_sheet_question_sheet_spec.rb +1 -1
  403. data/spec/models/fe/answer_spec.rb +2 -2
  404. data/spec/models/fe/application_spec.rb +94 -1
  405. data/spec/models/fe/choice_field_spec.rb +66 -0
  406. data/spec/models/fe/condition_spec.rb +2 -2
  407. data/spec/models/fe/element_spec.rb +414 -37
  408. data/spec/models/fe/email_template_spec.rb +1 -1
  409. data/spec/models/fe/page_element_spec.rb +1 -1
  410. data/spec/models/fe/page_spec.rb +168 -11
  411. data/spec/models/fe/person_spec.rb +1 -1
  412. data/spec/models/fe/question_set_spec.rb +91 -0
  413. data/spec/models/fe/question_sheet_spec.rb +103 -1
  414. data/spec/models/fe/question_spec.rb +73 -6
  415. data/spec/models/fe/reference_question_spec.rb +20 -0
  416. data/spec/models/fe/reference_sheet_spec.rb +305 -2
  417. data/spec/models/fe/text_field_spec.rb +22 -0
  418. data/spec/rails_helper.rb +85 -54
  419. data/spec/support/choices.xml +6 -0
  420. metadata +310 -84
  421. data/app/assets/javascripts/fe/fe.common.js +0 -57
  422. data/app/assets/javascripts/fe/jquery.scrollTo-min.js +0 -7
  423. data/app/assets/javascripts/fe/rails.extra.js +0 -6
  424. data/app/controllers/fe/applications_controller.rb +0 -183
  425. data/app/controllers/fe/concerns/answer_pages_controller_concern.rb +0 -83
  426. data/app/controllers/fe/payments_controller.rb +0 -184
  427. data/app/models/fe/concerns/answer_sheet_concern.rb +0 -55
  428. data/app/models/fe/payment.rb +0 -77
  429. data/app/models/fe/payment_question.rb +0 -22
  430. data/app/views/fe/admin/panels/_prop_payment_question.html.erb +0 -1
  431. data/app/views/fe/application/_logout.html.erb +0 -1
  432. data/app/views/fe/payment_pages/_credit.html.erb +0 -47
  433. data/app/views/fe/payment_pages/_mail.html.erb +0 -27
  434. data/app/views/fe/payment_pages/_payment.html.erb +0 -6
  435. data/app/views/fe/payment_pages/_staff.html.erb +0 -25
  436. data/app/views/fe/payment_pages/_staff_results.html.erb +0 -17
  437. data/app/views/fe/payment_pages/edit.html.erb +0 -75
  438. data/app/views/fe/payment_pages/staff_search.js.erb +0 -2
  439. data/app/views/fe/payments/_credit.html.erb +0 -47
  440. data/app/views/fe/payments/_errors.html.erb +0 -1
  441. data/app/views/fe/payments/_payment.html.erb +0 -13
  442. data/app/views/fe/payments/_staff.html.erb +0 -21
  443. data/app/views/fe/payments/_staff_results.html.erb +0 -18
  444. data/app/views/fe/payments/approve.js.erb +0 -3
  445. data/app/views/fe/payments/create.js.erb +0 -19
  446. data/app/views/fe/payments/destroy.js.erb +0 -7
  447. data/app/views/fe/payments/edit.html.erb +0 -56
  448. data/app/views/fe/payments/error.js.erb +0 -3
  449. data/app/views/fe/payments/no_access.html.erb +0 -7
  450. data/app/views/fe/payments/staff_search.js.erb +0 -1
  451. data/app/views/fe/payments/update.html.erb +0 -24
  452. data/app/views/fe/questions/fe/_payment_question.html.erb +0 -70
  453. data/db/migrate/20140828045339_create_payments.rb +0 -13
  454. data/spec/dummy/db/test.sqlite3 +0 -0
  455. data/spec/factories/payments.rb +0 -7
  456. data/spec/models/fe/payment_question_spec.rb +0 -65
@@ -1,47 +0,0 @@
1
- <h3>Credit/Debit Card Payment</h3>
2
-
3
- <p>Please fill out your payment information below. NOTE: We will
4
- attempt to bill <strong><%= number_to_currency(@application.sleeve.fee_amount) %></strong> to
5
- your credit card immediately when you press the 'Submit'
6
- button below.</p>
7
-
8
- <h4>Billing Address</h4>
9
-
10
- <p class="field"><label for="payment_first_name" class="required">First Name</label>
11
- <%= text_field :payment, :first_name %></p>
12
-
13
- <p class="field"><label for="payment_last_name" class="required">Last Name</label>
14
- <%= text_field :payment, :last_name %></p>
15
-
16
- <p class="field"><label for="payment_address" class="required">Address</label>
17
- <%= text_field :payment, :address %></p>
18
-
19
- <p class="field"><label for="payment_city" class="required">City</label>
20
- <%= text_field :payment, :city %></p>
21
-
22
- <p class="field"><label for="payment_state" class="required">State</label>
23
- <%= select :payment, :state, State::NAMES, {:include_blank => true} %></p>
24
-
25
- <p class="field"><label for="payment_zip" class="required">Zip Code</label>
26
- <%= text_field :payment, :zip, {:size => "5"} %></p>
27
-
28
- <h4>Card Information</h4>
29
-
30
- <p class="field"><label for="payment_card_number" class="required">Credit Card Number</label>
31
- <%= text_field :payment, :card_number, {:size => "18", :maxlength => "16", :onblur => "checkCard(this.value);"} %>
32
- <%= image_tag "/images/cc_visa_on.gif", :class => "cc_type", :id => "cc_visa" %>
33
- <%= image_tag "/images/cc_master_on.gif", :class => "cc_type", :id => "cc_master" %>
34
- <%= image_tag "/images/cc_american_express_on.gif", :class => "cc_type", :id => "cc_american_express" %>
35
- <%= image_tag "/images/cc_discover_on.gif", :class => "cc_type", :id => "cc_discover" %>
36
- <span id="cc_invalid" style="display: none; color: red;">Invalid card number</span>
37
- <%= hidden_field :payment, :card_type %></p>
38
-
39
- <p class="field"><label for="payment_expiration_month">Expiration Date</label>
40
- <%= select :payment, :expiration_month, ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'], {:include_blank => true} %>
41
- <%= select :payment, :expiration_year, ((Time.now.year)..(Time.now.year+8)).to_a.map(&:to_s), {:include_blank => true} %></p>
42
-
43
- <p class="field"><label for="payment_card_number" class="required">Security Code (3-4 digit code on back of card)</label>
44
- <%= text_field :payment, :security_code, {:size => "9", :maxlength => "5"} %></p>
45
-
46
- <p class="buttons">
47
- <%= submit_to_remote "submit", "Submit Payment", :url => application_payments_path(@application) %></p>
@@ -1,27 +0,0 @@
1
- <h3>Check or Money Order</h3>
2
-
3
- <p>Please note that your application <strong>will not</strong> be
4
- processed until your mailed payment is received. We suggest that
5
- you take a moment right now to write your check and put it in the mail.</p>
6
-
7
- <ol>
8
- <li>Make your check or money order for <strong><%= number_to_currency(@application.sleeve.fee_amount) %></strong>
9
- payable to "Campus Crusade for Christ".</li>
10
- <li>Write your <strong>Full Name</strong> as entered on this
11
- application (<%= @application.applicant.full_name %>) on a separate
12
- piece of paper and include it in the envelope with
13
- your check.</li>
14
- </ol>
15
-
16
- <h4>Mail to:</h4>
17
-
18
- <p>Campus Crusade for Christ<br/>
19
- Dept 2500 - STINT Coordinator<br/>
20
- 100 Lake Hart Drive<br/>
21
- Orlando, FL 32832</p>
22
-
23
- <p class="buttons">
24
- <%=submit_to_remote "submit", "Click here if you have mailed your payment",
25
- :html => {:class => "button"},
26
- :url => application_payments_path(@application),
27
- :loading => "new Effect.Fade('pay_mail');" %></p>
@@ -1,6 +0,0 @@
1
- <tr id="<%= dom_id(payment) %>">
2
- <td width="25%"><%= payment.payment_type%></td>
3
- <td width="25%"><%= datestamp payment.created_at %></td>
4
- <td width="25*"><%= payment.status == "Approved" ? number_to_currency(payment.amount) : payment.status %> <% if (payment.payment_type == 'Staff' && payment.status == 'Pending') -%>(Request sent)<% end -%></td>
5
- <td width="*" style="text-align: right;"><% if (payment.payment_type != "Credit Card" && payment.status != "Approved" && !@application.frozen?) %><%= link_to_remote("Delete", {:url => application_payment_path(@application, payment), :method => :DELETE, :confirm => "Are you sure?"}, :class => "destroy")%><% end -%></td>
6
- </tr>
@@ -1,25 +0,0 @@
1
- <h3>Transfer from a Staff/Project/Scholarship Fund</h3>
2
-
3
- <p>Please enter the First and Last name of the Campus Crusade for
4
- Christ staff member who will provide the funds for your application,
5
- then press "Search for Staff". From the list of matching staff,
6
- select the correct person. An email will then be sent to them with
7
- your payment request.</p>
8
-
9
- <p>Please note that your application <strong>can not be processed</strong>
10
- until they initiate the funds transfer. Once the staff member responds,
11
- an email will be sent to you.</p>
12
-
13
- <h4>Search for Staff</h4>
14
-
15
- <p><label for="payment_staff_first">First &amp; Last Name</label>
16
- <%= text_field :payment, :staff_first, {:size => 10, :onkeydown => "submitOnEnter('submit_staff_search',event);" }%>
17
- <%= text_field :payment, :staff_last, {:size => 10, :onkeydown => "submitOnEnter('submit_staff_search',event);" }%>
18
- <%=submit_to_remote "submit_staff_search", "Search", :html => {:class => "button", :id => "submit_staff_search"},
19
- :url => staff_search_application_payment_page_path(@application),
20
- :loading => "Element.show('spinner_staff2');" %>
21
- <%= image_tag "/images/fe/ajax-loader.gif", :id => "spinner_staff", :style => 'display:none' %></p>
22
-
23
- <div id="staff_results"></div>
24
-
25
-
@@ -1,17 +0,0 @@
1
- <% if @results.nil? -%>
2
- <strong>Please provide the first and last name of the person you want to search for. Partial names will work too (e.g. John S).</strong>
3
- <% elsif @results.size == 0 -%>
4
- <strong>Sorry, we could not find anyone with the name you specified. Please try again.</strong>
5
- <% else -%>
6
- <p>Send a payment request to:</p>
7
-
8
- <ul style="margin-left: 35px;">
9
- <% @results.each do |staff| -%>
10
- <li style="margin: 0;"><%= radio_button :payment, :payment_account_no, staff.accountNo -%>
11
- <label for="payment_payment_account_no_<%=staff.accountNo%>" style="display: inline; float: none; font-weight: normal;"><%= staff.firstName %> <%= staff.lastName %> &lt;<i><%= staff.email %></i>&gt;</label></li>
12
- <% end -%>
13
- </ul>
14
-
15
- <p class="buttons">
16
- <%= submit_to_remote "submit", "Send Payment Request", :url => application_payments_path(@application) %></p>
17
- <% end -%>
@@ -1,75 +0,0 @@
1
- <% page_dom = 'payment_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>Payment</h2>
7
-
8
- <div id="page-preview">
9
- <div class="page">
10
-
11
- <%= form_tag application_payment_page_path(@application), :id => "#{page_dom}-form", :onsubmit => next_js + "; return false;" do -%>
12
-
13
- <p>Application Fee: <%= number_to_currency(@application.sleeve.fee_amount) %></p>
14
-
15
- <p>Current payments:</p>
16
- <table cellspacing="0" class="list" style="margin-bottom: 27px; width: 95%;">
17
- <tbody id="payment_table">
18
- <tr>
19
- <th>Payment Type</th>
20
- <th>Payment Date</th>
21
- <th>Amount Paid</th>
22
- <th>&nbsp;</th>
23
- </tr>
24
- <% @application.payments.each do |payment| -%>
25
- <%= render :partial => 'payment', :locals => {:payment => payment}%>
26
- <% end -%>
27
- <td colspan="3" id="no-payments" <% if @application.payments.length > 0 -%>style="display: none;"<% end -%>>You have not yet applied any payments to this application.</td>
28
- </tbody>
29
- </table>
30
-
31
- <p>Please select one of the following three options for paying your application fee.</p>
32
-
33
- <ul class="list-choices">
34
- <li><%= radio_button :payment, :payment_type, "Credit Card", {:onclick => "swapPayment('credit');",
35
- :disabled => @application.frozen?&&@reference.nil?,
36
- :readonly => @application.frozen?&&@reference.nil?} %>
37
- <label for="payment_payment_type_credit_card">Credit/Debit Card (Fastest - Processed immediately online)</label></li>
38
- <li><%= radio_button :payment, :payment_type, "Mail", {:onclick => "swapPayment('mail');",
39
- :disabled => @application.frozen?&&@reference.nil?,
40
- :readonly => @application.frozen?&&@reference.nil?} %>
41
- <label for="payment_payment_type_mail">Check or Money Order via Postal Mail</label></li>
42
- <li><%= radio_button :payment, :payment_type, "Staff", {:onclick => "swapPayment('staff');",
43
- :disabled => @application.frozen?&&@reference.nil?,
44
- :readonly => @application.frozen?&&@reference.nil?} %>
45
- <label for="payment_payment_type_staff">Transfer from a Staff/Project/Scholarship Fund</label></li>
46
- </ul>
47
-
48
- <div id="payment_errors">
49
- <%= render :partial => "payments/errors", :locals => {:payment => @payment} %>
50
- </div>
51
-
52
- <div id="pay_credit" class="pay_view" <% unless @payment.payment_type == "Credit Card" -%>style="display: none;"<% end -%>>
53
- <%= render :partial => 'credit' %>
54
- </div>
55
-
56
- <div id="pay_mail" class="pay_view" <% unless @payment.payment_type == "Mail" -%>style="display: none;"<% end -%>>
57
- <%= render :partial => 'mail' %>
58
- </div>
59
-
60
- <div id="pay_staff" class="pay_view" <% unless @payment.payment_type == "Staff" -%>style="display: none;"<% end -%>>
61
- <%= render :partial => 'staff' %>
62
- </div>
63
-
64
- <% end -%>
65
-
66
- <%= button_to_function "Next", next_js unless next_js.empty? %>
67
-
68
- </div>
69
- </div>
70
-
71
- </div>
72
-
73
- <script language="javascript" type="text/javascript">
74
-
75
- </script>
@@ -1,2 +0,0 @@
1
- page.replace_html 'staff_results', :partial => 'staff_results'
2
- page.hide 'spinner_staff'
@@ -1,47 +0,0 @@
1
- <h3>Credit/Debit Card Payment</h3>
2
-
3
- <p>Please fill out your payment information below. NOTE: We will
4
- attempt to bill <strong><%= number_to_currency(Fe::Application::COST) %></strong> to
5
- your credit card immediately when you press the 'Submit'
6
- button below.</p>
7
-
8
- <h4>Billing Address</h4>
9
-
10
- <p class="field"><label for="payment_first_name" class="required">First Name</label>
11
- <%= text_field :payment, :first_name %></p>
12
-
13
- <p class="field"><label for="payment_last_name" class="required">Last Name</label>
14
- <%= text_field :payment, :last_name %></p>
15
-
16
- <p class="field"><label for="payment_address" class="required">Address</label>
17
- <%= text_field :payment, :address %></p>
18
-
19
- <p class="field"><label for="payment_city" class="required">City</label>
20
- <%= text_field :payment, :city %></p>
21
-
22
- <p class="field"><label for="payment_state" class="required">State</label>
23
- <%= select :payment, :state, State::NAMES, {:include_blank => true} %></p>
24
-
25
- <p class="field"><label for="payment_zip" class="required">Zip Code</label>
26
- <%= text_field :payment, :zip, {:size => "5"} %></p>
27
-
28
- <h4>Card Information</h4>
29
-
30
- <p class="field"><label for="payment_card_number" class="required">Credit Card Number</label>
31
- <%= text_field :payment, :card_number, {:size => "18", :maxlength => "16"} %> <!-- , :onblur => "checkCard(this.value);" -->
32
- <%= image_tag "/images/cc_visa_on.gif", :class => "cc_type", :id => "cc_visa" %>
33
- <%= image_tag "/images/cc_master_on.gif", :class => "cc_type", :id => "cc_master" %>
34
- <%= image_tag "/images/cc_american_express_on.gif", :class => "cc_type", :id => "cc_american_express" %>
35
- <%= image_tag "/images/cc_discover_on.gif", :class => "cc_type", :id => "cc_discover" %>
36
- <span id="cc_invalid" style="display: none; color: red;">Invalid card number</span>
37
- <%= hidden_field :payment, :card_type %></p>
38
-
39
- <p class="field"><label for="payment_expiration_month">Expiration Date</label>
40
- <%= select :payment, :expiration_month, ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'], {:include_blank => true} %>
41
- <%= select :payment, :expiration_year, ((Time.now.year)..(Time.now.year+8)).to_a.map(&:to_s), {:include_blank => true} %></p>
42
-
43
- <p class="field"><label for="payment_card_number" class="required">Security Code (3-4 digit code on back of card)</label>
44
- <%= text_field :payment, :security_code, {:size => "9", :maxlength => "5"} %></p>
45
-
46
- <p class="buttons">
47
- <%= submit_tag "Submit Payment", :class => 'submit_payment', 'data-url' => fe_application_payments_path(@application) %></p>
@@ -1 +0,0 @@
1
- <%= error_messages_for :payment %>
@@ -1,13 +0,0 @@
1
- <tr id="<%= dom_id(payment) %>" class="payment">
2
- <td><%= payment.payment_type%></td>
3
- <td><%= l(payment.created_at) if payment.created_at %></td>
4
- <td>
5
- <%= payment.status == "Approved" ? number_to_currency(payment.amount) : payment.status %>
6
- <% if (payment.payment_type == 'Staff' && payment.status == 'Pending') -%>(Request sent)<% end -%>
7
- </td>
8
- <td style="text-align: right;">
9
- <% if (payment.payment_type != "Credit Card" && !payment.approved? && !@application.frozen?) %>
10
- <%= link_to("Delete", fe_application_payment_path(@application, payment), :method => :delete, :data => { :confirm => "Are you sure?" }, :remote => true, :class => "destroy")%>
11
- <% end -%>
12
- </td>
13
- </tr>
@@ -1,21 +0,0 @@
1
- <h3>Transfer from a Staff/Project/Scholarship Fund</h3>
2
-
3
- <p>Please enter the First and Last name of the Campus Crusade for
4
- Christ staff member who will provide the funds for your application,
5
- then press "Search for Staff". From the list of matching staff,
6
- select the correct person. An email will then be sent to them with
7
- your payment request.</p>
8
-
9
- <p>Please note that your application <strong>can not be processed</strong>
10
- until they initiate the funds transfer. Once the staff member responds,
11
- an email will be sent to you.</p>
12
-
13
- <h4>Search for Staff</h4>
14
-
15
- <p><label for="payment_staff_first">First &amp; Last Name</label>
16
- <%= text_field :payment, :staff_first, { :size => 10 }%>
17
- <%= text_field :payment, :staff_last, { :size => 10 }%>
18
- <%= submit_tag "Search", :id => 'staff_search', :class => 'submit_payment', 'data-url' => staff_search_fe_application_payments_path(@application) %>
19
- </p>
20
-
21
- <div id="staff_results"></div>
@@ -1,18 +0,0 @@
1
- <% if @results.nil? -%>
2
- <strong>Please provide the first and last name of the person you want to search for. Partial names will work too (e.g. John S).</strong>
3
- <% elsif @results.size == 0 -%>
4
- <strong>Sorry, we could not find anyone with the name you specified. Please try again.</strong>
5
- <% else -%>
6
- <p>Send a payment request to:</p>
7
-
8
- <ul style="margin-left: 35px;">
9
- <% @results.each do |staff| -%>
10
- <li style="margin: 0;"><%= radio_button :payment, :payment_account_no, staff.accountNo, :onclick => "$('#staff_submit').show()" -%>
11
- <label for="payment_payment_account_no_<%=staff.accountNo%>" style="display: inline; float: none; font-weight: normal;"><%= staff.firstName %> <%= staff.lastName %> &lt;<i><%= staff.email %></i>&gt;</label></li>
12
- <% end -%>
13
- </ul>
14
-
15
- <p class="buttons">
16
- <%= submit_tag "Submit Payment", :id => 'staff_submit', :class => 'submit_payment', 'data-url' => fe_application_payments_path(@application), :style => 'display:none' %>
17
- </p>
18
- <% end -%>
@@ -1,3 +0,0 @@
1
- $('#auth_code<%= @payment.id %>').html('<%= @payment.auth_code %>')
2
- $('#payment_status<%= @payment.id %>').html('Approved')
3
- $('#page_ajax_spinner').hide()
@@ -1,19 +0,0 @@
1
- $.scrollTo('.paymentquestion')
2
- $('.pay_view').hide();
3
- <% if @payment.errors.empty? %>
4
- $("#no-payments").hide();
5
- $('#payment_table').append('<%= escape_javascript(render('payment', :payment => @payment)) %>')
6
- $('#payment_table').effect('highlight')
7
- $('#payment_choices').hide()
8
- <% else %>
9
- $('#payment_errors').html('<%= escape_javascript(render('errors', :payment => @payment)) %>')
10
- <% case @payment.payment_type %>
11
- <% when "Credit Card" %>
12
- $('#pay_credit').html('<%= escape_javascript(render('credit')) %>')
13
- $('#pay_credit').show();
14
- <% when "Mail" %>
15
- $('#pay_mail').show();
16
- <% when "Staff" %>
17
- $('#pay_staff').show();
18
- <% end %>
19
- <% end %>
@@ -1,7 +0,0 @@
1
- $('#<%= dom_id(@payment) %>').remove()
2
- $('#payment_table').effect('highlight')
3
- <% if @application.payments.empty? %>
4
- $('#payment_choices').show()
5
- $("#no-payments").show();
6
- <% end %>
7
- $('#page_ajax_spinner').hide()
@@ -1,56 +0,0 @@
1
- <% person = @application.applicant %>
2
- <% @title = "Receive Payments" %>
3
-
4
- <div id="controls">
5
- <div id="panel">
6
- <div class="panel">
7
- <p>Please fully read the instructions to the right and complete the
8
- necessary fields. Click "Process Payment" when you are done.</p>
9
- </div>
10
- </div>
11
- </div>
12
-
13
-
14
- <div id="preview">
15
- <%= form_tag application_payment_path(@application, @payment), :method => :put do -%>
16
-
17
- <h2>Staff Account Transfer Payment</h2>
18
-
19
- <div class="page" style="padding: 18px;">
20
- <p><b><%= person.informal_full_name %></b> has just applied for an exciting missions opportunity this
21
- summer with Campus Crusade for Christ and has indicated you have agreed to
22
- pay the application fee of <%= number_to_currency(@payment.amount) %>.</p>
23
-
24
- <p>If you could take a minute and indicate the account
25
- to use, we can continue with the application process. The application materials
26
- will then be reviewed and a decision will be given as soon as possible.</p>
27
-
28
- <p>The applicant's application will not be processed until payment is made.
29
- Thank you for your help in sending this applicant into the harvest!</p>
30
-
31
- <p>You may contact the applicant by email at <b><%= person.current_address.email %></b>
32
- or by phone at <b><%= person.current_address.home_phone %></b>.</p>
33
-
34
- <p>Please choose one of the following options:</p>
35
-
36
- <p style="font-weight: bold;">Choose Payment type:</p>
37
- <ul class="list-choices">
38
- <li><%= radio_button :payment, :status, "Denied" %>
39
- <label for="payment_status_denied" style="display:inline">I do not want to pay for this applicant's application.</label></li>
40
- <li><%= radio_button :payment, :status, "Approved" %>
41
- <label for="payment_status_approved" style="display:inline">I authorize <%= number_to_currency(@payment.amount) %> to be transferred from my account (<%= @payment.payment_account_no %>) for this applicant's application.</label></li>
42
- <li><%= radio_button :payment, :status, "Other Account" %>
43
- I authorize <%= number_to_currency(@payment.amount) %> to be transferred from this specific account:<br/>
44
- <div style="margin-left: 25px;"><%= text_field_tag :other_account, '', :size => 30 %><br />
45
- IMPORTANT: If you enter another account and the number you enter is not a
46
- valid account, your <strong>PERSONAL</strong> account (<%= @payment.payment_account_no %>)
47
- will be charged. The account designation should be in the new format
48
- similar to: 'CAMPS/NCO/MYDEPT/MYPROJ'</div></li>
49
- </ul>
50
-
51
- <p class="buttons"><%= submit_tag "Process Payment" %></p>
52
-
53
- <% end -%>
54
- </div>
55
-
56
- </div>
@@ -1,3 +0,0 @@
1
- $.scrollTo('.paymentquestion');
2
- $('.pay_view').hide();
3
- $('#payment_errors').html('<%= escape_javascript(render('errors', :payment => @payment)) %>');
@@ -1,7 +0,0 @@
1
- <p>
2
- <% if current_person.isStaff? %>
3
- Sorry, but the payment you are trying to view is not a Staff Transfer.
4
- <% else %>
5
- Sorry, but you need to be on staff to approve a Staff Transfer.
6
- <% end %>
7
- If you have any questions, email <a href="mailto:gosummerproject@uscm.org">gosummerproject@uscm.org</a>. </p>
@@ -1 +0,0 @@
1
- $('#staff_results').html('<%= escape_javascript(render('staff_results')) %>')
@@ -1,24 +0,0 @@
1
- <% @title = "Receive Payments" %>
2
-
3
- <div id="controls">
4
- <div id="panel">
5
- <div class="panel">
6
- <p>Thank you.</p>
7
- </div>
8
- </div>
9
- </div>
10
-
11
-
12
- <div id="preview">
13
- <h2>Staff Account Transfer Payment</h2>
14
- <div class="page" style="padding: 18px;">
15
- <% if @payment.approved? -%>
16
- Thank you for paying the application fee for <%= @person.informal_full_name %>'s applcation.
17
- <% else -%>
18
- Thank you for taking the time to deny <%= @person.informal_full_name %>'s
19
- scholarship request.
20
- <% end -%>
21
- <br /><br />
22
- You may close this window now.
23
- </div>
24
- </div>
@@ -1,70 +0,0 @@
1
- <% @payment = Fe::Payment.new %>
2
- <% @application = @answer_sheet %>
3
- <div id="<%= dom_id(payment_question) %>" class="payment_question <%= 'required' if payment_question.required? %>">
4
- <h2>
5
- Payment
6
- </h2>
7
- <% if @application %>
8
- <p class="appfee">
9
- Application Fee: <%= number_to_currency(Fe::Application::COST) %>
10
- </p>
11
- <p class="currpayments">
12
- Current payments:
13
- </p>
14
- <table cellspacing="0" class="list" style="margin-bottom: 27px; width: 100%;">
15
- <thead>
16
- <tr>
17
- <th>
18
- Payment Type
19
- </th>
20
- <th>
21
- Payment Date
22
- </th>
23
- <th>
24
- Amount Paid
25
- </th>
26
- <th>
27
- &nbsp;
28
- </th>
29
- </tr>
30
- </thead>
31
- <tbody id="payment_table">
32
- <% if @application.payments.empty? %>
33
- <tr>
34
- <td colspan="4" id="no-payments" <% if @application.payments.length > 0 -%> style="display: none;" <% end -%>>
35
- You have not yet applied any payments to this application.
36
- </td>
37
- </tr>
38
- <% else %>
39
- <% @application.payments.each do |payment| -%><%= render :partial => 'fe/payments/payment', :locals => {:payment => payment}%><% end -%>
40
- <% end %>
41
- </tbody>
42
- </table>
43
- <div id="payment_choices" style="<%= 'display:none' unless @application.payments.non_denied.empty? %>">
44
- <p>
45
- Please select one of the following three options for paying your application fee.
46
- </p>
47
- <div id="payment_errors">
48
- <%= render :partial => "fe/payments/errors", :locals => {:payment => @payment} %>
49
- </div>
50
- <ul class="list-choices">
51
- <li>
52
- <div class="field field_check">
53
- <%= radio_button :payment, :payment_type, "Credit Card", {:onclick => "swapPayment('credit');"} %><label for="payment_payment_type_credit_card">Credit/Debit Card (Fastest - Processed immediately online)</label>
54
- <div id="pay_credit" class="pay_view" <% unless @payment.payment_type == "Credit Card" -%> style="display: none;" <% end -%>>
55
- <%= render :partial => 'fe/payments/credit' %>
56
- </div>
57
- </div>
58
- </li>
59
- <li>
60
- <div class="field field_check">
61
- <%= radio_button :payment, :payment_type, "Staff", {:onclick => "swapPayment('staff');"} %><label for="payment_payment_type_staff">Transfer from a Staff/Project/Scholarship Fund</label>
62
- <div id="pay_staff" class="pay_view" <% unless @payment.payment_type == "Staff" -%> style="display: none;" <% end -%>>
63
- <%= render :partial => 'fe/payments/staff' %>
64
- </div>
65
- </div>
66
- </li>
67
- </ul>
68
- </div>
69
- <% end -%>
70
- </div>
@@ -1,13 +0,0 @@
1
- class CreatePayments < ActiveRecord::Migration
2
- def change
3
- create_table Fe::Payment.table_name do |t|
4
- t.timestamps
5
- t.integer "application_id"
6
- t.string "payment_type"
7
- t.string "amount"
8
- t.string "payment_account_no"
9
- t.string "auth_code"
10
- t.string "status"
11
- end
12
- end
13
- end
Binary file
@@ -1,7 +0,0 @@
1
- FactoryGirl.define do
2
- factory :payment, class: 'Fe::Payment' do
3
- association :application
4
- payment_type 'String'
5
- amount 1
6
- end
7
- end
@@ -1,65 +0,0 @@
1
- require 'rails_helper'
2
-
3
- describe Fe::PaymentQuestion do
4
- before(:all) do
5
- @person = create(:fe_person)
6
- @application = create(:application, applicant: @person)
7
- @payment_question = Fe::PaymentQuestion.new
8
- end
9
-
10
- describe "when calling 'response' function" do
11
- it 'returns a new payment if no application specified' do
12
- response = @payment_question.send(:response)
13
- expect(response.new_record?).to be_truthy
14
- end
15
- it 'returns the existing application payment if the application already have payments' do
16
- payment = create(:payment, application: @application)
17
- response = @payment_question.send(:response, @application).first
18
- expect(response.id).to be payment.id
19
- end
20
- it 'returns a new application payment if the application do not have payments yet' do
21
- response = @payment_question.send(:response, @application)
22
- expect(response).not_to be nil
23
- end
24
- end
25
-
26
- describe "when calling 'display_response' function" do
27
- it 'returns a blank string if no application specified' do
28
- expect(@payment_question).to receive(:response)
29
- response = @payment_question.send(:display_response)
30
- expect(response).to eq('')
31
- end
32
- it 'returns an existing application payment string if the application already have payments' do
33
- payment = create(:payment, application: @application)
34
- expect(@payment_question).to receive(:response).with(@application).and_return(payment)
35
- response = @payment_question.send(:display_response, @application)
36
- expect(response).not_to be_blank
37
- end
38
- it 'returns a blank string if the application do not have payments yet' do
39
- expect(@payment_question).to receive(:response).with(@application)
40
- response = @payment_question.send(:display_response, @application)
41
- expect(response).to eq('')
42
- end
43
- end
44
-
45
- #describe "when calling 'has_response' function" do
46
- #before(:each) do
47
- #question_sheet = create(:question_sheet)
48
- #answer_sheet = create(:answer_sheet)
49
- #answer_sheet_question_sheet = create(:answer_sheet_question_sheet, answer_sheet: answer_sheet, question_sheet: question_sheet)
50
- #end
51
- #it "returns a boolean 'false' if no application specified" do
52
- #response = @payment_question.send(:has_response?)
53
- #response.should be false
54
- #end
55
- #it "returns a boolean 'true' if the application already have payments" do
56
- #payment = create(:payment, application: @application)
57
- #response = @payment_question.send(:has_response?, @application)
58
- #response.should be true
59
- #end
60
- #it "returns a boolean 'false' if the application do not have payments yet" do
61
- #response = @payment_question.send(:has_response?, @application)
62
- #response.should be false
63
- #end
64
- #end
65
- end