dm_event 4.2.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +23 -0
- data/README.md +33 -0
- data/Rakefile +36 -0
- data/app/assets/images/dm_event/payment_logos/sofort/at/100x38.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/at/200x75.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/at/250x94.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/at/28x7.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/at/320x120.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/at/42x11.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/at/75x28.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/at/icon-32x22.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/at/icon-32x24.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/at/icon-48x32.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/at/icon-48x34.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/at/icon-64x42.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/at/icon-64x44.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/be/100x38.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/be/200x75.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/be/250x94.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/be/28x7.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/be/320x120.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/be/42x11.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/be/75x28.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/be/icon-32x22.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/be/icon-32x24.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/be/icon-48x32.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/be/icon-48x34.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/be/icon-64x42.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/be/icon-64x44.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/ch/100x38.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/ch/200x75.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/ch/250x94.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/ch/28x7.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/ch/320x120.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/ch/42x11.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/ch/75x28.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/ch/icon-32x22.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/ch/icon-32x24.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/ch/icon-48x32.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/ch/icon-48x34.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/ch/icon-64x42.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/ch/icon-64x44.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/de/100x38.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/de/200x75.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/de/250x94.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/de/28x7.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/de/320x120.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/de/42x11.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/de/75x28.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/de/icon-32x22.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/de/icon-32x24.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/de/icon-48x32.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/de/icon-48x34.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/de/icon-64x42.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/de/icon-64x44.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/es/100x38.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/es/200x75.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/es/250x94.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/es/28x7.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/es/320x120.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/es/42x11.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/es/75x28.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/es/icon-32x22.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/es/icon-32x24.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/es/icon-48x32.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/es/icon-48x34.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/es/icon-64x42.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/es/icon-64x44.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/fr/100x38.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/fr/200x75.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/fr/250x94.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/fr/28x7.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/fr/320x120.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/fr/42x11.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/fr/75x28.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/fr/icon-32x22.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/fr/icon-32x24.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/fr/icon-48x32.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/fr/icon-48x34.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/fr/icon-64x42.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/fr/icon-64x44.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/it/100x38.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/it/200x75.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/it/250x94.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/it/28x7.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/it/320x120.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/it/42x11.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/it/75x28.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/it/icon-32x22.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/it/icon-32x24.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/it/icon-48x32.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/it/icon-48x34.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/it/icon-64x42.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/it/icon-64x44.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/nl/100x38.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/nl/200x75.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/nl/250x94.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/nl/28x7.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/nl/320x120.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/nl/42x11.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/nl/75x28.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/nl/icon-32x22.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/nl/icon-32x24.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/nl/icon-48x32.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/nl/icon-48x34.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/nl/icon-64x42.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/nl/icon-64x44.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/pl/100x38.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/pl/200x75.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/pl/250x94.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/pl/28x7.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/pl/320x120.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/pl/42x11.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/pl/75x28.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/pl/icon-32x22.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/pl/icon-32x24.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/pl/icon-48x32.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/pl/icon-48x34.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/pl/icon-64x42.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/pl/icon-64x44.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/uk/100x38.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/uk/200x75.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/uk/250x94.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/uk/28x7.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/uk/320x120.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/uk/42x11.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/uk/75x28.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/uk/icon-32x22.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/uk/icon-32x24.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/uk/icon-48x32.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/uk/icon-48x34.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/uk/icon-64x42.png +0 -0
- data/app/assets/images/dm_event/payment_logos/sofort/uk/icon-64x44.png +0 -0
- data/app/assets/javascripts/dm_event/admin.js +94 -0
- data/app/assets/stylesheets/dm_event/admin.css +152 -0
- data/app/assets/stylesheets/dm_event/application.css +65 -0
- data/app/controllers/dm_event/admin/admin_controller.rb +13 -0
- data/app/controllers/dm_event/admin/registrations_controller.rb +411 -0
- data/app/controllers/dm_event/admin/workshop_prices_controller.rb +73 -0
- data/app/controllers/dm_event/admin/workshops_controller.rb +147 -0
- data/app/controllers/dm_event/application_controller.rb +23 -0
- data/app/controllers/dm_event/payments_controller.rb +83 -0
- data/app/controllers/dm_event/registrations_controller.rb +368 -0
- data/app/datatables/registration_datatable.rb +117 -0
- data/app/helpers/dm_event/application_helper.rb +4 -0
- data/app/helpers/dm_event/registrations_helper.rb +14 -0
- data/app/helpers/dm_event/workshops_helper.rb +41 -0
- data/app/mailers/payment_reminder_mailer.rb +25 -0
- data/app/mailers/registration_notify_mailer.rb +31 -0
- data/app/models/dm_event/concerns/ability.rb +38 -0
- data/app/models/dm_event/concerns/registration_state_email.rb +80 -0
- data/app/models/dm_event/concerns/registration_state_machine.rb +218 -0
- data/app/models/dm_event/concerns/user_profile.rb +20 -0
- data/app/models/dm_event/model_decorators.rb +6 -0
- data/app/models/dm_event/permitted_params.rb +35 -0
- data/app/models/payment.rb +48 -0
- data/app/models/registration.rb +297 -0
- data/app/models/workshop.rb +247 -0
- data/app/models/workshop_price.rb +118 -0
- data/app/presenters/event_common_presenter.rb +31 -0
- data/app/presenters/registration_presenter.rb +34 -0
- data/app/presenters/workshop_presenter.rb +22 -0
- data/app/views/dm_event/admin/registrations/_form.html.erb +297 -0
- data/app/views/dm_event/admin/registrations/action_state.js.erb +1 -0
- data/app/views/dm_event/admin/registrations/edit.html.erb +1 -0
- data/app/views/dm_event/admin/registrations/index.html.erb +0 -0
- data/app/views/dm_event/admin/workshop_prices/_form.html.erb +62 -0
- data/app/views/dm_event/admin/workshop_prices/edit.html.erb +2 -0
- data/app/views/dm_event/admin/workshop_prices/index.html.erb +31 -0
- data/app/views/dm_event/admin/workshop_prices/new.html.erb +2 -0
- data/app/views/dm_event/admin/workshops/_form.html.erb +61 -0
- data/app/views/dm_event/admin/workshops/_header_menu.html.erb +21 -0
- data/app/views/dm_event/admin/workshops/_registration_stats.html.erb +58 -0
- data/app/views/dm_event/admin/workshops/additional_configuration.html.erb +47 -0
- data/app/views/dm_event/admin/workshops/edit.html.erb +2 -0
- data/app/views/dm_event/admin/workshops/edit_system_email.html.erb +75 -0
- data/app/views/dm_event/admin/workshops/financials.html.erb +179 -0
- data/app/views/dm_event/admin/workshops/index.html.erb +100 -0
- data/app/views/dm_event/admin/workshops/lost_users.html.erb +44 -0
- data/app/views/dm_event/admin/workshops/new.html.erb +2 -0
- data/app/views/dm_event/admin/workshops/show.html.erb +47 -0
- data/app/views/dm_event/admin/workshops/user_outstanding_balances.html.erb +29 -0
- data/app/views/dm_event/liquid_tags/_funding_project_status.html.erb +27 -0
- data/app/views/dm_event/payments/_registrations_paypal_standard.html.erb +23 -0
- data/app/views/dm_event/payments/_registrations_sofort.html.erb +18 -0
- data/app/views/dm_event/registrations/_section_address.html.erb +30 -0
- data/app/views/dm_event/registrations/_section_custom_fields.html.erb +7 -0
- data/app/views/dm_event/registrations/_section_prices.html.erb +33 -0
- data/app/views/dm_event/registrations/_workshop_price.html.erb +18 -0
- data/app/views/dm_event/registrations/choose_payment.html.erb +5 -0
- data/app/views/dm_event/registrations/closed.html.erb +14 -0
- data/app/views/dm_event/registrations/new.html.erb +30 -0
- data/app/views/dm_event/registrations/success.html.erb +15 -0
- data/app/views/layouts/email_templates/dm_event_email_layout.html.erb +318 -0
- data/app/views/layouts/email_templates/dm_event_email_layout.text.erb +1 -0
- data/app/views/layouts/email_templates/dm_event_payment_reminder.html.erb +22 -0
- data/app/views/layouts/email_templates/dm_event_payment_reminder.text.erb +19 -0
- data/app/views/layouts/email_templates/dm_event_registration_notify.html.erb +21 -0
- data/app/views/layouts/email_templates/dm_event_registration_notify.text.erb +13 -0
- data/config/initializers/dm_event.rb +1 -0
- data/config/initializers/liquid_init.rb +2 -0
- data/config/locales/ems.cs.yml +51 -0
- data/config/locales/ems.de.yml +51 -0
- data/config/locales/ems.en.yml +51 -0
- data/config/locales/ems.fi.yml +51 -0
- data/config/locales/ems.ja.yml +51 -0
- data/config/routes.rb +40 -0
- data/db/migrate/20130510155617_create_events.rb +98 -0
- data/db/migrate/20130516124327_add_locale_to_registration.rb +5 -0
- data/db/migrate/20130516204454_add_user_profile_to_registration.rb +11 -0
- data/db/migrate/20130518092324_add_require_address.rb +7 -0
- data/db/migrate/20130609145812_add_workshop_published.rb +5 -0
- data/db/migrate/20130624134506_add_amount_currency.rb +16 -0
- data/db/migrate/20130703131515_add_workshop_currency.rb +5 -0
- data/db/migrate/20130913083529_add_event_funding_type.rb +6 -0
- data/db/migrate/20130914105736_add_enable_payments.rb +5 -0
- data/db/migrate/20130916160033_add_sidebar_to_workshop.rb +5 -0
- data/db/migrate/20130917161700_add_show_address.rb +5 -0
- data/db/migrate/20131116180719_add_default_funding_goal.rb +8 -0
- data/db/migrate/20131127165445_add_payment_reminder.rb +5 -0
- data/db/migrate/20140122204702_add_event_image.rb +5 -0
- data/db/migrate/20140523165342_add_workshop_summary.rb +5 -0
- data/db/migrate/20140605052208_add_uuid_to_registration.rb +10 -0
- data/db/migrate/20140707152124_add_registration_comment_count.rb +5 -0
- data/db/migrate/20140708142312_add_payment_comment.rb +20 -0
- data/db/migrate/20150709125105_add_payment_reminder_history.rb +16 -0
- data/db/migrate/20160810081542_add_bcc_contact_email.rb +5 -0
- data/db/migrate/20160821150120_index_foreign_keys_in_ems_registrations.rb +9 -0
- data/db/migrate/20160821150121_index_foreign_keys_in_ems_workshop_price_translations.rb +5 -0
- data/db/migrate/20160821150122_index_foreign_keys_in_ems_workshop_prices.rb +6 -0
- data/db/migrate/20160821150123_index_foreign_keys_in_ems_workshop_translations.rb +5 -0
- data/db/migrate/20160821150124_index_foreign_keys_in_ems_workshops.rb +6 -0
- data/lib/dm_event/engine.rb +20 -0
- data/lib/dm_event/liquid/tags/funding_project_status.rb +55 -0
- data/lib/dm_event.rb +4 -0
- data/lib/tasks/dm_event_tasks.rake +4 -0
- data/spec/controllers/registrations_controller_spec.rb +152 -0
- data/spec/dummy/README.rdoc +28 -0
- data/spec/dummy/Rakefile +6 -0
- data/spec/dummy/app/assets/javascripts/application.js +13 -0
- data/spec/dummy/app/assets/stylesheets/application.css +15 -0
- data/spec/dummy/app/controllers/application_controller.rb +5 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/models/ability.rb +10 -0
- data/spec/dummy/app/models/user.rb +6 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/config/application.rb +26 -0
- data/spec/dummy/config/boot.rb +5 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +37 -0
- data/spec/dummy/config/environments/production.rb +82 -0
- data/spec/dummy/config/environments/test.rb +39 -0
- data/spec/dummy/config/initializers/assets.rb +8 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/mime_types.rb +4 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +23 -0
- data/spec/dummy/config/routes.rb +11 -0
- data/spec/dummy/config/secrets.yml +22 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/migrate/20141114170927_add_globalize_countries.dm_core.rb +50 -0
- data/spec/dummy/db/migrate/20141114170928_devise_create_users.dm_core.rb +46 -0
- data/spec/dummy/db/migrate/20141114170929_add_user_fields.dm_core.rb +14 -0
- data/spec/dummy/db/migrate/20141114170930_rolify_create_roles.dm_core.rb +20 -0
- data/spec/dummy/db/migrate/20141114170931_add_last_access.dm_core.rb +10 -0
- data/spec/dummy/db/migrate/20141114170932_create_versions.dm_core.rb +19 -0
- data/spec/dummy/db/migrate/20141114170933_add_object_changes_column_to_versions.dm_core.rb +12 -0
- data/spec/dummy/db/migrate/20141114170934_create_dm_core_accounts.dm_core.rb +13 -0
- data/spec/dummy/db/migrate/20141114170935_add_account_to_users.dm_core.rb +9 -0
- data/spec/dummy/db/migrate/20141114170936_create_preferences.dm_core.rb +13 -0
- data/spec/dummy/db/migrate/20141114170937_create_comments.dm_core.rb +22 -0
- data/spec/dummy/db/migrate/20141114170938_add_activity.dm_core.rb +21 -0
- data/spec/dummy/db/migrate/20141114170939_add_type_to_comments.dm_core.rb +9 -0
- data/spec/dummy/db/migrate/20141114170940_add_category.dm_core.rb +28 -0
- data/spec/dummy/db/migrate/20141114170941_create_email_table.dm_core.rb +26 -0
- data/spec/dummy/db/migrate/20141114170942_add_user_profile.dm_core.rb +46 -0
- data/spec/dummy/db/migrate/20141114170943_add_profile_email.dm_core.rb +14 -0
- data/spec/dummy/db/migrate/20141114170944_create_payment_history.dm_core.rb +37 -0
- data/spec/dummy/db/migrate/20141114170945_change_anchor_field.dm_core.rb +10 -0
- data/spec/dummy/db/migrate/20141114170946_create_user_site_profile.dm_core.rb +27 -0
- data/spec/dummy/db/migrate/20141114170947_add_avatar.dm_core.rb +12 -0
- data/spec/dummy/db/migrate/20141114170948_add_notify_to_payment_history.dm_core.rb +8 -0
- data/spec/dummy/db/migrate/20141114170949_acts_as_votable_migration.dm_core.rb +28 -0
- data/spec/dummy/db/migrate/20141114170950_add_user_site_profile_uuid.dm_core.rb +19 -0
- data/spec/dummy/db/migrate/20141114170951_add_invoice_id.dm_core.rb +7 -0
- data/spec/dummy/db/migrate/20141114170952_acts_as_follower_migration.dm_core.rb +18 -0
- data/spec/dummy/db/migrate/20141114170953_rename_invoice_id.dm_core.rb +12 -0
- data/spec/dummy/db/migrate/20141114170954_add_core_addresses.dm_core.rb +18 -0
- data/spec/dummy/db/migrate/20141114170955_papertrail_increase_column.dm_core.rb +9 -0
- data/spec/dummy/db/migrate/20141114170956_acts_as_taggable_on_migration.dm_core.rb +32 -0
- data/spec/dummy/db/migrate/20141114170957_add_missing_unique_indices.dm_core.rb +23 -0
- data/spec/dummy/db/migrate/20141114170958_add_taggings_counter_cache_to_tags.dm_core.rb +16 -0
- data/spec/dummy/db/migrate/20141114170959_create_custom_fields.dm_core.rb +40 -0
- data/spec/dummy/db/migrate/20141114170960_add_missing_taggable_index.dm_core.rb +11 -0
- data/spec/dummy/db/migrate/20141119103740_create_cms.dm_cms.rb +92 -0
- data/spec/dummy/db/migrate/20141119103741_add_account_to_cms.dm_cms.rb +11 -0
- data/spec/dummy/db/migrate/20141119103742_create_blog.dm_cms.rb +62 -0
- data/spec/dummy/db/migrate/20141119103743_add_notification_sent.dm_cms.rb +6 -0
- data/spec/dummy/db/migrate/20141119103744_add_blog_comment.dm_cms.rb +8 -0
- data/spec/dummy/db/migrate/20141119103745_add_blog_image.dm_cms.rb +6 -0
- data/spec/dummy/db/migrate/20141119103746_rename_snippet_slug.dm_cms.rb +14 -0
- data/spec/dummy/db/migrate/20141119103747_add_requires_subscription_blog.dm_cms.rb +8 -0
- data/spec/dummy/db/migrate/20141119103748_add_pages_ranked_model.dm_cms.rb +23 -0
- data/spec/dummy/db/migrate/20141119103749_add_blog_owner.dm_cms.rb +7 -0
- data/spec/dummy/db/migrate/20141119103750_create_media_files.dm_cms.rb +30 -0
- data/spec/dummy/db/migrate/20141119103751_add_cmspage_summary.dm_cms.rb +7 -0
- data/spec/dummy/db/migrate/20141119103752_add_blog_image_email_header.dm_cms.rb +6 -0
- data/spec/dummy/db/migrate/20141119103753_add_header_image.dm_cms.rb +10 -0
- data/spec/dummy/db/migrate/20160128154135_add_favored_locale.dm_core.rb +17 -0
- data/spec/dummy/db/migrate/20160128154136_update_papertrail_v4.dm_core.rb +41 -0
- data/spec/dummy/db/schema.rb +677 -0
- data/spec/dummy/public/404.html +67 -0
- data/spec/dummy/public/422.html +67 -0
- data/spec/dummy/public/500.html +66 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/factories/account_factory.rb +7 -0
- data/spec/factories/registration_factory.rb +13 -0
- data/spec/factories/workshop_factory.rb +25 -0
- data/spec/factories/workshop_price_factory.rb +19 -0
- data/spec/models/registration_spec.rb +83 -0
- data/spec/models/workshop_spec.rb +26 -0
- data/spec/rails_helper.rb +70 -0
- data/spec/spec_helper.rb +85 -0
- data/spec/support/accounts.rb +17 -0
- data/spec/support/devise.rb +44 -0
- data/spec/support/fix_locale.rb +57 -0
- metadata +520 -0
@@ -0,0 +1,152 @@
|
|
1
|
+
/* @override
|
2
|
+
http://dev.kaleshwar.de:3000/assets/dm_event/admin.css?body=1
|
3
|
+
http://dev.kaleshwar.de:3200/assets/dm_event/admin.css?body=1 */
|
4
|
+
|
5
|
+
/*=== color for various state labels/status boxes ===*/
|
6
|
+
|
7
|
+
.submitted_color { color: #c0c700;}
|
8
|
+
.label-submitted, .badge-submitted { background-color: #c0c700; }
|
9
|
+
.label-submitted[href], .badge-submitted[href] { background-color: #c0c700;}
|
10
|
+
|
11
|
+
.drafted_color, .bounced_color { color: #8b8b89;}
|
12
|
+
.label-drafted, .badge-drafted { background-color: #8b8b89; }
|
13
|
+
.label-drafted[href], .badge-drafted[href] { background-color: #8b8b89;}
|
14
|
+
.label-bounced, .badge-bounced { background-color: #8b8b89; }
|
15
|
+
.label-bounced[href], .badge-bounced[href] { background-color: #8b8b89;}
|
16
|
+
|
17
|
+
.pending_color, .unconfirmed_color, .suspended_color { color: #c0c700;}
|
18
|
+
.label-pending, .badge-pending { background-color: #c0c700; }
|
19
|
+
.label-pending[href], .badge-pending[href] { background-color: #c0c700;}
|
20
|
+
.label-unconfirmed, .badge-unconfirmed { background-color: #c0c700; }
|
21
|
+
.label-unconfirmed[href], .badge-unconfirmed[href] { background-color: #c0c700;}
|
22
|
+
.label-suspended, .badge-suspended { background-color: #c0c700; }
|
23
|
+
.label-suspended[href], .badge-suspended[href] { background-color: #c0c700;}
|
24
|
+
.btn-pending, .progress-bar-pending {
|
25
|
+
background-color: #c0c700 !important;
|
26
|
+
}
|
27
|
+
.btn-pending .caret { border-top-color: #fff; border-bottom-color: #fff; }
|
28
|
+
.btn-pending:active, .btn-pending.active, .btn-group.open .btn-pending.dropdown-toggle {
|
29
|
+
border-color: #adb401;
|
30
|
+
background-color: #c7ce37;
|
31
|
+
}
|
32
|
+
|
33
|
+
.reviewing_color { color: #838200;}
|
34
|
+
.label-reviewing, .badge-reviewing { background-color: #838200; }
|
35
|
+
.label-reviewing[href], .badge-reviewing[href] { background-color: #838200;}
|
36
|
+
.btn-reviewing, .progress-bar-reviewing {
|
37
|
+
background-color: #838200 !important;
|
38
|
+
}
|
39
|
+
.btn-reviewing .caret { border-top-color: #fff; border-bottom-color: #fff; }
|
40
|
+
.btn-reviewing:active, .btn-reviewing.active, .btn-group.open .btn-reviewing.dropdown-toggle {
|
41
|
+
border-color: #838200;
|
42
|
+
background-color: #838200;
|
43
|
+
}
|
44
|
+
|
45
|
+
.accepted_color, .approved_color, .subscribed_color { color: #4a48ff;}
|
46
|
+
.label-accepted, .badge-accepted { background-color: #4a48ff; }
|
47
|
+
.label-accepted[href], .badge-accepted[href] { background-color: #4a48ff;}
|
48
|
+
.label-approved, .badge-approved { background-color: #4a48ff; }
|
49
|
+
.label-approved[href], .badge-approved[href] { background-color: #4a48ff;}
|
50
|
+
.label-subscribed, .badge-subscribed { background-color: #4a48ff; }
|
51
|
+
.label-subscribed[href], .badge-subscribed[href] { background-color: #4a48ff;}
|
52
|
+
.btn-accepted, .progress-bar-accepted {
|
53
|
+
background-color: #4a48ff !important;
|
54
|
+
}
|
55
|
+
.btn-accepted .caret { border-top-color: #fff; border-bottom-color: #fff; }
|
56
|
+
.btn-accepted:active, .btn-accepted.active, .btn-group.open .btn-accepted.dropdown-toggle {
|
57
|
+
border-color: #4a48ff;
|
58
|
+
background-color: #4a48ff;
|
59
|
+
}
|
60
|
+
|
61
|
+
.paid_color, .certified_color { color: #049727;}
|
62
|
+
.label-paid, .badge-paid { background-color: #049727; }
|
63
|
+
.label-paid[href], .badge-paid[href] { background-color: #049727;}
|
64
|
+
.label-certified, .badge-certified { background-color: #049727; }
|
65
|
+
.label-certified[href], .badge-certified[href] { background-color: #049727;}
|
66
|
+
.btn-paid, .progress-bar-paid {
|
67
|
+
background-color: #049727 !important;
|
68
|
+
}
|
69
|
+
.btn-paid .caret { border-top-color: #fff; border-bottom-color: #fff; }
|
70
|
+
.btn-paid:active, .btn-paid.active, .btn-group.open .btn-paid.dropdown-toggle {
|
71
|
+
border-color: #199526;
|
72
|
+
background-color: #199526;
|
73
|
+
}
|
74
|
+
|
75
|
+
.waitlisted_color { color: #d38100;}
|
76
|
+
.label-waitlisted, .badge-waitlisted { background-color: #d38100; }
|
77
|
+
.label-waitlisted[href], .badge-waitlisted[href] { background-color: #d38100;}
|
78
|
+
.btn-waitlisted, .progress-bar-waitlisted {
|
79
|
+
background-color: #d38100 !important;
|
80
|
+
}
|
81
|
+
.btn-waitlisted .caret { border-top-color: #fff; border-bottom-color: #fff; }
|
82
|
+
.btn-waitlisted:active, .btn-waitlisted.active, .btn-group.open .btn-waitlisted.dropdown-toggle {
|
83
|
+
border-color: #d38100;
|
84
|
+
background-color: #d38100;
|
85
|
+
}
|
86
|
+
|
87
|
+
.canceled_color { color: #8d248f;}
|
88
|
+
.label-canceled, .badge-canceled { background-color: #8d248f; }
|
89
|
+
.label-canceled[href], .badge-canceled[href] { background-color: #8d248f;}
|
90
|
+
.btn-canceled, .progress-bar-canceled {
|
91
|
+
background-color: #8d248f !important;
|
92
|
+
}
|
93
|
+
.btn-canceled .caret { border-top-color: #fff; border-bottom-color: #fff; }
|
94
|
+
.btn-canceled:active, .btn-canceled.active, .btn-group.open .btn-canceled.dropdown-toggle {
|
95
|
+
border-color: #8d248f;
|
96
|
+
background-color: #8d248f;
|
97
|
+
}
|
98
|
+
|
99
|
+
.rejected_color, .unsubscribed_color { color: #d10029;}
|
100
|
+
.label-rejected, .badge-rejected { background-color: #d10029; }
|
101
|
+
.label-rejected[href], .badge-rejected[href] { background-color: #d10029;}
|
102
|
+
.label-unsubscribed, .badge-unsubscribed { background-color: #d10029; }
|
103
|
+
.label-unsubscribed[href], .badge-unsubscribed[href] { background-color: #d10029;}
|
104
|
+
.btn-rejected, .progress-bar-rejected {
|
105
|
+
background-color: #d10029 !important;
|
106
|
+
}
|
107
|
+
.btn-rejected .caret { border-top-color: #fff; border-bottom-color: #fff; }
|
108
|
+
.btn-rejected:active, .btn-rejected.active, .btn-group.open .btn-rejected.dropdown-toggle {
|
109
|
+
border-color: #d10029;
|
110
|
+
background-color: #d10029;
|
111
|
+
}
|
112
|
+
|
113
|
+
.refunded_color { color: #b89ebc;}
|
114
|
+
.label-refunded, .badge-refunded { background-color: #b89ebc; }
|
115
|
+
.label-refunded[href], .badge-refunded[href] { background-color: #b89ebc;}
|
116
|
+
.btn-refunded, .progress-bar-refunded {
|
117
|
+
background-color: #b89ebc !important;
|
118
|
+
}
|
119
|
+
.btn-refunded .caret { border-top-color: #fff; border-bottom-color: #fff; }
|
120
|
+
.btn-refunded:active, .btn-refunded.active, .btn-group.open .btn-refunded.dropdown-toggle {
|
121
|
+
border-color: #b89ebc;
|
122
|
+
background-color: #b89ebc;
|
123
|
+
}
|
124
|
+
|
125
|
+
.noshow_color { color: #444;}
|
126
|
+
.label-noshow, .badge-noshow { background-color: #444; }
|
127
|
+
.label-noshow[href], .badge-noshow[href] { background-color: #444;}
|
128
|
+
.btn-noshow, .progress-bar-noshow {
|
129
|
+
background-color: #444 !important;
|
130
|
+
}
|
131
|
+
.btn-noshow .caret { border-top-color: #fff; border-bottom-color: #fff; }
|
132
|
+
.btn-noshow:active, .btn-noshow.active, .btn-group.open .btn-noshow.dropdown-toggle {
|
133
|
+
border-color: #444;
|
134
|
+
background-color: #444;
|
135
|
+
}
|
136
|
+
|
137
|
+
.workshop_price_list li { margin-bottom: 15px; list-style-type: none;}
|
138
|
+
.workshop_price_list input { float: left; }
|
139
|
+
.workshop_price_list .price_details { margin-left: 30px; }
|
140
|
+
|
141
|
+
.price_details .price { font-weight: bold; }
|
142
|
+
.price_details .sub_description {
|
143
|
+
margin-left: 0px;
|
144
|
+
font-style: italic;
|
145
|
+
}
|
146
|
+
.price_details .expires { margin-left: 20px; }
|
147
|
+
|
148
|
+
.balance_paid {color: green;}
|
149
|
+
.balance_owed {color: red;}
|
150
|
+
|
151
|
+
|
152
|
+
|
@@ -0,0 +1,65 @@
|
|
1
|
+
/* @override
|
2
|
+
http://dev.kaleshwar.de:3000/assets/dm_event/application.css?body=1 */
|
3
|
+
|
4
|
+
/*
|
5
|
+
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
6
|
+
* listed below.
|
7
|
+
*
|
8
|
+
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
9
|
+
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
|
10
|
+
*
|
11
|
+
* You're free to add application-wide styles to this file and they'll appear at the top of the
|
12
|
+
* compiled file, but it's generally better to create a new file per style scope.
|
13
|
+
*
|
14
|
+
*= require_self
|
15
|
+
*/
|
16
|
+
|
17
|
+
.workshop_price_list {
|
18
|
+
margin-left: 20px;
|
19
|
+
margin-bottom: 30px;
|
20
|
+
}
|
21
|
+
|
22
|
+
.workshop_price_list li { margin-bottom: 15px; }
|
23
|
+
.workshop_price_list input { float: left; }
|
24
|
+
.workshop_price_list .price_details { margin-left: 30px; }
|
25
|
+
|
26
|
+
.price_details .price { font-weight: bold; }
|
27
|
+
.price_details .sub_description {
|
28
|
+
margin-left: 20px;
|
29
|
+
font-style: italic;
|
30
|
+
}
|
31
|
+
.price_details .expires { margin-left: 20px; }
|
32
|
+
|
33
|
+
.receipt_section h2 {
|
34
|
+
margin-bottom: 20px;
|
35
|
+
}
|
36
|
+
|
37
|
+
.receipt_section .ticket {
|
38
|
+
background-image: -webkit-gradient(linear, left bottom, left top, from(#f6f6f6), to(#ffffff));
|
39
|
+
background-image: -moz-linear-gradient(90deg, #f6f6f6 0%, #ffffff 100%);
|
40
|
+
border: 1px solid #ddd;
|
41
|
+
padding: 10px;
|
42
|
+
margin-bottom: 20px;
|
43
|
+
width: auto;
|
44
|
+
}
|
45
|
+
|
46
|
+
.receipt_section .ticket h3 {
|
47
|
+
text-align: center;
|
48
|
+
}
|
49
|
+
.receipt_section .ticket li {
|
50
|
+
display: block;
|
51
|
+
}
|
52
|
+
.receipt_section .ticket li span {
|
53
|
+
font-weight: bold;
|
54
|
+
margin-right: 20px;
|
55
|
+
width: 150px;
|
56
|
+
display: inline-block;
|
57
|
+
text-align: left;
|
58
|
+
}
|
59
|
+
|
60
|
+
.receipt_section .ticket { width: 100%; overflow: hidden; }
|
61
|
+
.receipt_section .ticket ul { list-style: none; position: relative; float: left; display: block; left: 50%; }
|
62
|
+
.receipt_section .ticket ul li { position: relative;
|
63
|
+
display: block; right: 50%; }
|
64
|
+
|
65
|
+
.registration_closed h2 { margin-bottom: 20px;}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class DmEvent::Admin::AdminController < DmCore::Admin::AdminController
|
2
|
+
before_filter :authorize_access
|
3
|
+
|
4
|
+
protected
|
5
|
+
|
6
|
+
#------------------------------------------------------------------------------
|
7
|
+
def authorize_access
|
8
|
+
unless can?(:manage_events, :all)
|
9
|
+
flash[:alert] = "Unauthorized Access!"
|
10
|
+
redirect_to current_account.index_path
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,411 @@
|
|
1
|
+
class DmEvent::Admin::RegistrationsController < DmEvent::Admin::AdminController
|
2
|
+
include DmEvent::PermittedParams
|
3
|
+
|
4
|
+
helper DmEvent::RegistrationsHelper
|
5
|
+
|
6
|
+
#------------------------------------------------------------------------------
|
7
|
+
def action_state
|
8
|
+
@registration = Registration.find(params[:id])
|
9
|
+
@state_event = params[:state_event].downcase
|
10
|
+
case @state_event
|
11
|
+
# when 'verify payment'
|
12
|
+
# @registration.verify_payment
|
13
|
+
# when 'archive', 'unarchive'
|
14
|
+
# @registration.toggle_archive
|
15
|
+
# when 'confirm', 'unconfirm'
|
16
|
+
# @registration.toggle_confirm
|
17
|
+
when 'take action'
|
18
|
+
flash[:error] = "Please select an action to take"
|
19
|
+
else
|
20
|
+
#--- send to state machine if it's an allowed event
|
21
|
+
@registration.send("#{@state_event}!") if @registration.aasm.events.include? @state_event.to_sym
|
22
|
+
end
|
23
|
+
|
24
|
+
respond_to do |format|
|
25
|
+
format.html { redirect_to admin_workshop(@registration.workshop) }
|
26
|
+
format.js { render :action => :action_state }
|
27
|
+
end
|
28
|
+
|
29
|
+
rescue ActiveRecord::StaleObjectError
|
30
|
+
end
|
31
|
+
|
32
|
+
#------------------------------------------------------------------------------
|
33
|
+
def destroy
|
34
|
+
registration = Registration.find(params[:id])
|
35
|
+
registration.destroy
|
36
|
+
redirect_to admin_workshop_url(registration.workshop), notice: 'Registration was successfully deleted.'
|
37
|
+
end
|
38
|
+
|
39
|
+
#------------------------------------------------------------------------------
|
40
|
+
def edit
|
41
|
+
@registration = Registration.find(params[:id])
|
42
|
+
@workshop = @registration.workshop
|
43
|
+
end
|
44
|
+
|
45
|
+
#------------------------------------------------------------------------------
|
46
|
+
def update
|
47
|
+
@registration = Registration.find(params[:id])
|
48
|
+
@workshop = @registration.workshop
|
49
|
+
|
50
|
+
#--- save without validation, so can update without having to fill in all details
|
51
|
+
payment_comment_text = params[:registration].delete(:payment_comment_text)
|
52
|
+
@registration.attributes = registration_params
|
53
|
+
|
54
|
+
if @registration.save(:validate => false)
|
55
|
+
if @registration.payment_comment.nil? && payment_comment_text
|
56
|
+
#--- save the payment text as a comment, and keep a pointer to it
|
57
|
+
payment_comment = @registration.private_comments.create(body: payment_comment_text, user_id: current_user.id)
|
58
|
+
@registration.reload.update_attribute(:payment_comment_id, payment_comment.id)
|
59
|
+
end
|
60
|
+
redirect_to admin_workshop_url(@workshop), notice: 'Registration was successfully updated.'
|
61
|
+
else
|
62
|
+
render :action => :edit
|
63
|
+
end
|
64
|
+
rescue ActiveRecord::StaleObjectError
|
65
|
+
redirect_to :action => :edit, :id => @registration, :alert => 'Changes not saved - registration was modified by someone else'
|
66
|
+
end
|
67
|
+
|
68
|
+
# Record a new payment for the event
|
69
|
+
#------------------------------------------------------------------------------
|
70
|
+
def ajax_payment
|
71
|
+
@registration = Registration.find(params[:id])
|
72
|
+
@workshop = @registration.workshop
|
73
|
+
previous_payment = params[:payment_id] ? PaymentHistory.find(params[:payment_id]) : nil
|
74
|
+
@payment_history = @registration.manual_payment(previous_payment,
|
75
|
+
params[:payment_history][:cost],
|
76
|
+
params[:payment_history][:total_currency],
|
77
|
+
current_user.user_profile,
|
78
|
+
item_ref: params[:payment_history][:item_ref],
|
79
|
+
payment_method: params[:payment_history][:payment_method],
|
80
|
+
bill_to_name: params[:payment_history][:bill_to_name],
|
81
|
+
payment_date: params[:payment_history][:payment_date]
|
82
|
+
)
|
83
|
+
|
84
|
+
if @payment_history.errors.empty?
|
85
|
+
@registration.update_attribute(:receipt_requested, params[:payment_history][:receipt_requested])
|
86
|
+
end
|
87
|
+
|
88
|
+
respond_to do |format|
|
89
|
+
format.html {
|
90
|
+
flash[:notice] = "Payment was successfully added" if @payment_history.errors.empty?
|
91
|
+
flash[:alert] = "There was a problem adding this payment" unless @payment_history.errors.empty?
|
92
|
+
redirect_to edit_admin_registration_path(@registration)
|
93
|
+
}
|
94
|
+
format.js { render :action => :ajax_payment }
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
#------------------------------------------------------------------------------
|
99
|
+
def ajax_delete_payment
|
100
|
+
@registration = Registration.find(params[:id])
|
101
|
+
if @registration.delete_payment(params[:payment_id])
|
102
|
+
redirect_to edit_admin_registration_path(@registration), notice: 'Payment was deleted'
|
103
|
+
else
|
104
|
+
redirect_to edit_admin_registration_path(@registration), error: 'Problem deleting payment'
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
=begin
|
109
|
+
|
110
|
+
#------------------------------------------------------------------------------
|
111
|
+
def checkin
|
112
|
+
unless params[:id] == nil
|
113
|
+
@workshop = EventWorkshop.find_by_id(params[:id])
|
114
|
+
permit "#{SystemRoles::Checkin} on :workshop or #{SystemRoles::Moderator} on :workshop or #{SystemRoles::Moderator} on :event or #{SystemRoles::Admin} on Event or #{SystemRoles::System}", :event => @workshop.event
|
115
|
+
|
116
|
+
sort_init 'created_at', 'asc', nil, nil, false, true
|
117
|
+
sort_update
|
118
|
+
|
119
|
+
query = @workshop.event_registration.includes(:event_payment, :student, :country).order(sort_clause)
|
120
|
+
query = query.where(
|
121
|
+
"event_registrations.process_state = 'paid' OR
|
122
|
+
event_registrations.process_state = 'accepted' OR
|
123
|
+
event_registrations.process_state = 'refunded'")
|
124
|
+
query = query.where('event_registrations.archived_on IS NULL')
|
125
|
+
|
126
|
+
@show_all = true
|
127
|
+
if params[:commit] == 'Search'
|
128
|
+
wildname = params[:name].sql_wildcard
|
129
|
+
query = query.where(
|
130
|
+
"(event_registrations.receiptcode LIKE ? OR event_registrations.lastname LIKE ? OR
|
131
|
+
event_registrations.firstname LIKE ? OR
|
132
|
+
students.lastname LIKE ? OR students.firstname LIKE ? OR
|
133
|
+
students.middlename LIKE ? OR students.nickname LIKE ?)",
|
134
|
+
wildname, wildname, wildname, wildname, wildname, wildname, wildname)
|
135
|
+
|
136
|
+
elsif params[:commit] == 'SearchState'
|
137
|
+
query = query.where("event_registrations.process_state LIKE ?", params[:name])
|
138
|
+
elsif params[:commit] == 'SearchTag'
|
139
|
+
query = query.tagged_with(params[:name])
|
140
|
+
else
|
141
|
+
@show_all = false
|
142
|
+
end
|
143
|
+
@event_registrations = query.paginate :page => params[:page], :per_page => 100
|
144
|
+
else
|
145
|
+
flash[:error] = 'Select a workshop to view registrations'
|
146
|
+
redirect_to :controller => 'event_workshops', :action => 'list'
|
147
|
+
end
|
148
|
+
store_location
|
149
|
+
end
|
150
|
+
|
151
|
+
#------------------------------------------------------------------------------
|
152
|
+
def clear_confirmed_updated
|
153
|
+
@workshop = EventWorkshop.find_by_id(params[:id])
|
154
|
+
permit "#{SystemRoles::Moderator} on :workshop or #{SystemRoles::Moderator} on :event or #{SystemRoles::Admin} on Event or #{SystemRoles::System}", :event => @workshop.event
|
155
|
+
|
156
|
+
@workshop.event_registration.clear_confirmed_updated
|
157
|
+
redirect_to :action => 'list', :id => @workshop
|
158
|
+
end
|
159
|
+
|
160
|
+
#------------------------------------------------------------------------------
|
161
|
+
def destroy
|
162
|
+
event_registration = EventRegistration.find(params[:id])
|
163
|
+
@workshop = @event_registration.event_workshop
|
164
|
+
permit "#{SystemRoles::Moderator} on :workshop or #{SystemRoles::Moderator} on :event or #{SystemRoles::Admin} on Event or #{SystemRoles::System}", :event => @workshop.event
|
165
|
+
event_registration.destroy
|
166
|
+
redirect_back_or_default(:action => 'list', :id => event_registration.event_workshop_id)
|
167
|
+
end
|
168
|
+
|
169
|
+
#------------------------------------------------------------------------------
|
170
|
+
def markpaid
|
171
|
+
event_registration = EventRegistration.find(params[:id])
|
172
|
+
event_registration.paid!
|
173
|
+
redirect_back_or_default(:action => 'list', :id => event_registration.event_workshop_id)
|
174
|
+
rescue ActiveRecord::StaleObjectError
|
175
|
+
flash[:error] = 'Changes not saved - registration was modified by someone else'
|
176
|
+
redirect_back_or_default(:action => 'list', :id => event_registration.event_workshop_id)
|
177
|
+
end
|
178
|
+
|
179
|
+
#------------------------------------------------------------------------------
|
180
|
+
def payment_verification
|
181
|
+
event_registration = EventRegistration.find(params[:id])
|
182
|
+
event_registration.verify_payment
|
183
|
+
redirect_back_or_default(:action => 'list', :id => event_registration.event_workshop_id)
|
184
|
+
end
|
185
|
+
|
186
|
+
# cancel a registration
|
187
|
+
#------------------------------------------------------------------------------
|
188
|
+
def cancel
|
189
|
+
event_registration = EventRegistration.find(params[:id])
|
190
|
+
event_registration.canceled!
|
191
|
+
redirect_back_or_default(:action => 'list', :id => event_registration.event_workshop_id)
|
192
|
+
rescue ActiveRecord::StaleObjectError
|
193
|
+
flash[:error] = 'Changes not saved - registration was modified by someone else'
|
194
|
+
redirect_back_or_default(:action => 'list', :id => event_registration.event_workshop_id)
|
195
|
+
end
|
196
|
+
|
197
|
+
|
198
|
+
# remail the registration receipt
|
199
|
+
#------------------------------------------------------------------------------
|
200
|
+
def email_receipt
|
201
|
+
@event_registration = EventRegistration.find(params[:id])
|
202
|
+
email = @event_registration.email_receipt
|
203
|
+
unless email == nil
|
204
|
+
flash[:notice] = 'Email receipt was sent.'
|
205
|
+
else
|
206
|
+
flash[:error] = 'Sending of email receipt failed.'
|
207
|
+
end
|
208
|
+
redirect_back_or_default(:action => 'list', :id => @event_registration.event_workshop_id)
|
209
|
+
end
|
210
|
+
|
211
|
+
# remail the registration receipt to all attending
|
212
|
+
#------------------------------------------------------------------------------
|
213
|
+
def email_receipt_attending
|
214
|
+
success = failed = 0
|
215
|
+
workshop = EventWorkshop.find(params[:id])
|
216
|
+
workshop.event_registrations_attending.each do |event_registration|
|
217
|
+
email = event_registration.email_receipt
|
218
|
+
success += 1 if email
|
219
|
+
failed += 1 if email.nil?
|
220
|
+
end
|
221
|
+
flash[:notice] = "Email receipt sent: Successfully: #{success} Failed: #{failed}"
|
222
|
+
redirect_back_or_default(:action => :list, :id => workshop.id)
|
223
|
+
end
|
224
|
+
|
225
|
+
#------------------------------------------------------------------------------
|
226
|
+
def export_payment
|
227
|
+
unless params[:id] == nil
|
228
|
+
column_definitions = []
|
229
|
+
column_definitions << ["student_id", "item.student.nil? ? '' : item.student.id", 100]
|
230
|
+
column_definitions << ["lastname", "item.student.nil? ? item.lastname.capitalize : item.student.lastname.capitalize", 100]
|
231
|
+
column_definitions << ["firstname", "item.student.nil? ? item.firstname.capitalize : item.student.firstname.capitalize", 100]
|
232
|
+
column_definitions << ["fullname", "item.full_name", 100]
|
233
|
+
column_definitions << ["receiptcode", "item.receiptcode", nil, {:type => 'Number'}]
|
234
|
+
column_definitions << ["payamount", "item.event_payment.amount", nil, {:type => 'Number', :numberformat => '#,##0.00'}]
|
235
|
+
column_definitions << ["paytype", "item.event_payment.payment_type"]
|
236
|
+
column_definitions << ["paydesc", "item.event_payment.payment_desc"]
|
237
|
+
column_definitions << ["balance_owed", "item.balance_owed / 100"]
|
238
|
+
column_definitions << ["discount", "item.discount_cents / 100"]
|
239
|
+
column_definitions << ["item_code", "item.item_code"]
|
240
|
+
column_definitions << ["payment_comment", "item.payment_comment"]
|
241
|
+
column_definitions << ["receipt_requested", "item.receipt_requested"]
|
242
|
+
|
243
|
+
workshop = EventWorkshop.find(params[:id])
|
244
|
+
data_export(column_definitions, workshop.event_registrations_attending, :filename => "Payments #{workshop.title}", :expressions => true, :format => params[:format])
|
245
|
+
end
|
246
|
+
end
|
247
|
+
|
248
|
+
#------------------------------------------------------------------------------
|
249
|
+
def export_customers
|
250
|
+
raise "Export Customer List" unless permit? SystemRoles::KitchenSink
|
251
|
+
unless params[:id] == nil
|
252
|
+
column_definitions = []
|
253
|
+
column_definitions << ["Code", "item.student.nil? ? '' : ('H' + item.student.id.to_s)"]
|
254
|
+
column_definitions << ["Name", "item.full_name", 100]
|
255
|
+
column_definitions << ["eMail", "item.student.nil? ? item.email.downcase : item.student.email.downcase", 150]
|
256
|
+
column_definitions << ["Address1", "item.student.nil? ? item.address : item.student.address", 150]
|
257
|
+
column_definitions << ["Address2", "item.student.nil? ? item.address2 : item.student.address2"]
|
258
|
+
column_definitions << ["Address3", "item.student.nil? ? item.city.capitalize : item.student.city.capitalize", 100]
|
259
|
+
column_definitions << ["State", "item.student.nil? ? item.state.capitalize : item.student.state.capitalize"]
|
260
|
+
column_definitions << ["PostCdoe", "item.student.nil? ? item.zipcode : item.student.zipcode"]
|
261
|
+
column_definitions << ["AddressCountry", "item.student.nil? ? item.country.code : item.student.country.code"]
|
262
|
+
column_definitions << ["Phone", "item.student.nil? ? item.phone : item.student.phone", 100]
|
263
|
+
column_definitions << ['Mobile', 'item.student.nil? ? item.cell : item.student.cell', 100]
|
264
|
+
column_definitions << ['CustomerType', '2']
|
265
|
+
|
266
|
+
|
267
|
+
workshop = EventWorkshop.find(params[:id])
|
268
|
+
data_export(column_definitions, workshop.event_registrations_attending, :filename => "Customers #{workshop.title}", :expressions => true, :format => params[:format])
|
269
|
+
end
|
270
|
+
end
|
271
|
+
|
272
|
+
#------------------------------------------------------------------------------
|
273
|
+
def ajax_quick_update
|
274
|
+
@event_registration = EventRegistration.find(params[:id])
|
275
|
+
end
|
276
|
+
|
277
|
+
#------------------------------------------------------------------------------
|
278
|
+
def ajax_save_update
|
279
|
+
@event_registration = EventRegistration.find(params[:id])
|
280
|
+
if @event_registration.update_attributes(params[:event_registration])
|
281
|
+
render :action => :ajax_save_update
|
282
|
+
end
|
283
|
+
end
|
284
|
+
|
285
|
+
#------------------------------------------------------------------------------
|
286
|
+
def ajax_cancel_update
|
287
|
+
render :action => :ajax_cancel_update
|
288
|
+
end
|
289
|
+
|
290
|
+
#------------------------------------------------------------------------------
|
291
|
+
def ajax_checkin
|
292
|
+
@event_registration = EventRegistration.find(params[:id])
|
293
|
+
end
|
294
|
+
|
295
|
+
#------------------------------------------------------------------------------
|
296
|
+
def ajax_save_checkin
|
297
|
+
@event_registration = EventRegistration.find(params[:id])
|
298
|
+
params[:event_registration] ||= {} # TODO this is a hack, if the payment level is not specified
|
299
|
+
if params[:commit_value] == 'checkin'
|
300
|
+
@event_registration.arrival_at = DateTime.new(params[:event_registration]["arrival_at(1i)"].to_i, params[:event_registration]["arrival_at(2i)"].to_i, params[:event_registration]["arrival_at(3i)"].to_i) unless !@event_registration.event_workshop.show_arrival_departure or params[:event_registration]["arrival_at(1i)"].blank?
|
301
|
+
@event_registration.departure_at = DateTime.new(params[:event_registration]["departure_at(1i)"].to_i, params[:event_registration]["departure_at(2i)"].to_i, params[:event_registration]["departure_at(3i)"].to_i) unless !@event_registration.event_workshop.show_arrival_departure or params[:event_registration]["departure_at(1i)"].blank?
|
302
|
+
@event_registration.checkin_at = Time.new
|
303
|
+
@success = @event_registration.save(:validate => false)
|
304
|
+
@event_registration.student.update_attribute(:localcell, params[:localcell]) if @event_registration.student and params[:localcell]
|
305
|
+
elsif params[:commit_value] == 'checkout'
|
306
|
+
@event_registration.arrival_at = DateTime.new(params[:event_registration]["arrival_at(1i)"].to_i, params[:event_registration]["arrival_at(2i)"].to_i, params[:event_registration]["arrival_at(3i)"].to_i) unless !@event_registration.event_workshop.show_arrival_departure or params[:event_registration]["arrival_at(1i)"].blank?
|
307
|
+
@event_registration.departure_at = DateTime.new(params[:event_registration]["departure_at(1i)"].to_i, params[:event_registration]["departure_at(2i)"].to_i, params[:event_registration]["departure_at(3i)"].to_i) unless !@event_registration.event_workshop.show_arrival_departure or params[:event_registration]["departure_at(1i)"].blank?
|
308
|
+
@event_registration.checkin_at = nil
|
309
|
+
@success = @event_registration.save(:validate => false)
|
310
|
+
elsif params[:commit_value] == 'confirm_dates'
|
311
|
+
@event_registration.arrival_at = DateTime.new(params[:event_registration]["arrival_at(1i)"].to_i, params[:event_registration]["arrival_at(2i)"].to_i, params[:event_registration]["arrival_at(3i)"].to_i) unless !@event_registration.event_workshop.show_arrival_departure or params[:event_registration]["arrival_at(1i)"].blank?
|
312
|
+
@event_registration.departure_at = DateTime.new(params[:event_registration]["departure_at(1i)"].to_i, params[:event_registration]["departure_at(2i)"].to_i, params[:event_registration]["departure_at(3i)"].to_i) unless !@event_registration.event_workshop.show_arrival_departure or params[:event_registration]["departure_at(1i)"].blank?
|
313
|
+
#@event_registration.user_updated_at = Time.new
|
314
|
+
#@event_registration.room_id = params[:event_registration][:room_id] if @event_registration.event_workshop.show_rooming
|
315
|
+
@success = @event_registration.save(:validate => false)
|
316
|
+
@event_registration.student.update_attribute(:localcell, params[:localcell]) if @event_registration.student and params[:localcell]
|
317
|
+
elsif params[:commit_value] == 'payment_information'
|
318
|
+
@event_registration.attributes = params[:event_registration]
|
319
|
+
@success = @event_registration.save(:validate => false)
|
320
|
+
if @success
|
321
|
+
@event_registration.update_attribute(:item_code, @event_registration.event_payment.shoppingcart_code) unless (@event_registration.event_payment.nil? || @event_registration.event_payment.shoppingcart_code.blank?)
|
322
|
+
end
|
323
|
+
else
|
324
|
+
@event_registration.send('paid!')
|
325
|
+
@success = true
|
326
|
+
end
|
327
|
+
end
|
328
|
+
|
329
|
+
#------------------------------------------------------------------------------
|
330
|
+
def ajax_tag_text
|
331
|
+
@event_registration = EventRegistration.find(params[:id])
|
332
|
+
render :text => (@event_registration.tag_list_on(params[:tag_context]).blank? ? " " : @event_registration.tag_list_on(params[:tag_context]))
|
333
|
+
end
|
334
|
+
|
335
|
+
#------------------------------------------------------------------------------
|
336
|
+
def ajax_set_tag_text
|
337
|
+
@event_registration = EventRegistration.find(params[:id])
|
338
|
+
@event_registration.set_tag_list_on(params[:tag_context], params[:value])
|
339
|
+
@event_registration.save(:validate => false)
|
340
|
+
@event_registration.reload
|
341
|
+
render :partial => "hanuman/shared/tag_text", :object => @event_registration.tags_on(params[:tag_context])
|
342
|
+
end
|
343
|
+
|
344
|
+
|
345
|
+
#------------------------------------------------------------------------------
|
346
|
+
def ajax_tag_text_public
|
347
|
+
@event_registration = EventRegistration.find(params[:id])
|
348
|
+
render :text => (@event_registration.tag_list_public.blank? ? " " : @event_registration.tag_list_public)
|
349
|
+
end
|
350
|
+
|
351
|
+
#------------------------------------------------------------------------------
|
352
|
+
def ajax_set_tag_text_public
|
353
|
+
@event_registration = EventRegistration.find(params[:id])
|
354
|
+
@event_registration.tag_public_with(params[:value])
|
355
|
+
@event_registration.reload
|
356
|
+
render :partial => "hanuman/shared/tag_text", :object => @event_registration.tags_public, :locals => {:caption => 'add public tag'}
|
357
|
+
end
|
358
|
+
|
359
|
+
# [todo]
|
360
|
+
#------------------------------------------------------------------------------
|
361
|
+
def edit_campaign
|
362
|
+
@campaign = params[:id] ? EmailCampaign.find(params[:id]) : EmailCampaign.new
|
363
|
+
@workshop = @campaign.new_record? ? EventWorkshop.find(params[:workshop_id]) : @campaign.campaignable
|
364
|
+
|
365
|
+
if put_or_post?
|
366
|
+
@campaign.attributes = params[:campaign]
|
367
|
+
@campaign.html = TemplateLiquid.new(:template => File.read("#{Rails.root}/site_assets/email_templates/template_html.liquid"))
|
368
|
+
@campaign.html = "<html><body>#{help.markdown(@campaign.plaintext, :safe => false)}</body></html>"
|
369
|
+
if @campaign.save
|
370
|
+
@campaign.campaignable = @workshop and @campaign.save if @campaign.campaignable.nil?
|
371
|
+
redirect_to :controller => :event_registrations, :action => 'list', :id => @workshop
|
372
|
+
return
|
373
|
+
end
|
374
|
+
end
|
375
|
+
end
|
376
|
+
|
377
|
+
# [todo]
|
378
|
+
#------------------------------------------------------------------------------
|
379
|
+
def send_campaign
|
380
|
+
@campaign = EmailCampaign.find(params[:id])
|
381
|
+
@workshop = @campaign.campaignable
|
382
|
+
|
383
|
+
@workshop.event_registration.each do |registration|
|
384
|
+
if registration.attending?
|
385
|
+
values = {'event' => registration.to_liquid}
|
386
|
+
@campaign.add_email(registration.student.nil? ? registration.email : registration.student.email, :substitutions => values)
|
387
|
+
end
|
388
|
+
end
|
389
|
+
@campaign.start_sending
|
390
|
+
|
391
|
+
flash[:notice] = "#{@workshop.event_registration.size} emails are now queued for sending"
|
392
|
+
redirect_to :action => :edit_campaign, :id => @campaign
|
393
|
+
end
|
394
|
+
|
395
|
+
#------------------------------------------------------------------------------
|
396
|
+
def preview_campaign
|
397
|
+
show_preview_email(params[:campaign][:subject], '', params[:campaign][:plaintext])
|
398
|
+
end
|
399
|
+
|
400
|
+
#------------------------------------------------------------------------------
|
401
|
+
def show_preview_email(subject, html, plain)
|
402
|
+
render :action => :show_preview_email
|
403
|
+
end
|
404
|
+
|
405
|
+
#------------------------------------------------------------------------------
|
406
|
+
def preview_email
|
407
|
+
@subject, @html, @plain = params[:subject], params[:html], params[:plain]
|
408
|
+
render :layout => false
|
409
|
+
end
|
410
|
+
=end
|
411
|
+
end
|