Commit 296a549df0c02837907f36de114fac4ee6da320d

Authored by Larissa Reis
Committed by Joenio Costa
1 parent ee4ad041

improvements in core required for the newsletter plugin

* models should use acts_as_having_image transparently
* force margin zero in HTML mailing
* using require_dependency instead of require to avoid error:
  "superclass mismatch for class MailingJob"
* now plugins can schedule jobs via whenever rubygem
* improve 'sample-data' scripts to create some blog posts

signed-off-by: Joenio Costa <joenio@colivre.coop.br>
app/mailers/mailing.rb
1   -require 'mailing_job'
  1 +require_dependency 'mailing_job'
2 2  
3 3 class Mailing < ActiveRecord::Base
4 4  
... ... @@ -40,10 +40,8 @@ class Mailing &lt; ActiveRecord::Base
40 40 begin
41 41 Mailing::Sender.notification(self, recipient.email).deliver
42 42 self.mailing_sents.create(:person => recipient)
43   - rescue Exception
44   - # FIXME should not discard errors silently. An idea is to collect all
45   - # errors and generate a task (notification) for the +source+
46   - # (environment/organization) listing these errors.
  43 + rescue Exception => ex
  44 + Rails.logger.error("#{ex.class.to_s} - #{ex.to_s} at #{__FILE__}:#{__LINE__}")
47 45 end
48 46 end
49 47 end
... ...
app/models/textile_article.rb
... ... @@ -12,7 +12,7 @@ class TextileArticle &lt; TextArticle
12 12 convert_to_html(body)
13 13 end
14 14  
15   - def lead
  15 + def lead(length = nil)
16 16 if abstract.blank?
17 17 super
18 18 else
... ...
app/views/mailing/sender/notification.html.erb
... ... @@ -3,7 +3,7 @@
3 3 <head>
4 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
5 5 </head>
6   - <body>
  6 + <body style="margin: 0">
7 7 <%= word_wrap(@message) %>
8 8 <p>
9 9 --<br/>
... ...
config/schedule.rb
... ... @@ -28,3 +28,15 @@ end
28 28 every 30.days do
29 29 runner "ProfileSuggestion.generate_all_profile_suggestions"
30 30 end
  31 +
  32 +# Loads "schedule.rb" files from plugins
  33 +#
  34 +# Allows Noosfero's plugins schedule jobs using `whenever` Ruby gem the same
  35 +# way we do here, just create the file "config/schedule.rb" into the plugin
  36 +# root directory and write jobs using the same syntax used here (see example in
  37 +# the `newsletter` plugin)
  38 +
  39 +Dir.glob("config/plugins/*/config/schedule.rb").each do |filename|
  40 + filecontent = IO.read(filename)
  41 + instance_eval(Whenever::NumericSeconds.process_string(filecontent), filename)
  42 +end
... ...
lib/acts_as_having_image.rb
... ... @@ -5,6 +5,7 @@ module ActsAsHavingImage
5 5 belongs_to :image, dependent: :destroy
6 6 scope :with_image, :conditions => [ "#{table_name}.image_id IS NOT NULL" ]
7 7 scope :without_image, :conditions => [ "#{table_name}.image_id IS NULL" ]
  8 + attr_accessible :image_builder
8 9 self.send(:include, ActsAsHavingImage)
9 10 end
10 11 end
... ... @@ -19,4 +20,4 @@ module ActsAsHavingImage
19 20  
20 21 end
21 22  
22   -ActiveRecord::Base.extend(ActsAsHavingImage::ClassMethods)
23 23 \ No newline at end of file
  24 +ActiveRecord::Base.extend(ActsAsHavingImage::ClassMethods)
... ...
script/sample-articles
... ... @@ -65,3 +65,22 @@ for subject in EVENT_SUBJECTS
65 65 end
66 66 end
67 67 done
  68 +
  69 +print "Creating some posts: "
  70 +for subject in SUBJECTS
  71 + rand(20).times do |i|
  72 + profile = profiles.sample
  73 + name = "%s #{subject}" % profile.name
  74 + article = TinyMceArticle.new(
  75 + :name => name,
  76 + :body => name,
  77 + :tag_list => [TAGS.sample, TAGS.sample],
  78 + :profile => profile,
  79 + :parent_id => profile.blog.id
  80 + )
  81 + save article do
  82 + article.add_category categories.sample
  83 + end
  84 + end
  85 +end
  86 +done
... ...