foodsoft/app/models/mailer.rb

85 lines
3.4 KiB
Ruby
Raw Normal View History

2009-01-06 11:49:19 +01:00
# ActionMailer class that handles all emails for the FoodSoft.
class Mailer < ActionMailer::Base
2009-02-18 01:06:35 +01:00
layout 'email' # Use views/layouts/email.html.erb
2009-01-06 11:49:19 +01:00
# Sends an email copy of the given internal foodsoft message.
2009-03-06 20:08:11 +01:00
def message(message, recipient)
headers 'Sender' => Foodsoft.config[:email_sender], 'Errors-To' => Foodsoft.config[:email_sender]
subject "[#{Foodsoft.config[:name]}] " + message.subject
2009-03-06 20:08:11 +01:00
recipients recipient.email
2009-02-18 01:06:35 +01:00
from "#{message.sender.nick} <#{message.sender.email}>"
body :body => message.body,
:sender => message.sender.nick,
2009-03-06 20:08:11 +01:00
:recipients => recipient.nick,
:reply => "#{Foodsoft.config[:base_url]}/messages/reply/#{message.id}",
:link => "#{Foodsoft.config[:base_url]}/messages/show/#{message.id}",
:profile => "#{Foodsoft.config[:base_url]}/home/profile"
2009-01-06 11:49:19 +01:00
end
2009-02-18 01:06:35 +01:00
# Sends an email with instructions on how to reset the password.
# Assumes user.setResetPasswordToken has been successfully called already.
def reset_password(user)
prepare_system_message(user)
subject "[#{Foodsoft.config[:name]}] Neues Passwort für/ New password for #{user.nick}"
2009-02-18 01:06:35 +01:00
body :user => user,
:link => "#{Foodsoft.config[:base_url]}/login/password/#{user.id}?token=#{user.reset_password_token}"
2009-02-18 01:06:35 +01:00
end
2009-01-06 11:49:19 +01:00
# Sends an invite email.
def invite(invite)
2009-02-18 01:06:35 +01:00
prepare_system_message(invite)
subject "Einladung in die Foodcoop #{Foodsoft.config[:name]} - Invitation to the Foodcoop"
2009-01-06 11:49:19 +01:00
body :invite => invite,
:link => "#{Foodsoft.config[:base_url]}/login/invite/#{invite.token}"
2009-01-06 11:49:19 +01:00
end
# Notify user of upcoming task.
2009-02-18 01:06:35 +01:00
def upcoming_tasks(user, task)
prepare_system_message(user)
subject "[#{Foodsoft.config[:name]}] Aufgaben werden fällig!"
2009-02-18 01:06:35 +01:00
body :user => user,
:task => task
end
# Sends order result for specific Ordergroup
def order_result(user, group_order)
prepare_system_message(user)
subject "[#{Foodsoft.config[:name]}] Bestellung beendet: #{group_order.order.name}"
2009-02-18 01:06:35 +01:00
body :order => group_order.order,
:group_order => group_order
end
# Notify user if account balance is less than zero
def negative_balance(user,transaction)
prepare_system_message(user)
subject "[#{Foodsoft.config[:name]}] Gruppenkonto im Minus"
2009-02-18 01:06:35 +01:00
body :group => user.ordergroup,
:transaction => transaction
end
def feedback(user, message)
subject "[Foodsoft] Feeback von #{user.email}"
recipients Foodsoft.config[:notification]["error_recipients"]
from "#{user.nick} <#{user.email}>"
headers 'Sender' => Foodsoft.config[:notification]["sender_address"],
'Errors-To' => Foodsoft.config[:notification]["sender_address"]
body :user => user, :message => message
end
def not_enough_users_assigned(task,user)
prepare_system_message(user)
subject "[#{Foodsoft.config[:name]}] #{task.name} braucht noch Leute!"
body :task => task, :user => user,
:task_url => File.join(Foodsoft.config[:base_url], "tasks/workgroup", task.workgroup_id.to_s)
end
2009-02-18 01:06:35 +01:00
protected
def prepare_system_message(recipient)
recipients recipient.email
from "FoodSoft <#{Foodsoft.config[:email_sender]}>"
end
2009-01-06 11:49:19 +01:00
end