fe 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (303) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +36 -1
  3. data/Rakefile +22 -13
  4. data/app/assets/javascripts/application.js.erb +1 -0
  5. data/app/assets/javascripts/fe/admin.js +1 -4
  6. data/app/assets/javascripts/fe/{qe.admin.js → fe.admin.js} +15 -0
  7. data/app/assets/javascripts/fe/{qe.common.js → fe.common.js} +0 -0
  8. data/app/assets/javascripts/fe/{qe.public.js → fe.public.js} +115 -27
  9. data/app/assets/javascripts/fe/rails.extra.js +6 -0
  10. data/app/assets/stylesheets/fe/{qe.screen.css.scss.erb → fe.screen.css.scss.erb} +12 -18
  11. data/app/controllers/fe/admin/elements_controller.rb +4 -4
  12. data/app/controllers/fe/admin/email_templates_controller.rb +10 -4
  13. data/app/controllers/fe/admin/question_pages_controller.rb +3 -3
  14. data/app/controllers/fe/admin/question_sheets_controller.rb +6 -5
  15. data/app/controllers/fe/applications_controller.rb +183 -0
  16. data/app/controllers/fe/concerns/answer_pages_controller_concern.rb +5 -2
  17. data/app/controllers/fe/concerns/answer_sheets_controller_concern.rb +10 -6
  18. data/app/controllers/fe/concerns/application_controller_concern.rb +34 -0
  19. data/app/controllers/fe/payments_controller.rb +184 -0
  20. data/app/controllers/fe/reference_pages_controller.rb +41 -0
  21. data/app/controllers/fe/reference_sheets_controller.rb +1 -1
  22. data/app/controllers/fe/references_controller.rb +74 -0
  23. data/app/controllers/fe/submit_pages_controller.rb +22 -0
  24. data/app/helpers/fe/application_helper.rb +14 -5
  25. data/app/mailers/fe/notifier.rb +1 -1
  26. data/app/models/fe/address.rb +3 -0
  27. data/app/models/fe/answer_pages_presenter.rb +1 -1
  28. data/app/models/fe/answer_sheet.rb +6 -2
  29. data/app/models/fe/answer_sheet_question_sheet.rb +1 -1
  30. data/app/models/fe/application.rb +58 -0
  31. data/app/models/fe/choice_field.rb +1 -1
  32. data/app/models/fe/concerns/answer_concern.rb +10 -11
  33. data/app/models/fe/concerns/answer_pages_presenter_concern.rb +16 -7
  34. data/app/models/fe/concerns/answer_sheet_concern.rb +10 -16
  35. data/app/models/fe/concerns/choice_field_concern.rb +21 -10
  36. data/app/models/fe/condition.rb +1 -1
  37. data/app/models/fe/current_address.rb +12 -0
  38. data/app/models/fe/date_field.rb +3 -3
  39. data/app/models/fe/element.rb +66 -9
  40. data/app/models/fe/email_address.rb +7 -0
  41. data/app/models/fe/email_template.rb +1 -1
  42. data/app/models/fe/option.rb +1 -1
  43. data/app/models/fe/option_group.rb +1 -1
  44. data/app/models/fe/page.rb +13 -4
  45. data/app/models/fe/page_element.rb +13 -1
  46. data/app/models/fe/page_link.rb +1 -1
  47. data/app/models/fe/paragraph.rb +1 -1
  48. data/app/models/fe/payment.rb +32 -7
  49. data/app/models/fe/payment_question.rb +1 -1
  50. data/app/models/fe/person.rb +33 -0
  51. data/app/models/fe/phone_number.rb +5 -0
  52. data/app/models/fe/presenter.rb +3 -2
  53. data/app/models/fe/question.rb +7 -7
  54. data/app/models/fe/question_grid.rb +1 -2
  55. data/app/models/fe/question_set.rb +1 -1
  56. data/app/models/fe/question_sheet.rb +9 -3
  57. data/app/models/fe/reference_question.rb +2 -2
  58. data/app/models/fe/reference_sheet.rb +28 -4
  59. data/app/models/fe/section.rb +1 -1
  60. data/app/models/fe/state_chooser.rb +1 -1
  61. data/app/models/fe/text_field.rb +3 -3
  62. data/app/models/fe/user.rb +3 -0
  63. data/app/models/staff.rb +120 -0
  64. data/app/views/fe/admin/elements/_errors.html.erb +11 -1
  65. data/app/views/fe/admin/elements/create.js.erb +3 -3
  66. data/app/views/fe/admin/elements/destroy.js.erb +2 -2
  67. data/app/views/fe/admin/elements/drop.js.erb +1 -1
  68. data/app/views/fe/admin/elements/duplicate.js.erb +1 -1
  69. data/app/views/fe/admin/elements/edit.js.erb +1 -1
  70. data/app/views/fe/admin/elements/error.js.erb +1 -1
  71. data/app/views/fe/admin/elements/new.js.erb +3 -3
  72. data/app/views/fe/admin/elements/update.js.erb +2 -2
  73. data/app/views/fe/admin/email_templates/edit.html.erb +9 -9
  74. data/app/views/fe/admin/email_templates/index.html.erb +3 -3
  75. data/app/views/fe/admin/email_templates/new.html.erb +2 -2
  76. data/app/views/fe/admin/panels/_advanced_options.html.erb +28 -1
  77. data/app/views/fe/admin/panels/_common_fields.html.erb +1 -1
  78. data/app/views/fe/admin/panels/_condition.html.erb +1 -1
  79. data/app/views/fe/admin/panels/_insert.html.erb +13 -13
  80. data/app/views/fe/admin/panels/_nav_controls.html.erb +4 -4
  81. data/app/views/fe/admin/panels/_page.html.erb +2 -2
  82. data/app/views/fe/admin/panels/_pages_list.html.erb +4 -4
  83. data/app/views/fe/admin/panels/_prop_attachment_field.html.erb +1 -1
  84. data/app/views/fe/admin/panels/_prop_choice_field.html.erb +10 -10
  85. data/app/views/fe/admin/panels/_prop_date_field.html.erb +1 -1
  86. data/app/views/fe/admin/panels/_prop_element.html.erb +7 -7
  87. data/app/views/fe/admin/panels/_prop_page.html.erb +2 -2
  88. data/app/views/fe/admin/panels/_prop_paragraph.html.erb +1 -1
  89. data/app/views/fe/admin/panels/_prop_payment_question.html.erb +1 -0
  90. data/app/views/fe/admin/panels/_prop_question_grid.html.erb +2 -2
  91. data/app/views/fe/admin/panels/_prop_question_grid_with_total.html.erb +1 -1
  92. data/app/views/fe/admin/panels/_prop_reference_question.html.erb +2 -2
  93. data/app/views/fe/admin/panels/_prop_section.html.erb +1 -1
  94. data/app/views/fe/admin/panels/_prop_sheet.html.erb +9 -9
  95. data/app/views/fe/admin/panels/_prop_text_field.html.erb +10 -10
  96. data/app/views/fe/admin/question_pages/_element.html.erb +5 -5
  97. data/app/views/fe/admin/question_pages/_element_show.html.erb +1 -1
  98. data/app/views/fe/admin/question_pages/_errors.html.erb +10 -1
  99. data/app/views/fe/admin/question_pages/_question_page.html.erb +3 -3
  100. data/app/views/fe/admin/question_pages/create.js.erb +3 -3
  101. data/app/views/fe/admin/question_pages/destroy.js.erb +3 -3
  102. data/app/views/fe/admin/question_pages/edit.js.erb +1 -1
  103. data/app/views/fe/admin/question_pages/show.js.erb +3 -2
  104. data/app/views/fe/admin/question_pages/show_panel.js.erb +1 -1
  105. data/app/views/fe/admin/question_sheets/_errors.html.erb +11 -1
  106. data/app/views/fe/admin/question_sheets/edit.js.erb +1 -1
  107. data/app/views/fe/admin/question_sheets/error.js.erb +1 -1
  108. data/app/views/fe/admin/question_sheets/index.html.erb +8 -8
  109. data/app/views/fe/admin/question_sheets/new.html.erb +1 -1
  110. data/app/views/fe/admin/question_sheets/show.html.erb +18 -18
  111. data/app/views/fe/admin/question_sheets/update.js.erb +1 -1
  112. data/app/views/fe/answer_pages/_answer_page.html.erb +27 -30
  113. data/app/views/fe/answer_pages/_element.html.erb +5 -1
  114. data/app/views/fe/answer_pages/update.js.erb +1 -1
  115. data/app/views/fe/answer_sheets/_answer_sheet.html.erb +16 -14
  116. data/app/views/fe/answer_sheets/_element.html.erb +1 -1
  117. data/app/views/fe/answer_sheets/_incomplete.html.erb +8 -8
  118. data/app/views/fe/answer_sheets/_page_link.html.erb +2 -2
  119. data/app/views/fe/answer_sheets/_pages_list.html.erb +4 -4
  120. data/app/views/fe/answer_sheets/_title.html.erb +1 -1
  121. data/app/views/fe/answer_sheets/edit.html.erb +59 -53
  122. data/app/views/fe/answer_sheets/incomplete.js.erb +2 -2
  123. data/app/views/fe/answer_sheets/send_reference_invite.js.erb +1 -1
  124. data/app/views/fe/application/_logout.html.erb +1 -0
  125. data/app/views/fe/payment_pages/_credit.html.erb +47 -0
  126. data/app/views/fe/payment_pages/_mail.html.erb +27 -0
  127. data/app/views/fe/payment_pages/_payment.html.erb +6 -0
  128. data/app/views/fe/payment_pages/_staff.html.erb +25 -0
  129. data/app/views/fe/payment_pages/_staff_results.html.erb +17 -0
  130. data/app/views/fe/payment_pages/edit.html.erb +75 -0
  131. data/app/views/fe/payment_pages/staff_search.js.erb +2 -0
  132. data/app/views/fe/payments/_credit.html.erb +47 -0
  133. data/app/views/fe/payments/_errors.html.erb +1 -0
  134. data/app/views/fe/payments/_payment.html.erb +13 -0
  135. data/app/views/fe/payments/_staff.html.erb +21 -0
  136. data/app/views/fe/payments/_staff_results.html.erb +18 -0
  137. data/app/views/fe/payments/approve.js.erb +3 -0
  138. data/app/views/fe/payments/create.js.erb +19 -0
  139. data/app/views/fe/payments/destroy.js.erb +7 -0
  140. data/app/views/fe/payments/edit.html.erb +56 -0
  141. data/app/views/fe/payments/error.js.erb +3 -0
  142. data/app/views/fe/payments/no_access.html.erb +7 -0
  143. data/app/views/fe/payments/staff_search.js.erb +1 -0
  144. data/app/views/fe/payments/update.html.erb +24 -0
  145. data/app/views/fe/questions/{_acceptance.html.erb → fe/_acceptance.html.erb} +0 -0
  146. data/app/views/fe/questions/{_attachment_field.html.erb → fe/_attachment_field.html.erb} +2 -2
  147. data/app/views/fe/questions/{_checkbox_field.html.erb → fe/_checkbox_field.html.erb} +1 -1
  148. data/app/views/fe/questions/{_country.html.erb → fe/_country.html.erb} +1 -1
  149. data/app/views/fe/questions/{_date_field.html.erb → fe/_date_field.html.erb} +0 -0
  150. data/app/views/fe/questions/{_date_field_mmyy.html.erb → fe/_date_field_mmyy.html.erb} +0 -0
  151. data/app/views/fe/questions/{_drop_down_field.html.erb → fe/_drop_down_field.html.erb} +1 -1
  152. data/app/views/fe/questions/fe/_paragraph.html.erb +1 -0
  153. data/app/views/fe/questions/fe/_payment_question.html.erb +70 -0
  154. data/app/views/fe/questions/{_question_grid.html.erb → fe/_question_grid.html.erb} +7 -7
  155. data/app/views/fe/questions/{_question_grid_with_total.html.erb → fe/_question_grid_with_total.html.erb} +1 -1
  156. data/app/views/fe/questions/{_questions.html.erb → fe/_questions.html.erb} +2 -2
  157. data/app/views/fe/questions/{_radio_button_field.html.erb → fe/_radio_button_field.html.erb} +13 -11
  158. data/app/views/fe/questions/{_rating.html.erb → fe/_rating.html.erb} +0 -0
  159. data/app/views/fe/questions/fe/_reference_discipler.html.erb +1 -0
  160. data/app/views/fe/questions/fe/_reference_friend.html.erb +1 -0
  161. data/app/views/fe/questions/fe/_reference_parent.html.erb +1 -0
  162. data/app/views/fe/questions/fe/_reference_peer.html.erb +1 -0
  163. data/app/views/fe/questions/fe/_reference_question.html.erb +38 -0
  164. data/app/views/fe/questions/fe/_reference_roommate.html.erb +1 -0
  165. data/app/views/fe/questions/fe/_reference_spiritual.html.erb +1 -0
  166. data/app/views/fe/questions/fe/_reference_staff.html.erb +1 -0
  167. data/app/views/fe/questions/fe/_section.html.erb +1 -0
  168. data/app/views/fe/questions/{_state_chooser.html.erb → fe/_state_chooser.html.erb} +0 -0
  169. data/app/views/fe/questions/{_text_area_field.html.erb → fe/_text_area_field.html.erb} +0 -0
  170. data/app/views/fe/questions/{_text_field.html.erb → fe/_text_field.html.erb} +0 -0
  171. data/app/views/fe/questions/{_yes_no.html.erb → fe/_yes_no.html.erb} +6 -6
  172. data/app/views/fe/questions/{_yes_no_field.erb → fe/_yes_no_field.erb} +1 -1
  173. data/app/views/fe/reference_pages/_reference.html.erb +31 -0
  174. data/app/views/fe/reference_pages/edit.html.erb +24 -0
  175. data/app/views/fe/reference_sheets/done.html.erb +2 -0
  176. data/app/views/fe/reference_sheets/submitted.js.erb +1 -0
  177. data/app/views/fe/references/edit.html.erb +8 -0
  178. data/app/views/fe/references/send_invite.js.erb +7 -0
  179. data/app/views/fe/references/show.html.erb +18 -0
  180. data/app/views/fe/references/submit.js.erb +3 -0
  181. data/app/views/fe/submit_pages/_errors.html.erb +1 -0
  182. data/app/views/fe/submit_pages/_thankyou.html.erb +2 -0
  183. data/app/views/fe/submit_pages/edit.html.erb +36 -0
  184. data/app/views/fe/submit_pages/error.js.erb +1 -0
  185. data/app/views/fe/submit_pages/submit.js.erb +3 -0
  186. data/app/views/layouts/fe/application.html.erb +30 -13
  187. data/app/views/layouts/fe/{qe.admin.html.erb → fe.admin.html.erb} +1 -1
  188. data/config/locales/en.yml +37 -0
  189. data/config/routes.rb +69 -27
  190. data/db/migrate/20131003041856_core.rb +4 -4
  191. data/db/migrate/20131003044518_create_email_templates.rb +1 -1
  192. data/db/migrate/20140623153424_create_fe_people.rb +12 -0
  193. data/db/migrate/20140624180246_create_fe_addresses.rb +20 -0
  194. data/db/migrate/20140624182216_create_create_fe_phone_numbers.rb +16 -0
  195. data/db/migrate/20140625160545_create_fe_users.rb +12 -0
  196. data/db/migrate/20140808202507_add_conditional_type_to_elements.rb +5 -0
  197. data/db/migrate/20140808203609_add_conditional_answer_to_elements.rb +5 -0
  198. data/db/migrate/20140828045339_create_payments.rb +13 -0
  199. data/db/migrate/20141103204704_remove_short_value_column.rb +5 -0
  200. data/db/migrate/20141109154522_move_conditional_ids_used_for_choice_field_to_their_own_column.rb +7 -0
  201. data/db/seeds.rb +7 -0
  202. data/lib/fe.rb +1 -1
  203. data/lib/fe/engine.rb +46 -1
  204. data/lib/fe/version.rb +1 -1
  205. data/lib/tasks/fe_tasks.rake +14 -0
  206. data/spec/controllers/fe/admin/elements_controller_spec.rb +1 -1
  207. data/spec/controllers/fe/admin/email_templates_controller_spec.rb +1 -1
  208. data/spec/controllers/fe/admin/question_pages_controller_spec.rb +1 -1
  209. data/spec/controllers/fe/admin/question_sheets_controller_spec.rb +1 -1
  210. data/spec/controllers/fe/answer_pages_controller_spec.rb +1 -1
  211. data/spec/controllers/fe/answer_sheets_controller_spec.rb +1 -1
  212. data/spec/controllers/fe/reference_sheets_controller_spec.rb +1 -1
  213. data/spec/dummy/README.rdoc +28 -0
  214. data/spec/dummy/Rakefile +6 -0
  215. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  216. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  217. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  218. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  219. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  220. data/spec/dummy/bin/bundle +3 -0
  221. data/spec/dummy/bin/rails +4 -0
  222. data/spec/dummy/bin/rake +4 -0
  223. data/spec/dummy/config.ru +4 -0
  224. data/spec/dummy/config/application.rb +29 -0
  225. data/spec/dummy/config/boot.rb +5 -0
  226. data/spec/dummy/config/database.yml +25 -0
  227. data/spec/dummy/config/environment.rb +5 -0
  228. data/spec/dummy/config/environments/development.rb +37 -0
  229. data/spec/dummy/config/environments/production.rb +82 -0
  230. data/spec/dummy/config/environments/test.rb +39 -0
  231. data/spec/dummy/config/initializers/assets.rb +8 -0
  232. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  233. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  234. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  235. data/spec/dummy/config/initializers/inflections.rb +16 -0
  236. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  237. data/spec/dummy/config/initializers/session_store.rb +3 -0
  238. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  239. data/spec/dummy/config/locales/en.yml +23 -0
  240. data/spec/dummy/config/routes.rb +56 -0
  241. data/spec/dummy/config/secrets.yml +22 -0
  242. data/spec/dummy/db/schema.rb +203 -0
  243. data/spec/dummy/db/test.sqlite3 +0 -0
  244. data/spec/dummy/log/test.log +440 -0
  245. data/spec/dummy/public/404.html +67 -0
  246. data/spec/dummy/public/422.html +67 -0
  247. data/spec/dummy/public/500.html +66 -0
  248. data/spec/dummy/public/favicon.ico +0 -0
  249. data/spec/factories/answer_sheet_question_sheets.rb +4 -0
  250. data/spec/factories/answer_sheets.rb +1 -1
  251. data/spec/factories/applications.rb +7 -0
  252. data/spec/factories/elements.rb +19 -0
  253. data/spec/factories/fe_addresses.rb +14 -0
  254. data/spec/factories/fe_email_addresses.rb +7 -0
  255. data/spec/factories/fe_people.rb +10 -0
  256. data/spec/factories/fe_phone_numbers.rb +7 -0
  257. data/spec/factories/page.rb +9 -0
  258. data/spec/factories/page_elements.rb +5 -0
  259. data/spec/factories/payments.rb +7 -0
  260. data/spec/factories/question_sheet.rb +10 -0
  261. data/spec/models/fe/answer_sheet_question_sheet_spec.rb +3 -3
  262. data/spec/models/fe/answer_spec.rb +5 -5
  263. data/spec/models/fe/application_spec.rb +8 -0
  264. data/spec/models/fe/attachment_field_spec.rb +1 -1
  265. data/spec/models/fe/choice_field_spec.rb +29 -2
  266. data/spec/models/fe/condition_spec.rb +5 -5
  267. data/spec/models/fe/date_field_spec.rb +9 -9
  268. data/spec/models/fe/element_spec.rb +139 -9
  269. data/spec/models/fe/email_template_spec.rb +2 -2
  270. data/spec/models/fe/option_group_spec.rb +1 -1
  271. data/spec/models/fe/option_spec.rb +1 -1
  272. data/spec/models/fe/page_element_spec.rb +3 -3
  273. data/spec/models/fe/page_link_spec.rb +1 -1
  274. data/spec/models/fe/page_spec.rb +43 -11
  275. data/spec/models/fe/paragraph_spec.rb +4 -4
  276. data/spec/models/fe/payment_question_spec.rb +65 -0
  277. data/spec/models/fe/person_spec.rb +4 -0
  278. data/spec/models/fe/question_grid_spec.rb +1 -1
  279. data/spec/models/fe/question_grid_with_total_spec.rb +1 -1
  280. data/spec/models/fe/question_set_spec.rb +1 -1
  281. data/spec/models/fe/question_sheet_spec.rb +5 -5
  282. data/spec/models/fe/question_spec.rb +13 -12
  283. data/spec/models/fe/reference_question_spec.rb +4 -4
  284. data/spec/models/fe/reference_sheet_spec.rb +8 -8
  285. data/spec/models/fe/section_spec.rb +1 -1
  286. data/spec/models/fe/state_chooser_spec.rb +1 -1
  287. data/spec/models/fe/text_field_spec.rb +3 -3
  288. data/spec/{spec_helper.rb → rails_helper.rb} +3 -3
  289. data/spec/support/database.txt +3 -3
  290. metadata +261 -75
  291. data/app/views/fe/questions/_paragraph.html.erb +0 -1
  292. data/app/views/fe/questions/_reference_discipler.html.erb +0 -1
  293. data/app/views/fe/questions/_reference_friend.html.erb +0 -1
  294. data/app/views/fe/questions/_reference_parent.html.erb +0 -1
  295. data/app/views/fe/questions/_reference_peer.html.erb +0 -1
  296. data/app/views/fe/questions/_reference_question.html.erb +0 -38
  297. data/app/views/fe/questions/_reference_roommate.html.erb +0 -1
  298. data/app/views/fe/questions/_reference_spiritual.html.erb +0 -1
  299. data/app/views/fe/questions/_reference_staff.html.erb +0 -1
  300. data/app/views/fe/questions/_section.html.erb +0 -1
  301. data/lib/generators/fe/install_generator.rb +0 -132
  302. data/lib/tasks/qe_tasks.rake +0 -4
  303. data/spec/models/fe/answer_sheet_spec.rb +0 -8
