dm_event 4.2.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (337) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +23 -0
  3. data/README.md +33 -0
  4. data/Rakefile +36 -0
  5. data/app/assets/images/dm_event/payment_logos/sofort/at/100x38.png +0 -0
  6. data/app/assets/images/dm_event/payment_logos/sofort/at/200x75.png +0 -0
  7. data/app/assets/images/dm_event/payment_logos/sofort/at/250x94.png +0 -0
  8. data/app/assets/images/dm_event/payment_logos/sofort/at/28x7.png +0 -0
  9. data/app/assets/images/dm_event/payment_logos/sofort/at/320x120.png +0 -0
  10. data/app/assets/images/dm_event/payment_logos/sofort/at/42x11.png +0 -0
  11. data/app/assets/images/dm_event/payment_logos/sofort/at/75x28.png +0 -0
  12. data/app/assets/images/dm_event/payment_logos/sofort/at/icon-32x22.png +0 -0
  13. data/app/assets/images/dm_event/payment_logos/sofort/at/icon-32x24.png +0 -0
  14. data/app/assets/images/dm_event/payment_logos/sofort/at/icon-48x32.png +0 -0
  15. data/app/assets/images/dm_event/payment_logos/sofort/at/icon-48x34.png +0 -0
  16. data/app/assets/images/dm_event/payment_logos/sofort/at/icon-64x42.png +0 -0
  17. data/app/assets/images/dm_event/payment_logos/sofort/at/icon-64x44.png +0 -0
  18. data/app/assets/images/dm_event/payment_logos/sofort/be/100x38.png +0 -0
  19. data/app/assets/images/dm_event/payment_logos/sofort/be/200x75.png +0 -0
  20. data/app/assets/images/dm_event/payment_logos/sofort/be/250x94.png +0 -0
  21. data/app/assets/images/dm_event/payment_logos/sofort/be/28x7.png +0 -0
  22. data/app/assets/images/dm_event/payment_logos/sofort/be/320x120.png +0 -0
  23. data/app/assets/images/dm_event/payment_logos/sofort/be/42x11.png +0 -0
  24. data/app/assets/images/dm_event/payment_logos/sofort/be/75x28.png +0 -0
  25. data/app/assets/images/dm_event/payment_logos/sofort/be/icon-32x22.png +0 -0
  26. data/app/assets/images/dm_event/payment_logos/sofort/be/icon-32x24.png +0 -0
  27. data/app/assets/images/dm_event/payment_logos/sofort/be/icon-48x32.png +0 -0
  28. data/app/assets/images/dm_event/payment_logos/sofort/be/icon-48x34.png +0 -0
  29. data/app/assets/images/dm_event/payment_logos/sofort/be/icon-64x42.png +0 -0
  30. data/app/assets/images/dm_event/payment_logos/sofort/be/icon-64x44.png +0 -0
  31. data/app/assets/images/dm_event/payment_logos/sofort/ch/100x38.png +0 -0
  32. data/app/assets/images/dm_event/payment_logos/sofort/ch/200x75.png +0 -0
  33. data/app/assets/images/dm_event/payment_logos/sofort/ch/250x94.png +0 -0
  34. data/app/assets/images/dm_event/payment_logos/sofort/ch/28x7.png +0 -0
  35. data/app/assets/images/dm_event/payment_logos/sofort/ch/320x120.png +0 -0
  36. data/app/assets/images/dm_event/payment_logos/sofort/ch/42x11.png +0 -0
  37. data/app/assets/images/dm_event/payment_logos/sofort/ch/75x28.png +0 -0
  38. data/app/assets/images/dm_event/payment_logos/sofort/ch/icon-32x22.png +0 -0
  39. data/app/assets/images/dm_event/payment_logos/sofort/ch/icon-32x24.png +0 -0
  40. data/app/assets/images/dm_event/payment_logos/sofort/ch/icon-48x32.png +0 -0
  41. data/app/assets/images/dm_event/payment_logos/sofort/ch/icon-48x34.png +0 -0
  42. data/app/assets/images/dm_event/payment_logos/sofort/ch/icon-64x42.png +0 -0
  43. data/app/assets/images/dm_event/payment_logos/sofort/ch/icon-64x44.png +0 -0
  44. data/app/assets/images/dm_event/payment_logos/sofort/de/100x38.png +0 -0
  45. data/app/assets/images/dm_event/payment_logos/sofort/de/200x75.png +0 -0
  46. data/app/assets/images/dm_event/payment_logos/sofort/de/250x94.png +0 -0
  47. data/app/assets/images/dm_event/payment_logos/sofort/de/28x7.png +0 -0
  48. data/app/assets/images/dm_event/payment_logos/sofort/de/320x120.png +0 -0
  49. data/app/assets/images/dm_event/payment_logos/sofort/de/42x11.png +0 -0
  50. data/app/assets/images/dm_event/payment_logos/sofort/de/75x28.png +0 -0
  51. data/app/assets/images/dm_event/payment_logos/sofort/de/icon-32x22.png +0 -0
  52. data/app/assets/images/dm_event/payment_logos/sofort/de/icon-32x24.png +0 -0
  53. data/app/assets/images/dm_event/payment_logos/sofort/de/icon-48x32.png +0 -0
  54. data/app/assets/images/dm_event/payment_logos/sofort/de/icon-48x34.png +0 -0
  55. data/app/assets/images/dm_event/payment_logos/sofort/de/icon-64x42.png +0 -0
  56. data/app/assets/images/dm_event/payment_logos/sofort/de/icon-64x44.png +0 -0
  57. data/app/assets/images/dm_event/payment_logos/sofort/es/100x38.png +0 -0
  58. data/app/assets/images/dm_event/payment_logos/sofort/es/200x75.png +0 -0
  59. data/app/assets/images/dm_event/payment_logos/sofort/es/250x94.png +0 -0
  60. data/app/assets/images/dm_event/payment_logos/sofort/es/28x7.png +0 -0
  61. data/app/assets/images/dm_event/payment_logos/sofort/es/320x120.png +0 -0
  62. data/app/assets/images/dm_event/payment_logos/sofort/es/42x11.png +0 -0
  63. data/app/assets/images/dm_event/payment_logos/sofort/es/75x28.png +0 -0
  64. data/app/assets/images/dm_event/payment_logos/sofort/es/icon-32x22.png +0 -0
  65. data/app/assets/images/dm_event/payment_logos/sofort/es/icon-32x24.png +0 -0
  66. data/app/assets/images/dm_event/payment_logos/sofort/es/icon-48x32.png +0 -0
  67. data/app/assets/images/dm_event/payment_logos/sofort/es/icon-48x34.png +0 -0
  68. data/app/assets/images/dm_event/payment_logos/sofort/es/icon-64x42.png +0 -0
  69. data/app/assets/images/dm_event/payment_logos/sofort/es/icon-64x44.png +0 -0
  70. data/app/assets/images/dm_event/payment_logos/sofort/fr/100x38.png +0 -0
  71. data/app/assets/images/dm_event/payment_logos/sofort/fr/200x75.png +0 -0
  72. data/app/assets/images/dm_event/payment_logos/sofort/fr/250x94.png +0 -0
  73. data/app/assets/images/dm_event/payment_logos/sofort/fr/28x7.png +0 -0
  74. data/app/assets/images/dm_event/payment_logos/sofort/fr/320x120.png +0 -0
  75. data/app/assets/images/dm_event/payment_logos/sofort/fr/42x11.png +0 -0
  76. data/app/assets/images/dm_event/payment_logos/sofort/fr/75x28.png +0 -0
  77. data/app/assets/images/dm_event/payment_logos/sofort/fr/icon-32x22.png +0 -0
  78. data/app/assets/images/dm_event/payment_logos/sofort/fr/icon-32x24.png +0 -0
  79. data/app/assets/images/dm_event/payment_logos/sofort/fr/icon-48x32.png +0 -0
  80. data/app/assets/images/dm_event/payment_logos/sofort/fr/icon-48x34.png +0 -0
  81. data/app/assets/images/dm_event/payment_logos/sofort/fr/icon-64x42.png +0 -0
  82. data/app/assets/images/dm_event/payment_logos/sofort/fr/icon-64x44.png +0 -0
  83. data/app/assets/images/dm_event/payment_logos/sofort/it/100x38.png +0 -0
  84. data/app/assets/images/dm_event/payment_logos/sofort/it/200x75.png +0 -0
  85. data/app/assets/images/dm_event/payment_logos/sofort/it/250x94.png +0 -0
  86. data/app/assets/images/dm_event/payment_logos/sofort/it/28x7.png +0 -0
  87. data/app/assets/images/dm_event/payment_logos/sofort/it/320x120.png +0 -0
  88. data/app/assets/images/dm_event/payment_logos/sofort/it/42x11.png +0 -0
  89. data/app/assets/images/dm_event/payment_logos/sofort/it/75x28.png +0 -0
  90. data/app/assets/images/dm_event/payment_logos/sofort/it/icon-32x22.png +0 -0
  91. data/app/assets/images/dm_event/payment_logos/sofort/it/icon-32x24.png +0 -0
  92. data/app/assets/images/dm_event/payment_logos/sofort/it/icon-48x32.png +0 -0
  93. data/app/assets/images/dm_event/payment_logos/sofort/it/icon-48x34.png +0 -0
  94. data/app/assets/images/dm_event/payment_logos/sofort/it/icon-64x42.png +0 -0
  95. data/app/assets/images/dm_event/payment_logos/sofort/it/icon-64x44.png +0 -0
  96. data/app/assets/images/dm_event/payment_logos/sofort/nl/100x38.png +0 -0
  97. data/app/assets/images/dm_event/payment_logos/sofort/nl/200x75.png +0 -0
  98. data/app/assets/images/dm_event/payment_logos/sofort/nl/250x94.png +0 -0
  99. data/app/assets/images/dm_event/payment_logos/sofort/nl/28x7.png +0 -0
  100. data/app/assets/images/dm_event/payment_logos/sofort/nl/320x120.png +0 -0
  101. data/app/assets/images/dm_event/payment_logos/sofort/nl/42x11.png +0 -0
  102. data/app/assets/images/dm_event/payment_logos/sofort/nl/75x28.png +0 -0
  103. data/app/assets/images/dm_event/payment_logos/sofort/nl/icon-32x22.png +0 -0
  104. data/app/assets/images/dm_event/payment_logos/sofort/nl/icon-32x24.png +0 -0
  105. data/app/assets/images/dm_event/payment_logos/sofort/nl/icon-48x32.png +0 -0
  106. data/app/assets/images/dm_event/payment_logos/sofort/nl/icon-48x34.png +0 -0
  107. data/app/assets/images/dm_event/payment_logos/sofort/nl/icon-64x42.png +0 -0
  108. data/app/assets/images/dm_event/payment_logos/sofort/nl/icon-64x44.png +0 -0
  109. data/app/assets/images/dm_event/payment_logos/sofort/pl/100x38.png +0 -0
  110. data/app/assets/images/dm_event/payment_logos/sofort/pl/200x75.png +0 -0
  111. data/app/assets/images/dm_event/payment_logos/sofort/pl/250x94.png +0 -0
  112. data/app/assets/images/dm_event/payment_logos/sofort/pl/28x7.png +0 -0
  113. data/app/assets/images/dm_event/payment_logos/sofort/pl/320x120.png +0 -0
  114. data/app/assets/images/dm_event/payment_logos/sofort/pl/42x11.png +0 -0
  115. data/app/assets/images/dm_event/payment_logos/sofort/pl/75x28.png +0 -0
  116. data/app/assets/images/dm_event/payment_logos/sofort/pl/icon-32x22.png +0 -0
  117. data/app/assets/images/dm_event/payment_logos/sofort/pl/icon-32x24.png +0 -0
  118. data/app/assets/images/dm_event/payment_logos/sofort/pl/icon-48x32.png +0 -0
  119. data/app/assets/images/dm_event/payment_logos/sofort/pl/icon-48x34.png +0 -0
  120. data/app/assets/images/dm_event/payment_logos/sofort/pl/icon-64x42.png +0 -0
  121. data/app/assets/images/dm_event/payment_logos/sofort/pl/icon-64x44.png +0 -0
  122. data/app/assets/images/dm_event/payment_logos/sofort/uk/100x38.png +0 -0
  123. data/app/assets/images/dm_event/payment_logos/sofort/uk/200x75.png +0 -0
  124. data/app/assets/images/dm_event/payment_logos/sofort/uk/250x94.png +0 -0
  125. data/app/assets/images/dm_event/payment_logos/sofort/uk/28x7.png +0 -0
  126. data/app/assets/images/dm_event/payment_logos/sofort/uk/320x120.png +0 -0
  127. data/app/assets/images/dm_event/payment_logos/sofort/uk/42x11.png +0 -0
  128. data/app/assets/images/dm_event/payment_logos/sofort/uk/75x28.png +0 -0
  129. data/app/assets/images/dm_event/payment_logos/sofort/uk/icon-32x22.png +0 -0
  130. data/app/assets/images/dm_event/payment_logos/sofort/uk/icon-32x24.png +0 -0
  131. data/app/assets/images/dm_event/payment_logos/sofort/uk/icon-48x32.png +0 -0
  132. data/app/assets/images/dm_event/payment_logos/sofort/uk/icon-48x34.png +0 -0
  133. data/app/assets/images/dm_event/payment_logos/sofort/uk/icon-64x42.png +0 -0
  134. data/app/assets/images/dm_event/payment_logos/sofort/uk/icon-64x44.png +0 -0
  135. data/app/assets/javascripts/dm_event/admin.js +94 -0
  136. data/app/assets/stylesheets/dm_event/admin.css +152 -0
  137. data/app/assets/stylesheets/dm_event/application.css +65 -0
  138. data/app/controllers/dm_event/admin/admin_controller.rb +13 -0
  139. data/app/controllers/dm_event/admin/registrations_controller.rb +411 -0
  140. data/app/controllers/dm_event/admin/workshop_prices_controller.rb +73 -0
  141. data/app/controllers/dm_event/admin/workshops_controller.rb +147 -0
  142. data/app/controllers/dm_event/application_controller.rb +23 -0
  143. data/app/controllers/dm_event/payments_controller.rb +83 -0
  144. data/app/controllers/dm_event/registrations_controller.rb +368 -0
  145. data/app/datatables/registration_datatable.rb +117 -0
  146. data/app/helpers/dm_event/application_helper.rb +4 -0
  147. data/app/helpers/dm_event/registrations_helper.rb +14 -0
  148. data/app/helpers/dm_event/workshops_helper.rb +41 -0
  149. data/app/mailers/payment_reminder_mailer.rb +25 -0
  150. data/app/mailers/registration_notify_mailer.rb +31 -0
  151. data/app/models/dm_event/concerns/ability.rb +38 -0
  152. data/app/models/dm_event/concerns/registration_state_email.rb +80 -0
  153. data/app/models/dm_event/concerns/registration_state_machine.rb +218 -0
  154. data/app/models/dm_event/concerns/user_profile.rb +20 -0
  155. data/app/models/dm_event/model_decorators.rb +6 -0
  156. data/app/models/dm_event/permitted_params.rb +35 -0
  157. data/app/models/payment.rb +48 -0
  158. data/app/models/registration.rb +297 -0
  159. data/app/models/workshop.rb +247 -0
  160. data/app/models/workshop_price.rb +118 -0
  161. data/app/presenters/event_common_presenter.rb +31 -0
  162. data/app/presenters/registration_presenter.rb +34 -0
  163. data/app/presenters/workshop_presenter.rb +22 -0
  164. data/app/views/dm_event/admin/registrations/_form.html.erb +297 -0
  165. data/app/views/dm_event/admin/registrations/action_state.js.erb +1 -0
  166. data/app/views/dm_event/admin/registrations/edit.html.erb +1 -0
  167. data/app/views/dm_event/admin/registrations/index.html.erb +0 -0
  168. data/app/views/dm_event/admin/workshop_prices/_form.html.erb +62 -0
  169. data/app/views/dm_event/admin/workshop_prices/edit.html.erb +2 -0
  170. data/app/views/dm_event/admin/workshop_prices/index.html.erb +31 -0
  171. data/app/views/dm_event/admin/workshop_prices/new.html.erb +2 -0
  172. data/app/views/dm_event/admin/workshops/_form.html.erb +61 -0
  173. data/app/views/dm_event/admin/workshops/_header_menu.html.erb +21 -0
  174. data/app/views/dm_event/admin/workshops/_registration_stats.html.erb +58 -0
  175. data/app/views/dm_event/admin/workshops/additional_configuration.html.erb +47 -0
  176. data/app/views/dm_event/admin/workshops/edit.html.erb +2 -0
  177. data/app/views/dm_event/admin/workshops/edit_system_email.html.erb +75 -0
  178. data/app/views/dm_event/admin/workshops/financials.html.erb +179 -0
  179. data/app/views/dm_event/admin/workshops/index.html.erb +100 -0
  180. data/app/views/dm_event/admin/workshops/lost_users.html.erb +44 -0
  181. data/app/views/dm_event/admin/workshops/new.html.erb +2 -0
  182. data/app/views/dm_event/admin/workshops/show.html.erb +47 -0
  183. data/app/views/dm_event/admin/workshops/user_outstanding_balances.html.erb +29 -0
  184. data/app/views/dm_event/liquid_tags/_funding_project_status.html.erb +27 -0
  185. data/app/views/dm_event/payments/_registrations_paypal_standard.html.erb +23 -0
  186. data/app/views/dm_event/payments/_registrations_sofort.html.erb +18 -0
  187. data/app/views/dm_event/registrations/_section_address.html.erb +30 -0
  188. data/app/views/dm_event/registrations/_section_custom_fields.html.erb +7 -0
  189. data/app/views/dm_event/registrations/_section_prices.html.erb +33 -0
  190. data/app/views/dm_event/registrations/_workshop_price.html.erb +18 -0
  191. data/app/views/dm_event/registrations/choose_payment.html.erb +5 -0
  192. data/app/views/dm_event/registrations/closed.html.erb +14 -0
  193. data/app/views/dm_event/registrations/new.html.erb +30 -0
  194. data/app/views/dm_event/registrations/success.html.erb +15 -0
  195. data/app/views/layouts/email_templates/dm_event_email_layout.html.erb +318 -0
  196. data/app/views/layouts/email_templates/dm_event_email_layout.text.erb +1 -0
  197. data/app/views/layouts/email_templates/dm_event_payment_reminder.html.erb +22 -0
  198. data/app/views/layouts/email_templates/dm_event_payment_reminder.text.erb +19 -0
  199. data/app/views/layouts/email_templates/dm_event_registration_notify.html.erb +21 -0
  200. data/app/views/layouts/email_templates/dm_event_registration_notify.text.erb +13 -0
  201. data/config/initializers/dm_event.rb +1 -0
  202. data/config/initializers/liquid_init.rb +2 -0
  203. data/config/locales/ems.cs.yml +51 -0
  204. data/config/locales/ems.de.yml +51 -0
  205. data/config/locales/ems.en.yml +51 -0
  206. data/config/locales/ems.fi.yml +51 -0
  207. data/config/locales/ems.ja.yml +51 -0
  208. data/config/routes.rb +40 -0
  209. data/db/migrate/20130510155617_create_events.rb +98 -0
  210. data/db/migrate/20130516124327_add_locale_to_registration.rb +5 -0
  211. data/db/migrate/20130516204454_add_user_profile_to_registration.rb +11 -0
  212. data/db/migrate/20130518092324_add_require_address.rb +7 -0
  213. data/db/migrate/20130609145812_add_workshop_published.rb +5 -0
  214. data/db/migrate/20130624134506_add_amount_currency.rb +16 -0
  215. data/db/migrate/20130703131515_add_workshop_currency.rb +5 -0
  216. data/db/migrate/20130913083529_add_event_funding_type.rb +6 -0
  217. data/db/migrate/20130914105736_add_enable_payments.rb +5 -0
  218. data/db/migrate/20130916160033_add_sidebar_to_workshop.rb +5 -0
  219. data/db/migrate/20130917161700_add_show_address.rb +5 -0
  220. data/db/migrate/20131116180719_add_default_funding_goal.rb +8 -0
  221. data/db/migrate/20131127165445_add_payment_reminder.rb +5 -0
  222. data/db/migrate/20140122204702_add_event_image.rb +5 -0
  223. data/db/migrate/20140523165342_add_workshop_summary.rb +5 -0
  224. data/db/migrate/20140605052208_add_uuid_to_registration.rb +10 -0
  225. data/db/migrate/20140707152124_add_registration_comment_count.rb +5 -0
  226. data/db/migrate/20140708142312_add_payment_comment.rb +20 -0
  227. data/db/migrate/20150709125105_add_payment_reminder_history.rb +16 -0
  228. data/db/migrate/20160810081542_add_bcc_contact_email.rb +5 -0
  229. data/db/migrate/20160821150120_index_foreign_keys_in_ems_registrations.rb +9 -0
  230. data/db/migrate/20160821150121_index_foreign_keys_in_ems_workshop_price_translations.rb +5 -0
  231. data/db/migrate/20160821150122_index_foreign_keys_in_ems_workshop_prices.rb +6 -0
  232. data/db/migrate/20160821150123_index_foreign_keys_in_ems_workshop_translations.rb +5 -0
  233. data/db/migrate/20160821150124_index_foreign_keys_in_ems_workshops.rb +6 -0
  234. data/lib/dm_event/engine.rb +20 -0
  235. data/lib/dm_event/liquid/tags/funding_project_status.rb +55 -0
  236. data/lib/dm_event.rb +4 -0
  237. data/lib/tasks/dm_event_tasks.rake +4 -0
  238. data/spec/controllers/registrations_controller_spec.rb +152 -0
  239. data/spec/dummy/README.rdoc +28 -0
  240. data/spec/dummy/Rakefile +6 -0
  241. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  242. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  243. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  244. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  245. data/spec/dummy/app/models/ability.rb +10 -0
  246. data/spec/dummy/app/models/user.rb +6 -0
  247. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  248. data/spec/dummy/bin/bundle +3 -0
  249. data/spec/dummy/bin/rails +4 -0
  250. data/spec/dummy/bin/rake +4 -0
  251. data/spec/dummy/config/application.rb +26 -0
  252. data/spec/dummy/config/boot.rb +5 -0
  253. data/spec/dummy/config/database.yml +25 -0
  254. data/spec/dummy/config/environment.rb +5 -0
  255. data/spec/dummy/config/environments/development.rb +37 -0
  256. data/spec/dummy/config/environments/production.rb +82 -0
  257. data/spec/dummy/config/environments/test.rb +39 -0
  258. data/spec/dummy/config/initializers/assets.rb +8 -0
  259. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  260. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  261. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  262. data/spec/dummy/config/initializers/inflections.rb +16 -0
  263. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  264. data/spec/dummy/config/initializers/session_store.rb +3 -0
  265. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  266. data/spec/dummy/config/locales/en.yml +23 -0
  267. data/spec/dummy/config/routes.rb +11 -0
  268. data/spec/dummy/config/secrets.yml +22 -0
  269. data/spec/dummy/config.ru +4 -0
  270. data/spec/dummy/db/development.sqlite3 +0 -0
  271. data/spec/dummy/db/migrate/20141114170927_add_globalize_countries.dm_core.rb +50 -0
  272. data/spec/dummy/db/migrate/20141114170928_devise_create_users.dm_core.rb +46 -0
  273. data/spec/dummy/db/migrate/20141114170929_add_user_fields.dm_core.rb +14 -0
  274. data/spec/dummy/db/migrate/20141114170930_rolify_create_roles.dm_core.rb +20 -0
  275. data/spec/dummy/db/migrate/20141114170931_add_last_access.dm_core.rb +10 -0
  276. data/spec/dummy/db/migrate/20141114170932_create_versions.dm_core.rb +19 -0
  277. data/spec/dummy/db/migrate/20141114170933_add_object_changes_column_to_versions.dm_core.rb +12 -0
  278. data/spec/dummy/db/migrate/20141114170934_create_dm_core_accounts.dm_core.rb +13 -0
  279. data/spec/dummy/db/migrate/20141114170935_add_account_to_users.dm_core.rb +9 -0
  280. data/spec/dummy/db/migrate/20141114170936_create_preferences.dm_core.rb +13 -0
  281. data/spec/dummy/db/migrate/20141114170937_create_comments.dm_core.rb +22 -0
  282. data/spec/dummy/db/migrate/20141114170938_add_activity.dm_core.rb +21 -0
  283. data/spec/dummy/db/migrate/20141114170939_add_type_to_comments.dm_core.rb +9 -0
  284. data/spec/dummy/db/migrate/20141114170940_add_category.dm_core.rb +28 -0
  285. data/spec/dummy/db/migrate/20141114170941_create_email_table.dm_core.rb +26 -0
  286. data/spec/dummy/db/migrate/20141114170942_add_user_profile.dm_core.rb +46 -0
  287. data/spec/dummy/db/migrate/20141114170943_add_profile_email.dm_core.rb +14 -0
  288. data/spec/dummy/db/migrate/20141114170944_create_payment_history.dm_core.rb +37 -0
  289. data/spec/dummy/db/migrate/20141114170945_change_anchor_field.dm_core.rb +10 -0
  290. data/spec/dummy/db/migrate/20141114170946_create_user_site_profile.dm_core.rb +27 -0
  291. data/spec/dummy/db/migrate/20141114170947_add_avatar.dm_core.rb +12 -0
  292. data/spec/dummy/db/migrate/20141114170948_add_notify_to_payment_history.dm_core.rb +8 -0
  293. data/spec/dummy/db/migrate/20141114170949_acts_as_votable_migration.dm_core.rb +28 -0
  294. data/spec/dummy/db/migrate/20141114170950_add_user_site_profile_uuid.dm_core.rb +19 -0
  295. data/spec/dummy/db/migrate/20141114170951_add_invoice_id.dm_core.rb +7 -0
  296. data/spec/dummy/db/migrate/20141114170952_acts_as_follower_migration.dm_core.rb +18 -0
  297. data/spec/dummy/db/migrate/20141114170953_rename_invoice_id.dm_core.rb +12 -0
  298. data/spec/dummy/db/migrate/20141114170954_add_core_addresses.dm_core.rb +18 -0
  299. data/spec/dummy/db/migrate/20141114170955_papertrail_increase_column.dm_core.rb +9 -0
  300. data/spec/dummy/db/migrate/20141114170956_acts_as_taggable_on_migration.dm_core.rb +32 -0
  301. data/spec/dummy/db/migrate/20141114170957_add_missing_unique_indices.dm_core.rb +23 -0
  302. data/spec/dummy/db/migrate/20141114170958_add_taggings_counter_cache_to_tags.dm_core.rb +16 -0
  303. data/spec/dummy/db/migrate/20141114170959_create_custom_fields.dm_core.rb +40 -0
  304. data/spec/dummy/db/migrate/20141114170960_add_missing_taggable_index.dm_core.rb +11 -0
  305. data/spec/dummy/db/migrate/20141119103740_create_cms.dm_cms.rb +92 -0
  306. data/spec/dummy/db/migrate/20141119103741_add_account_to_cms.dm_cms.rb +11 -0
  307. data/spec/dummy/db/migrate/20141119103742_create_blog.dm_cms.rb +62 -0
  308. data/spec/dummy/db/migrate/20141119103743_add_notification_sent.dm_cms.rb +6 -0
  309. data/spec/dummy/db/migrate/20141119103744_add_blog_comment.dm_cms.rb +8 -0
  310. data/spec/dummy/db/migrate/20141119103745_add_blog_image.dm_cms.rb +6 -0
  311. data/spec/dummy/db/migrate/20141119103746_rename_snippet_slug.dm_cms.rb +14 -0
  312. data/spec/dummy/db/migrate/20141119103747_add_requires_subscription_blog.dm_cms.rb +8 -0
  313. data/spec/dummy/db/migrate/20141119103748_add_pages_ranked_model.dm_cms.rb +23 -0
  314. data/spec/dummy/db/migrate/20141119103749_add_blog_owner.dm_cms.rb +7 -0
  315. data/spec/dummy/db/migrate/20141119103750_create_media_files.dm_cms.rb +30 -0
  316. data/spec/dummy/db/migrate/20141119103751_add_cmspage_summary.dm_cms.rb +7 -0
  317. data/spec/dummy/db/migrate/20141119103752_add_blog_image_email_header.dm_cms.rb +6 -0
  318. data/spec/dummy/db/migrate/20141119103753_add_header_image.dm_cms.rb +10 -0
  319. data/spec/dummy/db/migrate/20160128154135_add_favored_locale.dm_core.rb +17 -0
  320. data/spec/dummy/db/migrate/20160128154136_update_papertrail_v4.dm_core.rb +41 -0
  321. data/spec/dummy/db/schema.rb +677 -0
  322. data/spec/dummy/public/404.html +67 -0
  323. data/spec/dummy/public/422.html +67 -0
  324. data/spec/dummy/public/500.html +66 -0
  325. data/spec/dummy/public/favicon.ico +0 -0
  326. data/spec/factories/account_factory.rb +7 -0
  327. data/spec/factories/registration_factory.rb +13 -0
  328. data/spec/factories/workshop_factory.rb +25 -0
  329. data/spec/factories/workshop_price_factory.rb +19 -0
  330. data/spec/models/registration_spec.rb +83 -0
  331. data/spec/models/workshop_spec.rb +26 -0
  332. data/spec/rails_helper.rb +70 -0
  333. data/spec/spec_helper.rb +85 -0
  334. data/spec/support/accounts.rb +17 -0
  335. data/spec/support/devise.rb +44 -0
  336. data/spec/support/fix_locale.rb +57 -0
  337. metadata +520 -0
