effective_polls 0.5.6 → 0.6.1
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_polls_datatable.rb +3 -0
- data/app/mailers/effective/polls_mailer.rb +10 -5
- data/app/models/effective/ballot.rb +6 -0
- data/app/models/effective/poll.rb +3 -0
- data/app/models/effective/poll_notification.rb +14 -2
- data/app/views/admin/polls/_form_poll.html.haml +8 -0
- data/app/views/admin/polls/_poll.html.haml +5 -2
- data/app/views/effective/poll_results/_results.html.haml +19 -16
- data/db/migrate/101_create_effective_polls.rb +3 -0
- data/lib/effective_polls/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f0bb62aded7cf4461b6ac474f751db47c9709b0079e39ebfced3aac50327beb
|
4
|
+
data.tar.gz: 43c9c7448edee9b0ec1d913187bd28f28c7ca9222494a13f34790ce66f36d40d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 911327063e49263e213ff7a35243a655e955eacbb9c37d432c9677ab2fc96e2b49066bef2514bd13351c8902691f086e4c00c2f33fed9890223fb3499889fc27
|
7
|
+
data.tar.gz: 8bb1b75e904a57867e0f0392be9e8f897c81a9b528f41cc7814f3f99feca0be06503ab0f5b8fd0ca8e2266a974c9722520e2c39b6c5a53cec14661e4750cff5c
|
@@ -11,7 +11,8 @@ module Effective
|
|
11
11
|
to: user.email,
|
12
12
|
from: poll_notification.from,
|
13
13
|
body: poll_notification.body,
|
14
|
-
subject: poll_notification.subject
|
14
|
+
subject: poll_notification.subject,
|
15
|
+
message_stream: 'broadcast-stream'
|
15
16
|
)
|
16
17
|
end
|
17
18
|
|
@@ -22,7 +23,8 @@ module Effective
|
|
22
23
|
to: user.email,
|
23
24
|
from: poll_notification.from,
|
24
25
|
body: poll_notification.body,
|
25
|
-
subject: poll_notification.subject
|
26
|
+
subject: poll_notification.subject,
|
27
|
+
message_stream: 'broadcast-stream'
|
26
28
|
)
|
27
29
|
end
|
28
30
|
|
@@ -33,7 +35,8 @@ module Effective
|
|
33
35
|
to: user.email,
|
34
36
|
from: poll_notification.from,
|
35
37
|
body: poll_notification.body,
|
36
|
-
subject: poll_notification.subject
|
38
|
+
subject: poll_notification.subject,
|
39
|
+
message_stream: 'broadcast-stream'
|
37
40
|
)
|
38
41
|
end
|
39
42
|
|
@@ -44,7 +47,8 @@ module Effective
|
|
44
47
|
to: user.email,
|
45
48
|
from: poll_notification.from,
|
46
49
|
body: poll_notification.body,
|
47
|
-
subject: poll_notification.subject
|
50
|
+
subject: poll_notification.subject,
|
51
|
+
message_stream: 'broadcast-stream'
|
48
52
|
)
|
49
53
|
end
|
50
54
|
|
@@ -55,7 +59,8 @@ module Effective
|
|
55
59
|
to: user.email,
|
56
60
|
from: poll_notification.from,
|
57
61
|
body: poll_notification.body,
|
58
|
-
subject: poll_notification.subject
|
62
|
+
subject: poll_notification.subject,
|
63
|
+
message_stream: 'broadcast-stream'
|
59
64
|
)
|
60
65
|
end
|
61
66
|
|
@@ -60,6 +60,12 @@ module Effective
|
|
60
60
|
model_name.human
|
61
61
|
end
|
62
62
|
|
63
|
+
# Disable effective_logging log_changes for this resource
|
64
|
+
def log_changes?
|
65
|
+
return false if poll&.skip_logging?
|
66
|
+
true
|
67
|
+
end
|
68
|
+
|
63
69
|
# Find or build
|
64
70
|
def ballot_response(poll_question)
|
65
71
|
ballot_response = ballot_responses.find { |br| br.poll_question_id == poll_question.id }
|
@@ -37,6 +37,9 @@ module Effective
|
|
37
37
|
start_at :datetime
|
38
38
|
end_at :datetime
|
39
39
|
|
40
|
+
hide_results :boolean, default: false
|
41
|
+
skip_logging :boolean, default: false
|
42
|
+
|
40
43
|
audience :string
|
41
44
|
audience_class_name :string
|
42
45
|
audience_scope :text # An Array of user_ids or named scopes on the User model
|
@@ -129,7 +129,9 @@ module Effective
|
|
129
129
|
end
|
130
130
|
end
|
131
131
|
|
132
|
-
def notify!(force: false)
|
132
|
+
def notify!(force: false, except: [])
|
133
|
+
raise('expected an Array of user IDs') if except.present? && !except.kind_of?(Array)
|
134
|
+
|
133
135
|
return false unless (notify_now? || force)
|
134
136
|
|
135
137
|
# We send to all users, except for the 'Reminder' that exclude completed users
|
@@ -138,7 +140,17 @@ module Effective
|
|
138
140
|
update_column(:started_at, Time.zone.now)
|
139
141
|
|
140
142
|
users.find_each do |user|
|
141
|
-
|
143
|
+
print '.'
|
144
|
+
|
145
|
+
next if except.include?(user.id)
|
146
|
+
|
147
|
+
begin
|
148
|
+
Effective::PollsMailer.public_send(email_template, self, user).deliver_now
|
149
|
+
rescue => e
|
150
|
+
EffectiveLogger.error(e.message, associated: self) if defined?(EffectiveLogger)
|
151
|
+
ExceptionNotifier.notify_exception(e, data: { user_id: user.id }) if defined?(ExceptionNotifier)
|
152
|
+
end
|
153
|
+
|
142
154
|
end
|
143
155
|
|
144
156
|
update_column(:completed_at, Time.zone.now)
|
@@ -9,6 +9,14 @@
|
|
9
9
|
.alert.alert-info
|
10
10
|
Please be aware of the existing #{ets(f.object.poll_notifications)} when changing the start or end availability date.
|
11
11
|
|
12
|
+
= f.check_box :hide_results,
|
13
|
+
label: 'Hide results until the poll has ended',
|
14
|
+
hint: 'If checked, admin users will be unable to view the poll results until the poll has ended.'
|
15
|
+
|
16
|
+
= f.check_box :skip_logging,
|
17
|
+
label: 'Skip logging of ballots',
|
18
|
+
hint: 'If checked, no logs of who has submitted or completed ballots will be kept.'
|
19
|
+
|
12
20
|
-# Audience
|
13
21
|
- f.object.audience_class_name ||= current_user.class.name
|
14
22
|
|
@@ -1,5 +1,8 @@
|
|
1
1
|
= render 'effective/poll_results/results', poll: @poll
|
2
2
|
|
3
3
|
= card('Raw Data') do
|
4
|
-
-
|
5
|
-
|
4
|
+
- if poll.hide_results? && !poll.ended?
|
5
|
+
%p The raw data for this poll will be displayed once it has ended.
|
6
|
+
- else
|
7
|
+
- datatable = Admin::EffectivePollResultsDatatable.new(poll: @poll)
|
8
|
+
= render_datatable(datatable)
|
@@ -20,23 +20,26 @@
|
|
20
20
|
.card-body
|
21
21
|
%h5.card-title Question Results
|
22
22
|
|
23
|
-
.
|
24
|
-
%
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
23
|
+
- if poll.hide_results? && !poll.ended?
|
24
|
+
%p The results of this poll will be displayed once it has ended.
|
25
|
+
- else
|
26
|
+
.effective-ballot
|
27
|
+
%table.table.table-hover
|
28
|
+
%thead
|
29
|
+
%tr
|
30
|
+
%th Question
|
31
|
+
%th Results
|
29
32
|
|
30
|
-
|
31
|
-
|
33
|
+
%tbody
|
34
|
+
- ballots = poll.ballots
|
32
35
|
|
33
|
-
|
34
|
-
|
36
|
+
- poll.poll_questions.each_with_index do |poll_question, index|
|
37
|
+
- ballot_responses = poll.poll_results(poll_question: poll_question)
|
35
38
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
39
|
+
%tr
|
40
|
+
%td
|
41
|
+
#{poll_question.position + 1}. #{poll_question}
|
42
|
+
%br
|
43
|
+
%small.text-muted= poll_question.category
|
41
44
|
|
42
|
-
|
45
|
+
%td= render('effective/poll_results/poll_result', poll_question: poll_question, ballot_responses: ballot_responses)
|
@@ -12,6 +12,9 @@ class CreateEffectivePolls < ActiveRecord::Migration[6.0]
|
|
12
12
|
t.string :audience_class_name
|
13
13
|
t.text :audience_scope
|
14
14
|
|
15
|
+
t.boolean :hide_results, default: false
|
16
|
+
t.boolean :skip_logging, default: false
|
17
|
+
|
15
18
|
t.datetime :updated_at
|
16
19
|
t.datetime :created_at
|
17
20
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_polls
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.1
|
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: 2024-
|
11
|
+
date: 2024-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|