@@ -21,6 +21,5 @@ module Fe
21
21
  def has_response?(answer_sheet = nil)
22
22
  elements.any? {|e| e.has_response?(answer_sheet)}
23
23
  end
24
-
25
24
  end
26
- end
25
+ end
@@ -79,4 +79,4 @@ module Fe
79
79
  end
80
80
 
81
81
  end
82
- end
82
+ end
@@ -42,7 +42,7 @@ module Fe
42
42
  # Question elements get associated
43
43
  # non-question elements get cloned
44
44
  def duplicate
45
- new_sheet = QuestionSheet.new(self.attributes)
45
+ new_sheet = QuestionSheet.new(self.attributes.merge(id: nil))
46
46
  new_sheet.label = self.label + ' - COPY'
47
47
  new_sheet.save(:validate => false)
48
48
  self.pages.each do |page|
@@ -51,6 +51,12 @@ module Fe
51
51
  new_sheet
52
52
  end
53
53
 
54
+ # pages hidden by a conditional element
55
+ def hidden_pages(answer_sheet)
56
+ elements.find_all{ |e|
57
+ e.conditional.is_a?(Fe::Page) && !e.conditional_match(answer_sheet)
58
+ }.collect(&:conditional)
59
+ end
54
60
 
55
61
  private
56
62
 
