newsly 0.1.7 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -27,7 +27,7 @@ module Newsly
27
27
  end
28
28
 
29
29
  def send_test
30
- if Newsly::Mailer.send_newsletter(@newsletter.id, params[:to], Newsly.test_data).deliver
30
+ if Newsly::Mailer.build_newsletter(@newsletter.id, params[:to], Newsly.test_data).deliver
31
31
  render :text => "Okidoki"
32
32
  end
33
33
  end
@@ -27,7 +27,7 @@ module Newsly
27
27
 
28
28
  def send_test
29
29
  @template = Newsly::Template.find(params[:id])
30
- if Newsly::Mailer.send_mail(@template.id, params[:to], Newsly.test_data).deliver
30
+ if Newsly::Mailer.build_mail(@template.id, params[:to], Newsly.test_data).deliver
31
31
  render :text => "Okidoki"
32
32
  end
33
33
 
@@ -2,44 +2,26 @@
2
2
  module Newsly
3
3
  class Mailer < ActionMailer::Base
4
4
 
5
- default :from => "Newsly <noreply@newsly.com>"
6
-
7
- def mail(headers = {}, &block)
8
- caller = caller[0][/`.*'/][1..-2] if caller
5
+ default :from => Newsly.default_from, :return_path => Newsly.return_path
9
6
 
10
- template_data = headers.delete(:template_data)
11
- template_id = headers.delete(:template_id)
12
- template_name = headers.delete(:template_name)
13
-
14
- tmpl = if template_id
15
- Newsly::Template.find(template_id)
16
- elsif template_name
17
- Newsly::Template.where(:name => template_name, :draft => false).first
18
- else
19
- Newsly::Template.find_by_caller(self.class.to_s, caller).where(:draft => false).first
20
- end
21
-
22
- if tmpl
23
- headers[:subject] ||= tmpl.subject
24
- mail_body = tmpl.render(template_data).html_safe
25
- super(headers) do |format|
26
- #format.text { Premailer.new(mail_body, :with_html_string => true).to_plain_text }
27
- format.html { render :inline => mail_body, :layout => true }
28
- end
29
- else
30
- super(headers, &block)
31
- end
32
- end
33
-
34
- def send_newsletter(newsletter_id, to, template_data = {})
7
+ def build_newsletter(newsletter_id, to, template_data = {}, extra_headers = {})
35
8
  @newsletter = Newsly::Newsletter.find(newsletter_id)
36
9
  @template = Newsly::Template.where(:name => "newsletter", :draft => false).first
37
10
  @template_data = template_data.merge({"newsletter" => {"body" => @newsletter.render(template_data)}})
38
- mail(:to => to, :subject => "#{@newsletter.title}", :template_id => @template.id, :template_data => @template_data)
11
+ @extra_headers = {:subject => "#{@newsletter.title}"}.merge(extra_headers)
12
+ self.build_mail(@template.id, to, @template_data, @extra_headers)
39
13
  end
40
14
 
41
- def send_mail(template_id, to, template_data = {})
42
- mail(:to => to, :template_id => template_id, :template_data => template_data)
15
+ def build_mail(template_id, to, template_data = {}, extra_headers = {})
16
+ headers = {}
17
+ tmpl = Newsly::Template.find(template_id)
18
+ headers[:to] = to
19
+ headers[:subject] = tmpl.subject
20
+ body = tmpl.render(template_data)
21
+ headers = headers.merge(extra_headers)
22
+ mail(headers) do |format|
23
+ format.html { render :inline => body, :layout => "newsly/mailer" }
24
+ end
43
25
  end
44
26
 
45
27
  def self.render_body(template_name, template_type, template_data = {})
@@ -3,8 +3,6 @@ module Newsly
3
3
  class Newsletter < ActiveRecord::Base
4
4
  liquid_methods :title, :body
5
5
 
6
-
7
- #these 2 methods are duplicated in template.rb.. DRY up!
8
6
  def render(options={})
9
7
  Liquid::Template.parse(self.body).render options
10
8
  end
@@ -3,11 +3,6 @@ module Newsly
3
3
  class Template < ActiveRecord::Base
4
4
  liquid_methods :body
5
5
 
6
- scope :find_by_caller, lambda { |mailer, method|
7
- where(:mailer => mailer, :method => method)
8
- }
9
-
10
- #these 2 methods are duplicated in newsletter.rb.. DRY up!
11
6
  def render(options={})
12
7
  Liquid::Template.parse(self.body).render options
13
8
  end
@@ -1,5 +1,8 @@
1
1
  <html>
2
+ <head>
3
+ </head>
2
4
  <body>
5
+ <%# ADD THIS FILE TO YOUR APP, IN app/views/layouts/newsly/mailer.html.erb %>
3
6
  <%= yield %>
4
7
  </body>
5
8
  </html>
@@ -4,7 +4,7 @@ module Newsly
4
4
  def self.perform(newsletter_id, recipient_groups)
5
5
  for group in recipient_groups
6
6
  Newsly.get_newsletter_receipient_group(group.to_sym).call.find_each(:batch_size => 1000) do |resource|
7
- Newsly::Mailer.send_newsletter(newsletter_id, resource.send(Newsly.resource_email_column), resource.to_liquid).deliver
7
+ Newsly::Mailer.build_newsletter(newsletter_id, resource.send(Newsly.resource_email_column), resource.to_liquid).deliver
8
8
  end
9
9
  end
10
10
 
data/lib/newsly.rb CHANGED
@@ -1,16 +1,17 @@
1
1
  require "newsly/engine"
2
2
  require "resque"
3
- #require "resque_mailer"
4
3
  require "liquid"
5
4
  require "sanitize"
6
- require "premailer"
5
+ #require "premailer"
7
6
 
8
7
  module Newsly
9
8
 
10
- mattr_accessor :test_data, :resource_email_column, :recipient_groups
9
+ mattr_accessor :test_data, :resource_email_column, :recipient_groups, :default_from, :return_path
11
10
  @@test_data = {}
12
11
  @@recipient_groups = {}
13
12
  @@resource_email_column = :email
13
+ @@default_from = "changethis@newsly.com"
14
+ @@return_path = "changethis@newsly.com"
14
15
 
15
16
  def self.setup
16
17
  yield self
@@ -1,3 +1,3 @@
1
1
  module Newsly
2
- VERSION = "0.1.7"
2
+ VERSION = "0.2.0"
3
3
  end
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.1.7
4
+ version: 0.2.0
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-06 00:00:00.000000000Z
13
+ date: 2011-10-03 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
17
- requirement: &2157766520 !ruby/object:Gem::Requirement
17
+ requirement: &2160503920 !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: *2157766520
25
+ version_requirements: *2160503920
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: resque
28
- requirement: &2157766040 !ruby/object:Gem::Requirement
28
+ requirement: &2160503380 !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: *2157766040
36
+ version_requirements: *2160503380
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: liquid
39
- requirement: &2157765540 !ruby/object:Gem::Requirement
39
+ requirement: &2160502740 !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: *2157765540
47
+ version_requirements: *2160502740
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: sanitize
50
- requirement: &2157765000 !ruby/object:Gem::Requirement
50
+ requirement: &2160502300 !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: *2157765000
58
+ version_requirements: *2160502300
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: jquery-rails
61
- requirement: &2157764480 !ruby/object:Gem::Requirement
61
+ requirement: &2160501520 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,21 +66,21 @@ dependencies:
66
66
  version: '0'
67
67
  type: :runtime
68
68
  prerelease: false
69
- version_requirements: *2157764480
69
+ version_requirements: *2160501520
70
70
  - !ruby/object:Gem::Dependency
71
- name: premailer
72
- requirement: &2157763940 !ruby/object:Gem::Requirement
71
+ name: sqlite3
72
+ requirement: &2160501080 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ! '>='
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
- type: :runtime
78
+ type: :development
79
79
  prerelease: false
80
- version_requirements: *2157763940
80
+ version_requirements: *2160501080
81
81
  - !ruby/object:Gem::Dependency
82
- name: sqlite3
83
- requirement: &2157763460 !ruby/object:Gem::Requirement
82
+ name: letter_opener
83
+ requirement: &2160499380 !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: *2157763460
91
+ version_requirements: *2160499380
92
92
  - !ruby/object:Gem::Dependency
93
- name: letter_opener
94
- requirement: &2157763040 !ruby/object:Gem::Requirement
93
+ name: unicorn
94
+ requirement: &2160498960 !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: *2157763040
102
+ version_requirements: *2160498960
103
103
  description: Manage mailer templates via wysiwyg and liquid. Uses mercury editor for
104
104
  now. And send out newsletters.
105
105
  email: