plugins/newsletter/lib/newsletter_plugin/moderate_newsletter.rb
class NewsletterPlugin::ModerateNewsletter < Task
settings_items :newsletter_id, :post_ids
validates_presence_of :newsletter_id
alias :environment :target
alias :environment= :target=
def perform
newsletter = NewsletterPlugin::Newsletter.find(newsletter_id)
self.post_ids ||= []
mailing = NewsletterPlugin::NewsletterMailing.create!(
source: newsletter,
subject: newsletter.subject,
body: newsletter.body(mailing: true, post_ids: self.post_ids.reject { |id| id.to_i.zero? }),
person: newsletter.person,
locale: newsletter.environment.default_locale,
)
end
def title
_("Moderate newsletter")
end
def subject
nil
end
def linked_subject
nil
end
def information
{ message: _("You have to moderate a newsletter.") }
end
def accept_details
true
end
def icon
{ type: :defined_image, src: "/images/control-panel/email.png", name: "Newsletter" }
end
def target_notification_message
_("A newsletter was generated and you need to review it before it is sent to users.")
end
def target_notification_description
_("You need to moderate a newsletter.")
end
end