@@ -62,7 +68,7 @@ module Fe
62
68
  # returns a list of existing Untitled forms
63
69
  # (having a separate method makes it easy to mock in the spec)
64
70
  def self.untitled_labels
65
- QuestionSheet.find(:all, :conditions => %{label like 'Untitled form%'}).map {|s| s.label}
71
+ QuestionSheet.where("label LIKE ?", 'Untitled form%').map{|s| s.label }
66
72
  end
67
73
 
68
74
  def check_for_answers
@@ -70,4 +76,4 @@ module Fe
70
76
  end
71
77
 
72
78
  end
73
- end
79
+ end
@@ -35,8 +35,8 @@ module Fe
35
35
 
36
36
  # which view to render this element?
37
37
  def ptemplate
38
- "reference_#{style}"
38
+ "fe/reference_#{style}"
39
39
  end
40
40
 
41
41
  end
42
- end
42
+ end
@@ -1,3 +1,4 @@
1
+ require 'validates_email_format_of'
1
2
  require 'aasm'
2
3
  module Fe
3
4
  class ReferenceSheet < ActiveRecord::Base
@@ -16,6 +17,7 @@ module Fe
16
17
  :foreign_key => "applicant_answer_sheet_id"
17
18
 
18
19
  validates_presence_of :first_name, :last_name, :phone, :email, :relationship, :on => :update, :message => "can't be blank"
