newsly 0.3.0 → 0.3.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.
@@ -12,6 +12,9 @@ module Newsly
12
12
  end
13
13
 
14
14
  def show
15
+ if Resque.size(:newsletter) > 0 || Resque.size(:mail) > 0
16
+ @queues_working = true
17
+ end
15
18
  end
16
19
 
17
20
  def new
@@ -0,0 +1,4 @@
1
+ module Newsly
2
+ class Recipient < ActiveRecord::Base
3
+ end
4
+ end
@@ -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 !@newsletter.sent? and @newsletter.persisted?%>
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
- <span id="batch_size_preview"></span>
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
@@ -0,0 +1,9 @@
1
+ class CreateNewslyRecipients < ActiveRecord::Migration
2
+ def change
3
+ create_table :newsly_recipients do |t|
4
+ t.newsletter_id :integer
5
+ t.email :string
6
+ t.timestamps
7
+ end
8
+ end
9
+ end
@@ -1,3 +1,3 @@
1
1
  module Newsly
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
@@ -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
- calculate_group_count(recipient_groups[0], batch_size);
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
- if(get_recipient_groups().length > 0){
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
- $('#batch_size_preview').html($('#batch_size').val());
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
- #batch_size_preview{
259
+ .notice{
260
+ background: #c00;
261
+ color: #fff;
262
+ font-size: 0.9em;
261
263
  float: left;
262
- background: #feb;
263
- padding: 1px 5px;
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-top: 5px;
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.0
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-04 00:00:00.000000000Z
13
+ date: 2011-10-06 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
17
- requirement: &2153344680 !ruby/object:Gem::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: *2153344680
25
+ version_requirements: *2165539980
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: resque
28
- requirement: &2153344200 !ruby/object:Gem::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: *2153344200
36
+ version_requirements: *2165539440
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: liquid
39
- requirement: &2153343700 !ruby/object:Gem::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: *2153343700
47
+ version_requirements: *2165538860
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: jquery-rails
50
- requirement: &2153343260 !ruby/object:Gem::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: *2153343260
58
+ version_requirements: *2165538360
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: resque-async_deliver
61
- requirement: &2153342800 !ruby/object:Gem::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: *2153342800
69
+ version_requirements: *2165537860
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: sqlite3
72
- requirement: &2153342360 !ruby/object:Gem::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: *2153342360
80
+ version_requirements: *2165537320
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: letter_opener
83
- requirement: &2153341920 !ruby/object:Gem::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: *2153341920
91
+ version_requirements: *2165536780
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: unicorn
94
- requirement: &2153341460 !ruby/object:Gem::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: *2153341460
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