@@ -0,0 +1,23 @@
1
+ <% payment_service_for @registration.receipt_code, current_account.preferred_paypal_merchant_id,
2
+ amount: @registration.payment_owed.amount,
3
+ currency: @registration.payment_owed.currency.iso_code,
4
+ service: :paypal do |service|
5
+ service.customer :first_name => @registration.first_name,
6
+ :last_name => @registration.last_name,
7
+ :phone => '',
8
+ :email => @registration.email
9
+ service.item_name @registration.workshop.title
10
+ service.tax '0.00'
11
+ service.cmd '_donations' if @registration.workshop.crowdfunding?
12
+ service.notify_url dm_event.payment_paypal_ipn_url if Rails.env.production?
13
+ service.return_url dm_event.register_success_url(@registration.receipt_code)
14
+ service.cancel_return_url dm_event.register_choose_payment_url(@registration.receipt_code)
15
+ %>
16
+
17
+ <!-- display payment summary here -->
18
+ <% if locale == :de %>
19
+ <%= image_submit_tag "https://www.paypal.com/de_DE/DE/i/btn/btn_xpressCheckout.gif" %>
20
+ <% else %>
21
+ <%= image_submit_tag "https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif" %>
22
+ <% end %>
23
+ <% end %>
@@ -0,0 +1,18 @@
1
+ <% payment_service_for @registration.receipt_code, current_account.preferred_sofort_user_id,
2
+ credential2: current_account.preferred_sofort_project_id,
3
+ credential3: current_account.preferred_sofort_project_password,
4
+ credential4: '', #--- notification password
5
+ amount: @registration.payment_owed,
6
+ currency: @registration.payment_owed.currency.iso_code,
7
+ service: :directebanking do |service|
8
+ service.item_name @registration.workshop.title
9
+ service.description @registration.workshop.title
10
+ service.reason_2 @registration.receipt_code
11
+ service.notify_url dm_event.payment_sofort_ipn_url if Rails.env.production?
12
+ service.return_url dm_event.register_success_url(@registration.receipt_code)
13
+ service.cancel_return_url dm_event.register_choose_payment_url(@registration.receipt_code)
14
+ %>
15
+
16
+ <!-- display payment summary here -->
17
+ <%= image_submit_tag "dm_event/payment_logos/sofort/#{I18n.locale}/200x75.png", width: 150 %>
18
+ <% end %>
@@ -0,0 +1,30 @@
1
+ <% if current_user.nil? %>
2
+ <h3><%= I18n.t "ems.ticket_contact" %></h3>
3
+ <div class="ticket_information">
4
+ <div class="registration_section_address">
5
+ <%= f.simple_fields_for :user_profile, @registration.user_profile do |builder| %>
6
+
7
+ <%= builder.input(:email, :label => I18n.t('ems.registration_email'), :required => true) %>
8
+ <% if I18n.locale == :ja %>
9
+ <%= builder.input :last_name, :label => I18n.t('ems.registration_last_name'), :required => true %>
10
+ <%= builder.input :first_name, :label => I18n.t('ems.registration_first_name'), :required => true %>
11
+ <% else %>
12
+ <%= builder.input :first_name, :label => I18n.t('ems.registration_first_name'), :required => true %>
13
+ <%= builder.input :last_name, :label => I18n.t('ems.registration_last_name'), :required => true %>
14
+ <% end %>
15
+
16
+ <% if @workshop.show_address %>
17
+ <%= builder.input :address, :label => I18n.t('ems.registration_address'), :required => @workshop.require_address %>
18
+ <%= builder.input :address2, :label => I18n.t('ems.registration_address2') %>
19
+ <%= builder.input :city, :label => I18n.t('ems.registration_city'), :required => @workshop.require_address %>
20
+ <%= builder.input :state, :label => I18n.t('ems.registration_state') %>
21
+ <%= builder.input :zipcode, :label => I18n.t('ems.registration_zipcode'), :required => @workshop.require_address %>
22
+ <% end %>
23
+
24
+ <%= builder.input :country_id, :collection => ut_country_select_collection(false), :label => I18n.t('ems.registration_country'), :required => true %>
25
+ <%= builder.input :address_required, :as => :hidden %>
26
+ <%= builder.input :userless_registration, :as => :hidden %>
27
+ <% end %>
28
+ </div>
29
+ </div>
30
+ <% end %>
@@ -0,0 +1,7 @@
1
+ <% f.object.build_missing_fields workshop %>
2
+ <%= f.simple_fields_for :custom_fields do |builder| %>
3
+ <% field = builder.object %>
4
+ <div class="custom_field_group">
5
+ <%= render "dm_core/admin/custom_fields/#{field.field_type}", field: field, f: builder %>
6
+ </div>
7
+ <% end %>
@@ -0,0 +1,33 @@
1
+ <% unless @workshop.workshop_prices.empty? && @workshop.custom_field_defs.empty? %>
2
+ <h3><%= I18n.t "ems.ticket_information" %></h3>
3
+ <div id="ticket_information" class="ticket_information">
4
+ <% unless @workshop.custom_field_defs.empty? %>
5
+ <div class="registration_custom_fields">
6
+ <%= render partial: 'section_custom_fields', locals: {f: f, workshop: @workshop} %>
7
+ </div>
8
+ <% end %>
9
+ <% unless @workshop.workshop_prices.empty? %>
10
+ <div class="registration_section_prices">
11
+ <%= f.error :workshop_price_id, id: 'workshop_price_error', class: 'error' %>
12
+ <ul class="workshop_price_list">
13
+ <% if @registration.new_record? %>
14
+ <% @workshop.workshop_prices.each do |p| %>
15
+ <% if p.visible? and !@workshop.price_sold_out?(p) %>
16
+ <li>
17
+ <% if @workshop.workshop_prices.size == 1 # if only one price, pre-select it %>
18
+ <label><%= radio_button 'registration', 'workshop_price_id', p.id, checked: true %><%= price_details(p) %></label>
19
+ <% else %>
20
+ <label><%= radio_button 'registration', 'workshop_price_id', p.id %><%= price_details(p) %></label>
21
+ <% end %>
22
+ </li>
23
+ <% end %>
24
+ <% end %>
25
+ <% else %>
26
+ <li><label><%= price_details(@registration.workshop_price) %></label></li>
27
+ <% end %>
28
+ </ul>
29
+ </div>
30
+ <% end %>
31
+ </div>
32
+ <% end %>
33
+
@@ -0,0 +1,18 @@
1
+ <div class="price_details">
2
+ <dl>
3
+ <dt>
4
+ <% if workshop_price.price %>
5
+ <span class="price"><%= humanized_money_with_symbol workshop_price.price %></span>&nbsp;&nbsp;&mdash;&nbsp;&nbsp;
6
+ <% end %>
7
+ <% unless workshop_price.price_description.blank? %>
8
+ <span class='price_description'><%= workshop_price.price_description %></span>
9
+ <% end %>
10
+ </dt>
11
+ <% unless workshop_price.sub_description.blank? %>
12
+ <dd class="sub_description"><%= workshop_price.sub_description %></dd>
13
+ <% end %>
14
+ <% unless workshop_price.valid_until.nil? %>
15
+ <dd class='expires'>Expires: <span><%= format_date(workshop_price.valid_until) %></span></dd>
16
+ <% end %>
17
+ </dl>
18
+ </div>
@@ -0,0 +1,5 @@
1
+ <h2><%= I18n.t('ems.choose_payment_method') %></h2>
2
+
3
+ <div class="payment_choice">
4
+ <%= render partial: 'payment_paypal_standard' %>
5
+ </div>
@@ -0,0 +1,14 @@
1
+ <% available = Workshop.available %>
2
+ <div id="workshop_registration" class="registration_closed">
3
+ <h2><%= I18n.t "ems.registration_closed_heading" %></h2>
4
+ <p><%= I18n.t "ems.registration_closed_text", title: @workshop.title %></p>
5
+ <p><%= I18n.t "ems.registration_closed_email", email: @workshop.contact_email %></p>
6
+ <% unless available.empty? %>
7
+ <p><%= I18n.t 'ems.registration_closed_list' %></p>
8
+ <ul>
9
+ <% available.each do |workshop| %>
10
+ <li><%= link_to workshop.title, register_new_url(workshop) %></li>
11
+ <% end %>
12
+ </ul>
13
+ <% end %>
14
+ </div>
@@ -0,0 +1,30 @@
1
+ <% content_for :sidebar do %>
2
+ <%= render_workshop_sidebar(@workshop) %>
3
+ <% end %>
4
+
5
+ <div id="workshop_registration">
6
+ <div id="workshop_description">
7
+ <%= render_workshop_description(@workshop) %>
8
+ <% if @workshop.show_social_buttons? %>
9
+ <div class="clearfix"></div>
10
+ <%= render(partial: "dm_cms/shared/social_buttons") %>
11
+ <% end %>
12
+ </div>
13
+
14
+ <% unless @workshop.require_account && current_user.nil? %>
15
+ <%= simple_form_for @registration, url: register_create_url(@workshop, anchor: 'ticket_information'),
16
+ html: { class: 'form-horizontal' }, wrapper: simple_form_theme_wrapper do |f| %>
17
+
18
+ <%= render partial: 'section_prices', locals: {f: f} %>
19
+
20
+ <%= render partial: 'section_address', locals: {f: f} %>
21
+
22
+ <% save_label = @workshop.crowdfunding? ? I18n.t('ems.donate_button') : I18n.t('ems.register_btn') %>
23
+ <%= submit_tag save_label, class: 'btn btn-primary' %>
24
+ <%= link_to I18n.t('ems.cancel_btn'), main_app.index_url, class: 'btn' %>
25
+ <% end %>
26
+ <% else %>
27
+ <%= link_to I18n.t('ems.login'), main_app.new_user_session_path, class: 'btn btn-primary', style: 'margin-bottom: 20px' %>
28
+ <%= link_to I18n.t('ems.create_account'), main_app.new_user_registration_path, class: 'btn' %>
29
+ <% end %>
30
+ </div>
@@ -0,0 +1,15 @@
1
+ <div class="receipt_section">
2
+ <h2><%= I18n.t('ems.registration_receipt_title') %></h2>
3
+ <div class="ticket">
4
+ <h3><%= @registration.workshop.title %></h3>
5
+ <ul>
6
+ <li><span class="header"><%= I18n.t('ems.ticket_receipt_attendee') %></span><%=h @registration.full_name %></li>
7
+ <li><span class="header"><%= I18n.t('ems.ticket_receipt_ticket_number') %></span><%=h @registration.receipt_code %></li>
8
+ <% if @registration.workshop_price %>
9
+ <li><span class="header"><%= I18n.t('ems.ticket_receipt_price') %></span><%= humanized_money_with_symbol @registration.price %></li>
10
+ <% end %>
11
+ </table>
12
+ </div>
13
+
14
+ <%= markdown(@receipt_content, :safe => false) %>
15
+ </div>
@@ -0,0 +1,318 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5
+
6
+ <style type="text/css">
7
+ #outlook a { padding:0; }
8
+ body { width:100% !important; }
9
+ .ReadMsgBody { width:100%; }
10
+ .ExternalClass { width:100%; }
11
+ figure {margin:0; padding:0; display:block;}
12
+ body { -webkit-text-size-adjust:none; }
13
+ body {
14
+ margin:0;
15
+ padding:0;
16
+ font-size: 12px;
17
+ font-family: Arial, sans-serif;
18
+ }
19
+ img {
20
+ border:0;
21
+ height:auto;
22
+ line-height:100%;
23
+ outline:none;
24
+ text-decoration:none;
25
+ }
26
+ table td { border-collapse:collapse; }
27
+ #backgroundTable{
28
+ height:100% !important;
29
+ margin:0;
30
+ padding:0;
31
+ width:100% !important;
32
+ }
33
+ body,#backgroundTable { background-color:#FFFFFF; }
34
+ #templateContainer { border:1px solid #E7E0C4; }
35
+ h1,.h1 {
36
+ color:#800040;
37
+ display:block;
38
+ font-family:Arial;
39
+ font-size: 18px;
40
+ font-weight: normal;
41
+ line-height: 24px;
42
+ text-transform: uppercase;
43
+ margin-top:20px;
44
+ margin-right:0;
45
+ margin-bottom:20px;
46
+ margin-left:0;
47
+ text-align:left;
48
+ padding-bottom: 5px;
49
+ }
50
+ h2,.h2 {
51
+ color:#8c8c8c;
52
+ display:block;
53
+ font-family:Arial;
54
+ font-size:16px;
55
+ font-weight:normal;
56
+ line-height:100%;
57
+ margin-top:0;
58
+ margin-right:0;
59
+ margin-bottom:10px;
60
+ margin-left:0;
61
+ text-align:left;
62
+ text-transform: uppercase;
63
+ }
64
+ h3,.h3 {
65
+ color:#8c8c8c;
66
+ display:block;
67
+ font-family:Arial;
68
+ font-size:16px;
69
+ font-weight:normal;
70
+ line-height:100%;
71
+ margin-top:0;
72
+ margin-right:0;
73
+ margin-bottom:10px;
74
+ margin-left:0;
75
+ text-align:left;
76
+ }
77
+ h4,.h4 {
78
+ color:#8c8c8c;
79
+ display:block;
80
+ font-family:Arial;
81
+ font-size:14px;
82
+ font-weight:bold;
83
+ line-height:100%;
84
+ margin-top:0;
85
+ margin-right:0;
86
+ margin-bottom:10px;
87
+ margin-left:0;
88
+ text-align:left;
89
+ }
90
+ #templatePreheader { background-color:#FFF; }
91
+ .preheaderContent div {
92
+ color:#505050;
93
+ font-family:Arial;
94
+ font-size:10px;
95
+ line-height:100%;
96
+ text-align:left;
97
+ }
98
+ .preheaderContent div a:link,.preheaderContent div a:visited,.preheaderContent div a .yshortcuts {
99
+ color:#336699;
100
+ font-weight:normal;
101
+ text-decoration:underline;
102
+ }
103
+ #templateHeader {
104
+ background-color:#FFFFFF;
105
+ border-bottom:0;
106
+ }
107
+ .headerContent {
108
+ color:#202020;
109
+ font-family:Arial;
110
+ font-size:34px;
111
+ font-weight:bold;
112
+ line-height:100%;
113
+ padding:0;
114
+ text-align:center;
115
+ vertical-align:middle;
116
+ }
117
+ .headerContent a:link,.headerContent a:visited,.headerContent a .yshortcuts {
118
+ color:#336699;
119
+ font-weight:normal;
120
+ text-decoration:underline;
121
+ }
122
+ #headerImage {
123
+ height:auto;
124
+ max-width:650px !important;
125
+ }
126
+ #templateContainer,.bodyContent { background-color:#FFFFFF; }
127
+ .bodyContent div {
128
+ color:#505050;
129
+ font-family:Arial;
130
+ font-size:13px;
131
+ line-height:150%;
132
+ text-align:left;
133
+ }
134
+ .bodyContent div a:link,.bodyContent div a:visited,.bodyContent div a .yshortcuts {
135
+ color:#336699;
136
+ font-weight:normal;
137
+ text-decoration:underline;
138
+ }
139
+ .bodyContent img {
140
+ display:inline;
141
+ height:auto;
142
+ }
143
+ #templateFooter {
144
+ background-color:#F8F8F8;
145
+ border-top: 1px solid #ddd;
146
+ }
147
+ .footerContent div {
148
+ color:#707070;
149
+ font-family:Arial;
150
+ font-size:11px;
151
+ line-height:125%;
152
+ text-align:center;
153
+ }
154
+ .footerContent div a:link,.footerContent div a:visited,.footerContent div a .yshortcuts {
155
+ color:#336699;
156
+ font-weight:normal;
157
+ text-decoration:underline;
158
+ }
159
+ .footerContent img { display:inline; }
160
+ hr, .hr {
161
+ width: 100%;
162
+ clear: both;
163
+ border: none;
164
+ height: 1px;
165
+ background-color: #aaa;
166
+ margin-top: 30px;
167
+ margin-bottom: 30px;
168
+ }
169
+ .bodyContent blockquote p {
170
+ border-left: 3px solid silver;
171
+ padding-bottom: 5px;
172
+ margin-bottom: 10px;
173
+ padding-left: 5px;
174
+ margin-left: 10px;
175
+ margin-right: 0;
176
+ }
177
+ .bodyContent .date {
178
+ text-align: right;
179
+ font-size: 12px;
180
+ }
181
+ .bodyContent img, img.img_right {
182
+ float: right;
183
+ padding: 0px 0px 10px 20px;
184
+ }
185
+ img.img_left {
186
+ float: left;
187
+ padding: 0px 20px 10px 0px;
188
+ }
189
+ img.img_full {
190
+ float: none;
191
+ padding: 0px 0px 0px 0px !important;
192
+ margin: 0px 0px 0px 0px;
193
+ clear: both;
194
+ }
195
+
196
+ #social {
197
+ background-color:#F8F6EF;
198
+ border:0;
199
+ }
200
+ #social div, #social div table {
201
+ text-align:center;
202
+ background-color: #F8F6EF;
203
+ color: #707070;
204
+ font-family: Arial;
205
+ font-size: 13px;
206
+ line-height: 125%;
207
+ }
208
+ #social img { vertical-align:middle; }
209
+ #utility {
210
+ background-color:#F8F6EF;
211
+ border:0;
212
+ }
213
+ #utility div { text-align:center; }
214
+ #monkeyRewards img { max-width:190px; }
215
+ </style>
216
+ </head>
217
+ <body leftmargin="0" marginwidth="0" topmargin="0" marginheight="0" offset="0">
218
+ <center>
219
+ <table border="0" cellpadding="0" cellspacing="0" height="100%" width="100%" id="backgroundTable">
220
+ <tr>
221
+ <td align="center" valign="top" style="border-collapse: collapse;">
222
+ <!-- // Begin Template Preheader \\ -->
223
+ <table border="0" cellpadding="10" cellspacing="0" width="650" id="templatePreheader">
224
+ <tr>
225
+ <td valign="top" class="preheaderContent">
226
+ <div>
227
+ <!-- ====================== Start Teaser Section ====================== -->
228
+ <!-- ====================== End Teaser Section ====================== -->
229
+ </div>
230
+ </td>
231
+ </tr>
232
+ </table>
233
+ <!-- // End Template Preheader \\ -->
234
+ <table border="0" cellpadding="0" cellspacing="0" width="650" id="templateContainer">
235
+ <tr>
236
+ <td align="center" valign="top" style="border-collapse: collapse;">
237
+ <!-- // Begin Template Header \\ -->
238
+ <table border="0" cellpadding="0" cellspacing="0" width="650" id="templateHeader">
239
+ <tr>
240
+ <td class="headerContent">
241
+
242
+ <!-- // Begin Module: Standard Header Image \\ -->
243
+ <img src="<%= site_asset_url('newsletter/template/email_header_eventinfo.jpg') %>" style="max-width:650px;" id="headerImage" />
244
+ <!-- // End Module: Standard Header Image \\ -->
245
+
246
+ </td>
247
+ </tr>
248
+ </table>
249
+ <!-- // End Template Header \\ -->
250
+ </td>
251
+ </tr>
252
+ <tr>
253
+ <td align="center" valign="top" style="border-collapse: collapse;">
254
+ <!-- // Begin Template Body \\ -->
255
+ <table border="0" cellpadding="0" cellspacing="0" width="650" id="templateBody">
256
+ <tr>
257
+ <td valign="top" style="border-collapse: collapse;">
258
+ <table border="0" cellpadding="0" cellspacing="0" width="650">
259
+ <tr>
260
+ <td valign="top" class="bodyContent">
261
+
262
+ <!-- // Begin Module: Standard Content \\ -->
263
+ <table border="0" cellpadding="20" cellspacing="0" width="100%">
264
+ <tr>
265
+ <td valign="top" style="border-collapse: collapse;">
266
+ <div>
267
+ <!-- ====================== Start Main Content ====================== -->
268
+ <%= yield %>
269
+ <!-- ====================== End Main Content ====================== -->
270
+ </div>
271
+ </td>
272
+ </tr>
273
+ </table>
274
+ <!-- // End Module: Standard Content \\ -->
275
+ </td>
276
+ </tr>
277
+ </table>
278
+ </td>
279
+ </tr>
280
+ </table>
281
+ <!-- // End Template Body \\ -->
282
+ </td>
283
+ </tr>
284
+ <tr>
285
+ <td align="center" valign="top" style="border-collapse: collapse;">
286
+ <!-- // Begin Template Footer \\ -->
287
+ <table border="0" cellpadding="10" cellspacing="0" width="650" id="templateFooter">
288
+ <tr>
289
+ <td valign="top" class="footerContent" style="border-collapse: collapse;">
290
+
291
+ <!-- // Begin Module: Standard Footer \\ -->
292
+ <table border="0" cellpadding="10" cellspacing="0" width="100%">
293
+ <tr>
294
+ <td valign="top" width="650">
295
+ <div>
296
+ <em>Copyright &copy; <%= Time.now.year %> <%= Account.current.company_name %></em>
297
+ &nbsp;&bull;&nbsp;<a href="mailto:<%= Account.current.contact_email %>"><%= Account.current.contact_email %></a>
298
+ &nbsp;&bull;&nbsp;<a href="http://<%= Account.current.domain %>"><%= Account.current.domain %></a>
299
+ </div>
300
+ </td>
301
+ </tr>
302
+ </table>
303
+ <!-- // End Module: Standard Footer \\ -->
304
+
305
+ </td>
306
+ </tr>
307
+ </table>
308
+ <!-- // End Template Footer \\ -->
309
+ </td>
310
+ </tr>
311
+ </table>
312
+ <br>
313
+ </td>
314
+ </tr>
315
+ </table>
316
+ </center>
317
+ </body>
318
+ </html>
@@ -0,0 +1,22 @@
1
+ <%= markdown do %>
2
+ <%= I18n.t('email.salutation', :value => h(@registration.full_name)) %>
3
+
4
+ <%= I18n.t('ems.ticket_registered_following_event') %>:
5
+
6
+ **<%=h @registration.workshop.title %>**
7
+
8
+ <%= I18n.t('ems.ticket_outstanding_balance') %>:
9
+
10
+ **<%= @payment_owed %>**
11
+
12
+ <%= I18n.t('ems.ticket_payment_link_leadin' )%>:
13
+
14
+ [<%= I18n.t('ems.ticket_payment_link_text') %>](<%= @payment_link %>)
15
+
16
+ <%= I18n.t('ems.ticket_receipt_questions', :value => h(@registration.workshop.contact_email)) %>
17
+
18
+ <%= I18n.t('email.thank_you') %>
19
+
20
+ <small>_<%= I18n.t('ems.ticket_if_already_paid', :value => h(@registration.workshop.contact_email))%>_</small>
21
+
22
+ <% end %>
@@ -0,0 +1,19 @@
1
+ <%= I18n.t('email.salutation', :value => h(@registration.full_name)) %>
2
+
3
+ <%= I18n.t('ems.ticket_registered_following_event') %>:
4
+
5
+ **<%=h @registration.workshop.title %>**
6
+
7
+ <%= I18n.t('ems.ticket_outstanding_balance') %>:
8
+
9
+ **<%= @payment_owed %>**
10
+
11
+ <%= I18n.t('ems.ticket_payment_link_leadin' )%>:
12
+
13
+ [<%= I18n.t('ems.ticket_payment_link_text') %>](<%= @payment_link %>)
14
+
15
+ <%= I18n.t('ems.ticket_receipt_questions', :value => h(@registration.workshop.contact_email)) %>
16
+
17
+ <%= I18n.t('email.thank_you') %>
18
+
19
+ _<%= I18n.t('ems.ticket_if_already_paid', :value => h(@registration.workshop.contact_email))%>_
@@ -0,0 +1,21 @@
1
+ <div class="ticket">
2
+ <table>
3
+ <tr><td><strong><%= I18n.t('ems.ticket_receipt_event') %>:</strong></td><td><%=h @registration.workshop.title %></td></tr>
4
+ <tr><td><strong><%= I18n.t('ems.ticket_receipt_attendee') %>:</strong></td><td><%=h @registration.full_name %></td></tr>
5
+ <tr><td><strong><%= I18n.t('ems.ticket_receipt_ticket_number') %>:</strong></td><td><%=h @registration.receipt_code %></td></tr>
6
+ </table>
7
+ </div>
8
+
9
+ <p><%= I18n.t('email.salutation', :value => h(@registration.full_name)) %></p>
10
+
11
+ <%= markdown(@content, :safe => false) %>
12
+
13
+ <% if @state != 'rejected' %>
14
+ <p><%= I18n.t('ems.ticket_receipt_questions', :value => h(@registration.workshop.contact_email)) %>
15
+ <% unless @registration.workshop.contact_phone.blank? -%>
16
+ <%= I18n.t('ems.ticket_receipt_questions_telephone', :value => h(@registration.workshop.contact_phone)) %>
17
+ <% end -%>
18
+ .</p>
19
+
20
+ <p><%= I18n.t('email.thank_you') %></p>
21
+ <% end %>
@@ -0,0 +1,13 @@
1
+ <%= I18n.t('ems.ticket_receipt_event') %>: <%=h @registration.workshop.title %>
2
+ <%= I18n.t('ems.ticket_receipt_attendee') %>: <%=h @registration.full_name %>
3
+ <%= I18n.t('ems.ticket_receipt_ticket_number') %>: <%=h @registration.receipt_code %>
4
+
5
+ <%= I18n.t('email.salutation', :value => h(@registration.full_name)) %>
6
+
7
+ <%= @content %>
8
+
9
+ <% if @state != 'rejected' -%>
10
+ <%= I18n.t('ems.ticket_receipt_questions', :value => h(@registration.workshop.contact_email)) %><% unless @registration.workshop.contact_phone.blank? -%> <%= I18n.t('ems.ticket_receipt_questions_telephone', h(@registration.workshop.contact_phone)) %><% end -%>.
11
+
12
+ <%= I18n.t('email.thank_you') %>
13
+ <% end -%>
@@ -0,0 +1 @@
1
+ ActiveMerchant::Billing::Base.mode = :test unless Rails.env.production?
@@ -0,0 +1,2 @@
1
+ Dir[File.dirname(__FILE__) + '/../../lib/dm_event/liquid/filters/*.rb'].each {|file| require file }
2
+ Dir[File.dirname(__FILE__) + '/../../lib/dm_event/liquid/tags/*.rb'].each {|file| require file }