20
+ validates :email, :email_format => { :message => "doesn't look right." }
19
21
 
20
22
  delegate :style, :to => :question
21
23
 
@@ -32,7 +34,29 @@ module Fe
32
34
  state :completed, :enter => Proc.new {|ref|
33
35
  ref.submitted_at = Time.now
34
36
  # SpReferenceMailer.deliver_completed(ref)
37
+ =begin
38
+ Fe::Notifier.notification(ref.email, # RECIPIENTS
39
+ Fe.from_email, # FROM
40
+ # TODO
41
+ "Reference Completed", # LIQUID TEMPLATE NAME
42
+ {'first_name' => person.nickname,
43
+ 'site_url' => "#{APP_CONFIG['spgive_url']}/#{person.sp_gcx_site}/",
44
+ 'username' => person.user.username,
45
+ 'password' => person.user.password_plain}).deliver
46
+ =end
47
+
35
48
  # SpReferenceMailer.deliver_completed_confirmation(ref)
49
+ =begin
50
+ Fe::Notifier.notification(ref.applicant_answer_sheet.person.email, # RECIPIENTS
51
+ Fe.from_email, # FROM
52
+ "Reference Completed To Applicant", # LIQUID TEMPLATE NAME
53
+ # TODO
54
+ {'first_name' => person.nickname,
55
+ 'site_url' => "#{APP_CONFIG['spgive_url']}/#{person.sp_gcx_site}/",
56
+ 'username' => person.user.username,
57
+ 'password' => person.user.password_plain}).deliver
58
+ =end
59
+
36
60
  ref.applicant_answer_sheet.complete(ref)
37
61
  }
