public
Description: Newsletter system based on Radiant CMS
Homepage: http://gravityblast.com/projects/radiant-newsletter-extension/
Clone URL: git://github.com/pilu/radiant-newsletter.git
Added ar_mailer; sent pages are saved in the NewsletterEmails table

git-svn-id: 
http://dev.gravityblast.com/svn/projects/radiant/extensions/newsletter@65 
f0b21ff1-402e-e14f-a5c2-e6dc25fb685e
pilu (author)
Mon Jan 07 07:08:52 -0800 2008
commit  72b308e0269031ab9339e9f664ad8e3b77b47ecf
tree    a512c19657e2f5e655d8c379aa1dcef3d895b2d1
parent  20d7feb63283613fb7978df8b96ece94cd2ae4e5
...
32
33
34
35
36
37
38
39
 
 
 
 
 
 
 
 
 
40
41
42
...
32
33
34
 
 
 
 
 
35
36
37
38
39
40
41
42
43
44
45
46
0
@@ -32,11 +32,15 @@ private
0
   def send_mail(newsletter, page)
0
     subject = "[#{newsletter.config["subject_prefix"]}] #{page.title}"
0
     html_body = page.render
0
- from = newsletter.config["from"]
0
- newsletter.recipients.each do |address|
0
- recipients = address
0
- email = NewsletterMailer.create_newsletter(subject, html_body, recipients, from)
0
- NewsletterMailer.deliver(email)
0
+ from = newsletter.config["from"]
0
+ newsletter.recipients.each do |address|
0
+ mail = NewsletterMailer.create_newsletter(subject, html_body, address, from)
0
+ NewsletterEmail.create({
0
+ :page_id => page.id,
0
+ :mail => mail.encoded,
0
+ :to => address,
0
+ :from => from
0
+ })
0
     end
0
   end
0
   
...
3
4
5
 
6
7
8
...
3
4
5
6
7
8
9
0
@@ -3,6 +3,7 @@
0
   <h2>Newsletter:</h2>
0
   <div class="form-area">
0
     <ul>
0
+ <li><strong>Queue</strong>: <%= NewsletterEmail.count(:conditions => ["page_id = ?", @page.id]) %></li>
0
       <li><strong>Active subscribers</strong>: <%= newsletter.active_subscribers.count %></li>
0
     </ul>
0
     <% form_tag({:controller => '/newsletter', :action => 'new', :page_id => @page.id}) do %>
...
19
20
21
22
 
23
...
19
20
21
 
22
23
0
@@ -19,4 +19,4 @@ class CreateNewsletterSubscribers < ActiveRecord::Migration
0
   def self.down
0
     drop_table :newsletter_subscribers
0
   end
0
-end
0
+end
0
\ No newline at end of file
...
32
33
34
 
 
 
 
 
 
 
 
 
35
...
32
33
34
35
36
37
38
39
40
41
42
43
44
0
@@ -32,3 +32,12 @@ first_email_for_newsletter:
0
   status_id: 100
0
   parent_id: 2
0
   published_at: <%= 1.day.ago.to_s :db %>
0
+second_email_for_newsletter:
0
+ id: 5
0
+ title: Second email for Newsletter
0
+ breadcrumb: second-email-for-newsletter
0
+ slug: second-email-for-newsletter
0
+ status_id: 100
0
+ parent_id: 2
0
+ published_at: <%= 1.day.ago.to_s :db %>
0
+
0
\ No newline at end of file
...
48
49
50
51
52
53
54
55
56
57
58
59
 
 
 
 
 
 
 
 
 
 
 
 
60
61
62
...
48
49
50
 
 
 
 
 
 
 
 
 
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
0
@@ -48,15 +48,18 @@ class NewsletterControllerTest < Test::Unit::TestCase
0
   end
0
   
0
   def test_create_should_send_emails_if_page_is_child_of_a_newsletter_page
0
- post :create, :page_id => pages(:first_email_for_newsletter).id
0
- assert_response :redirect, :controller => '/admin/page', :action => 'edit', :id => pages(:first_email_for_newsletter).id
0
- assert_equal 2, ActionMailer::Base.deliveries.size
0
- mail = ActionMailer::Base.deliveries[0]
0
- mail_2 = ActionMailer::Base.deliveries[1]
0
- assert_equal "[#{pages(:first_email_for_newsletter).parent.config["subject_prefix"]}] #{pages(:first_email_for_newsletter).title}", mail.header["subject"].body
0
- assert_equal "Tom <tom@example.com>", mail.header["to"].body
0
- assert_equal "Mike <mike@example.com>", mail_2.header["to"].body
0
- assert_equal "Hello from the first newsletter", mail.body
0
+ subscribers_count = pages(:newsletter).active_subscribers.count
0
+ assert_difference NewsletterEmail, :count, subscribers_count * 2 do
0
+ post :create, :page_id => pages(:first_email_for_newsletter).id
0
+ assert_redirected_to :controller => '/admin/page', :action => 'edit', :id => pages(:first_email_for_newsletter).id
0
+ assert_equal subscribers_count, NewsletterEmail.count(:conditions => ["page_id = ?", pages(:first_email_for_newsletter).id])
0
+ assert_equal pages(:first_email_for_newsletter), NewsletterEmail.find(:first).page
0
+
0
+ post :create, :page_id => pages(:second_email_for_newsletter).id
0
+ assert_redirected_to :controller => '/admin/page', :action => 'edit', :id => pages(:first_email_for_newsletter).id
0
+ assert_equal subscribers_count, NewsletterEmail.count(:conditions => ["page_id = ?", pages(:second_email_for_newsletter).id])
0
+ assert_equal pages(:second_email_for_newsletter), NewsletterEmail.find(:all).last.page
0
+ end
0
   end
0
   
0
 end

Comments

    No one has commented yet.