fe 1.0.0 → 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 (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
@@ -16,7 +16,7 @@ describe Fe::AnswerSheetsController, type: :controller do
16
16
  it 'should work' do
17
17
  create(:answer_sheet_question_sheet, question_sheet: question_sheet, answer_sheet: answer_sheet)
18
18
 
19
- post :create, question_sheet_id: question_sheet.id
19
+ post :create, params: {question_sheet_id: question_sheet.id}
20
20
  expect(assigns(:answer_sheet)).to_not be_nil
21
21
  end
22
22
  end
@@ -25,7 +25,7 @@ describe Fe::AnswerSheetsController, type: :controller do
25
25
  create(:answer_sheet_question_sheet, question_sheet: question_sheet, answer_sheet: answer_sheet)
26
26
  page = create(:page, question_sheet: question_sheet)
27
27
 
28
- get :edit, id: answer_sheet.id
28
+ get :edit, params: {id: answer_sheet.id}
29
29
  expect(assigns(:elements)).to eq([])
30
30
  expect(assigns(:page)).to eq(page)
31
31
  end
@@ -35,7 +35,7 @@ describe Fe::AnswerSheetsController, type: :controller do
35
35
  create(:answer_sheet_question_sheet, question_sheet: question_sheet, answer_sheet: answer_sheet)
36
36
  request.env['HTTP_REFERER'] = '/referrer'
37
37
 
38
- get :edit, id: answer_sheet.id
38
+ get :edit, params: {id: answer_sheet.id}
39
39
  expect(response).to redirect_to('http://test.host/referrer')
40
40
  end
41
41
  end
@@ -43,22 +43,63 @@ describe Fe::AnswerSheetsController, type: :controller do
43
43
  it 'should render an empty page with a flash message' do
44
44
  create(:answer_sheet_question_sheet, question_sheet: question_sheet, answer_sheet: answer_sheet)
45
45
 
46
- get :edit, id: answer_sheet.id
46
+ get :edit, params: {id: answer_sheet.id}
47
47
  expect(response.body['Sorry, there are no questions for this form yet.']).to_not be_nil
48
48
  end
49
49
  end
50
50
  end
51
51
  end
52
52
  context '#show' do
53
+ let(:page) { create(:page, question_sheet: question_sheet) }
54
+ let(:el_confidential) { create(:text_field_element, is_confidential: true) }
55
+ let(:el_visible) { create(:text_field_element, is_confidential: false) }
56
+
57
+ before do
58
+ answer_sheet.question_sheets << question_sheet
59
+ end
60
+
53
61
  it 'should work' do
54
- create(:answer_sheet_question_sheet, question_sheet: question_sheet, answer_sheet: answer_sheet)
55
- page = create(:page, question_sheet: question_sheet)
56
62
  text_field = create(:text_field_element)
57
- create(:page_element, element: text_field, page: page)
63
+ page.elements << text_field
58
64
 
59
- get :show, id: answer_sheet.id
65
+ get :show, params: {id: answer_sheet.id}
60
66
  expect(assigns(:elements)).to eq(page => [text_field])
61
67
  end
68
+ context 'filtering' do
69
+ let(:el_confidential) { create(:text_field_element, is_confidential: true) }
70
+ let(:el_visible) { create(:text_field_element, is_confidential: false) }
71
+ let(:el_visible2) { create(:text_field_element, is_confidential: false) }
72
+
73
+ before do
74
+ page.elements << el_confidential << el_visible << el_visible2
75
+ end
76
+
77
+ it 'should filter out elements' do
78
+ allow_any_instance_of(Fe::AnswerSheetsController).to receive(:get_filter).and_return(filter_default: :show, filter: [ :is_confidential ])
79
+
80
+ get :show, params: {id: answer_sheet.id}
81
+ expect(assigns(:elements)).to eq(page => [el_visible, el_visible2])
82
+ end
83
+ it 'should filter in elements' do
84
+ allow_any_instance_of(Fe::AnswerSheetsController).to receive(:get_filter).and_return(filter_default: :hide, filter: [ :is_confidential ])
85
+
86
+ get :show, params: {id: answer_sheet.id}
87
+ expect(assigns(:elements)).to eq(page => [el_confidential])
88
+ end
89
+ end
90
+ context 'element on multiple pages' do
91
+ let!(:question_sheet2) { create(:question_sheet) }
92
+ let!(:page2) { create(:page, question_sheet: question_sheet2) }
93
+
94
+ it 'should pull the right page' do
95
+ text_field = create(:text_field_element)
96
+ page.elements << text_field
97
+ page2.elements << text_field
98
+
99
+ get :show, params: {id: answer_sheet.id}
100
+ expect(assigns(:elements)).to eq(page => [text_field])
101
+ end
102
+ end
62
103
  end
63
104
  context '#send_reference_invite' do
64
105
  it 'should work' do
@@ -70,7 +111,14 @@ describe Fe::AnswerSheetsController, type: :controller do
70
111
  create(:email_template, name: 'Reference Invite')
71
112
  create(:email_template, name: 'Reference Notification to Applicant')
72
113
 
73
- xhr :post, :send_reference_invite, reference: { ref_sheet.id.to_s => { relationship: 'rel', title: 'title', first_name: 'first_name', last_name: 'last_name', phone: 'phone', email: 'email@email.com' } }, reference_id: ref_sheet.id, id: answer_sheet.id
114
+ post :send_reference_invite, params: {
115
+ reference: {
116
+ ref_sheet.id.to_s => {
117
+ relationship: 'rel', title: 'title', first_name: 'first_name',
118
+ last_name: 'last_name', phone: 'phone', email: 'email@email.com' }
119
+ },
120
+ reference_id: ref_sheet.id, id: answer_sheet.id
121
+ }, xhr: true
74
122
  ref_sheet.reload
75
123
  expect(ref_sheet.relationship).to eq('rel')
76
124
  expect(ref_sheet.title).to eq('title')
@@ -80,4 +128,12 @@ describe Fe::AnswerSheetsController, type: :controller do
80
128
  expect(ref_sheet.email).to eq('email@email.com')
81
129
  end
82
130
  end
131
+ context '#pages' do
132
+ it 'filters out hidden pages' do
133
+ create(:answer_sheet_question_sheet, question_sheet: question_sheet, answer_sheet: answer_sheet)
134
+ page = create(:page, question_sheet: question_sheet)
135
+ page2 = create(:page, question_sheet: question_sheet, hidden: true)
136
+ expect(answer_sheet.pages).to eq([page])
137
+ end
138
+ end
83
139
  end
File without changes
@@ -1,3 +1,3 @@
1
- class User < ActiveRecord::Base
1
+ class User < ApplicationRecord
2
2
  has_one :person
3
3
  end
@@ -2,8 +2,8 @@
2
2
  <html>
3
3
  <head>
4
4
  <title>Dummy</title>
5
- <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
6
- <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
5
+ <%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>
6
+ <%= javascript_include_tag "application", "data-turbolinks-track" => true %>
7
7
  <%= csrf_meta_tags %>
8
8
  </head>
9
9
  <body>
@@ -1,3 +1,4 @@
1
+ require 'uri'
1
2
  require File.expand_path('../boot', __FILE__)
2
3
 
3
4
  # Pick the frameworks you want:
@@ -13,8 +13,8 @@ Rails.application.configure do
13
13
  config.eager_load = false
14
14
 
15
15
  # Configure static asset server for tests with Cache-Control for performance.
16
- config.serve_static_files = true
17
- config.static_cache_control = 'public, max-age=3600'
16
+ config.public_file_server.enabled = true
17
+ config.public_file_server.headers = { 'Cache-Control' => 'public, max-age=3600' }
18
18
 
19
19
  # Show full error reports and disable caching.
20
20
  config.consider_all_requests_local = true
@@ -37,5 +37,5 @@ Rails.application.configure do
37
37
  # Raises error for missing translations
38
38
  # config.action_view.raise_on_missing_translations = true
39
39
 
40
- config.action_mailer.default_url_options = { :host => 'test.com' }
40
+ config.action_mailer.default_url_options = { host: 'test.com' }
41
41
  end
@@ -4,5 +4,8 @@
4
4
  Rails.application.config.assets.version = '1.0'
5
5
 
6
6
  # Precompile additional assets.
7
- # application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
8
- # Rails.application.config.assets.precompile += %w( search.js )
7
+
8
+ # javascripts
9
+ Rails.application.config.assets.precompile += %w(fe/fe.public.js)
10
+ # images
11
+ Rails.application.config.assets.precompile += %w(fe/ajax-loader.gif fe/status.gif fe/icons/question-balloon.png)
@@ -1,4 +1,4 @@
1
- FastGettext.add_text_domain 'app', :path => 'locale', :type => :po
1
+ FastGettext.add_text_domain 'app', path: 'locale', type: :po
2
2
  FastGettext.default_available_locales = ['en', 'fr'] #all you want to allow
3
3
  FastGettext.default_text_domain = 'app'
4
4
  FastGettext.locale = 'en'
@@ -0,0 +1,5 @@
1
+ class Hash
2
+ def to_unsafe_h
3
+ self
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class Hash
2
+ def to_unsafe_h
3
+ self
4
+ end
5
+ end
@@ -1,9 +1,9 @@
1
1
  # This migration comes from fe_engine (originally 20131003041856)
2
- class Core < ActiveRecord::Migration
2
+ class Core < ActiveRecord::Migration[4.2]
3
3
  def change
4
4
  create_table Fe::QuestionSheet.table_name do |t|
5
- t.string :label, :limit => 100, :null => false # name used internally in admin
6
- t.boolean :archived, :default => false, :nil => false
5
+ t.string :label, limit: 100, null: false # name used internally in admin
6
+ t.boolean :archived, default: false, nil: false
7
7
  t.timestamps
8
8
  end
9
9
 
@@ -17,33 +17,33 @@
17
17
  add_index Fe.answer_sheet_class.constantize.table_name, :applicant_id, name: 'question_sheet_id'
18
18
 
19
19
  create_table Fe::Page.table_name do |t|
20
- t.integer :question_sheet_id, :null => false
21
- t.string :label, :limit => 60, :null => false # page title
20
+ t.integer :question_sheet_id, null: false
21
+ t.string :label, limit: 60, null: false # page title
22
22
  t.integer :number # page number (order)
23
- t.boolean :no_cache, :default => false
24
- t.boolean :hidden, :default => false
23
+ t.boolean :no_cache, default: false
24
+ t.boolean :hidden, default: false
25
25
  t.timestamps
26
26
  end
27
27
 
28
28
  create_table Fe::Element.table_name do |t|
29
- t.integer :question_grid_id, :null => true
30
- t.string :kind, :limit => 40, :null => false # single table inheritance: class name
31
- t.string :style, :limit => 40 # render style
32
- t.string :label, :limit => 255 # question label, section heading
33
- t.text :content, :null => true # for content/instructions, and for choices (one per line)
29
+ t.integer :question_grid_id, null: true
30
+ t.string :kind, limit: 40, null: false # single table inheritance: class name
31
+ t.string :style, limit: 40 # render style
32
+ t.string :label, limit: 255 # question label, section heading
33
+ t.text :content, null: true # for content/instructions, and for choices (one per line)
34
34
  t.boolean :required # question is required?
35
- t.string :slug, :limit => 36 # variable reference
35
+ t.string :slug, limit: 36 # variable reference
36
36
  t.integer :position
37
37
  t.string :object_name, :attribute_name
38
38
  t.string :source
39
39
  t.string :value_xpath
40
40
  t.string :text_xpath
41
41
  t.string :cols
42
- t.boolean :is_confidential, :default => false
42
+ t.boolean :is_confidential, default: false
43
43
  t.string :total_cols
44
44
  t.string :css_id
45
45
  t.string :css_class
46
- t.integer :question_sheet_id, :null => false
46
+ t.integer :question_sheet_id, null: false
47
47
  t.timestamps
48
48
  end
49
49
  add_index Fe::Element.table_name, :slug
@@ -59,10 +59,10 @@
59
59
 
60
60
 
61
61
  create_table Fe::Answer.table_name do |t|
62
- t.integer :answer_sheet_id, :null => false
63
- t.integer :question_id, :null => false
62
+ t.integer :answer_sheet_id, null: false
63
+ t.integer :question_id, null: false
64
64
  t.text :value
65
- t.string :short_value, :null => true, :limit => 255 # indexed copy of :value
65
+ t.string :short_value, null: true, limit: 255 # indexed copy of :value
66
66
  # paperclip columns
67
67
  t.integer :attachment_file_size
68
68
  t.string :attachment_content_type
@@ -75,11 +75,11 @@
75
75
  add_index Fe::Answer.table_name, [:answer_sheet_id, :question_id], name: 'answer_sheet_question'
76
76
 
77
77
  create_table Fe::Condition.table_name do |t|
78
- t.integer :question_sheet_id, :null => false
79
- t.integer :trigger_id, :null => false
80
- t.string :expression, :null => false, :limit => 255
81
- t.integer :toggle_page_id, :null => false
82
- t.integer :toggle_id, :null => true # null if toggles whole page
78
+ t.integer :question_sheet_id, null: false
79
+ t.integer :trigger_id, null: false
80
+ t.string :expression, null: false, limit: 255
81
+ t.integer :toggle_page_id, null: false
82
+ t.integer :toggle_id, null: true # null if toggles whole page
83
83
  t.timestamps
84
84
  end
85
85
 
@@ -1,5 +1,5 @@
1
1
  # This migration comes from fe_engine (originally 20131003044250)
2
- class CreateReferenceSheets < ActiveRecord::Migration
2
+ class CreateReferenceSheets < ActiveRecord::Migration[4.2]
3
3
  def change
4
4
  create_table Fe::ReferenceSheet.table_name do |t|
5
5
  t.integer :question_id
@@ -1,10 +1,10 @@
1
1
  # This migration comes from fe_engine (originally 20131003044436)
2
- class AddElementAndAnswerFields < ActiveRecord::Migration
2
+ class AddElementAndAnswerFields < ActiveRecord::Migration[4.2]
3
3
  def change
4
4
  add_column Fe::Element.table_name, :conditional_id, :integer
5
5
  add_column Fe::Element.table_name, :tooltip, :text
6
- add_column Fe::Element.table_name, :hide_label, :boolean, :default => false, :nil => false
7
- add_column Fe::Element.table_name, :hide_option_labels, :boolean, :default => false, :nil => false
6
+ add_column Fe::Element.table_name, :hide_label, :boolean, default: false, nil: false
7
+ add_column Fe::Element.table_name, :hide_option_labels, :boolean, default: false, nil: false
8
8
 
9
9
  #add_index Fe::Element.table_name, :conditional_id
10
10
  end
@@ -1,8 +1,8 @@
1
1
  # This migration comes from fe_engine (originally 20131003044518)
2
- class CreateEmailTemplates < ActiveRecord::Migration
2
+ class CreateEmailTemplates < ActiveRecord::Migration[4.2]
3
3
  def up
4
4
  create_table Fe::EmailTemplate.table_name do |t|
5
- t.string :name, :limit => 1000, :null => false
5
+ t.string :name, limit: 1000, null: false
6
6
  t.text :content
7
7
  t.boolean :enabled
8
8
  t.string :subject
@@ -1,5 +1,5 @@
1
1
  # This migration comes from fe_engine (originally 20131003044621)
2
- class AddMaxLengths < ActiveRecord::Migration
2
+ class AddMaxLengths < ActiveRecord::Migration[4.2]
3
3
  def change
4
4
  add_column Fe::Element.table_name, :max_length, :integer
5
5
 
@@ -1,5 +1,5 @@
1
1
  # This migration comes from fe_engine (originally 20131003044714)
2
- class CreateJoinTable < ActiveRecord::Migration
2
+ class CreateJoinTable < ActiveRecord::Migration[4.2]
3
3
  def change
4
4
  create_table Fe::AnswerSheetQuestionSheet.table_name do |t|
5
5
  t.integer :answer_sheet_id
@@ -1,5 +1,5 @@
1
1
  # This migration comes from fe_engine (originally 20131016162128)
2
- class RemoveQuestionIdFromElement < ActiveRecord::Migration
2
+ class RemoveQuestionIdFromElement < ActiveRecord::Migration[4.2]
3
3
  def up
4
4
  remove_column Fe::Element.table_name, :question_sheet_id
5
5
  end
@@ -1,5 +1,5 @@
1
1
  # This migration comes from fe_engine (originally 20140623153424)
2
- class CreateFePeople < ActiveRecord::Migration
2
+ class CreateFePeople < ActiveRecord::Migration[4.2]
3
3
  def change
4
4
  create_table :fe_people do |t|
5
5
  t.string :first_name, limit: 50
@@ -1,5 +1,5 @@
1
1
  # This migration comes from fe_engine (originally 20140624180246)
2
- class CreateFeAddresses < ActiveRecord::Migration
2
+ class CreateFeAddresses < ActiveRecord::Migration[4.2]
3
3
  def change
4
4
  create_table :fe_addresses do |t|
5
5
  t.datetime :startdate
@@ -1,5 +1,5 @@
1
1
  # This migration comes from fe_engine (originally 20140625160545)
2
- class CreateFeUsers < ActiveRecord::Migration
2
+ class CreateFeUsers < ActiveRecord::Migration[4.2]
3
3
  def change
4
4
  create_table :fe_users do |t|
5
5
  t.integer :user_id
@@ -1,5 +1,5 @@
1
1
  # This migration comes from fe_engine (originally 20140808202507)
2
- class AddConditionalTypeToElements < ActiveRecord::Migration
2
+ class AddConditionalTypeToElements < ActiveRecord::Migration[4.2]
3
3
  def change
4
4
  add_column Fe::Element.table_name, :conditional_type, :string
5
5
  end
@@ -1,5 +1,5 @@
1
1
  # This migration comes from fe_engine (originally 20140808203609)
2
- class AddConditionalAnswerToElements < ActiveRecord::Migration
2
+ class AddConditionalAnswerToElements < ActiveRecord::Migration[4.2]
3
3
  def change
4
4
  add_column Fe::Element.table_name, :conditional_answer, :text
5
5
  end
@@ -1,5 +1,5 @@
1
1
  # This migration comes from fe_engine (originally 20141103204704)
2
- class RemoveShortValueColumn < ActiveRecord::Migration
2
+ class RemoveShortValueColumn < ActiveRecord::Migration[4.2]
3
3
  def change
4
4
  remove_column Fe::Answer.table_name, :short_value
5
5
  end
@@ -1,5 +1,5 @@
1
1
  # This migration comes from fe_engine (originally 20141109154522)
2
- class MoveConditionalIdsUsedForChoiceFieldToTheirOwnColumn < ActiveRecord::Migration
2
+ class MoveConditionalIdsUsedForChoiceFieldToTheirOwnColumn < ActiveRecord::Migration[4.2]
3
3
  def change
4
4
  add_column Fe::Element.table_name, :choice_field_id, :integer
5
5
  Fe::Element.reset_column_information
@@ -1,4 +1,4 @@
1
- class CreateUsers < ActiveRecord::Migration
1
+ class CreateUsers < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  create_table :users do |t|
4
4
  t.string :username
@@ -1,5 +1,5 @@
1
1
  # This migration comes from fe_engine (originally 20150504221439)
2
- class AddAllElementIdsToPages < ActiveRecord::Migration
2
+ class AddAllElementIdsToPages < ActiveRecord::Migration[4.2]
3
3
  def change
4
4
  add_column Fe::Page.table_name, :all_element_ids, :string
5
5
  end
@@ -0,0 +1,6 @@
1
+ # This migration comes from fe_engine (originally 20150925181652)
2
+ class AddShareToElements < ActiveRecord::Migration[4.2]
3
+ def change
4
+ add_column Fe::Element.table_name, :share, :boolean, default: false
5
+ end
6
+ end
@@ -1,5 +1,5 @@
1
1
  # This migration comes from fe_engine (originally 20140624182216)
2
- class CreateFePhoneNumbers < ActiveRecord::Migration
2
+ class CreateFePhoneNumbers < ActiveRecord::Migration[4.2]
3
3
  def change
4
4
  begin
5
5
  create_table Fe::PhoneNumber do |t|
@@ -1,5 +1,5 @@
1
1
  # This migration comes from fe_engine (originally 20150713022326)
2
- class AddLocaleColumns < ActiveRecord::Migration
2
+ class AddLocaleColumns < ActiveRecord::Migration[4.2]
3
3
  def change
4
4
  add_column Fe::QuestionSheet.table_name, :languages, :text
5
5
  add_column Fe::Element.table_name, :label_translations, :text
@@ -1,5 +1,5 @@
1
1
  # This migration comes from fe_engine (originally 20150714220730)
2
- class AddLocaleToAnswerSheet < ActiveRecord::Migration
2
+ class AddLocaleToAnswerSheet < ActiveRecord::Migration[4.2]
3
3
  def change
4
4
  add_column Fe.answer_sheet_class.constantize.table_name, :locale, :string, default: 'en'
5
5
  end
@@ -1,5 +1,5 @@
1
1
  # This migration comes from fe_engine (originally 20150928085325)
2
- class ChangePagesAllElementIdsToText < ActiveRecord::Migration
2
+ class ChangePagesAllElementIdsToText < ActiveRecord::Migration[4.2]
3
3
  def change
4
4
  change_column Fe::Page.table_name, :all_element_ids, :text
5
5
  end
@@ -1,5 +1,5 @@
1
1
  # This migration comes from fe_engine (originally 20150930191538)
2
- class AddLocaleToReferenceSheets < ActiveRecord::Migration
2
+ class AddLocaleToReferenceSheets < ActiveRecord::Migration[4.2]
3
3
  def change
4
4
  add_column Fe::ReferenceSheet.table_name, :locale, :string, default: 'en'
5
5
  end
@@ -0,0 +1,13 @@
1
+ # This migration comes from fe_engine (originally 20151021184250)
2
+ class AddQuestionSheetIdInRefs < ActiveRecord::Migration[4.2]
3
+ def change
4
+ add_column Fe::ReferenceSheet.table_name, :question_sheet_id, :integer
5
+
6
+ # set initial question_sheet_id on all refs
7
+ # NOTE: doing an update on a join query is a pain to do in both mysql and postgres
8
+ # and since there's not that many reference questions, this should be fine
9
+ Fe::ReferenceQuestion.all.each do |rq|
10
+ Fe::ReferenceSheet.where(question_id: rq.id).update_all(question_sheet_id: rq.related_question_sheet_id)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,8 @@
1
+ # This migration comes from fe_engine (originally 20151021181928)
2
+ class SwitchConditionalAnswerSeparatorToSemicolon < ActiveRecord::Migration[4.2]
3
+ def change
4
+ Fe::Element.where("conditional_answer IS NOT NULL AND conditional_answer != ''").each do |e|
5
+ e.update_column :conditional_answer, e.conditional_answer.gsub(',', ';')
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ # This migration comes from fe_engine (originally 20160201185838)
2
+ class AddVisibleAndVisibilityCacheKeyToReferenceSheets < ActiveRecord::Migration[4.2]
3
+ def change
4
+ add_column Fe::ReferenceSheet.table_name, :visible, :boolean
5
+ add_column Fe::ReferenceSheet.table_name, :visibility_cache_key, :string
6
+ end
7
+ end
@@ -0,0 +1,80 @@
1
+ # This migration creates the `versions` table, the only schema PT requires.
2
+ # All other migrations PT provides are optional.
3
+ class CreateVersions < ActiveRecord::Migration[4.2]
4
+ # Class names of MySQL adapters.
5
+ # - `MysqlAdapter` - Used by gems: `mysql`, `activerecord-jdbcmysql-adapter`.
6
+ # - `Mysql2Adapter` - Used by `mysql2` gem.
7
+ MYSQL_ADAPTERS = [
8
+ "ActiveRecord::ConnectionAdapters::MysqlAdapter",
9
+ "ActiveRecord::ConnectionAdapters::Mysql2Adapter"
10
+ ].freeze
11
+
12
+ # The largest text column available in all supported RDBMS is
13
+ # 1024^3 - 1 bytes, roughly one gibibyte. We specify a size
14
+ # so that MySQL will use `longtext` instead of `text`. Otherwise,
15
+ # when serializing very large objects, `text` might not be big enough.
16
+ TEXT_BYTES = 1_073_741_823
17
+
18
+ def change
19
+ create_table :versions, versions_table_options do |t|
20
+ t.string :item_type, item_type_options
21
+ t.integer :item_id, null: false
22
+ t.string :event, null: false
23
+ t.string :whodunnit
24
+ t.text :object, limit: TEXT_BYTES
25
+
26
+ # Known issue in MySQL: fractional second precision
27
+ # -------------------------------------------------
28
+ #
29
+ # MySQL timestamp columns do not support fractional seconds unless
30
+ # defined with "fractional seconds precision". MySQL users should manually
31
+ # add fractional seconds precision to this migration, specifically, to
32
+ # the `created_at` column.
33
+ # (https://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html)
34
+ #
35
+ # MySQL users should also upgrade to rails 4.2, which is the first
36
+ # version of ActiveRecord with support for fractional seconds in MySQL.
37
+ # (https://github.com/rails/rails/pull/14359)
38
+ #
39
+ t.datetime :created_at
40
+ end
41
+ add_index :versions, [:item_type, :item_id]
42
+ end
43
+
44
+ private
45
+
46
+ # MySQL 5.6 utf8mb4 limit is 191 chars for keys used in indexes.
47
+ # See https://github.com/airblade/paper_trail/issues/651
48
+ def item_type_options
49
+ opt = { null: false }
50
+ opt[:limit] = 191 if mysql?
51
+ opt
52
+ end
53
+
54
+ def mysql?
55
+ MYSQL_ADAPTERS.include?(connection.class.name)
56
+ end
57
+
58
+ # Even modern versions of MySQL still use `latin1` as the default character
59
+ # encoding. Many users are not aware of this, and run into trouble when they
60
+ # try to use PaperTrail in apps that otherwise tend to use UTF-8. Postgres, by
61
+ # comparison, uses UTF-8 except in the unusual case where the OS is configured
62
+ # with a custom locale.
63
+ #
64
+ # - https://dev.mysql.com/doc/refman/5.7/en/charset-applications.html
65
+ # - http://www.postgresql.org/docs/9.4/static/multibyte.html
66
+ #
67
+ # Furthermore, MySQL's original implementation of UTF-8 was flawed, and had
68
+ # to be fixed later by introducing a new charset, `utf8mb4`.
69
+ #
70
+ # - https://mathiasbynens.be/notes/mysql-utf8mb4
71
+ # - https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html
72
+ #
73
+ def versions_table_options
74
+ if mysql?
75
+ { options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci" }
76
+ else
77
+ {}
78
+ end
79
+ end
80
+ end