38
62
 
@@ -68,13 +92,13 @@ module Fe
68
92
  application = self.applicant_answer_sheet
69
93
 
70
94
  Notifier.notification(self.email,
71
- application.email,
95
+ Fe.from_email,
72
96
  "Reference Invite",
73
97
  {'reference_full_name' => self.name,
74
98
  'applicant_full_name' => application.name,
75
99
  'applicant_email' => application.email,
76
100
  'applicant_home_phone' => application.phone,
77
- 'reference_url' => edit_reference_sheet_url(self, :a => self.access_key, :host => ActionMailer::Base.default_url_options[:host])}).deliver
101
+ 'reference_url' => edit_fe_reference_sheet_url(self, :a => self.access_key, :host => ActionMailer::Base.default_url_options[:host])}).deliver
78
102
  # Send notification to applicant
79
103
  Notifier.notification(applicant_answer_sheet.email, # RECIPIENTS
80
104
  Fe.from_email, # FROM
@@ -82,7 +106,7 @@ module Fe
82
106
  {'applicant_full_name' => applicant_answer_sheet.name,
83
107
  'reference_full_name' => self.name,
84
108
  'reference_email' => self.email,
85
- 'application_url' => edit_answer_sheet_url(applicant_answer_sheet, :host => ActionMailer::Base.default_url_options[:host])}).deliver
109
+ 'application_url' => edit_fe_answer_sheet_url(applicant_answer_sheet, :host => ActionMailer::Base.default_url_options[:host])}).deliver
86
110
 
