georgia_mailer 0.1.3 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/MIT-LICENSE +1 -1
- data/README.md +3 -11
- data/app/assets/javascripts/georgia_mailer/components/message_table.js.coffee +32 -26
- data/app/assets/stylesheets/georgia_mailer/application.css.scss +1 -0
- data/app/assets/stylesheets/georgia_mailer/components/_button.scss +4 -0
- data/app/assets/stylesheets/georgia_mailer/{modules → components}/_message.scss +4 -7
- data/app/assets/stylesheets/georgia_mailer/modules/_categories.scss +17 -0
- data/app/assets/stylesheets/georgia_mailer/modules/_messages.scss +7 -0
- data/app/controllers/georgia/mailer/messages_controller.rb +38 -0
- data/app/controllers/georgia/messages_controller.rb +71 -36
- data/app/decorators/georgia/mailer/message_decorator.rb +23 -0
- data/app/helpers/georgia/messages_helper.rb +1 -1
- data/app/mailers/georgia/mailer/notifier.rb +20 -0
- data/app/models/georgia/mailer/message.rb +54 -0
- data/app/policies/georgia/mailer/mailer_policy.rb +52 -0
- data/app/presenters/georgia/mailer/message_actions_presenter.rb +42 -0
- data/app/searches/georgia/mailer/message_search.rb +7 -0
- data/app/services/georgia/mailer/spam_check.rb +19 -0
- data/app/views/georgia/header/_messages.html.erb +1 -1
- data/app/views/georgia/{georgia_mailer → mailer}/messages/_message.html.erb +2 -0
- data/app/views/{georgia_mailer → georgia/mailer}/messages/create.js.erb +0 -0
- data/app/views/{georgia_mailer → georgia/mailer}/notifier/new_message_notification.html.erb +10 -3
- data/app/views/georgia/messages/destroy.js.erb +4 -0
- data/app/views/georgia/messages/ham.js.erb +7 -0
- data/app/views/georgia/messages/search.html.erb +55 -37
- data/app/views/georgia/messages/show.html.erb +8 -8
- data/app/views/georgia/messages/spam.js.erb +7 -0
- data/app/views/public_activity/georgia_mailer_message/_create.html.erb +17 -0
- data/app/workers/georgia/mailer/destroy_all_spam_worker.rb +18 -0
- data/app/workers/georgia/mailer/email_delivery_worker.rb +21 -0
- data/app/workers/georgia/mailer/spam_worker.rb +20 -0
- data/config/routes.rb +3 -3
- data/lib/generators/georgia/mailer/install/install_generator.rb +24 -0
- data/lib/georgia/mailer/engine.rb +12 -0
- data/lib/georgia/mailer/version.rb +5 -0
- data/lib/georgia_mailer.rb +20 -7
- data/lib/tasks/georgia_mailer_tasks.rake +17 -17
- metadata +54 -47
- data/app/controllers/georgia_mailer/messages_controller.rb +0 -35
- data/app/decorators/georgia_mailer/message_decorator.rb +0 -21
- data/app/mailers/georgia_mailer/notifier.rb +0 -18
- data/app/models/georgia_mailer/message.rb +0 -32
- data/app/presenters/georgia_mailer/message_actions_presenter.rb +0 -53
- data/app/services/georgia_mailer/spam_check.rb +0 -17
- data/app/workers/georgia_mailer/email_delivery_worker.rb +0 -19
- data/app/workers/georgia_mailer/spam_worker.rb +0 -18
- data/lib/generators/georgia_mailer/install/install_generator.rb +0 -23
- data/lib/georgia/indexer/extensions/solr_adapter/georgia_mailer/message.rb +0 -44
- data/lib/georgia/indexer/extensions/tire_adapter/georgia_mailer/message.rb +0 -46
- data/lib/georgia_mailer/engine.rb +0 -10
- data/lib/georgia_mailer/version.rb +0 -3
@@ -1,18 +0,0 @@
|
|
1
|
-
module GeorgiaMailer
|
2
|
-
class SpamWorker
|
3
|
-
include SuckerPunch::Job
|
4
|
-
|
5
|
-
def perform(message_id)
|
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"
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
end
|
18
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
module GeorgiaMailer
|
2
|
-
module Generators
|
3
|
-
class InstallGenerator < ::Rails::Generators::Base
|
4
|
-
|
5
|
-
def mount_engine
|
6
|
-
route "mount GeorgiaMailer::Engine => '/mailer'"
|
7
|
-
end
|
8
|
-
|
9
|
-
def run_migrations
|
10
|
-
rake "railties:install:migrations"
|
11
|
-
rake "db:migrate"
|
12
|
-
end
|
13
|
-
|
14
|
-
def create_indices
|
15
|
-
if defined? Tire
|
16
|
-
say("Creating elasticsearch indices", :yellow)
|
17
|
-
rake "environment tire:import CLASS=GeorgiaMailer::Message FORCE=true"
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require 'active_support/concern'
|
2
|
-
|
3
|
-
module Georgia
|
4
|
-
module Indexer
|
5
|
-
module SolrAdapter
|
6
|
-
module GeorgiaMailerMessageExtension
|
7
|
-
extend ActiveSupport::Concern
|
8
|
-
|
9
|
-
included do
|
10
|
-
|
11
|
-
searchable do
|
12
|
-
text :name
|
13
|
-
text :email
|
14
|
-
text :message
|
15
|
-
text :subject
|
16
|
-
text :phone
|
17
|
-
string :spam do
|
18
|
-
status
|
19
|
-
end
|
20
|
-
string :name
|
21
|
-
string :email
|
22
|
-
string :phone
|
23
|
-
string :subject
|
24
|
-
string :message
|
25
|
-
time :created_at
|
26
|
-
end
|
27
|
-
|
28
|
-
def self.search_index model, params
|
29
|
-
search do
|
30
|
-
fulltext params[:query] do
|
31
|
-
fields(:name, :email, :message, :subject, :phone)
|
32
|
-
end
|
33
|
-
facet :spam
|
34
|
-
with(:spam, (params[:s] || 'clean'))
|
35
|
-
order_by (params[:o] || :created_at), (params[:dir] || :desc)
|
36
|
-
paginate(page: params[:page], per_page: (params[:per] || 25))
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
require 'active_support/concern'
|
2
|
-
|
3
|
-
module Georgia
|
4
|
-
module Indexer
|
5
|
-
module TireAdapter
|
6
|
-
module GeorgiaMailerMessageExtension
|
7
|
-
extend ActiveSupport::Concern
|
8
|
-
|
9
|
-
included do
|
10
|
-
|
11
|
-
include ::Tire::Model::Search
|
12
|
-
include ::Tire::Model::Callbacks
|
13
|
-
|
14
|
-
def to_indexed_json
|
15
|
-
{
|
16
|
-
name: name,
|
17
|
-
email: email,
|
18
|
-
message: message,
|
19
|
-
subject: subject,
|
20
|
-
phone: phone,
|
21
|
-
status: status,
|
22
|
-
created_at: created_at.strftime('%F')
|
23
|
-
}.to_json
|
24
|
-
end
|
25
|
-
|
26
|
-
def self.search_index params
|
27
|
-
page = params.fetch(:page, 1)
|
28
|
-
per_page = params.fetch(:per, 25)
|
29
|
-
|
30
|
-
search(page: page, per_page: per_page) do
|
31
|
-
if params[:query].present?
|
32
|
-
query do
|
33
|
-
boolean do
|
34
|
-
must { string params[:query], default_operator: "AND" }
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
sort { by (params[:o] || :created_at), (params[:dir] || :desc) } if params[:query].blank?
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|