effective_learndash 0.1.3 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +16 -10
- data/app/assets/config/effective_learndash_manifest.js +0 -1
- data/app/controllers/admin/course_registrations_controller.rb +8 -0
- data/app/controllers/admin/learndash_courses_controller.rb +1 -1
- data/app/controllers/effective/course_registrations_controller.rb +13 -0
- data/app/controllers/effective/learndash_courses_controller.rb +32 -0
- data/app/datatables/admin/effective_course_registrations_datatable.rb +28 -0
- data/app/datatables/admin/effective_learndash_courses_datatable.rb +5 -1
- data/app/datatables/admin/effective_learndash_enrollments_datatable.rb +1 -2
- data/app/datatables/admin/effective_learndash_users_datatable.rb +1 -1
- data/app/datatables/effective_course_registrants_datatable.rb +24 -0
- data/app/datatables/effective_course_registrations_datatable.rb +35 -0
- data/app/datatables/effective_learndash_courses_datatable.rb +30 -0
- data/app/datatables/effective_learndash_enrollments_datatable.rb +7 -4
- data/app/models/concerns/effective_learndash_course_registration.rb +172 -0
- data/app/models/concerns/effective_learndash_owner.rb +1 -1
- data/app/models/effective/course_registrant.rb +53 -0
- data/app/models/effective/course_registration.rb +5 -0
- data/app/models/effective/learndash_api.rb +14 -5
- data/app/models/effective/learndash_course.rb +78 -3
- data/app/models/effective/learndash_enrollment.rb +7 -3
- data/app/models/effective/learndash_user.rb +5 -6
- data/app/views/admin/learndash_courses/_form.html.haml +25 -0
- data/app/views/admin/learndash_courses/_form_course_registration_content.html.haml +19 -0
- data/app/views/admin/learndash_courses/_form_learndash_course.html.haml +32 -0
- data/app/views/admin/learndash_courses/_learndash_course.html.haml +3 -3
- data/app/views/admin/learndash_owners/_form.html.haml +1 -1
- data/app/views/admin/learndash_users/_form.html.haml +1 -1
- data/app/views/admin/learndash_users/_learndash_user.html.haml +4 -4
- data/app/views/effective/course_registrations/_content.html.haml +10 -0
- data/app/views/effective/course_registrations/_course.html.haml +9 -0
- data/app/views/effective/course_registrations/_course_registration.html.haml +3 -0
- data/app/views/effective/course_registrations/_dashboard.html.haml +30 -0
- data/app/views/effective/course_registrations/_layout.html.haml +3 -0
- data/app/views/effective/course_registrations/_orders.html.haml +4 -0
- data/app/views/effective/course_registrations/_summary.html.haml +39 -0
- data/app/views/effective/course_registrations/billing.html.haml +15 -0
- data/app/views/effective/course_registrations/checkout.html.haml +6 -0
- data/app/views/effective/course_registrations/course.html.haml +20 -0
- data/app/views/effective/course_registrations/start.html.haml +25 -0
- data/app/views/effective/course_registrations/submitted.html.haml +15 -0
- data/app/views/effective/course_registrations/summary.html.haml +8 -0
- data/app/views/effective/learndash/_dashboard.html.haml +14 -16
- data/app/views/effective/learndash_courses/_learndash_course.html.haml +13 -0
- data/app/views/effective/learndash_courses/index.html.haml +5 -0
- data/app/views/effective/learndash_courses/show.html.haml +6 -0
- data/config/effective_learndash.rb +9 -0
- data/config/routes.rb +13 -3
- data/db/migrate/01_create_effective_learndash.rb.erb +98 -33
- data/lib/effective_learndash/engine.rb +1 -0
- data/lib/effective_learndash/version.rb +1 -1
- data/lib/effective_learndash.rb +6 -1
- data/lib/generators/effective_learndash/install_generator.rb +0 -1
- metadata +33 -4
@@ -3,22 +3,88 @@ module Effective
|
|
3
3
|
has_many :learndash_enrollments
|
4
4
|
has_many :learndash_users, through: :learndash_enrollments
|
5
5
|
|
6
|
+
log_changes if respond_to?(:log_changes)
|
7
|
+
|
8
|
+
# rich_text_body - Used by the select step
|
9
|
+
has_many_rich_texts
|
10
|
+
|
11
|
+
# rich_text_body
|
12
|
+
|
13
|
+
# rich_text_all_steps_content
|
14
|
+
# rich_text_start_content
|
15
|
+
# rich_text_select_content
|
16
|
+
# rich_text_select_content
|
17
|
+
|
18
|
+
acts_as_slugged
|
19
|
+
log_changes if respond_to?(:log_changes)
|
20
|
+
acts_as_role_restricted if respond_to?(:acts_as_role_restricted)
|
21
|
+
|
6
22
|
effective_resource do
|
7
23
|
# This user the wordpress credentials
|
8
|
-
course_id
|
9
|
-
|
10
|
-
|
24
|
+
course_id :integer
|
25
|
+
title :string
|
26
|
+
status :string
|
27
|
+
|
28
|
+
# Our attributes
|
29
|
+
slug :string
|
30
|
+
|
31
|
+
# For course purchases
|
32
|
+
can_register :boolean
|
33
|
+
|
34
|
+
# Pricing
|
35
|
+
regular_price :integer
|
36
|
+
member_price :integer
|
37
|
+
|
38
|
+
qb_item_name :string
|
39
|
+
tax_exempt :boolean
|
40
|
+
|
41
|
+
# Access
|
42
|
+
roles_mask :integer
|
43
|
+
authenticate_user :boolean
|
11
44
|
|
12
45
|
timestamps
|
13
46
|
end
|
14
47
|
|
15
48
|
scope :deep, -> { all }
|
16
49
|
scope :sorted, -> { order(:title) }
|
50
|
+
scope :registerable, -> { where(can_register: true) }
|
51
|
+
scope :published, -> { all }
|
52
|
+
|
53
|
+
scope :paginate, -> (page: nil, per_page: nil) {
|
54
|
+
page = (page || 1).to_i
|
55
|
+
offset = [(page - 1), 0].max * (per_page || EffectiveLearndash.per_page)
|
56
|
+
|
57
|
+
limit(per_page).offset(offset)
|
58
|
+
}
|
59
|
+
|
60
|
+
scope :learndash_courses, -> (user: nil, unpublished: false) {
|
61
|
+
scope = all.deep.sorted
|
62
|
+
|
63
|
+
if defined?(EffectiveRoles) && EffectiveLearndash.use_effective_roles
|
64
|
+
scope = scope.for_role(user&.roles)
|
65
|
+
end
|
66
|
+
|
67
|
+
if user.blank?
|
68
|
+
scope = scope.where(authenticate_user: false)
|
69
|
+
end
|
70
|
+
|
71
|
+
# TODO
|
72
|
+
# unless unpublished
|
73
|
+
# scope = scope.published
|
74
|
+
# end
|
75
|
+
|
76
|
+
scope
|
77
|
+
}
|
17
78
|
|
18
79
|
validates :course_id, presence: true
|
19
80
|
validates :status, presence: true
|
20
81
|
validates :title, presence: true
|
21
82
|
|
83
|
+
with_options(if: -> { can_register? }) do
|
84
|
+
validates :regular_price, presence: true
|
85
|
+
validates :member_price, presence: true
|
86
|
+
end
|
87
|
+
|
22
88
|
# Syncs all courses
|
23
89
|
def self.refresh!
|
24
90
|
courses = all()
|
@@ -35,5 +101,14 @@ module Effective
|
|
35
101
|
title.presence || 'learndash course'
|
36
102
|
end
|
37
103
|
|
104
|
+
def body
|
105
|
+
rich_text_body
|
106
|
+
end
|
107
|
+
|
108
|
+
# Todo
|
109
|
+
def draft?
|
110
|
+
false
|
111
|
+
end
|
112
|
+
|
38
113
|
end
|
39
114
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
module Effective
|
2
2
|
class LearndashEnrollment < ActiveRecord::Base
|
3
3
|
belongs_to :owner, polymorphic: true
|
4
|
-
log_changes(to: :owner) if respond_to?(:log_changes)
|
5
|
-
|
6
4
|
belongs_to :learndash_course
|
7
5
|
belongs_to :learndash_user
|
8
6
|
|
7
|
+
log_changes(to: :learndash_course, except: [:last_synced_at]) if respond_to?(:log_changes)
|
8
|
+
|
9
9
|
PROGRESS_STATUSES = ['not-started', 'in-progress', 'completed']
|
10
10
|
|
11
11
|
effective_resource do
|
@@ -58,7 +58,11 @@ module Effective
|
|
58
58
|
progress_status == 'completed'
|
59
59
|
end
|
60
60
|
|
61
|
-
def refresh!
|
61
|
+
def refresh!(force: false)
|
62
|
+
unless force
|
63
|
+
return if last_synced_at.present? && (Time.zone.now - last_synced_at) < 5
|
64
|
+
end
|
65
|
+
|
62
66
|
assign_api_attributes
|
63
67
|
save!
|
64
68
|
end
|
@@ -44,13 +44,12 @@ module Effective
|
|
44
44
|
owner&.to_s || username.presence || 'learndash user'
|
45
45
|
end
|
46
46
|
|
47
|
-
def
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
47
|
+
def refresh!(force: false)
|
48
|
+
unless force
|
49
|
+
return if last_synced_at.present? && (Time.zone.now - last_synced_at) < 5
|
50
|
+
return if learndash_enrollments.none? { |enrollment| !enrollment.completed? }
|
51
|
+
end
|
52
52
|
|
53
|
-
def refresh!
|
54
53
|
assign_api_course_enrollments
|
55
54
|
save!
|
56
55
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
= tabs do
|
2
|
+
= tab "Learndash Course" do
|
3
|
+
= render 'admin/learndash_courses/form_learndash_course', learndash_course: learndash_course
|
4
|
+
|
5
|
+
- if learndash_course.persisted?
|
6
|
+
= tab 'Enrollments' do
|
7
|
+
%h2 Enrollments
|
8
|
+
%p Click the New button from the below table to enroll a user into this course.
|
9
|
+
%p Enrolling a user here will enroll them on the LearnDash site.
|
10
|
+
%p Alternately, if this course is available for registration, the enrollment will be created upon registration purchase.
|
11
|
+
|
12
|
+
- datatable = Admin::EffectiveLearndashEnrollmentsDatatable.new(learndash_course: learndash_course)
|
13
|
+
= render_datatable(datatable, inline: true)
|
14
|
+
|
15
|
+
= tab 'Registrations' do
|
16
|
+
%h2 Purchases
|
17
|
+
- datatable = Admin::EffectiveCourseRegistrationsDatatable.new(learndash_course: learndash_course)
|
18
|
+
= render_inline_datatable(datatable)
|
19
|
+
|
20
|
+
= tab 'Wizard' do
|
21
|
+
= render '/admin/learndash_courses/form_course_registration_content', learndash_course: learndash_course
|
22
|
+
|
23
|
+
- if learndash_course.respond_to?(:log_changes_datatable)
|
24
|
+
= tab "Logs" do
|
25
|
+
= render_inline_datatable(learndash_course.log_changes_datatable)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
%p Each of the following content areas will be displayed on the course purchase wizard.
|
2
|
+
|
3
|
+
= effective_form_with(model: [:admin, learndash_course], engine: true) do |f|
|
4
|
+
= card("All Steps") do
|
5
|
+
= f.rich_text_area "rich_text_all_steps_content", label: false,
|
6
|
+
hint: "displayed on all steps"
|
7
|
+
|
8
|
+
%hr
|
9
|
+
|
10
|
+
- enabled = EffectiveLearndash.CourseRegistration.all_wizard_steps
|
11
|
+
|
12
|
+
- EffectiveLearndash.CourseRegistration::WIZARD_STEPS.each do |step, title|
|
13
|
+
- next unless enabled.include?(step)
|
14
|
+
|
15
|
+
= card("#{title}") do
|
16
|
+
= f.rich_text_area "rich_text_#{step}_content", label: false,
|
17
|
+
hint: "displayed on the course purchase wizard #{step} wizard step only"
|
18
|
+
|
19
|
+
= f.submit
|
@@ -0,0 +1,32 @@
|
|
1
|
+
= effective_form_with(model: [:admin, learndash_course], engine: true) do |f|
|
2
|
+
= f.static_field :title
|
3
|
+
|
4
|
+
= f.static_field :learndash_course_url do
|
5
|
+
= link_to(learndash_course.link, learndash_course.link, target: '_blank')
|
6
|
+
|
7
|
+
= f.static_field :learndash_course_admin do
|
8
|
+
= link_to "Learndash LMS Course Admin", EffectiveLearndash.learndash_url.chomp('/') + "/wp-admin/post.php?post=#{learndash_course.course_id}&action=edit", target: '_blank'
|
9
|
+
|
10
|
+
- if f.object.persisted? || f.object.errors.include?(:slug)
|
11
|
+
- current_url = (effective_learndash.learndash_course_url(f.object) rescue nil)
|
12
|
+
= f.text_field :slug, hint: "The slug controls this course's internet address. Be careful, changing the slug will break links that other websites may have to the old address.<br>#{('This course is currently reachable via ' + link_to(current_url.gsub(f.object.slug, '<strong>' + f.object.slug + '</strong>').html_safe, current_url)) if current_url }".html_safe
|
13
|
+
|
14
|
+
= f.check_box :can_register, label: 'Yes, this course is displayed and available for registration'
|
15
|
+
|
16
|
+
= f.show_if :can_register, true do
|
17
|
+
= card('Pricing Information') do
|
18
|
+
%p.text-muted
|
19
|
+
Charge the following amounts during course registration. Enter $0 for free.
|
20
|
+
|
21
|
+
.row
|
22
|
+
.col-lg-3= f.price_field :regular_price, label: 'Price to applicants or new users'
|
23
|
+
|
24
|
+
.row
|
25
|
+
.col-lg-3= f.price_field :member_price, label: 'Price to existing members'
|
26
|
+
|
27
|
+
= f.check_box :tax_exempt
|
28
|
+
|
29
|
+
.row
|
30
|
+
.col-lg-3= f.text_field :qb_item_name, label: "Quickbooks Item Name"
|
31
|
+
|
32
|
+
= f.submit
|
@@ -1,10 +1,10 @@
|
|
1
|
-
= card('
|
1
|
+
= card('LearnDash Course') do
|
2
2
|
%p= learndash_course.title
|
3
3
|
%p= link_to(learndash_course.link, learndash_course.link, target: '_blank')
|
4
4
|
|
5
|
-
%p= link_to "
|
5
|
+
%p= link_to "LearnDash LMS Course Admin", EffectiveLearndash.learndash_url.chomp('/') + "/wp-admin/post.php?post=#{learndash_course.course_id}}&action=edit", target: '_blank'
|
6
6
|
|
7
|
-
%h3
|
7
|
+
%h3 LearnDash User Enrollments
|
8
8
|
|
9
9
|
%p Click the New button from the below table to enroll a user into this course.
|
10
10
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
- if owner.learndash_user.blank?
|
2
|
-
%p #{owner} does not yet have an account on
|
2
|
+
%p #{owner} does not yet have an account on LearnDash.
|
3
3
|
|
4
4
|
- if owner.learndash_user.present?
|
5
5
|
= render('admin/learndash_users/learndash_user', learndash_user: owner.learndash_user)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
= effective_form_with(model: [:admin, learndash_user], engine: true) do |f|
|
2
2
|
|
3
3
|
= f.select :owner, {'Owners' => current_user.class.sorted }, polymorphic: true,
|
4
|
-
hint: 'Create a
|
4
|
+
hint: 'Create a LearnDash account for this user'
|
5
5
|
|
6
6
|
= f.submit
|
@@ -1,19 +1,19 @@
|
|
1
|
-
= card('
|
1
|
+
= card('LearnDash') do
|
2
2
|
%p
|
3
3
|
= link_to(learndash_user.owner, "/admin/users/#{learndash_user.owner.to_param}/edit")
|
4
|
-
has an existing account on
|
4
|
+
has an existing account on LearnDash.
|
5
5
|
|
6
6
|
%ul
|
7
7
|
%li Email: #{learndash_user.email}
|
8
8
|
%li Username: #{learndash_user.username}
|
9
9
|
%li Password: #{learndash_user.password}
|
10
10
|
|
11
|
-
%p= link_to "
|
11
|
+
%p= link_to "LearnDash LMS User Admin", EffectiveLearndash.learndash_url.chomp('/') + "/wp-admin/user-edit.php?user_id=#{learndash_user.user_id}", target: '_blank'
|
12
12
|
|
13
13
|
%p
|
14
14
|
%small Last refreshed #{time_ago_in_words(learndash_user.last_synced_at)} ago.
|
15
15
|
|
16
|
-
%h3
|
16
|
+
%h3 LearnDash Course Enrollments
|
17
17
|
|
18
18
|
%p Click the New button from the below table to manually enroll this user into a new course.
|
19
19
|
|
@@ -0,0 +1,10 @@
|
|
1
|
+
- all_steps_content = resource.learndash_course&.rich_text_all_steps_content
|
2
|
+
- step_content = resource.learndash_course&.send("rich_text_#{step}_content")
|
3
|
+
|
4
|
+
- if all_steps_content.present?
|
5
|
+
.card.mb-4
|
6
|
+
.card-body= all_steps_content
|
7
|
+
|
8
|
+
- if step_content.present?
|
9
|
+
.card.mb-4
|
10
|
+
.card-body= step_content
|
@@ -0,0 +1,9 @@
|
|
1
|
+
= card do
|
2
|
+
.row
|
3
|
+
.col-sm
|
4
|
+
%h5.card-title= course_registration.wizard_step_title(:course)
|
5
|
+
.col-sm-auto.text-right
|
6
|
+
= link_to('Edit', wizard_path(:course)) if edit_effective_wizard?
|
7
|
+
|
8
|
+
- datatable = EffectiveCourseRegistrantsDatatable.new(course_registration: course_registration)
|
9
|
+
.mb-4= render_simple_datatable(datatable)
|
@@ -0,0 +1,30 @@
|
|
1
|
+
-# In progress course purchase
|
2
|
+
- wizard = EffectiveLearndash.CourseRegistration.in_progress.for(current_user).first
|
3
|
+
- datatable = EffectiveResources.best('EffectiveCourseRegistrationsDatatable').new(self, namespace: :effective)
|
4
|
+
|
5
|
+
- if wizard.present?
|
6
|
+
%h2 In Progress Course Registrations
|
7
|
+
|
8
|
+
%p
|
9
|
+
Your course registration for
|
10
|
+
= link_to(wizard.learndash_course, effective_learndash.learndash_course_path(wizard.learndash_course))
|
11
|
+
is incomplete
|
12
|
+
|
13
|
+
%p
|
14
|
+
Please
|
15
|
+
= link_to("Continue registration for #{wizard.learndash_course}", effective_learndash.learndash_course_course_registration_build_path(wizard.learndash_course, wizard, wizard.next_step), 'data-turbolinks' => false, class: 'btn btn-primary')
|
16
|
+
or you can
|
17
|
+
= link_to('Abandon course registration', effective_learndash.learndash_course_course_registration_path(wizard.learndash_course, wizard), 'data-confirm': "Really delete #{wizard}?", 'data-method': :delete, class: 'btn btn-danger')
|
18
|
+
to register for another course.
|
19
|
+
|
20
|
+
%hr
|
21
|
+
|
22
|
+
%h2 Course Registrations
|
23
|
+
|
24
|
+
- if datatable.present?
|
25
|
+
= render_simple_datatable(datatable)
|
26
|
+
- else
|
27
|
+
%p You have no past course registrations. When you do, we'll show them here.
|
28
|
+
|
29
|
+
- if false
|
30
|
+
%p= link_to 'View all Course', effective_learndash.learndash_courses_path, class: 'btn btn-primary'
|
@@ -0,0 +1,39 @@
|
|
1
|
+
= card('Course Registration') do
|
2
|
+
%table.table.table-sm
|
3
|
+
%tbody
|
4
|
+
%tr
|
5
|
+
%th.border-0 Course
|
6
|
+
%td.border-0
|
7
|
+
%p
|
8
|
+
%strong=course_registration.course
|
9
|
+
|
10
|
+
- learndash_user = course_registration.learndash_owner.learndash_user
|
11
|
+
%p Your course account credentials are:
|
12
|
+
|
13
|
+
%ul
|
14
|
+
%li
|
15
|
+
%strong Username:
|
16
|
+
#{learndash_user.username}
|
17
|
+
%li
|
18
|
+
%strong Password:
|
19
|
+
#{learndash_user.password}
|
20
|
+
|
21
|
+
%p= link_to('Sign in to your course account', EffectiveLearndash.learndash_url, target: '_blank', class: 'btn btn-primary mb-2')
|
22
|
+
|
23
|
+
- if request.path.start_with?('/admin')
|
24
|
+
%tr
|
25
|
+
%th Registered by
|
26
|
+
%td
|
27
|
+
- url = (polymorphic_admin_path(course_registration.owner) rescue "/admin/users/#{course_registration.owner.to_param}/edit")
|
28
|
+
= link_to(course_registration.owner, url)
|
29
|
+
- else
|
30
|
+
%tr
|
31
|
+
%th Registered by
|
32
|
+
%td= course_registration.owner
|
33
|
+
|
34
|
+
- if course_registration.orders.present?
|
35
|
+
%tr
|
36
|
+
%th Order
|
37
|
+
%td
|
38
|
+
- course_registration.orders.each do |order|
|
39
|
+
= link_to(order, effective_orders.order_path(order))
|
@@ -0,0 +1,15 @@
|
|
1
|
+
= render 'layout' do
|
2
|
+
= render 'effective/course_registrations/content', resource: resource
|
3
|
+
|
4
|
+
- raise('expected owner to respond to billing_address') unless resource.owner.respond_to?(:billing_address)
|
5
|
+
|
6
|
+
= card('Billing Address') do
|
7
|
+
%p Please enter your billing address
|
8
|
+
|
9
|
+
= effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
|
10
|
+
= f.hidden_field :id
|
11
|
+
|
12
|
+
= f.fields_for(:owner, f.object.owner) do |fu|
|
13
|
+
= effective_address_fields(fu, :billing)
|
14
|
+
|
15
|
+
= f.save 'Save and Continue'
|
@@ -0,0 +1,6 @@
|
|
1
|
+
= render 'layout' do
|
2
|
+
= render 'effective/course_registrations/content', resource: resource
|
3
|
+
|
4
|
+
.card
|
5
|
+
.card-body
|
6
|
+
= render_checkout_step2(resource.submit_order, purchased_url: wizard_path(:submitted), deferred_url: wizard_path(:checkout), declined_url: wizard_path(:checkout))
|
@@ -0,0 +1,20 @@
|
|
1
|
+
= render 'layout' do
|
2
|
+
= render 'effective/course_registrations/content', resource: resource
|
3
|
+
|
4
|
+
= card('Course') do
|
5
|
+
%p= resource.learndash_course
|
6
|
+
%p= price_to_currency(resource.registration_price)
|
7
|
+
|
8
|
+
= effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
|
9
|
+
= f.hidden_field :id
|
10
|
+
|
11
|
+
= f.fields_for :course_registrants, (f.object.course_registrant || f.object.build_course_registrant) do |fr|
|
12
|
+
= fr.hidden_field :course_registration_id
|
13
|
+
= fr.hidden_field :course_registration_type
|
14
|
+
|
15
|
+
= fr.hidden_field :owner_id
|
16
|
+
= fr.hidden_field :owner_type
|
17
|
+
|
18
|
+
= fr.hidden_field :learndash_course_id
|
19
|
+
|
20
|
+
= f.save 'Save and Continue'
|
@@ -0,0 +1,25 @@
|
|
1
|
+
= render 'layout' do
|
2
|
+
= render 'effective/course_registrations/content', resource: resource
|
3
|
+
|
4
|
+
.card
|
5
|
+
.card-body
|
6
|
+
%p Welcome #{current_user}!
|
7
|
+
|
8
|
+
%p You are registering for #{resource.course}.
|
9
|
+
|
10
|
+
- existing = resource.owner.learndash_user&.enrollment(course: resource.course)
|
11
|
+
|
12
|
+
- if existing.present?
|
13
|
+
.alert.alert-warning
|
14
|
+
You are already enrolled in #{link_to(resource.course, EffectiveLearndash.learndash_url, target: '_blank')}.
|
15
|
+
|
16
|
+
- if existing.blank?
|
17
|
+
= effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
|
18
|
+
= f.hidden_field :id
|
19
|
+
|
20
|
+
= f.hidden_field :learndash_course_id
|
21
|
+
|
22
|
+
= f.hidden_field :owner_type
|
23
|
+
= f.hidden_field :owner_id
|
24
|
+
|
25
|
+
= f.save 'Save and Continue'
|
@@ -0,0 +1,15 @@
|
|
1
|
+
= render 'layout' do
|
2
|
+
= render 'effective/course_registrations/content', resource: resource
|
3
|
+
|
4
|
+
- raise('expected a submitted course_registration') unless resource.was_submitted?
|
5
|
+
- raise('expected a purchased course_registration submit_order') unless resource.submit_order&.purchased?
|
6
|
+
|
7
|
+
.alert.alert-warning.mb-4
|
8
|
+
Successfully paid on #{resource.submit_order.purchased_at.strftime('%F')}.
|
9
|
+
|
10
|
+
= link_to "Return to Dashboard", root_path, class: 'btn btn-lg btn-primary mb-4'
|
11
|
+
|
12
|
+
= render 'effective/course_registrations/summary', course_registration: resource
|
13
|
+
= render 'effective/course_registrations/orders', course_registration: resource
|
14
|
+
|
15
|
+
= link_to "Return to Dashboard", root_path, class: 'btn btn-lg btn-primary'
|
@@ -0,0 +1,8 @@
|
|
1
|
+
= render 'layout' do
|
2
|
+
= render 'effective/course_registrations/content', resource: resource
|
3
|
+
|
4
|
+
= render('effective/course_registrations/course_registration', course_registration: resource)
|
5
|
+
|
6
|
+
= effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
|
7
|
+
= f.hidden_field :id
|
8
|
+
= f.submit 'Save and Continue', class: 'btn btn-primary'
|
@@ -1,31 +1,29 @@
|
|
1
1
|
- learndash_user = current_user.try(:learndash_user)
|
2
2
|
- authorized = learndash_user && EffectiveResources.authorized?(self, :show, learndash_user)
|
3
3
|
|
4
|
-
%h2
|
4
|
+
%h2 Courses
|
5
5
|
|
6
6
|
- if learndash_user.blank?
|
7
|
-
%p You do not have a
|
8
|
-
|
9
|
-
- if learndash_user.present?
|
10
|
-
%p
|
11
|
-
= succeed('.') do
|
12
|
-
You have an existing account on
|
13
|
-
= link_to('Learndash', EffectiveLearndash.learndash_url, target: '_blank')
|
7
|
+
%p You do not have an account to access courses. When you are enrolled in a course, your account credentials will be displayed here.
|
14
8
|
|
15
9
|
- if learndash_user.present? && authorized
|
16
|
-
- learndash_user.
|
10
|
+
- learndash_user.refresh!
|
17
11
|
|
18
|
-
%p
|
12
|
+
%p Your course account credentials are:
|
19
13
|
|
20
14
|
%ul
|
21
|
-
%li
|
22
|
-
|
23
|
-
|
15
|
+
%li
|
16
|
+
%strong Username:
|
17
|
+
#{learndash_user.username}
|
18
|
+
%li
|
19
|
+
%strong Password:
|
20
|
+
#{learndash_user.password}
|
24
21
|
|
25
|
-
|
26
|
-
%p You are enrolled in #{pluralize(learndash_user.learndash_enrollments.length, 'course')}.
|
22
|
+
%p= link_to('Sign in to your course account', EffectiveLearndash.learndash_url, target: '_blank', class: 'btn btn-primary')
|
27
23
|
|
24
|
+
- if learndash_user.learndash_enrollments.present?
|
28
25
|
- datatable = EffectiveResources.best('EffectiveLearndashEnrollmentsDatatable').new(self)
|
29
26
|
= render_datatable(datatable, simple: true)
|
27
|
+
|
30
28
|
- else
|
31
|
-
You are not enrolled in any
|
29
|
+
%p You are not enrolled in any courses.
|
@@ -0,0 +1,13 @@
|
|
1
|
+
%table.table.effective-learndash-courses-table
|
2
|
+
%tbody
|
3
|
+
%tr
|
4
|
+
%th Regular Price
|
5
|
+
%td= price_to_currency(learndash_course.regular_price)
|
6
|
+
%tr
|
7
|
+
%th Discounted Price
|
8
|
+
%td= price_to_currency(learndash_course.member_price)
|
9
|
+
|
10
|
+
- if learndash_course.body.present?
|
11
|
+
%tr
|
12
|
+
%th Description
|
13
|
+
%td= learndash_course.body
|
@@ -0,0 +1,6 @@
|
|
1
|
+
.effective-learndash-course
|
2
|
+
- if @learndash_course.registerable?
|
3
|
+
.resource-buttons
|
4
|
+
= link_to 'Register', effective_learndash.new_learndash_course_course_registration_path(@learndash_course), class: 'btn btn-primary'
|
5
|
+
|
6
|
+
= render 'effective/learndash_courses/learndash_course', learndash_course: @learndash_course
|
@@ -15,4 +15,13 @@ EffectiveLearndash.setup do |config|
|
|
15
15
|
# Usernames can only contain lowercase letters (a-z) and numbers.
|
16
16
|
# config.wp_username = Proc.new { |user| "user#{user.id}" }
|
17
17
|
# config.wp_password = Proc.new { |user| SecureRandom.base64(12) }
|
18
|
+
|
19
|
+
# Course Purchase Wizard Settings
|
20
|
+
# config.course_registration_class_name = 'Effective::CourseRegistration'
|
21
|
+
|
22
|
+
# Pagination length on the Events#index page
|
23
|
+
config.per_page = 10
|
24
|
+
|
25
|
+
# Events can be restricted by role
|
26
|
+
config.use_effective_roles = true
|
18
27
|
end
|
data/config/routes.rb
CHANGED
@@ -5,10 +5,19 @@ Rails.application.routes.draw do
|
|
5
5
|
end
|
6
6
|
|
7
7
|
EffectiveLearndash::Engine.routes.draw do
|
8
|
+
# Public routes
|
9
|
+
scope module: 'effective' do
|
10
|
+
resources :learndash_courses, only: [:index] do
|
11
|
+
resources :course_registrations, only: [:new, :show, :destroy] do
|
12
|
+
resources :build, controller: :course_registrations, only: [:show, :update]
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
8
17
|
namespace :admin do
|
9
18
|
get '/learndash', to: 'learndash#index', as: :learndash
|
10
19
|
|
11
|
-
resources :learndash_users,
|
20
|
+
resources :learndash_users, except: [:edit, :destroy] do
|
12
21
|
post :refresh, on: :member
|
13
22
|
end
|
14
23
|
|
@@ -16,10 +25,11 @@ EffectiveLearndash::Engine.routes.draw do
|
|
16
25
|
post :refresh, on: :member
|
17
26
|
end
|
18
27
|
|
19
|
-
resources :learndash_courses, only: [:index, :
|
28
|
+
resources :learndash_courses, only: [:index, :edit, :update] do
|
20
29
|
get :refresh, on: :collection
|
21
30
|
end
|
22
31
|
|
32
|
+
resources :course_registrants, only: [:index]
|
33
|
+
resources :course_registrations, only: [:index, :show]
|
23
34
|
end
|
24
|
-
|
25
35
|
end
|