87
111
  self.email_sent_at = Time.now
88
112
  self.save(:validate => false)
@@ -146,4 +170,4 @@ module Fe
146
170
  end
147
171
  end
148
172
  end
149
- end
173
+ end
@@ -9,4 +9,4 @@
9
9
  module Fe
10
10
  class Section < Element
11
11
  end
12
- end
12
+ end
@@ -7,4 +7,4 @@ module Fe
7
7
  @states = Carmen.states(country)
8
8
  end
9
9
  end
10
- end
10
+ end
@@ -7,9 +7,9 @@ module Fe
7
7
  # which view to render this element?
8
8
  def ptemplate
9
9
  if self.style == 'essay'
10
- 'text_area_field'
10
+ 'fe/text_area_field'
11
11
  else
12
- 'text_field'
12
+ 'fe/text_field'
13
13
  end
14
14
  end
15
15
 
@@ -26,4 +26,4 @@ module Fe
26
26
  end
27
27
 
28
28
  end
29
- end
29
+ end
@@ -0,0 +1,3 @@
1
+ class Fe::User < ActiveRecord::Base
2
+ belongs_to :user
3
+ end
@@ -0,0 +1,120 @@
1
+ class Staff < ActiveRecord::Base
2
+ self.table_name = "ministry_staff"
3
+ belongs_to :person
4
+
5
+ belongs_to :primary_address, :class_name => "StaffAddress", :foreign_key => :fk_primaryAddress
6
+ belongs_to :secondary_address, :class_name => "StaffAddress", :foreign_key => :fk_secondaryAddress
7
+
8
+ def self.get_staff(ssm_id)
9
+ if ssm_id.nil? then raise "nil ssm_id!" end
10
+ ssm_user = User.find_by(userID: ssm_id)
11
+ if ssm_user.nil? then raise "ssm_id doesn't exist: #{ssm_id}" end
12
+ username = ssm_user.username
13
+ profile = StaffsiteProfile.find_by(userName: username)
14
+ account_no = profile.accountNo
15
+ staff = Staff.find_by(accountNo: account_no)
16
+ end
17
+
18
+ def self.field_roles
19
+ @@field_roles ||= ['Director (Direct Ministry)','Team Leader (Direct Ministry)','Team Member - Mom','Field Staff In Training','Raising Support Full Time','Seminary Staff','Field Staff','Local Leader']
20
+ end
21
+
22
+ def self.strategy_order
23
+ @@strategy_order ||= ['National Director','Operations','HR','LD','Fund Dev','CFM','FLD','EFM','DES','EPI','ESS','NTN','BRD','WSN','GLM','R&D','SR','SV','SSS','JPO','LHS','']
24
+ end
25
+
26
+ def self.strategies
27
+ @@strategies ||= {
28
+ 'National Director' => 'National Director',
29
+ 'Operations' => 'Operations',
30
+ 'HR' => 'Leadership Development',
31
+ 'LD' => 'Leadership Development',
32
+ 'Fund Dev' => 'Fund Development',
33
+ 'CFM' => 'Campus Field Ministry',
34
+ 'FLD' => 'Campus Field Ministry',
35
+ 'SV' => 'Cru High School',
36
+ 'EFM' => 'Ethnic Field Ministry',
37
+ 'DES' => 'Destino',
38
+ 'EPI' => 'Epic',
39
+ 'ESS' => 'Every Student Sent',
40
+ 'NTN' => 'Nations',
41
+ 'BRD' => 'Bridges',
42
+ 'WSN' => 'Global Missions',
43
+ 'GLM' => 'Global Missions',
44
+ 'R&D' => 'Research and Development',
45
+ 'LHS' => 'Lake Hart Stint'
46
+ }
47
+ end
48
+
49
+ def self.staff_positions
50
+ @@staff_positions ||= [
51
+ "Associate Staff",
52
+ "Staff Full Time",
53
+ "Hourly Full Time",
54
+ "Hourly on Call",
55
+ "Salaried Exempt Full Time",
56
+ "Salaried w Desig #",
57
+ "Self-Supported Staff",
58
+ "Staff on Delayed Payroll",
59
+ "Staff on Paid Leave",
60
+ "Staff on Unpaid Leave",
61
+ "Staff Raising Init Supprt",
62
+ "Affiliate",
63
+ "Volunteer Full Time",
64
+ "Volunteer Part Time",
65
+ "Ministry Intern A",
66
+ "Ministry Intern A Part Time",
67
+ "Ministry Intern Hourly Part Tm",
68
+ "STINT Full Time",
69
+ "Staff Part Time"
70
+ ]
71
+ end
72
+
73
+ scope :specialty_roles, -> { where(:jobStatus => "Staff Full Time").where(:ministry => "Campus Ministry").
74
+ where(:removedFromPeopleSoft => "N").where("jobTitle NOT IN (?)", field_roles).order(:jobTitle).order(:lastName) }
75
+
76
+ def self.get_roles(region)
77
+ result = {}
78
+ Staff.strategy_order.each do |strategy|
79
+ result[strategy] = specialty_roles.where(:strategy => strategy).where(:region => region)
80
+ end
81
+ result
82
+ end
83
+
84
+ def email
85
+ self[:email].present? ? self[:email] : self.person.try(:email)
86
+ end
87
+
88
+ # "first_name last_name"
89
+ def full_name
90
+ firstName.to_s + " " + lastName.to_s
91
+ end
92
+
93
+ def informal_full_name
94
+ nickname.to_s + " " + lastName.to_s
95
+ end
96
+
97
+ def nickname
98
+ (!preferred_name.to_s.strip.empty?) ? preferred_name : firstName
99
+ end
100
+
101
+ def is_active?
102
+ removedFromPeopleSoft != "Y"
103
+ end
104
+
105
+ def is_hr?
106
+ strategy == "HR" || strategy == "LD"
107
+ end
108
+
109
+ def is_director?
110
+ jobTitle && jobTitle.include?("Director")
111
+ end
112
+
113
+ def is_hr_director?
114
+ jobTitle && jobTitle.include?("Director (HR)")
115
+ end
116
+
117
+ def is_removed?
118
+ removedFromPeopleSoft == "Y" ? true : false
119
+ end
120
+ end
@@ -1 +1,11 @@
1
- <%= error_messages_for :element %>
1
+ <% if @element.errors.any? %>
2
+ <div class="errors">
3
+ <h2>There was a problem saving this element</h2>
4
+ <ul>
5
+ <% @element.errors.full_messages.each do |msg| %>
6
+ <li><%= msg %></li>
7
+ <% end %>
8
+ </ul>
9
+ </div>
10
+ <% end %>
11
+
@@ -1,11 +1,11 @@
1
1
  <% if @page_element %>
