newsly 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/app/controllers/newsly/newsletters_controller.rb +3 -0
- data/app/models/newsly/recipient.rb +4 -0
- data/app/views/newsly/newsletters/_sidebar.html.erb +6 -4
- data/app/workers/newsly/newsletter_batch_sender.rb +1 -1
- data/app/workers/newsly/newsletter_sender.rb +1 -1
- data/db/migrate/20111006122345_create_newsly_recipients.rb +9 -0
- data/lib/newsly/version.rb +1 -1
- data/public/javascripts/newsletters.js +10 -19
- data/public/stylesheets/application.css +8 -13
- metadata +21 -19
@@ -4,7 +4,10 @@
|
|
4
4
|
<li class="button">
|
5
5
|
<%= link_to "<em>❖</em>Send test".html_safe, send_test_newsletter_path(@newsletter), :id => "send_test"%>
|
6
6
|
</li>
|
7
|
-
<% if
|
7
|
+
<% if @queues_working %>
|
8
|
+
<div class="notice">Some workers are still working, delivering disabled for now! Please reload later!</div>
|
9
|
+
|
10
|
+
<% elsif !@newsletter.sent? and @newsletter.persisted?%>
|
8
11
|
<% if Newsly.recipient_groups.count > 0 %>
|
9
12
|
<li class="groups">
|
10
13
|
<form id="groupform" class="groupform">
|
@@ -12,7 +15,7 @@
|
|
12
15
|
<ul>
|
13
16
|
<% @max_batch_size = 0 %>
|
14
17
|
<% for group in Newsly.recipient_groups %>
|
15
|
-
<% @group_count = group[1].call.count %>
|
18
|
+
<% @group_count = group[1].call(@newsletter.id).count %>
|
16
19
|
<% @max_batch_size = @max_batch_size + @group_count %>
|
17
20
|
<li>
|
18
21
|
<input type="checkbox" name="<%=group[0].to_s%>" value="<%=group[0].to_s%>" id="group_<%=group[0].to_s%>" data-max="<%= @group_count %>"/>
|
@@ -23,8 +26,7 @@
|
|
23
26
|
</form>
|
24
27
|
</li>
|
25
28
|
<li class="button range deliverbutton">
|
26
|
-
<
|
27
|
-
<input type="range" min="0" value="0" max="<%= @max_batch_size %>" id="batch_size" />
|
29
|
+
<input type="text" data-max="<%= @max_batch_size %>" id="batch_size" />
|
28
30
|
<%= link_to "<em>✈</em>Deliver Batch!".html_safe, deliver_batch_newsletter_path(@newsletter), :id => "deliver_batch"%>
|
29
31
|
</li>
|
30
32
|
<li class="button deliverbutton">
|
@@ -2,7 +2,7 @@ module Newsly
|
|
2
2
|
class NewsletterBatchSender
|
3
3
|
@queue = :newsletter
|
4
4
|
def self.perform(newsletter_id, recipient_group, batch_size)
|
5
|
-
Newsly.get_newsletter_receipient_group(recipient_group.to_sym).call.limit(batch_size).each do |resource|
|
5
|
+
Newsly.get_newsletter_receipient_group(recipient_group.to_sym).call(newsletter_id).limit(batch_size).each do |resource|
|
6
6
|
Newsly::Mailer.async_deliver.build_newsletter(newsletter_id, resource.send(Newsly.resource_email_column), resource.to_liquid)
|
7
7
|
end
|
8
8
|
end
|
@@ -3,7 +3,7 @@ module Newsly
|
|
3
3
|
@queue = :newsletter
|
4
4
|
def self.perform(newsletter_id, recipient_groups)
|
5
5
|
for group in recipient_groups
|
6
|
-
Newsly.get_newsletter_receipient_group(group.to_sym).call.find_each(:batch_size => 1000) do |resource|
|
6
|
+
Newsly.get_newsletter_receipient_group(group.to_sym).call(newsletter_id).find_each(:batch_size => 1000) do |resource|
|
7
7
|
Newsly::Mailer.async_deliver.build_newsletter(newsletter_id, resource.send(Newsly.resource_email_column), resource.to_liquid)
|
8
8
|
end
|
9
9
|
end
|
data/lib/newsly/version.rb
CHANGED
@@ -19,9 +19,11 @@ jQuery(document).ready(function($) {
|
|
19
19
|
$('a#deliver_batch').click(function(e){
|
20
20
|
e.preventDefault();
|
21
21
|
top.Mercury.trigger('action', {action: 'save'});
|
22
|
+
|
22
23
|
var url = $(this).attr('href');
|
23
24
|
var recipient_groups = get_recipient_groups();
|
24
25
|
if($('#batch_size').val() <= 0){ alert('Batch size cant be 0!'); return false;}
|
26
|
+
if($('#batch_size').val() > parseInt($('#batch_size').attr('data-max'))){ alert('Batch size cant be over group count!'); return false;}
|
25
27
|
if(recipient_groups.length == 1){
|
26
28
|
var newsletter_id = $("#newsletter").attr('data-id');
|
27
29
|
var answer = prompt('Are you sure? Type "BATCH"');
|
@@ -33,7 +35,8 @@ jQuery(document).ready(function($) {
|
|
33
35
|
data: {'_method': 'PUT', 'answer': answer, 'recipient_group': recipient_groups[0], 'batch_size': batch_size},
|
34
36
|
success: function(data){
|
35
37
|
$("#flash").html(data).show().hide("fade", {}, 1000);
|
36
|
-
|
38
|
+
$(".deliverbutton").remove();
|
39
|
+
$('.groups').remove();
|
37
40
|
}
|
38
41
|
});
|
39
42
|
}
|
@@ -84,19 +87,17 @@ jQuery(document).ready(function($) {
|
|
84
87
|
});
|
85
88
|
|
86
89
|
$('#groupform input[type=checkbox]').change(function(){
|
87
|
-
|
90
|
+
group_length = get_recipient_groups().length;
|
91
|
+
if(group_length > 0){
|
88
92
|
$('.deliverbutton').show();
|
93
|
+
if(group_length > 1){
|
94
|
+
$('li.range').hide();
|
95
|
+
}
|
89
96
|
set_batch_size();
|
90
97
|
} else {
|
91
98
|
$('.deliverbutton').hide();
|
92
99
|
}
|
93
100
|
});
|
94
|
-
|
95
|
-
$('#batch_size').change(function(e){
|
96
|
-
$('#batch_size_preview').html($(this).val());
|
97
|
-
});
|
98
|
-
|
99
|
-
set_batch_size();
|
100
101
|
};
|
101
102
|
|
102
103
|
});
|
@@ -105,10 +106,7 @@ jQuery(document).ready(function($) {
|
|
105
106
|
var set_batch_size = function(){
|
106
107
|
max_batch_size = get_maximum_batch_size();
|
107
108
|
$('#batch_size').val(0);
|
108
|
-
$('#
|
109
|
-
$('#batch_size').attr('max', max_batch_size);
|
110
|
-
$('#batch_size').attr('min', 0);
|
111
|
-
$('#batch_size').val(0);
|
109
|
+
$('#batch_size').attr('data-max', max_batch_size);
|
112
110
|
}
|
113
111
|
|
114
112
|
var get_recipient_groups = function(){
|
@@ -131,11 +129,4 @@ var get_maximum_batch_size = function(){
|
|
131
129
|
});
|
132
130
|
console.log('MAXIMUM SIZE '+ max_size);
|
133
131
|
return max_size;
|
134
|
-
}
|
135
|
-
|
136
|
-
var calculate_group_count = function(groupname, batch_size){
|
137
|
-
new_max_size = parseInt($('#group_'+groupname).attr('data-max')) - batch_size;
|
138
|
-
$('#group_'+groupname).attr('data-max', new_max_size);
|
139
|
-
$('label[for=group_'+groupname+'] .count').html(new_max_size);
|
140
|
-
set_batch_size();
|
141
132
|
}
|
@@ -248,7 +248,7 @@ form{
|
|
248
248
|
.aloha-sidebar-handle, .aloha-sidebar-bar{
|
249
249
|
display: none;
|
250
250
|
}
|
251
|
-
#flash{
|
251
|
+
#flash, .flash{
|
252
252
|
float: left;
|
253
253
|
width: 100%;
|
254
254
|
background: #feb;
|
@@ -256,22 +256,17 @@ form{
|
|
256
256
|
padding: 10px 0;
|
257
257
|
display: none;
|
258
258
|
}
|
259
|
-
|
260
|
-
#
|
259
|
+
.notice{
|
260
|
+
background: #c00;
|
261
|
+
color: #fff;
|
262
|
+
font-size: 0.9em;
|
261
263
|
float: left;
|
262
|
-
|
263
|
-
|
264
|
-
border-radius: 5px;
|
265
|
-
font-size: 0.85em;
|
266
|
-
margin-bottom: 10px;
|
267
|
-
width: 20%;
|
268
|
-
text-align: center;
|
264
|
+
padding: 10px;
|
265
|
+
margin: 10px 0;
|
269
266
|
}
|
270
267
|
#batch_size{
|
271
|
-
float: right;
|
272
|
-
width: 70%;
|
273
268
|
padding: 0;
|
274
|
-
margin
|
269
|
+
margin: 5px 0;
|
275
270
|
}
|
276
271
|
li.deliverbutton{
|
277
272
|
display: none;
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: newsly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,22 +10,22 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2011-10-
|
13
|
+
date: 2011-10-06 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
17
|
-
requirement: &
|
17
|
+
requirement: &2165539980 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
|
-
- -
|
20
|
+
- - ! '>='
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: 3.1.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *2165539980
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: resque
|
28
|
-
requirement: &
|
28
|
+
requirement: &2165539440 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *2165539440
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: liquid
|
39
|
-
requirement: &
|
39
|
+
requirement: &2165538860 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: '0'
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *2165538860
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: jquery-rails
|
50
|
-
requirement: &
|
50
|
+
requirement: &2165538360 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *2165538360
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: resque-async_deliver
|
61
|
-
requirement: &
|
61
|
+
requirement: &2165537860 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: '0'
|
67
67
|
type: :runtime
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *2165537860
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: sqlite3
|
72
|
-
requirement: &
|
72
|
+
requirement: &2165537320 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ! '>='
|
@@ -77,10 +77,10 @@ dependencies:
|
|
77
77
|
version: '0'
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *2165537320
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: letter_opener
|
83
|
-
requirement: &
|
83
|
+
requirement: &2165536780 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
85
85
|
requirements:
|
86
86
|
- - ! '>='
|
@@ -88,10 +88,10 @@ dependencies:
|
|
88
88
|
version: '0'
|
89
89
|
type: :development
|
90
90
|
prerelease: false
|
91
|
-
version_requirements: *
|
91
|
+
version_requirements: *2165536780
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: unicorn
|
94
|
-
requirement: &
|
94
|
+
requirement: &2165536280 !ruby/object:Gem::Requirement
|
95
95
|
none: false
|
96
96
|
requirements:
|
97
97
|
- - ! '>='
|
@@ -99,7 +99,7 @@ dependencies:
|
|
99
99
|
version: '0'
|
100
100
|
type: :development
|
101
101
|
prerelease: false
|
102
|
-
version_requirements: *
|
102
|
+
version_requirements: *2165536280
|
103
103
|
description: Manage mailer templates via wysiwyg and liquid. Uses mercury editor for
|
104
104
|
now. And send out newsletters.
|
105
105
|
email:
|
@@ -115,6 +115,7 @@ files:
|
|
115
115
|
- app/helpers/newsly/application_helper.rb
|
116
116
|
- app/mailers/newsly/mailer.rb
|
117
117
|
- app/models/newsly/newsletter.rb
|
118
|
+
- app/models/newsly/recipient.rb
|
118
119
|
- app/models/newsly/template.rb
|
119
120
|
- app/views/layouts/newsly/application.html.erb
|
120
121
|
- app/views/layouts/newsly/mailer.html.erb
|
@@ -135,6 +136,7 @@ files:
|
|
135
136
|
- db/migrate/20110927120903_add_text_body_fields.rb
|
136
137
|
- db/migrate/20110929142039_remove_text_body_fields.rb
|
137
138
|
- db/migrate/20111004085523_add_fields_to_newsletter.rb
|
139
|
+
- db/migrate/20111006122345_create_newsly_recipients.rb
|
138
140
|
- lib/newsly/engine.rb
|
139
141
|
- lib/newsly/version.rb
|
140
142
|
- lib/newsly.rb
|