##// END OF EJS Templates
Adds To and Cc as watchers when submitting an issue by email (#2245)....
Jean-Philippe Lang -
r2075:84e70634fbd0
parent child
Show More
@@ -0,0 +1,40
1 Return-Path: <JSmith@somenet.foo>
2 Received: from osiris ([127.0.0.1])
3 by OSIRIS
4 with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200
5 Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris>
6 From: "John Smith" <JSmith@somenet.foo>
7 To: <redmine@somenet.foo>
8 Cc: <DLopper@somenet.foo>
9 Subject: New ticket on a given project
10 Date: Sun, 22 Jun 2008 12:28:07 +0200
11 MIME-Version: 1.0
12 Content-Type: text/plain;
13 format=flowed;
14 charset="iso-8859-1";
15 reply-type=original
16 Content-Transfer-Encoding: 7bit
17 X-Priority: 3
18 X-MSMail-Priority: Normal
19 X-Mailer: Microsoft Outlook Express 6.00.2900.2869
20 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869
21
22 Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet
23 turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus
24 blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti
25 sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In
26 in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras
27 sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum
28 id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus
29 eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique
30 sed, mauris. Pellentesque habitant morbi tristique senectus et netus et
31 malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse
32 platea dictumst.
33
34 Nulla et nunc. Duis pede. Donec et ipsum. Nam ut dui tincidunt neque
35 sollicitudin iaculis. Duis vitae dolor. Vestibulum eget massa. Sed lorem.
36 Nullam volutpat cursus erat. Cras felis dolor, lacinia quis, rutrum et,
37 dictum et, ligula. Sed erat nibh, gravida in, accumsan non, placerat sed,
38 massa. Sed sodales, ante fermentum ultricies sollicitudin, massa leo
39 pulvinar dui, a gravida orci mi eget odio. Nunc a lacus.
40
@@ -92,7 +92,11 class MailHandler < ActionMailer::Base
92 issue.save!
92 issue.save!
93 add_attachments(issue)
93 add_attachments(issue)
94 logger.info "MailHandler: issue ##{issue.id} created by #{user}" if logger && logger.info
94 logger.info "MailHandler: issue ##{issue.id} created by #{user}" if logger && logger.info
95 # send notification before adding watchers since they were cc'ed
95 Mailer.deliver_issue_add(issue) if Setting.notified_events.include?('issue_added')
96 Mailer.deliver_issue_add(issue) if Setting.notified_events.include?('issue_added')
97 # add To and Cc as watchers
98 add_watchers(issue)
99
96 issue
100 issue
97 end
101 end
98
102
@@ -139,6 +143,18 class MailHandler < ActionMailer::Base
139 end
143 end
140 end
144 end
141
145
146 # Adds To and Cc as watchers of the given object if the sender has the
147 # appropriate permission
148 def add_watchers(obj)
149 if user.allowed_to?("add_#{obj.class.name.underscore}_watchers".to_sym, obj.project)
150 addresses = [email.to, email.cc].flatten.compact.uniq.collect {|a| a.strip.downcase}
151 unless addresses.empty?
152 watchers = User.find_active(:all, :conditions => ['LOWER(mail) IN (?)', addresses])
153 watchers.each {|w| obj.add_watcher(w)}
154 end
155 end
156 end
157
142 def get_keyword(attr)
158 def get_keyword(attr)
143 if @@handler_options[:allow_override].include?(attr.to_s) && email.plain_text_body =~ /^#{attr}:[ \t]*(.+)$/i
159 if @@handler_options[:allow_override].include?(attr.to_s) && email.plain_text_body =~ /^#{attr}:[ \t]*(.+)$/i
144 $1.strip
160 $1.strip
@@ -23,6 +23,8 class MailHandlerTest < Test::Unit::TestCase
23 :roles,
23 :roles,
24 :members,
24 :members,
25 :issues,
25 :issues,
26 :issue_statuses,
27 :workflows,
26 :trackers,
28 :trackers,
27 :projects_trackers,
29 :projects_trackers,
28 :enumerations,
30 :enumerations,
@@ -100,6 +102,15 class MailHandlerTest < Test::Unit::TestCase
100 assert_equal 10790, issue.attachments.first.filesize
102 assert_equal 10790, issue.attachments.first.filesize
101 end
103 end
102
104
105 def test_add_issue_with_cc
106 issue = submit_email('ticket_with_cc.eml', :issue => {:project => 'ecookbook'})
107 assert issue.is_a?(Issue)
108 assert !issue.new_record?
109 issue.reload
110 assert issue.watched_by?(User.find_by_mail('dlopper@somenet.foo'))
111 assert_equal 1, issue.watchers.size
112 end
113
103 def test_add_issue_note
114 def test_add_issue_note
104 journal = submit_email('ticket_reply.eml')
115 journal = submit_email('ticket_reply.eml')
105 assert journal.is_a?(Journal)
116 assert journal.is_a?(Journal)
General Comments 0
You need to be logged in to leave comments. Login now