- befriender = User.find_by_id(friend.user_id)
- befriendee = User.find_by_id(friend.friend_user_id)
-
- recipients befriendee.email if befriendee.email_valid
- from "webmaster@openstreetmap.org"
- subject "[OpenStreetMap] #{befriender.display_name} added you as a friend"
- headers "Auto-Submitted" => "auto-generated"
- body :user => befriender.display_name,
- :userurl => url_for(:host => SERVER_URL,
- :controller => "user", :action => "view",
- :display_name => befriender.display_name)
+ with_recipient_locale friend.befriendee do
+ @friend = friend
+ @viewurl = url_for(:host => SERVER_URL,
+ :controller => "user", :action => "view",
+ :display_name => @friend.befriender.display_name)
+ @friendurl = url_for(:host => SERVER_URL,
+ :controller => "user", :action => "make_friend",
+ :display_name => @friend.befriender.display_name)
+
+ mail :to => friend.befriendee.email,
+ :subject => I18n.t("notifier.friend_notification.subject", :user => friend.befriender.display_name)
+ end
+ end
+
+ def note_comment_notification(comment, recipient)
+ with_recipient_locale recipient do
+ @noteurl = browse_note_url(comment.note, :host => SERVER_URL)
+ @place = Nominatim.describe_location(comment.note.lat, comment.note.lon, 14, I18n.locale)
+ @comment = comment.body
+ @owner = recipient == comment.note.author
+ @event = comment.event
+
+ if comment.author
+ @commenter = comment.author.display_name
+ else
+ @commenter = I18n.t("notifier.note_comment_notification.anonymous")
+ end
+
+ if @owner
+ subject = I18n.t("notifier.note_comment_notification.#{@event}.subject_own", :commenter => @commenter)
+ else
+ subject = I18n.t("notifier.note_comment_notification.#{@event}.subject_other", :commenter => @commenter)
+ end
+
+ mail :to => recipient.email, :subject => subject
+ end
+ end
+
+ def changeset_comment_notification(comment, recipient)
+ with_recipient_locale recipient do
+ @changeset_url = changeset_url(comment.changeset, :host => SERVER_URL)
+ @comment = comment.body
+ @owner = recipient == comment.changeset.user
+ @commenter = comment.author.display_name
+ @changeset_comment = comment.changeset.tags["comment"].presence
+ @time = comment.created_at
+ @changeset_author = comment.changeset.user.display_name
+
+ if @owner
+ subject = I18n.t("notifier.changeset_comment_notification.commented.subject_own", :commenter => @commenter)
+ else
+ subject = I18n.t("notifier.changeset_comment_notification.commented.subject_other", :commenter => @commenter)
+ end
+
+ mail :to => recipient.email, :subject => subject
+ end
+ end
+
+ private
+
+ def with_recipient_locale(recipient)
+ old_locale = I18n.locale
+
+ begin
+ I18n.locale = recipient.preferred_language_from(I18n.available_locales)
+
+ yield
+ ensure
+ I18n.locale = old_locale
+ end
+ end
+
+ def from_address(name, type, id, digest)
+ if Object.const_defined?(:MESSAGES_DOMAIN) && domain = MESSAGES_DOMAIN
+ "#{name} <#{type}-#{id}-#{digest[0, 6]}@#{domain}>"
+ else
+ EMAIL_FROM
+ end