effective_cpd 0.3.1 → 0.4.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 +4 -4
- data/app/datatables/admin/effective_cpd_audit_reviews_datatable.rb +8 -1
- data/app/datatables/admin/effective_cpd_audits_datatable.rb +23 -0
- data/app/models/effective/cpd_audit.rb +6 -3
- data/app/views/admin/cpd_activities/_form.html.haml +6 -1
- data/app/views/admin/cpd_audit_level_questions/_form.html.haml +5 -1
- data/app/views/admin/cpd_audit_levels/_form_content_audit.html.haml +8 -4
- data/app/views/admin/cpd_audit_levels/_form_content_audit_review.html.haml +8 -4
- data/app/views/admin/cpd_audits/_form.html.haml +3 -0
- data/app/views/admin/cpd_audits/_form_deadlines.html.haml +12 -0
- data/app/views/admin/cpd_categories/_form_cpd_category.html.haml +5 -1
- data/app/views/admin/cpd_cycles/_form_content.html.haml +28 -7
- data/app/views/effective/cpd_audits/conflict.html.haml +1 -1
- data/app/views/effective/cpd_audits/exemption.html.haml +1 -1
- data/app/views/effective/cpd_audits/extension.html.haml +1 -1
- data/db/migrate/01_create_effective_cpd.rb.erb +2 -0
- data/lib/effective_cpd/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f290e98f25e51c9ebc4497830cd628ac7921a01c2a2be09b1a335af28bc6c003
|
4
|
+
data.tar.gz: fe7d20bb2bbdada0b0a30f53801ad877f51e5a01d8d56d3af4b225c820ec402e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7bbf3b41e25cdd4b5ebe86d0f186c531450e614ef454367a08623f6868aa93e9ba5e37f35e7ad7f867a04e04f6a8c458acec9dd69cf2e98aca6329a1d21580e
|
7
|
+
data.tar.gz: 4050c510065598ca04809542bd50a16e54e93c9284610dc610693a06212cd9c897ef40e39508cc5f14e0d2f2e1239492bb42deb71fe257a3a51aadd8a7276843
|
@@ -2,8 +2,8 @@ module Admin
|
|
2
2
|
class EffectiveCpdAuditReviewsDatatable < Effective::Datatable
|
3
3
|
filters do
|
4
4
|
scope :all
|
5
|
-
scope :available, label: 'In Progress'
|
6
5
|
scope :completed
|
6
|
+
scope :available, label: 'In Progress'
|
7
7
|
end
|
8
8
|
|
9
9
|
datatable do
|
@@ -12,7 +12,14 @@ module Admin
|
|
12
12
|
col :id, visible: false
|
13
13
|
|
14
14
|
col :cpd_audit
|
15
|
+
|
16
|
+
col :auditee do |cpd_audit_review|
|
17
|
+
user = cpd_audit_review.cpd_audit.user
|
18
|
+
link_to(user, edit_admin_user_path(user))
|
19
|
+
end
|
20
|
+
|
15
21
|
col :user, label: 'Audit Reviewer'
|
22
|
+
|
16
23
|
col :due_date
|
17
24
|
col :submitted_at, as: :date, label: 'Submitted'
|
18
25
|
col :conflict_of_interest
|
@@ -47,6 +47,29 @@ module Admin
|
|
47
47
|
col :due_date
|
48
48
|
|
49
49
|
col :status
|
50
|
+
|
51
|
+
col(:cpd_audit_recommendations, label: 'Recommendation', visible: false) do |cpd_audit|
|
52
|
+
cpd_audit.cpd_audit_reviews.map(&:recommendation).map do |recommendation|
|
53
|
+
content_tag(:div, recommendation.to_s, class: 'col-resource_item')
|
54
|
+
end.join.html_safe
|
55
|
+
end
|
56
|
+
|
57
|
+
col(:cpd_audit_reveiw_item_recommendations, label: 'Item Recommendations', search: :string, visible: false) do |cpd_audit|
|
58
|
+
recommendations = cpd_audit.cpd_audit_reviews.map(&:recommendation)
|
59
|
+
item_recommendations = cpd_audit.cpd_audit_reviews.flat_map { |r| r.cpd_audit_review_items.map(&:recommendation) }
|
60
|
+
|
61
|
+
reviews = ((recommendations + item_recommendations) - ['', nil]).uniq
|
62
|
+
reviews.to_sentence
|
63
|
+
end
|
64
|
+
|
65
|
+
col(:cpd_audit_comments, label: 'Reviewer Comments', search: :string, visible: false) do |cpd_audit|
|
66
|
+
item_comments = cpd_audit.cpd_audit_reviews.flat_map { |r| r.cpd_audit_review_items.map(&:comments) }.join
|
67
|
+
|
68
|
+
cpd_audit.cpd_audit_reviews.map(&:comments).map do |comments|
|
69
|
+
content_tag(:div, simple_format(comments.to_s + item_comments), class: 'col-resource_item')
|
70
|
+
end.join.html_safe
|
71
|
+
end
|
72
|
+
|
50
73
|
col :determination
|
51
74
|
|
52
75
|
col(:auditee_cpd_statements, label: 'Auditee Statements', visible: false) do |cpd_audit|
|
@@ -76,6 +76,9 @@ module Effective
|
|
76
76
|
# Final determination
|
77
77
|
determination :string
|
78
78
|
|
79
|
+
# Override Deadlines
|
80
|
+
ignore_deadlines :boolean
|
81
|
+
|
79
82
|
# Auditee response
|
80
83
|
conflict_of_interest :boolean
|
81
84
|
conflict_of_interest_reason :text
|
@@ -130,17 +133,17 @@ module Effective
|
|
130
133
|
validates :extension_request_date, presence: true, if: -> { extension_request? }
|
131
134
|
validates :extension_request_reason, presence: true, if: -> { extension_request? }
|
132
135
|
|
133
|
-
validate(if: -> { current_step == :conflict && conflict_of_interest? }) do
|
136
|
+
validate(if: -> { current_step == :conflict && conflict_of_interest? && !ignore_deadlines? }) do
|
134
137
|
deadline = deadline_to_conflict_of_interest()
|
135
138
|
self.errors.add(:base, 'deadline to declare conflict of interest has already passed') if deadline && deadline < Time.zone.now
|
136
139
|
end
|
137
140
|
|
138
|
-
validate(if: -> { current_step == :exemption && exemption_request? }) do
|
141
|
+
validate(if: -> { current_step == :exemption && exemption_request? && !ignore_deadlines? }) do
|
139
142
|
deadline = deadline_to_exemption()
|
140
143
|
self.errors.add(:base, 'deadline to request exemption has already passed') if deadline && deadline < Time.zone.now
|
141
144
|
end
|
142
145
|
|
143
|
-
validate(if: -> { current_step == :extension && extension_request? }) do
|
146
|
+
validate(if: -> { current_step == :extension && extension_request? && !ignore_deadlines? }) do
|
144
147
|
deadline = deadline_to_extension()
|
145
148
|
self.errors.add(:base, 'deadline to request extension has already passed') if deadline && deadline < Time.zone.now
|
146
149
|
end
|
@@ -7,7 +7,12 @@
|
|
7
7
|
.row
|
8
8
|
.col
|
9
9
|
= f.text_field :title, label: 'Title'
|
10
|
-
|
10
|
+
|
11
|
+
- if defined?(EffectiveArticleEditor)
|
12
|
+
= f.article_editor :body, label: 'Body (optional)'
|
13
|
+
- else
|
14
|
+
= f.rich_text_area :body, label: 'Body (optional)'
|
15
|
+
|
11
16
|
.col
|
12
17
|
= f.text_field :amount_label,
|
13
18
|
hint: 'hours of work, papers written, courses attended'
|
@@ -5,7 +5,11 @@
|
|
5
5
|
= f.select :cpd_audit_level_section_id, Effective::CpdAuditLevelSection.sorted.all
|
6
6
|
|
7
7
|
= f.text_field :title, label: 'Question Title'
|
8
|
-
|
8
|
+
|
9
|
+
- if defined?(EffectiveArticleEditor)
|
10
|
+
= f.article_editor :body, label: 'Body (optional)'
|
11
|
+
- else
|
12
|
+
= f.rich_text_area :body, label: 'Body (optional)'
|
9
13
|
|
10
14
|
= f.check_box :required, hint: 'A response to this question will be required'
|
11
15
|
= f.select :category, Effective::CpdAuditLevelQuestion::CATEGORIES
|
@@ -2,14 +2,18 @@
|
|
2
2
|
|
3
3
|
= effective_form_with(model: [:admin, cpd_audit_level], engine: true) do |f|
|
4
4
|
= card("All Steps Content") do
|
5
|
-
|
6
|
-
hint: "displayed on all steps"
|
5
|
+
- if defined?(EffectiveArticleEditor)
|
6
|
+
= f.article_editor "rich_text_all_steps_audit_content", label: false, hint: "displayed on all steps"
|
7
|
+
- else
|
8
|
+
= f.rich_text_area "rich_text_all_steps_audit_content", label: false, hint: "displayed on all steps"
|
7
9
|
|
8
10
|
%hr
|
9
11
|
|
10
12
|
- Effective::CpdAudit::WIZARD_STEPS.each do |step, title|
|
11
13
|
= card("#{title} Content") do
|
12
|
-
|
13
|
-
hint: "displayed on the auditee wizard #{step} wizard step only"
|
14
|
+
- if defined?(EffectiveArticleEditor)
|
15
|
+
= f.article_editor "rich_text_#{step}_audit_content", label: false, hint: "displayed on the auditee wizard #{step} wizard step only"
|
16
|
+
- else
|
17
|
+
= f.rich_text_area "rich_text_#{step}_audit_content", label: false, hint: "displayed on the auditee wizard #{step} wizard step only"
|
14
18
|
|
15
19
|
= f.submit
|
@@ -2,14 +2,18 @@
|
|
2
2
|
|
3
3
|
= effective_form_with(model: [:admin, cpd_audit_level], engine: true) do |f|
|
4
4
|
= card("All Steps Content") do
|
5
|
-
|
6
|
-
hint: "displayed on all steps"
|
5
|
+
- if defined?(EffectiveArticleEditor)
|
6
|
+
= f.article_editor "rich_text_all_steps_audit_review_content", label: false, hint: "displayed on all steps"
|
7
|
+
- else
|
8
|
+
= f.rich_text_area "rich_text_all_steps_audit_review_content", label: false, hint: "displayed on all steps"
|
7
9
|
|
8
10
|
%hr
|
9
11
|
|
10
12
|
- Effective::CpdAuditReview::WIZARD_STEPS.each do |step, title|
|
11
13
|
= card("#{title} Content") do
|
12
|
-
|
13
|
-
hint: "displayed on the audit reviewer #{step} wizard step only"
|
14
|
+
- if defined?(EffectiveArticleEditor)
|
15
|
+
= f.article_editor "rich_text_#{step}_audit_review_content", label: false, hint: "displayed on the audit reviewer #{step} wizard step only"
|
16
|
+
- else
|
17
|
+
= f.rich_text_area "rich_text_#{step}_audit_review_content", label: false, hint: "displayed on the audit reviewer #{step} wizard step only"
|
14
18
|
|
15
19
|
= f.submit
|
@@ -17,6 +17,9 @@
|
|
17
17
|
= tab 'Audit' do
|
18
18
|
= render 'effective/cpd_audits/cpd_audit', cpd_audit: cpd_audit
|
19
19
|
|
20
|
+
= tab 'Deadlines' do
|
21
|
+
= render 'admin/cpd_audits/form_deadlines', cpd_audit: cpd_audit
|
22
|
+
|
20
23
|
= tab 'Statements' do
|
21
24
|
- datatable = Admin::EffectiveCpdStatementsDatatable.new(user_id: cpd_audit.user.id, user_type: cpd_audit.user.class.name)
|
22
25
|
= render_datatable(datatable, inline: true, simple: true)
|
@@ -0,0 +1,12 @@
|
|
1
|
+
= card('Deadlines') do
|
2
|
+
= effective_form_with(model: [:admin, cpd_audit], engine: true) do |f|
|
3
|
+
%p The audittee has the following deadlines:
|
4
|
+
|
5
|
+
%ul
|
6
|
+
%li To declare conflict of interest: #{f.object.deadline_to_conflict_of_interest}
|
7
|
+
%li To request exemption: #{f.object.deadline_to_exemption}
|
8
|
+
%li To request extension: #{f.object.deadline_to_extension}
|
9
|
+
|
10
|
+
= f.check_box :ignore_deadlines, label: 'Yes, ignore audittee deadlines and allow these actions to be performed'
|
11
|
+
|
12
|
+
= f.submit 'Save', center: true
|
@@ -4,37 +4,58 @@
|
|
4
4
|
.card.mb-4
|
5
5
|
.card-body
|
6
6
|
%h5.card-title All Steps Content
|
7
|
-
|
7
|
+
- if defined?(EffectiveArticleEditor)
|
8
|
+
= f.article_editor :all_steps_content, label: false, hint: 'displayed on all statement steps'
|
9
|
+
- else
|
10
|
+
= f.rich_text_area :all_steps_content, label: false, hint: 'displayed on all statement steps'
|
8
11
|
|
9
12
|
.card.mb-4
|
10
13
|
.card-body
|
11
14
|
%h5.card-title Sidebar Content
|
12
|
-
|
15
|
+
- if defined?(EffectiveArticleEditor)
|
16
|
+
= f.article_editor :sidebar_content, label: false, hint: 'displayed on the sidebar on all statement steps'
|
17
|
+
- else
|
18
|
+
= f.rich_text_area :sidebar_content, label: false, hint: 'displayed on the sidebar on all statement steps'
|
13
19
|
|
14
20
|
%h2 Individual Steps Content
|
15
21
|
.card.mb-4
|
16
22
|
.card-body
|
17
23
|
%h5.card-title Start Step
|
18
|
-
|
24
|
+
- if defined?(EffectiveArticleEditor)
|
25
|
+
= f.article_editor :start_content, label: false, hint: 'displayed on the start step only'
|
26
|
+
- else
|
27
|
+
= f.rich_text_area :start_content, label: false, hint: 'displayed on the start step only'
|
19
28
|
|
20
29
|
.card.mb-4
|
21
30
|
.card-body
|
22
31
|
%h5.card-title Activities Step
|
23
|
-
|
32
|
+
- if defined?(EffectiveArticleEditor)
|
33
|
+
= f.article_editor :activities_content, label: false, hint: 'displayed on the activities step only'
|
34
|
+
- else
|
35
|
+
= f.rich_text_area :activities_content, label: false, hint: 'displayed on the activities step only'
|
24
36
|
|
25
37
|
.card.mb-4
|
26
38
|
.card-body
|
27
39
|
%h5.card-title Agreements Step
|
28
|
-
|
40
|
+
- if defined?(EffectiveArticleEditor)
|
41
|
+
= f.article_editor :agreements_content, label: false, hint: 'displayed on the agreements step only'
|
42
|
+
- else
|
43
|
+
= f.rich_text_area :agreements_content, label: false, hint: 'displayed on the agreements step only'
|
29
44
|
|
30
45
|
.card.mb-4
|
31
46
|
.card-body
|
32
47
|
%h5.card-title Submit Step
|
33
|
-
|
48
|
+
- if defined?(EffectiveArticleEditor)
|
49
|
+
= f.article_editor :submit_content, label: false, hint: 'displayed on the submit step only'
|
50
|
+
- else
|
51
|
+
= f.rich_text_area :submit_content, label: false, hint: 'displayed on the submit step only'
|
34
52
|
|
35
53
|
.card.mb-4
|
36
54
|
.card-body
|
37
55
|
%h5.card-title Complete Step
|
38
|
-
|
56
|
+
- if defined?(EffectiveArticleEditor)
|
57
|
+
= f.article_editor :complete_content, label: false, hint: 'displayed on the complete step only'
|
58
|
+
- else
|
59
|
+
= f.rich_text_area :complete_content, label: false, hint: 'displayed on the complete step only'
|
39
60
|
|
40
61
|
= f.submit
|
@@ -5,7 +5,7 @@
|
|
5
5
|
- resource.cpd_audit_reviews.each do |cpd_audit_review|
|
6
6
|
%li #{cpd_audit_review.user} <#{mail_to(cpd_audit_review.user.email)}>
|
7
7
|
|
8
|
-
- if resource.deadline_to_conflict_of_interest.present?
|
8
|
+
- if resource.deadline_to_conflict_of_interest.present? && !resource.ignore_deadlines?
|
9
9
|
%p The deadline to declare a conflict of interest is: #{resource.deadline_to_conflict_of_interest.strftime('%F')}.
|
10
10
|
|
11
11
|
= effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
- if resource.was_exemption_requested?
|
3
3
|
= render('effective/cpd_audits/exemption', cpd_audit: resource, step: :exemption)
|
4
4
|
|
5
|
-
- if resource.deadline_to_exemption.present?
|
5
|
+
- if resource.deadline_to_exemption.present? && !resource.ignore_deadlines?
|
6
6
|
%p The deadline to request an exemption is: #{resource.deadline_to_exemption.strftime('%F')}.
|
7
7
|
|
8
8
|
= effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
- if resource.was_extension_requested?
|
3
3
|
= render('effective/cpd_audits/extension', cpd_audit: resource, step: :extension)
|
4
4
|
|
5
|
-
- if resource.deadline_to_extension.present?
|
5
|
+
- if resource.deadline_to_extension.present? && !resource.ignore_deadlines?
|
6
6
|
%p The deadline to request an extension is: #{resource.deadline_to_extension.strftime('%F')}.
|
7
7
|
|
8
8
|
= effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_cpd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Code and Effect
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-08-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -246,6 +246,7 @@ files:
|
|
246
246
|
- app/views/admin/cpd_audits/_auditee_fields.html.haml
|
247
247
|
- app/views/admin/cpd_audits/_form.html.haml
|
248
248
|
- app/views/admin/cpd_audits/_form_conflict.html.haml
|
249
|
+
- app/views/admin/cpd_audits/_form_deadlines.html.haml
|
249
250
|
- app/views/admin/cpd_audits/_form_determination.html.haml
|
250
251
|
- app/views/admin/cpd_audits/_form_exemption.html.haml
|
251
252
|
- app/views/admin/cpd_audits/_form_extension.html.haml
|