emailbutler 0.3.0 → 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/README.md +2 -2
- data/app/assets/stylesheets/emailbutler/views/dashboard.scss +44 -20
- data/app/controllers/emailbutler/ui/messages_controller.rb +2 -2
- data/app/controllers/emailbutler/ui_controller.rb +17 -0
- data/app/views/emailbutler/ui/{dashboard/index.html.erb → index.html.erb} +1 -1
- data/app/views/emailbutler/ui/shared/_header.html.erb +1 -1
- data/app/views/emailbutler/ui/show.html.erb +52 -0
- data/config/routes.rb +1 -1
- data/lib/emailbutler/version.rb +1 -1
- metadata +13 -14
- data/app/controllers/emailbutler/ui/dashboard_controller.rb +0 -15
- data/app/views/emailbutler/ui/dashboard/show.html.erb +0 -35
- data/db/migrate/20220916162720_create_emailbutler_tables.rb +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 97c7cc6c31716442ed040ee06b451d2a3a6abdac9262c08e5fee1c9c6de4f385
|
4
|
+
data.tar.gz: '048cacc8bb87d36cd5bd7b5ccced2b726dcde665ec3398adc348a605a2dd6774'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ed85dfd33c8f3a0e3f2a091db4921f1a70d696abbfd0869408bca4a1fa66f6f90bfd3d542a88f204b29c0e2c2c9b0a328e9252d1ba5183b7de8edeafc889abb1
|
7
|
+
data.tar.gz: 688b1af36d7eaa8ce68f5467ed4a7c22cdd442e0d126e013ac1b9c890f1ff1e308079fe9ee32696403aa21921d1f04f7b78ed3ca68f643bd735981cef571d4c4
|
data/README.md
CHANGED
@@ -68,8 +68,8 @@ end
|
|
68
68
|
|
69
69
|
### UI
|
70
70
|
|
71
|
-
Emailbutler provides UI with rendering email tracking statistics - /emailbutler/ui
|
72
|
-
And with opportunity to resend emails.
|
71
|
+
Emailbutler provides UI with rendering email tracking statistics - /emailbutler/ui.
|
72
|
+
And with opportunity to resend and/or destroy emails.
|
73
73
|
|
74
74
|
## License
|
75
75
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
@@ -1,9 +1,11 @@
|
|
1
1
|
#emailbutler {
|
2
2
|
#dashboard {
|
3
3
|
padding-top: 1rem;
|
4
|
+
display: flex;
|
4
5
|
|
5
6
|
.summary {
|
6
7
|
list-style: none;
|
8
|
+
flex: 1;
|
7
9
|
display: flex;
|
8
10
|
flex-direction: row;
|
9
11
|
padding: .75rem 1rem;
|
@@ -37,8 +39,28 @@
|
|
37
39
|
}
|
38
40
|
}
|
39
41
|
|
42
|
+
.search-form {
|
43
|
+
width: 20rem;
|
44
|
+
padding-right: 2rem;
|
45
|
+
|
46
|
+
.form-field {
|
47
|
+
display: flex;
|
48
|
+
flex-direction: column;
|
49
|
+
margin-bottom: .5rem;
|
50
|
+
|
51
|
+
label {
|
52
|
+
margin-bottom: .25rem;
|
53
|
+
}
|
54
|
+
|
55
|
+
input {
|
56
|
+
padding: .25rem;
|
57
|
+
}
|
58
|
+
}
|
59
|
+
}
|
60
|
+
|
40
61
|
.messages {
|
41
|
-
|
62
|
+
flex: 1;
|
63
|
+
height: 100%;
|
42
64
|
|
43
65
|
thead {
|
44
66
|
tr {
|
@@ -66,26 +88,8 @@
|
|
66
88
|
display: flex;
|
67
89
|
|
68
90
|
button {
|
69
|
-
|
70
|
-
border: none;
|
71
|
-
cursor: pointer;
|
72
|
-
padding: .25rem;
|
73
|
-
|
74
|
-
&.resend {
|
75
|
-
background: #bbf7d0;
|
91
|
+
&:nth-of-type(1) {
|
76
92
|
margin-right: .5rem;
|
77
|
-
|
78
|
-
&:hover {
|
79
|
-
background: #86efac;
|
80
|
-
}
|
81
|
-
}
|
82
|
-
|
83
|
-
&.destroy {
|
84
|
-
background: #fecaca;
|
85
|
-
|
86
|
-
&:hover {
|
87
|
-
background: #fca5a5;
|
88
|
-
}
|
89
93
|
}
|
90
94
|
}
|
91
95
|
}
|
@@ -94,4 +98,24 @@
|
|
94
98
|
}
|
95
99
|
}
|
96
100
|
}
|
101
|
+
|
102
|
+
.button {
|
103
|
+
box-shadow: none;
|
104
|
+
border: none;
|
105
|
+
cursor: pointer;
|
106
|
+
padding: .25rem;
|
107
|
+
background: #bbf7d0;
|
108
|
+
|
109
|
+
&:hover {
|
110
|
+
background: #86efac;
|
111
|
+
}
|
112
|
+
|
113
|
+
&.warning {
|
114
|
+
background: #fecaca;
|
115
|
+
|
116
|
+
&:hover {
|
117
|
+
background: #fca5a5;
|
118
|
+
}
|
119
|
+
}
|
120
|
+
}
|
97
121
|
}
|
@@ -7,12 +7,12 @@ module Emailbutler
|
|
7
7
|
|
8
8
|
def update
|
9
9
|
Emailbutler.resend_message(@message)
|
10
|
-
redirect_to
|
10
|
+
redirect_to ui_index_path
|
11
11
|
end
|
12
12
|
|
13
13
|
def destroy
|
14
14
|
Emailbutler.destroy_message(@message)
|
15
|
-
redirect_to
|
15
|
+
redirect_to ui_index_path
|
16
16
|
end
|
17
17
|
|
18
18
|
private
|
@@ -6,8 +6,25 @@ module Emailbutler
|
|
6
6
|
password: Emailbutler.configuration.ui_password,
|
7
7
|
if: -> { basic_auth_enabled? }
|
8
8
|
|
9
|
+
def index
|
10
|
+
@summary = Emailbutler.count_messages_by_status
|
11
|
+
end
|
12
|
+
|
13
|
+
def show
|
14
|
+
@messages = Emailbutler.find_messages_by(search_condition)
|
15
|
+
end
|
16
|
+
|
9
17
|
private
|
10
18
|
|
19
|
+
def search_condition
|
20
|
+
{
|
21
|
+
status: params[:id],
|
22
|
+
mailer: params[:mailer_name].presence,
|
23
|
+
action: params[:action_name].presence,
|
24
|
+
send_to: [params[:receiver].presence].compact.presence
|
25
|
+
}.compact
|
26
|
+
end
|
27
|
+
|
11
28
|
def basic_auth_enabled?
|
12
29
|
configuration = Emailbutler.configuration
|
13
30
|
|
@@ -6,7 +6,7 @@
|
|
6
6
|
</li>
|
7
7
|
<% Emailbutler.adapter.message_class.statuses.each_key do |status| %>
|
8
8
|
<li>
|
9
|
-
<%= link_to
|
9
|
+
<%= link_to ui_path(status), class: 'status-summary' do %>
|
10
10
|
<span><%= @summary[status].to_i %></span>
|
11
11
|
<span><%= status.capitalize %></span>
|
12
12
|
<% end %>
|
@@ -0,0 +1,52 @@
|
|
1
|
+
<div id="dashboard">
|
2
|
+
<section class="search-form">
|
3
|
+
<%= form_with url: ui_path(params[:id]), method: :get do |form| %>
|
4
|
+
<div class="form-field">
|
5
|
+
<%= form.label :mailer_name, 'Mailer', class: 'form-label' %>
|
6
|
+
<%= form.text_field :mailer_name, class: 'form-value', value: params[:mailer_name] %>
|
7
|
+
</div>
|
8
|
+
<div class="form-field">
|
9
|
+
<%= form.label :action_name, 'Action', class: 'form-label' %>
|
10
|
+
<%= form.text_field :action_name, class: 'form-value', value: params[:action_name] %>
|
11
|
+
</div>
|
12
|
+
<div class="form-field">
|
13
|
+
<%= form.label :receiver, 'Receiver', class: 'form-label' %>
|
14
|
+
<%= form.text_field :receiver, class: 'form-value', value: params[:receiver] %>
|
15
|
+
</div>
|
16
|
+
<%= form.submit 'Search', class: 'button' %>
|
17
|
+
<% end %>
|
18
|
+
</section>
|
19
|
+
<table class="messages" cellspacing="0">
|
20
|
+
<thead>
|
21
|
+
<tr>
|
22
|
+
<th>ID</th>
|
23
|
+
<th>Mailer</th>
|
24
|
+
<th>Action</th>
|
25
|
+
<th>Send to</th>
|
26
|
+
<th>Action params</th>
|
27
|
+
<th>Mailer params</th>
|
28
|
+
<th></th>
|
29
|
+
</tr>
|
30
|
+
</thead>
|
31
|
+
<tbody>
|
32
|
+
<% @messages.each do |message| %>
|
33
|
+
<tr>
|
34
|
+
<td><%= message.id %></td>
|
35
|
+
<td><%= message.mailer %></td>
|
36
|
+
<td><%= message.action %></td>
|
37
|
+
<td>
|
38
|
+
<% message.send_to.each do |receiver| %>
|
39
|
+
<p><%= receiver %></p>
|
40
|
+
<% end %>
|
41
|
+
</td>
|
42
|
+
<td><%= message.params['action_params'] %></td>
|
43
|
+
<td><%= message.params['mailer_params'] %></td>
|
44
|
+
<td class="actions">
|
45
|
+
<%= button_to 'Resend', ui_message_path(message.uuid), method: :patch, class: 'button' %>
|
46
|
+
<%= button_to 'Destroy', ui_message_path(message.uuid), method: :delete, class: 'button warning' %>
|
47
|
+
</td>
|
48
|
+
</tr>
|
49
|
+
<% end %>
|
50
|
+
</tbody>
|
51
|
+
</table>
|
52
|
+
</div>
|
data/config/routes.rb
CHANGED
data/lib/emailbutler/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: emailbutler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bogdanov Anton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-11-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -70,16 +70,16 @@ dependencies:
|
|
70
70
|
name: puma
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '6.0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '6.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rake
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,14 +100,14 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '1.
|
103
|
+
version: '1.39'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '1.
|
110
|
+
version: '1.39'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: rubocop-performance
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -150,7 +150,8 @@ dependencies:
|
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '2.0'
|
153
|
-
description:
|
153
|
+
description: Emailbutler allows you to track delivery status of emails sent by your
|
154
|
+
app.
|
154
155
|
email:
|
155
156
|
- kortirso@gmail.com
|
156
157
|
executables: []
|
@@ -167,17 +168,15 @@ files:
|
|
167
168
|
- app/assets/stylesheets/emailbutler/shared/header.scss
|
168
169
|
- app/assets/stylesheets/emailbutler/views/dashboard.scss
|
169
170
|
- app/controllers/emailbutler/application_controller.rb
|
170
|
-
- app/controllers/emailbutler/ui/dashboard_controller.rb
|
171
171
|
- app/controllers/emailbutler/ui/messages_controller.rb
|
172
172
|
- app/controllers/emailbutler/ui_controller.rb
|
173
173
|
- app/controllers/emailbutler/webhooks_controller.rb
|
174
|
-
- app/views/emailbutler/ui/
|
175
|
-
- app/views/emailbutler/ui/dashboard/show.html.erb
|
174
|
+
- app/views/emailbutler/ui/index.html.erb
|
176
175
|
- app/views/emailbutler/ui/shared/_footer.html.erb
|
177
176
|
- app/views/emailbutler/ui/shared/_header.html.erb
|
177
|
+
- app/views/emailbutler/ui/show.html.erb
|
178
178
|
- app/views/layouts/emailbutler/application.html.erb
|
179
179
|
- config/routes.rb
|
180
|
-
- db/migrate/20220916162720_create_emailbutler_tables.rb
|
181
180
|
- lib/emailbutler.rb
|
182
181
|
- lib/emailbutler/adapters/active_record.rb
|
183
182
|
- lib/emailbutler/configuration.rb
|
@@ -216,5 +215,5 @@ requirements: []
|
|
216
215
|
rubygems_version: 3.3.7
|
217
216
|
signing_key:
|
218
217
|
specification_version: 4
|
219
|
-
summary:
|
218
|
+
summary: Email tracker for Ruby on Rails applications.
|
220
219
|
test_files: []
|
@@ -1,15 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Emailbutler
|
4
|
-
module Ui
|
5
|
-
class DashboardController < Emailbutler::UiController
|
6
|
-
def index
|
7
|
-
@summary = Emailbutler.count_messages_by_status
|
8
|
-
end
|
9
|
-
|
10
|
-
def show
|
11
|
-
@messages = Emailbutler.find_messages_by(status: params[:id])
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
<div id="dashboard">
|
2
|
-
<table class="messages" cellspacing="0">
|
3
|
-
<thead>
|
4
|
-
<tr>
|
5
|
-
<th>ID</th>
|
6
|
-
<th>UUID</th>
|
7
|
-
<th>Mailer</th>
|
8
|
-
<th>Action</th>
|
9
|
-
<th>Send to</th>
|
10
|
-
<th>Params</th>
|
11
|
-
<th></th>
|
12
|
-
</tr>
|
13
|
-
</thead>
|
14
|
-
<tbody>
|
15
|
-
<% @messages.each do |message| %>
|
16
|
-
<tr>
|
17
|
-
<td><%= message.id %></td>
|
18
|
-
<td><%= message.uuid %></td>
|
19
|
-
<td><%= message.mailer %></td>
|
20
|
-
<td><%= message.action %></td>
|
21
|
-
<td>
|
22
|
-
<% message.send_to.each do |receiver| %>
|
23
|
-
<p><%= receiver %></p>
|
24
|
-
<% end %>
|
25
|
-
</td>
|
26
|
-
<td><%= message.params %></td>
|
27
|
-
<td class="actions">
|
28
|
-
<%= button_to 'Resend', ui_message_path(message.uuid), method: :patch, class: 'resend' %>
|
29
|
-
<%= button_to 'Destroy', ui_message_path(message.uuid), method: :delete, class: 'destroy' %>
|
30
|
-
</td>
|
31
|
-
</tr>
|
32
|
-
<% end %>
|
33
|
-
</tbody>
|
34
|
-
</table>
|
35
|
-
</div>
|
@@ -1,23 +0,0 @@
|
|
1
|
-
class CreateEmailbutlerTables < ActiveRecord::Migration[7.0]
|
2
|
-
def self.up
|
3
|
-
enable_extension 'pgcrypto' unless extensions.include?('pgcrypto')
|
4
|
-
enable_extension 'uuid-ossp' unless extensions.include?('uuid-ossp')
|
5
|
-
|
6
|
-
create_table :emailbutler_messages do |t|
|
7
|
-
t.uuid :uuid, null: false, default: ''
|
8
|
-
t.string :mailer, null: false
|
9
|
-
t.string :action, null: false
|
10
|
-
t.jsonb :params, null: false, default: {}
|
11
|
-
t.string :send_to, array: true
|
12
|
-
t.integer :status, null: false, default: 0
|
13
|
-
t.datetime :timestamp
|
14
|
-
t.integer :lock_version
|
15
|
-
t.timestamps
|
16
|
-
end
|
17
|
-
add_index :emailbutler_messages, :uuid, unique: true
|
18
|
-
end
|
19
|
-
|
20
|
-
def self.down
|
21
|
-
drop_table :emailbutler_messages
|
22
|
-
end
|
23
|
-
end
|