2
2
  $('#question_modal').dialog('close');
3
- $('#page-preview').html('<%= escape_javascript(render('admin/question_pages/question_page')) %>');
3
+ $('#page-preview').html('<%= escape_javascript(render('fe/admin/question_pages/question_page')) %>');
4
4
  $('#element_<%= dom_id(@element) %>').hide();
5
- $('#element_form_<%= dom_id(@element) %>').html('<%= escape_javascript(render('admin/panels/prop_element',:element => @element)) %>');
5
+ $('#element_form_<%= dom_id(@element) %>').html('<%= escape_javascript(render('fe/admin/panels/prop_element',:element => @element)) %>');
6
6
  $('#element_form_<%= dom_id(@element) %>').show();
7
7
  selectElement("#element_<%= @element.id %>");
8
8
  $.scrollTo("#element_<%= @element.id %>");
9
9
  <% else %>
10
10
  alert('That question already exists on this question sheet')
11
- <% end %>
11
+ <% end %>
@@ -1,4 +1,4 @@
1
1
  $('#element_<%= @element.id %>').remove()
2
- $('#panel').html('<%= escape_javascript(render('admin/panels/insert')) %>')
2
+ $('#panel').html('<%= escape_javascript(render('fe/admin/panels/insert')) %>')
3
3
  activeElement = ''
4
- switchTab('insert')
4
+ switchTab('insert')
@@ -1,2 +1,2 @@
1
- $('#page-preview').html('<%= escape_javascript(render('admin/question_pages/question_page', :page => @page)) %>')
1
+ $('#page-preview').html('<%= escape_javascript(render('fe/admin/question_pages/question_page', :page => @page)) %>')
2
2
  $('#list-pages li').removeClass('active')
@@ -1,2 +1,2 @@
1
- $('#page-preview').html('<%= escape_javascript(render('admin/question_pages/question_page')) %>')
1
+ $('#page-preview').html('<%= escape_javascript(render('fe/admin/question_pages/question_page')) %>')
2
2
  selectElement("#element_<%= @element.id %>")
@@ -1,4 +1,4 @@
1
1
  $('#element_<%= dom_id(@element) %>').hide()
2
- $('#element_form_<%= dom_id(@element) %>').html('<%= escape_javascript(render('admin/panels/prop_element',:element => @element)) %>')
2
+ $('#element_form_<%= dom_id(@element) %>').html('<%= escape_javascript(render('fe/admin/panels/prop_element',:element => @element)) %>')
3
3
  $('#element_form_<%= dom_id(@element) %>').show();
4
4
  selectElement("#element_<%= @element.id %>")
@@ -1,4 +1,4 @@
1
1
  $('#errors').html('<%= escape_javascript(render('errors', :element => @element)) %>')
2
2
  <% @element.errors.each do |attr_name, message| %>
3
3
  addError('element_<%= attr_name %>')
4
- <% end %>
4
+ <% end %>
@@ -1,10 +1,10 @@
1
1
  if ($('#question_modal')[0] == null) {
2
2
  $('body').append('<div id="question_modal"></div>');
3
3
  }
4
- $('#question_modal').html('<%= link_to("Add \"#{params[:human_type]}\"", admin_question_sheet_page_elements_path(:question_sheet_id => @page.question_sheet_id, :page_id => @page.id,
4
+ $('#question_modal').html('<%= link_to("Add \"#{params[:human_type]}\"", fe_admin_question_sheet_page_elements_path(:question_sheet_id => @page.question_sheet_id, :page_id => @page.id,
5
5
  :element_type => params[:element_type], "element[style]" => @style, format: :js),
6
6
  :remote => true,
7
7
  :method => :post,
8
8
  :class => "add_type") %><p>Or you can also use an existing <%= params[:human_type] %> element. If you are unsure, just <strong>Add <%= params[:human_type] %>.</strong></p><div id="questions_div" title=""></div>');
9
- $('#questions_div').html("<%= escape_javascript(render('questions/questions', :questions => @questions)) %>")
10
- $('#question_modal').dialog({width: 500, height: 400});
9
+ $('#questions_div').html("<%= escape_javascript(render('fe/questions/fe/questions', :questions => @questions)) %>")
10
+ $('#question_modal').dialog({width: 500, height: 400});
@@ -1,9 +1,9 @@
1
1
  $('#element_form_<%= dom_id(@element) %>').hide();
2
- $('#element_<%= dom_id(@element) %>').html('<%= escape_javascript(render('admin/question_pages/element_show', :element => @element)) %>')
2
+ $('#element_<%= dom_id(@element) %>').html('<%= escape_javascript(render('fe/admin/question_pages/element_show', :element => @element)) %>')
3
3
  $('#element_<%= dom_id(@element) %>').show()
