effective_events 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +97 -0
- data/Rakefile +18 -0
- data/app/assets/config/effective_events_manifest.js +3 -0
- data/app/assets/javascripts/effective_events/base.js +0 -0
- data/app/assets/javascripts/effective_events.js +1 -0
- data/app/assets/stylesheets/effective_events/base.scss +0 -0
- data/app/assets/stylesheets/effective_events.scss +1 -0
- data/app/controllers/admin/event_registrants_controller.rb +11 -0
- data/app/controllers/admin/event_registrations_controller.rb +19 -0
- data/app/controllers/admin/event_tickets_controller.rb +8 -0
- data/app/controllers/admin/events_controller.rb +18 -0
- data/app/controllers/effective/event_registrations_controller.rb +53 -0
- data/app/controllers/effective/events_controller.rb +47 -0
- data/app/datatables/admin/effective_event_registrants_datatable.rb +47 -0
- data/app/datatables/admin/effective_event_registrations_datatable.rb +25 -0
- data/app/datatables/admin/effective_event_tickets_datatable.rb +42 -0
- data/app/datatables/admin/effective_events_datatable.rb +51 -0
- data/app/datatables/effective_event_registrants_datatable.rb +50 -0
- data/app/datatables/effective_event_registrations_datatable.rb +35 -0
- data/app/datatables/effective_events_datatable.rb +42 -0
- data/app/helpers/effective_events_helper.rb +18 -0
- data/app/models/concerns/effective_events_event_registration.rb +231 -0
- data/app/models/effective/event.rb +181 -0
- data/app/models/effective/event_registrant.rb +85 -0
- data/app/models/effective/event_registration.rb +7 -0
- data/app/models/effective/event_ticket.rb +59 -0
- data/app/views/admin/event_registrants/_form.html.haml +14 -0
- data/app/views/admin/event_tickets/_form.html.haml +7 -0
- data/app/views/admin/events/_form.html.haml +27 -0
- data/app/views/admin/events/_form_access.html.haml +10 -0
- data/app/views/admin/events/_form_content.html.haml +5 -0
- data/app/views/admin/events/_form_event.html.haml +24 -0
- data/app/views/admin/events/_form_event_registration_content.html.haml +19 -0
- data/app/views/effective/event_registrants/_fields.html.haml +19 -0
- data/app/views/effective/event_registrations/_content.html.haml +10 -0
- data/app/views/effective/event_registrations/_dashboard.html.haml +30 -0
- data/app/views/effective/event_registrations/_event_registration.html.haml +8 -0
- data/app/views/effective/event_registrations/_layout.html.haml +3 -0
- data/app/views/effective/event_registrations/_orders.html.haml +4 -0
- data/app/views/effective/event_registrations/_registrants.html.haml +10 -0
- data/app/views/effective/event_registrations/_summary.html.haml +29 -0
- data/app/views/effective/event_registrations/billing.html.haml +14 -0
- data/app/views/effective/event_registrations/checkout.html.haml +6 -0
- data/app/views/effective/event_registrations/registrants.html.haml +14 -0
- data/app/views/effective/event_registrations/start.html.haml +18 -0
- data/app/views/effective/event_registrations/submitted.html.haml +15 -0
- data/app/views/effective/event_registrations/summary.html.haml +8 -0
- data/app/views/effective/event_tickets/_fields.html.haml +4 -0
- data/app/views/effective/events/_dashboard.html.haml +14 -0
- data/app/views/effective/events/_event.html.haml +23 -0
- data/app/views/effective/events/_layout.html.haml +1 -0
- data/app/views/effective/events/_spacer.html.haml +1 -0
- data/app/views/effective/events/index.html.haml +8 -0
- data/app/views/effective/events/show.html.haml +16 -0
- data/config/effective_events.rb +17 -0
- data/config/routes.rb +24 -0
- data/db/migrate/01_create_effective_events.rb.erb +98 -0
- data/db/seeds.rb +45 -0
- data/lib/effective_events/engine.rb +18 -0
- data/lib/effective_events/version.rb +3 -0
- data/lib/effective_events.rb +21 -0
- data/lib/generators/effective_events/install_generator.rb +30 -0
- data/lib/generators/templates/effective_events_mailer_preview.rb +4 -0
- data/lib/tasks/effective_events_tasks.rake +8 -0
- metadata +262 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 3286a2f4da1e484f185381cdbf1364c6d966825493a24694c60f7f2da84756b7
|
4
|
+
data.tar.gz: d8fdf171da09d771b7f0068071e526df263134cab9666e663e6828f0df1e91c1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f197f262daafb0496e7bf4b07c1bd339eac4ae2b921a6d98d57e1063242f5a901131233dda5626fe907faa39bb033daaacf3231c677b550e549e99c33426a0f3
|
7
|
+
data.tar.gz: 2c09ff365be81a9dfb9f9bab9dd93a9bb66fdcb260ce5a1998d2f61a5e5b21dd3c2db63f83dd37cf8cbb2a8cfecf1f521a6e4fbb76842b037054a3d5a85c3301
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2021 Code and Effect Inc.
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
# Effective Events
|
2
|
+
|
3
|
+
Events, event registrants, event tickets and event products.
|
4
|
+
|
5
|
+
## Getting Started
|
6
|
+
|
7
|
+
This requires Rails 6+ and Twitter Bootstrap 4 and just works with Devise.
|
8
|
+
|
9
|
+
Please first install the [effective_datatables](https://github.com/code-and-effect/effective_datatables) gem.
|
10
|
+
|
11
|
+
Please download and install the [Twitter Bootstrap4](http://getbootstrap.com)
|
12
|
+
|
13
|
+
Add to your Gemfile:
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
gem 'haml-rails' # or try using gem 'hamlit-rails'
|
17
|
+
gem 'effective_events'
|
18
|
+
```
|
19
|
+
|
20
|
+
Run the bundle command to install it:
|
21
|
+
|
22
|
+
```console
|
23
|
+
bundle install
|
24
|
+
```
|
25
|
+
|
26
|
+
Then run the generator:
|
27
|
+
|
28
|
+
```ruby
|
29
|
+
rails generate effective_events:install
|
30
|
+
```
|
31
|
+
|
32
|
+
The generator will install an initializer which describes all configuration options and creates a database migration.
|
33
|
+
|
34
|
+
If you want to tweak the table names, manually adjust both the configuration file and the migration now.
|
35
|
+
|
36
|
+
Then migrate the database:
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
rake db:migrate
|
40
|
+
```
|
41
|
+
|
42
|
+
Use the following datatables to display to your user the events:
|
43
|
+
|
44
|
+
```haml
|
45
|
+
%h2 Events
|
46
|
+
- datatable = EffectiveEventsDatatable.new
|
47
|
+
```
|
48
|
+
|
49
|
+
and
|
50
|
+
|
51
|
+
```
|
52
|
+
Add a link to the admin menu:
|
53
|
+
|
54
|
+
```haml
|
55
|
+
- if can? :admin, :effective_events
|
56
|
+
- if can? :index, Effective::Event
|
57
|
+
= nav_link_to 'Events', effective_events.admin_events_path
|
58
|
+
```
|
59
|
+
|
60
|
+
## Configuration
|
61
|
+
|
62
|
+
## Authorization
|
63
|
+
|
64
|
+
All authorization checks are handled via the effective_resources gem found in the `config/initializers/effective_resources.rb` file.
|
65
|
+
|
66
|
+
## Permissions
|
67
|
+
|
68
|
+
The permissions you actually want to define are as follows (using CanCan):
|
69
|
+
|
70
|
+
```ruby
|
71
|
+
can :index, Effective::Event
|
72
|
+
|
73
|
+
if user.admin?
|
74
|
+
can :manage, Effective::Event
|
75
|
+
end
|
76
|
+
```
|
77
|
+
|
78
|
+
## License
|
79
|
+
|
80
|
+
MIT License. Copyright [Code and Effect Inc.](http://www.codeandeffect.com/)
|
81
|
+
|
82
|
+
## Testing
|
83
|
+
|
84
|
+
Run tests by:
|
85
|
+
|
86
|
+
```ruby
|
87
|
+
rails test
|
88
|
+
```
|
89
|
+
|
90
|
+
## Contributing
|
91
|
+
|
92
|
+
1. Fork it
|
93
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
94
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
95
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
96
|
+
5. Bonus points for test coverage
|
97
|
+
6. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require "bundler/setup"
|
2
|
+
|
3
|
+
APP_RAKEFILE = File.expand_path("test/dummy/Rakefile", __dir__)
|
4
|
+
load "rails/tasks/engine.rake"
|
5
|
+
|
6
|
+
load "rails/tasks/statistics.rake"
|
7
|
+
|
8
|
+
require "bundler/gem_tasks"
|
9
|
+
|
10
|
+
require "rake/testtask"
|
11
|
+
|
12
|
+
Rake::TestTask.new(:test) do |t|
|
13
|
+
t.libs << 'test'
|
14
|
+
t.pattern = 'test/**/*_test.rb'
|
15
|
+
t.verbose = false
|
16
|
+
end
|
17
|
+
|
18
|
+
task default: :test
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
//= require_tree ./effective_events
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
@import 'effective_events/base';
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module Admin
|
2
|
+
class EventRegistrantsController < ApplicationController
|
3
|
+
before_action(:authenticate_user!) if defined?(Devise)
|
4
|
+
before_action { EffectiveResources.authorize!(self, :admin, :effective_events) }
|
5
|
+
|
6
|
+
include Effective::CrudController
|
7
|
+
|
8
|
+
submit :mark_paid, 'Save and Mark Paid'
|
9
|
+
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Admin
|
2
|
+
class EventRegistrationsController < ApplicationController
|
3
|
+
before_action(:authenticate_user!) if defined?(Devise)
|
4
|
+
before_action { EffectiveResources.authorize!(self, :admin, :effective_events) }
|
5
|
+
|
6
|
+
include Effective::CrudController
|
7
|
+
|
8
|
+
resource_scope -> { EffectiveEvents.EventRegistration.deep.all }
|
9
|
+
datatable -> { Admin::EffectiveEventRegistrationsDatatable.new }
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def permitted_params
|
14
|
+
model = (params.key?(:effective_event_registration) ? :effective_event_registration : :event_registration)
|
15
|
+
params.require(model).permit!
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Admin
|
2
|
+
class EventsController < ApplicationController
|
3
|
+
before_action(:authenticate_user!) if defined?(Devise)
|
4
|
+
before_action { EffectiveResources.authorize!(self, :admin, :effective_events) }
|
5
|
+
|
6
|
+
include Effective::CrudController
|
7
|
+
|
8
|
+
submit :save, 'Save'
|
9
|
+
submit :save, 'Save and Add New', redirect: :new
|
10
|
+
submit :save, 'Save and View', redirect: -> { effective_events.event_path(resource) }
|
11
|
+
submit :save, 'Duplicate', redirect: -> { effective_events.new_admin_event_path(duplicate_id: resource.id) }
|
12
|
+
|
13
|
+
def permitted_params
|
14
|
+
params.require(:effective_event).permit!
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module Effective
|
2
|
+
class EventRegistrationsController < ApplicationController
|
3
|
+
before_action(:authenticate_user!) if defined?(Devise)
|
4
|
+
|
5
|
+
include Effective::WizardController
|
6
|
+
|
7
|
+
resource_scope -> {
|
8
|
+
event = Effective::Event.find(params[:event_id])
|
9
|
+
EffectiveEvents.EventRegistration.deep.where(owner: current_owner, event: event)
|
10
|
+
}
|
11
|
+
|
12
|
+
# Allow only 1 in-progress event registration at a time
|
13
|
+
before_action(only: [:new, :show], unless: -> { resource&.done? }) do
|
14
|
+
existing = resource_scope.in_progress.where.not(id: resource).first
|
15
|
+
|
16
|
+
if existing.present?
|
17
|
+
flash[:success] = "You have been redirected to your existing in progress event registration"
|
18
|
+
redirect_to effective_events.event_event_registration_build_path(existing.event, existing, existing.next_step)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
after_save do
|
23
|
+
flash.now[:success] = ''
|
24
|
+
end
|
25
|
+
|
26
|
+
# The default redirect doesn't respect nested resources here
|
27
|
+
def new
|
28
|
+
self.resource ||= (find_wizard_resource || resource_scope.new)
|
29
|
+
EffectiveResources.authorize!(self, :new, resource)
|
30
|
+
|
31
|
+
redirect_to effective_events.event_event_registration_build_path(
|
32
|
+
resource.event,
|
33
|
+
(resource.to_param || :new),
|
34
|
+
(resource.first_uncompleted_step || resource_wizard_steps.first)
|
35
|
+
)
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def current_owner
|
41
|
+
(current_user.class.respond_to?(:effective_memberships_owner?) ? current_user.effective_memberships_owners : current_user)
|
42
|
+
end
|
43
|
+
|
44
|
+
def permitted_params
|
45
|
+
model = (params.key?(:effective_event_registration) ? :effective_event_registration : :event_registration)
|
46
|
+
|
47
|
+
params.require(model).permit!.except(
|
48
|
+
:status, :status_steps, :wizard_steps, :submitted_at
|
49
|
+
)
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Effective
|
2
|
+
class EventsController < ApplicationController
|
3
|
+
include Effective::CrudController
|
4
|
+
|
5
|
+
resource_scope -> {
|
6
|
+
unpublished = EffectiveResources.authorized?(self, :admin, :effective_events)
|
7
|
+
Effective::Event.events(user: current_user, unpublished: unpublished)
|
8
|
+
}
|
9
|
+
|
10
|
+
def index
|
11
|
+
@events ||= resource_scope
|
12
|
+
|
13
|
+
@events = @events.paginate(page: params[:page])
|
14
|
+
|
15
|
+
# if params[:search].present?
|
16
|
+
# search = params[:search].permit(EffectiveEvents.permitted_params).delete_if { |k, v| v.blank? }
|
17
|
+
# @events = @events.where(search) if search.present?
|
18
|
+
# end
|
19
|
+
|
20
|
+
EffectiveResources.authorize!(self, :index, Effective::Event)
|
21
|
+
|
22
|
+
@page_title ||= ['Events', (" - Page #{params[:page]}" if params[:page])].compact.join
|
23
|
+
end
|
24
|
+
|
25
|
+
def show
|
26
|
+
@event = resource_scope.find(params[:id])
|
27
|
+
|
28
|
+
if @event.respond_to?(:roles_permit?)
|
29
|
+
raise Effective::AccessDenied.new('Access Denied', :show, @event) unless @event.roles_permit?(current_user)
|
30
|
+
end
|
31
|
+
|
32
|
+
EffectiveResources.authorize!(self, :show, @event)
|
33
|
+
|
34
|
+
if EffectiveResources.authorized?(self, :admin, :effective_events)
|
35
|
+
flash.now[:warning] = [
|
36
|
+
'Hi Admin!',
|
37
|
+
('You are viewing a hidden event.' if @event.draft?),
|
38
|
+
'Click here to',
|
39
|
+
("<a href='#{effective_events.edit_admin_event_path(@event)}' class='alert-link'>edit event settings</a>.")
|
40
|
+
].compact.join(' ')
|
41
|
+
end
|
42
|
+
|
43
|
+
@page_title ||= @event.to_s
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Admin
|
2
|
+
class EffectiveEventRegistrantsDatatable < Effective::Datatable
|
3
|
+
datatable do
|
4
|
+
col :updated_at, visible: false
|
5
|
+
col :created_at, visible: false
|
6
|
+
col :id, visible: false
|
7
|
+
|
8
|
+
col :event
|
9
|
+
|
10
|
+
col :owner, visible: false
|
11
|
+
col :event_registration, visible: false
|
12
|
+
|
13
|
+
if attributes[:event_id]
|
14
|
+
col :event_ticket, search: Effective::EventTicket.where(event: event).all
|
15
|
+
else
|
16
|
+
col :event_ticket, search: :string
|
17
|
+
end
|
18
|
+
|
19
|
+
col :purchased_order
|
20
|
+
|
21
|
+
col :first_name
|
22
|
+
col :last_name
|
23
|
+
col :email
|
24
|
+
col :company
|
25
|
+
col :number
|
26
|
+
col :notes, label: 'Restrictions and notes'
|
27
|
+
|
28
|
+
actions_col
|
29
|
+
end
|
30
|
+
|
31
|
+
collection do
|
32
|
+
scope = Effective::EventRegistrant.deep.purchased
|
33
|
+
|
34
|
+
if attributes[:event_id].present?
|
35
|
+
scope = scope.where(event: event)
|
36
|
+
end
|
37
|
+
|
38
|
+
scope
|
39
|
+
end
|
40
|
+
|
41
|
+
def event
|
42
|
+
@event ||= if attributes[:event_id]
|
43
|
+
Effective::Event.find(attributes[:event_id])
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class Admin::EffectiveEventRegistrationsDatatable < Effective::Datatable
|
2
|
+
datatable do
|
3
|
+
order :created_at
|
4
|
+
|
5
|
+
col :token, visible: false
|
6
|
+
|
7
|
+
col :created_at, label: 'Created', visible: false
|
8
|
+
col :updated_at, label: 'Updated', visible: false
|
9
|
+
|
10
|
+
col :submitted_at, label: 'Submitted', visible: false, as: :date
|
11
|
+
|
12
|
+
col :event
|
13
|
+
col :owner
|
14
|
+
|
15
|
+
col :event_registrants, search: :string
|
16
|
+
col :orders, label: 'Order'
|
17
|
+
|
18
|
+
actions_col
|
19
|
+
end
|
20
|
+
|
21
|
+
collection do
|
22
|
+
EffectiveEvents.EventRegistration.all.deep.done
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Admin
|
2
|
+
class EffectiveEventTicketsDatatable < Effective::Datatable
|
3
|
+
datatable do
|
4
|
+
reorder :position
|
5
|
+
|
6
|
+
col :updated_at, visible: false
|
7
|
+
col :created_at, visible: false
|
8
|
+
col :id, visible: false
|
9
|
+
|
10
|
+
col :event
|
11
|
+
|
12
|
+
col :title
|
13
|
+
col :regular_price, as: :price
|
14
|
+
col :early_bird_price, as: :price
|
15
|
+
|
16
|
+
col :capacity
|
17
|
+
col :purchased_event_registrants_count, label: 'Registered'
|
18
|
+
|
19
|
+
col :purchased_event_registrants, label: 'Registrants' do |ticket|
|
20
|
+
ticket.purchased_event_registrants.sort_by(&:last_name).map do |registrant|
|
21
|
+
content_tag(:div, registrant.last_first_name, class: 'col-resource_item')
|
22
|
+
end.join.html_safe
|
23
|
+
end
|
24
|
+
|
25
|
+
actions_col
|
26
|
+
end
|
27
|
+
|
28
|
+
collection do
|
29
|
+
scope = Effective::EventTicket.deep.all
|
30
|
+
|
31
|
+
if attributes[:event_id]
|
32
|
+
scope = scope.where(event: event)
|
33
|
+
end
|
34
|
+
|
35
|
+
scope
|
36
|
+
end
|
37
|
+
|
38
|
+
def event
|
39
|
+
Effective::Event.find(attributes[:event_id])
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module Admin
|
2
|
+
class EffectiveEventsDatatable < Effective::Datatable
|
3
|
+
filters do
|
4
|
+
scope :all
|
5
|
+
scope :registerable
|
6
|
+
scope :drafts
|
7
|
+
scope :upcoming
|
8
|
+
scope :past
|
9
|
+
end
|
10
|
+
|
11
|
+
datatable do
|
12
|
+
col :updated_at, visible: false
|
13
|
+
col :created_at, visible: false
|
14
|
+
col :id, visible: false
|
15
|
+
|
16
|
+
col :title
|
17
|
+
col :draft
|
18
|
+
col :start_at, label: 'Event Date'
|
19
|
+
|
20
|
+
col :end_at, visible: false
|
21
|
+
col :excerpt, visible: false
|
22
|
+
|
23
|
+
col :registration_start_at, label: 'Registration opens'
|
24
|
+
col :registration_end_at, label: 'Registration closes'
|
25
|
+
col :early_bird_end_at, label: 'Early bird ends'
|
26
|
+
|
27
|
+
col :early_bird do |event|
|
28
|
+
if event.early_bird?
|
29
|
+
content_tag(:span, event.early_bird_status, class: 'badge badge-success')
|
30
|
+
else
|
31
|
+
event.early_bird_status
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
col :event_tickets, search: :string
|
36
|
+
col :event_registrants, search: :string
|
37
|
+
|
38
|
+
col :roles, visible: false
|
39
|
+
col :authenticate_user, visible: false
|
40
|
+
|
41
|
+
actions_col do |event|
|
42
|
+
dropdown_link_to('View Event', effective_events.event_path(event), target: '_blank')
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
collection do
|
47
|
+
Effective::Event.deep.all
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# Used on the Event Registrations registrants step
|
2
|
+
|
3
|
+
class EffectiveEventRegistrantsDatatable < Effective::Datatable
|
4
|
+
datatable do
|
5
|
+
|
6
|
+
col :event_ticket, search: :string
|
7
|
+
|
8
|
+
col :name do |er|
|
9
|
+
"#{er.first_name} #{er.last_name}<br><small>#{mail_to(er.email)}</small>"
|
10
|
+
end
|
11
|
+
|
12
|
+
col :first_name, visible: false
|
13
|
+
col :last_name, visible: false
|
14
|
+
col :email, visible: false
|
15
|
+
col :company, visible: false
|
16
|
+
col :number, visible: false
|
17
|
+
|
18
|
+
col :price, as: :price
|
19
|
+
col :notes
|
20
|
+
|
21
|
+
# no actions_col
|
22
|
+
end
|
23
|
+
|
24
|
+
collection do
|
25
|
+
scope = Effective::EventRegistrant.deep.all
|
26
|
+
|
27
|
+
if event.present?
|
28
|
+
scope = scope.where(event: event)
|
29
|
+
end
|
30
|
+
|
31
|
+
if event_registration.present?
|
32
|
+
scope = scope.where(event_registration_id: event_registration)
|
33
|
+
end
|
34
|
+
|
35
|
+
scope
|
36
|
+
end
|
37
|
+
|
38
|
+
def event
|
39
|
+
@event ||= if attributes[:event_id]
|
40
|
+
Effective::Event.find(attributes[:event_id])
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def event_registration
|
45
|
+
@event_registration ||= if attributes[:event_registration_id]
|
46
|
+
EffectiveEvents.EventRegistration.find_by_id(attributes[:event_registration_id])
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# Dashboard Event Registrations
|
2
|
+
class EffectiveEventRegistrationsDatatable < Effective::Datatable
|
3
|
+
datatable do
|
4
|
+
order :created_at
|
5
|
+
|
6
|
+
col :token, visible: false
|
7
|
+
col :created_at, visible: false
|
8
|
+
|
9
|
+
col(:submitted_at, label: 'Registered on') do |er|
|
10
|
+
er.submitted_at&.strftime('%F') || 'Incomplete'
|
11
|
+
end
|
12
|
+
|
13
|
+
col :event, search: :string
|
14
|
+
col :owner, visible: false, search: :string
|
15
|
+
col :status, visible: false
|
16
|
+
col :event_registrants, search: :string
|
17
|
+
col :orders, action: :show, visible: false, search: :string
|
18
|
+
|
19
|
+
actions_col(actions: []) do |er|
|
20
|
+
if er.draft?
|
21
|
+
dropdown_link_to('Continue', effective_events.event_event_registration_build_path(er.event, er, er.next_step), 'data-turbolinks' => false)
|
22
|
+
dropdown_link_to('Delete', effective_events.event_event_registration_path(er.event, er), 'data-confirm': "Really delete #{er}?", 'data-method': :delete)
|
23
|
+
else
|
24
|
+
dropdown_link_to('Show', effective_events.event_event_registration_path(er.event, er))
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
collection do
|
30
|
+
owner = (current_user.respond_to?(:effective_memberships_owners) ? current_user.effective_memberships_owners : current_user)
|
31
|
+
|
32
|
+
EffectiveEvents.EventRegistration.deep.where(owner: owner)
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# Dashboard Events
|
2
|
+
class EffectiveEventsDatatable < Effective::Datatable
|
3
|
+
filters do
|
4
|
+
# Upcoming should be first here, so when displayed as a simple datatable on the dashboard they only see upcoming events
|
5
|
+
scope :registerable
|
6
|
+
scope :all
|
7
|
+
end
|
8
|
+
|
9
|
+
datatable do
|
10
|
+
order :title
|
11
|
+
col :id, visible: false
|
12
|
+
|
13
|
+
col :start_at, label: 'Event Date'
|
14
|
+
col :title, label: 'Event', action: :show
|
15
|
+
col :excerpt, label: 'Details'
|
16
|
+
|
17
|
+
col :registration_start_at, visible: false
|
18
|
+
col :registration_end_at, label: 'Registration ends'
|
19
|
+
|
20
|
+
col :early_bird do |event|
|
21
|
+
if event.early_bird?
|
22
|
+
content_tag(:span, event.early_bird_status, class: 'badge badge-success')
|
23
|
+
else
|
24
|
+
event.early_bird_status
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
col :event_tickets, visible: false, search: :string
|
29
|
+
col :early_bird_end_at, label: 'Early bird ends', visible: false
|
30
|
+
|
31
|
+
actions_col do |event|
|
32
|
+
if event.registerable?
|
33
|
+
dropdown_link_to('Register', effective_events.new_event_event_registration_path(event))
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
collection do
|
39
|
+
Effective::Event.deep.events(user: current_user)
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module EffectiveEventsHelper
|
2
|
+
|
3
|
+
def effective_events_event_tickets_collection(event)
|
4
|
+
raise('expected an Effective::Event') unless event.kind_of?(Effective::Event)
|
5
|
+
|
6
|
+
event.event_tickets.map do |ticket|
|
7
|
+
label = ticket.to_s
|
8
|
+
price = (ticket.price == 0 ? '$0' : number_to_currency(ticket.price))
|
9
|
+
|
10
|
+
["#{label} - #{price}", ticket.to_param]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def edit_effective_event_registrations_wizard?
|
15
|
+
params[:controller] == 'effective/event_registrations' && defined?(resource) && resource.draft?
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|