georgia_mailer 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/georgia/messages_controller.rb +2 -2
- data/app/controllers/georgia_mailer/messages_controller.rb +4 -4
- data/app/mailers/georgia_mailer/notifier.rb +2 -2
- data/app/models/georgia_mailer/message.rb +1 -1
- data/app/services/georgia_mailer/spam_check.rb +17 -0
- data/app/views/georgia/messages/show.html.erb +3 -5
- data/app/views/georgia_mailer/notifier/new_message_notification.html.erb +5 -21
- data/app/workers/georgia_mailer/email_delivery_worker.rb +19 -0
- data/app/workers/georgia_mailer/spam_worker.rb +8 -9
- data/lib/georgia/indexer/extensions/solr_adapter/georgia_mailer/message.rb +1 -1
- data/lib/georgia/indexer/extensions/tire_adapter/georgia_mailer/message.rb +1 -1
- data/lib/georgia_mailer/engine.rb +1 -1
- data/lib/georgia_mailer/version.rb +1 -1
- metadata +24 -23
- data/app/uploaders/georgia_mailer/attachment_uploader.rb +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6aafa57ea78d8babbab38651552c658541092a45
|
4
|
+
data.tar.gz: f7d0608941ff2db9476c12ec484d19358126ce19
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0fe796c554d3f1c6e1113cc46786141f2cf58c37d56d0d7c2cd3c56d6aec271900044d91d5d64b587745eab5f22d5482ac247ce538ff46dd35b6dc3ccb5db5a5
|
7
|
+
data.tar.gz: 970f5f117b2f7c3350888beb19b78ce2979964b08156b19b62cf4d049e136ac9e58b2eb16b0ec6bb9f70cd6b51c0cea433f5a899156c7b7142bad63aa41601c0
|
@@ -67,8 +67,8 @@ module Georgia
|
|
67
67
|
private
|
68
68
|
|
69
69
|
def prepare_search
|
70
|
-
@
|
71
|
-
@messages = GeorgiaMailer::MessageDecorator.decorate_collection(@results)
|
70
|
+
@search = ::Georgia::Indexer.search(GeorgiaMailer::Message, params)
|
71
|
+
@messages = GeorgiaMailer::MessageDecorator.decorate_collection(@search.results)
|
72
72
|
end
|
73
73
|
|
74
74
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
module GeorgiaMailer
|
2
2
|
class MessagesController < ::ApplicationController
|
3
3
|
|
4
|
-
# Convenient method to create and check for spam
|
5
4
|
def create
|
6
|
-
@message =
|
5
|
+
@message = Message.new(message_params)
|
7
6
|
if @message.save
|
8
|
-
|
7
|
+
EmailDeliveryWorker.new.async.later(60, @message.id)
|
8
|
+
SpamWorker.new.async.perform(@message.id)
|
9
9
|
respond_to do |format|
|
10
10
|
format.html { redirect_to :back, notice: 'Message delivered successfully' }
|
11
11
|
format.js { render layout: false }
|
@@ -23,7 +23,7 @@ module GeorgiaMailer
|
|
23
23
|
def message_params
|
24
24
|
@message_params = {}
|
25
25
|
params[:message].each do |key, value|
|
26
|
-
@message_params[key] = value.
|
26
|
+
@message_params[key] = value.force_encoding('UTF-8')
|
27
27
|
end
|
28
28
|
@message_params[:referrer] = request.referrer
|
29
29
|
@message_params[:user_ip] = request.remote_ip
|
@@ -6,8 +6,8 @@ module GeorgiaMailer
|
|
6
6
|
emails_to = Georgia::User.admins.map(&:email)
|
7
7
|
unless emails_to.empty?
|
8
8
|
mail(
|
9
|
-
from: "
|
10
|
-
to: "noreply@
|
9
|
+
from: "noreply@georgiacms.com",
|
10
|
+
to: "noreply@georgiacms.com",
|
11
11
|
bcc: emails_to,
|
12
12
|
subject: "New message from #{Georgia.title}"
|
13
13
|
)
|
@@ -12,7 +12,7 @@ module GeorgiaMailer
|
|
12
12
|
validates :email, format: /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i
|
13
13
|
validates :message, presence: true
|
14
14
|
|
15
|
-
mount_uploader :attachment,
|
15
|
+
mount_uploader :attachment, Ckeditor::AttachmentFileUploader
|
16
16
|
|
17
17
|
# Anti Spam: check https://github.com/joshfrench/rakismet for more details
|
18
18
|
include Rakismet::Model
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module GeorgiaMailer
|
2
|
+
class SpamCheck
|
3
|
+
|
4
|
+
def initialize message
|
5
|
+
@message = message
|
6
|
+
end
|
7
|
+
|
8
|
+
# The .spam? method comes from Rakismet. It gathers the necessary information and
|
9
|
+
# and calls Akismet for a spam check. It returns true or false based on the status
|
10
|
+
#
|
11
|
+
# https://github.com/joshfrench/rakismet/blob/master/lib/rakismet/model.rb
|
12
|
+
def call
|
13
|
+
@message.spam?
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -25,9 +25,7 @@
|
|
25
25
|
<%= message_actions_list(@message) %>
|
26
26
|
</ul>
|
27
27
|
</div>
|
28
|
-
<strong>
|
29
|
-
<%= @message.name_or_anonymous %>
|
30
|
-
</strong>
|
28
|
+
<strong><%= @message.name_or_anonymous %></strong>
|
31
29
|
<span><<%= @message.email %>></span>
|
32
30
|
<span>on <%= @message.created_at.strftime('%F %H:%M') %></span>
|
33
31
|
<span>sent from <%= link_to @message.referrer, @message.referrer %></span>
|
@@ -42,9 +40,9 @@
|
|
42
40
|
<p>
|
43
41
|
<b>Attachment</b>:
|
44
42
|
<% if @message.attachment.try(:file) and @message.attachment.file.exists? %>
|
45
|
-
|
43
|
+
<%= link_to @message.attachment.file.filename, @message.attachment.url %>
|
46
44
|
<% else -%>
|
47
|
-
|
45
|
+
<span class='muted'>There were no attachments.</span>
|
48
46
|
<% end -%>
|
49
47
|
</p>
|
50
48
|
</div>
|
@@ -40,29 +40,14 @@ a {
|
|
40
40
|
color: #FFF;
|
41
41
|
background-color: #348eda;
|
42
42
|
border:solid #348eda;
|
43
|
-
border-width:
|
43
|
+
border-width: 5px 20px;
|
44
44
|
line-height:2;
|
45
45
|
font-weight:bold;
|
46
46
|
margin-right:10px;
|
47
47
|
text-align:center;
|
48
48
|
cursor:pointer;
|
49
49
|
display: inline-block;
|
50
|
-
border-radius:
|
51
|
-
}
|
52
|
-
|
53
|
-
.btn-secondary {
|
54
|
-
text-decoration:none;
|
55
|
-
color: #FFF;
|
56
|
-
background-color: #aaa;
|
57
|
-
border:solid #aaa;
|
58
|
-
border-width:10px 20px;
|
59
|
-
line-height:2;
|
60
|
-
font-weight:bold;
|
61
|
-
margin-right:10px;
|
62
|
-
text-align:center;
|
63
|
-
cursor:pointer;
|
64
|
-
display: inline-block;
|
65
|
-
border-radius: 25px;
|
50
|
+
border-radius: 5px;
|
66
51
|
}
|
67
52
|
|
68
53
|
.last {
|
@@ -189,11 +174,10 @@ ul li, ol li {
|
|
189
174
|
<td>
|
190
175
|
<p>Hi there,</p>
|
191
176
|
<p>You've received a new message on Georgia CMS from <%= @message.name_or_anonymous %></p>
|
192
|
-
|
177
|
+
<% if @message.subject.present? %><h1><%= @message.subject %></h1><% end %>
|
193
178
|
<p><%= @message.message %></p>
|
194
|
-
<% if @message.phone.present?
|
195
|
-
|
196
|
-
<% end -%>
|
179
|
+
<% if @message.phone.present? %><p><%= @message.phone %></p><% end -%>
|
180
|
+
<p><a href="<%= georgia.message_path(@message, only_path: false) %>" class='btn-primary'>Have a closer look</a></p>
|
197
181
|
<p>Thanks, have a lovely day.</p>
|
198
182
|
</td>
|
199
183
|
</tr>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module GeorgiaMailer
|
2
|
+
class EmailDeliveryWorker
|
3
|
+
include SuckerPunch::Job
|
4
|
+
|
5
|
+
def perform(message_id)
|
6
|
+
ActiveRecord::Base.connection_pool.with_connection do
|
7
|
+
message = Message.find(message_id)
|
8
|
+
unless message.spam or !GeorgiaMailer.turn_on_email_notifications
|
9
|
+
Notifier.new_message_notification(message).deliver
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def later(sec, message_id)
|
15
|
+
after(sec) { perform(message_id) }
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
@@ -1,17 +1,16 @@
|
|
1
1
|
module GeorgiaMailer
|
2
2
|
class SpamWorker
|
3
|
-
include
|
3
|
+
include SuckerPunch::Job
|
4
4
|
|
5
5
|
def perform(message_id)
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
6
|
+
ActiveRecord::Base.connection_pool.with_connection do
|
7
|
+
begin
|
8
|
+
message = Message.find(message_id)
|
9
|
+
is_spam = SpamCheck.new(message).call
|
10
|
+
message.update_attributes(spam: is_spam, verified_at: Time.zone.now)
|
11
|
+
rescue ActiveRecord::RecordNotFound
|
12
|
+
Rails.logger.info "Message with ID #{message_id} was destroy before it could be processed"
|
12
13
|
end
|
13
|
-
rescue ActiveRecord::RecordNotFound
|
14
|
-
Rails.logger.info "Message with ID #{message_id} was destroy before it could be processed"
|
15
14
|
end
|
16
15
|
end
|
17
16
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: georgia_mailer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mathieu Gagné
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-03-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: georgia
|
@@ -39,7 +39,7 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: sucker_punch
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - '>='
|
@@ -60,37 +60,38 @@ executables: []
|
|
60
60
|
extensions: []
|
61
61
|
extra_rdoc_files: []
|
62
62
|
files:
|
63
|
-
- app/assets/javascripts/georgia_mailer/components/message_table.js.coffee
|
64
|
-
- app/assets/javascripts/georgia_mailer/application.js
|
65
|
-
- app/assets/stylesheets/georgia_mailer/settings/_color.scss
|
66
|
-
- app/assets/stylesheets/georgia_mailer/modules/_message.scss
|
67
|
-
- app/assets/stylesheets/georgia_mailer/mixins/_ellipsis.scss
|
68
|
-
- app/assets/stylesheets/georgia_mailer/application.css.scss
|
69
|
-
- app/decorators/georgia_mailer/message_decorator.rb
|
70
|
-
- app/models/georgia_mailer/message.rb
|
71
|
-
- app/controllers/georgia/messages_controller.rb
|
72
63
|
- app/controllers/georgia_mailer/messages_controller.rb
|
73
|
-
- app/
|
74
|
-
- app/views/georgia/messages/destroy.js.erb
|
75
|
-
- app/views/georgia/messages/show.html.erb
|
76
|
-
- app/views/georgia/messages/search.html.erb
|
77
|
-
- app/views/georgia/georgia_mailer/messages/_message.html.erb
|
64
|
+
- app/controllers/georgia/messages_controller.rb
|
78
65
|
- app/views/georgia_mailer/messages/create.js.erb
|
79
66
|
- app/views/georgia_mailer/notifier/new_message_notification.html.erb
|
67
|
+
- app/views/georgia/georgia_mailer/messages/_message.html.erb
|
68
|
+
- app/views/georgia/messages/destroy.js.erb
|
69
|
+
- app/views/georgia/messages/search.html.erb
|
70
|
+
- app/views/georgia/messages/show.html.erb
|
71
|
+
- app/views/georgia/header/_messages.html.erb
|
72
|
+
- app/workers/georgia_mailer/email_delivery_worker.rb
|
80
73
|
- app/workers/georgia_mailer/spam_worker.rb
|
74
|
+
- app/helpers/georgia/messages_helper.rb
|
75
|
+
- app/assets/stylesheets/georgia_mailer/modules/_message.scss
|
76
|
+
- app/assets/stylesheets/georgia_mailer/settings/_color.scss
|
77
|
+
- app/assets/stylesheets/georgia_mailer/mixins/_ellipsis.scss
|
78
|
+
- app/assets/stylesheets/georgia_mailer/application.css.scss
|
79
|
+
- app/assets/javascripts/georgia_mailer/application.js
|
80
|
+
- app/assets/javascripts/georgia_mailer/components/message_table.js.coffee
|
81
81
|
- app/mailers/georgia_mailer/notifier.rb
|
82
|
+
- app/models/georgia_mailer/message.rb
|
83
|
+
- app/decorators/georgia_mailer/message_decorator.rb
|
82
84
|
- app/presenters/georgia_mailer/message_actions_presenter.rb
|
83
|
-
- app/
|
84
|
-
- app/uploaders/georgia_mailer/attachment_uploader.rb
|
85
|
+
- app/services/georgia_mailer/spam_check.rb
|
85
86
|
- config/routes.rb
|
86
87
|
- db/migrate/001_create_georgia_mailer_messages.rb
|
87
|
-
- lib/
|
88
|
-
- lib/
|
88
|
+
- lib/georgia_mailer/version.rb
|
89
|
+
- lib/georgia_mailer/engine.rb
|
89
90
|
- lib/georgia_mailer.rb
|
91
|
+
- lib/tasks/georgia_mailer_tasks.rake
|
90
92
|
- lib/georgia/indexer/extensions/solr_adapter/georgia_mailer/message.rb
|
91
93
|
- lib/georgia/indexer/extensions/tire_adapter/georgia_mailer/message.rb
|
92
|
-
- lib/georgia_mailer/
|
93
|
-
- lib/georgia_mailer/version.rb
|
94
|
+
- lib/generators/georgia_mailer/install/install_generator.rb
|
94
95
|
- MIT-LICENSE
|
95
96
|
- Rakefile
|
96
97
|
- README.md
|
@@ -1,16 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module GeorgiaMailer
|
3
|
-
class AttachmentUploader < CarrierWave::Uploader::Base
|
4
|
-
|
5
|
-
storage :fog
|
6
|
-
|
7
|
-
def store_dir
|
8
|
-
"/attachments/#{model.id}"
|
9
|
-
end
|
10
|
-
|
11
|
-
def extension_white_list
|
12
|
-
["doc", "docx", "xls", "odt", "ods", "pdf", "rar", "zip", "tar", "tar.gz"]
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
16
|
-
end
|