4
4
  clearCurrentElement()
5
5
  $('#questions_list').sortable('refresh');
6
6
 
7
7
  <% @page.question_grids.each do |grid| %>
8
8
  $('#questions_list_<%= grid.id %>').sortable('refresh');
9
- <% end %>
9
+ <% end %>
@@ -1,13 +1,13 @@
1
1
  <div id="content">
2
- <h1>Edit Email Template</h1>
3
-
4
- <%= error_messages_for :email_template %>
5
-
6
- <%= form_for(:email_template, :url => admin_email_template_path(@email_template), :html => { :method => :put } ) do |f| %>
7
- <%= render :partial => 'form', :locals => {:f => f} %>
8
-
9
- <p><%= submit_tag "Update" %> or <%= link_to "Cancel", admin_email_templates_path, :class => "cancel" %></p>
10
- <% end %>
2
+ <h1>Edit Email Template</h1>
3
+
4
+ <%= error_messages_for :email_template %>
5
+
6
+ <%= form_for(:email_template, :url => fe_admin_email_template_path(@email_template), :html => { :method => :put } ) do |f| %>
7
+ <%= render 'form', f: f %>
8
+
9
+ <p><%= submit_tag "Update" %> or <%= link_to "Cancel", fe_admin_email_templates_path, :class => "cancel" %></p>
10
+ <% end %>
11
11
 
12
12
 
13
13
  </div>
@@ -8,13 +8,13 @@
8
8
  </tr>
9
9
  <% for email_template in @email_templates %>
10
10
  <tr class="<%= cycle("","alt") %>">
11
- <td><%= link_to email_template.name, edit_admin_email_template_path(email_template), :class => "email-template" %></td>
12
- <td class="actions"><%= link_to 'Destroy', admin_email_template_path(email_template), data: {confirm: 'Are you sure?'}, :method => :delete, :class => "destroy" %></td>
11
+ <td><%= link_to email_template.name, edit_fe_admin_email_template_path(email_template), :class => "email-template" %></td>
12
+ <td class="actions"><%= link_to 'Destroy', fe_admin_email_template_path(email_template), data: {confirm: 'Are you sure?'}, :method => :delete, :class => "destroy" %></td>
13
13
  </tr>
14
14
  <% end %>
15
15
  </table>
16
16
 
17
17
  <br />
18
18
 
19
- <%= link_to 'New Template', new_admin_email_template_path, :method => :GET, :class => "add-link" %>
19
+ <%= link_to 'New Template', new_fe_admin_email_template_path, :method => :GET, :class => "add-link" %>
20
20
  </div>
@@ -3,9 +3,9 @@
3
3
 
4
4
  <%= error_messages_for :email_template %>
5
5
 
6
- <%= form_for(:email_template, :url => admin_email_templates_path) do |f| %>
6
+ <%= form_for(:email_template, :url => fe_admin_email_templates_path) do |f| %>
7
7
  <%= render :partial => 'form', :locals => {:f => f}%>
8
8
 
9
- <p><%= submit_tag "Create" %> or <%= link_to "Cancel", admin_email_templates_path, :class => "cancel" %></p>
9
+ <p><%= submit_tag "Create" %> or <%= link_to "Cancel", fe_admin_email_templates_path, :class => "cancel" %></p>
10
10
  <% end %>
11
11
  </div>
@@ -5,6 +5,33 @@
5
5
  <h3>Advanced Options<br/>
6
6
  <a style="font-size: 11px; font-weight: normal; " href="#" onclick="$('#<%= dom_id(element) %>-pnl-advanced').hide();$('#<%= dom_id(element) %>-h3-show-advanced-options').show();return false;">Hide Advanced Options</a></h3>
7
7
 
8
+ <div class='future_affect'>
9
+ <%= label_tag "Future questions/pages will be shown based on the answer to this question: " %>
10
+ <%= radio_button_tag :future_affect, "yes" %>
11
+ <%= label_tag :future_affect_yes, "Yes" %>
12
+ <%= radio_button_tag :future_affect, "no" %>
13
+ <%= label_tag :future_affect_no, "No" %>
14
+ <% if @element.conditional.present? %>
15
+ <script>$(function() { $("#future_affect_yes").click(); });</script>
16
+ <% end %>
17
+ <div class='future_answer' style='display:none'>
18
+ What answer should show the element or page? <%= f.text_field "conditional_answer" %>
19
+ <br/>
20
+ Enter multiple answers separated by commas to match using an OR condition. Ex: "Option A, Option B" will match either "Option A" or "Option B" answers
21
+ </div>
22
+ <div class='future_target' style='display:none'>
23
+ Should it show the next element or a page further down the application?
24
+ <%= f.radio_button :conditional_type, "Fe::Element" %>
25
+ <%= f.label :conditional_type_feelement, "Next Element" %>
26
+ <%= f.radio_button :conditional_type, "Fe::Page" %>
27
+ <%= f.label :conditional_type_fepage, "Page" %>
28
+ </div>
29
+ <div class='future_page' style='<%= 'display:none' unless @element.conditional.is_a?(Fe::Page) %>'>
30
+ Which page? <%= f.collection_select :conditional_id, @page.question_sheet.pages, :id, :label %>
31
+ </div>
32
+ </div>
33
+ <br/>
34
+
8
35
  <p><label for="element_object" class="desc">Object Name</label>
9
36
  <%= f.text_field :object_name %></p>
10
37
 
@@ -13,4 +40,4 @@
13
40
 
14
41
  <p><label for="element_object" class="desc">Max Length</label>
15
42
  <%= f.text_field :max_length %></p>
16
- </div>
43
+ </div>