Patch #31324 » 0001-allows-setting-the-private-flag-via-mail-keyword.patch
app/models/mail_handler.rb | ||
---|---|---|
203 | 203 |
end |
204 | 204 |
issue.description = cleaned_up_text_body |
205 | 205 |
issue.start_date ||= User.current.today if Setting.default_issue_start_date_to_creation_date? |
206 |
issue.is_private = (handler_options[:issue][:is_private] == '1') |
|
206 |
if handler_options[:issue][:is_private] == '1' |
|
207 |
issue.is_private = true |
|
208 |
end |
|
207 | 209 | |
208 | 210 |
# add To and Cc as watchers before saving so the watchers can reply to Redmine |
209 | 211 |
add_watchers(issue) |
... | ... | |
415 | 417 |
'due_date' => get_keyword(:due_date, :format => '\d{4}-\d{2}-\d{2}'), |
416 | 418 |
'estimated_hours' => get_keyword(:estimated_hours), |
417 | 419 |
'done_ratio' => get_keyword(:done_ratio, :format => '(\d|10)?0'), |
420 |
'is_private' => get_keyword_bool(:is_private), |
|
418 | 421 |
'parent_issue_id' => get_keyword(:parent_issue) |
419 | 422 |
}.delete_if {|k, v| v.blank? } |
420 | 423 | |
421 | 424 |
attrs |
422 | 425 |
end |
423 | 426 | |
427 |
def get_keyword_bool(attr) |
|
428 |
true_values = ["1"] |
|
429 |
false_values = ["0"] |
|
430 |
locales = [Setting.default_language] |
|
431 |
if user |
|
432 |
locales << user.language |
|
433 |
end |
|
434 |
locales.select(&:present?).each do |locale| |
|
435 |
true_values << l("general_text_yes", :default => '', :locale => locale) |
|
436 |
true_values << l("general_text_Yes", :default => '', :locale => locale) |
|
437 |
false_values << l("general_text_no", :default => '', :locale => locale) |
|
438 |
false_values << l("general_text_No", :default => '', :locale => locale) |
|
439 |
end |
|
440 |
values = (true_values + false_values).select(&:present?) |
|
441 |
format = Regexp.union values |
|
442 |
if value = get_keyword(attr, :format => format) |
|
443 |
if true_values.include?(value) |
|
444 |
return true |
|
445 |
elsif false_values.include?(value) |
|
446 |
return false |
|
447 |
end |
|
448 |
end |
|
449 |
nil |
|
450 |
end |
|
451 | ||
424 | 452 |
# Returns a Hash of issue custom field values extracted from keywords in the email body |
425 | 453 |
def custom_field_values_from_keywords(customized) |
426 | 454 |
customized.custom_field_values.inject({}) do |h, v| |
test/fixtures/mail_handler/ticket_with_localized_private_flag.eml | ||
---|---|---|
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 |
Subject: New ticket on a given project |
|
9 |
Date: Sun, 22 Jun 2008 12:28:07 +0200 |
|
10 |
MIME-Version: 1.0 |
|
11 |
Content-Type: text/plain; |
|
12 |
format=flowed; |
|
13 |
charset="iso-8859-1"; |
|
14 |
reply-type=original |
|
15 |
Content-Transfer-Encoding: 7bit |
|
16 |
X-Priority: 3 |
|
17 |
X-MSMail-Priority: Normal |
|
18 |
X-Mailer: Microsoft Outlook Express 6.00.2900.2869 |
|
19 |
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 |
|
20 | ||
21 |
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet |
|
22 |
turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus |
|
23 |
blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti |
|
24 |
sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In |
|
25 |
in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras |
|
26 |
sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum |
|
27 |
id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus |
|
28 |
eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique |
|
29 |
sed, mauris. Pellentesque habitant morbi tristique senectus et netus et |
|
30 |
malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse |
|
31 |
platea dictumst. |
|
32 | ||
33 |
Nulla et nunc. Duis pede. Donec et ipsum. Nam ut dui tincidunt neque |
|
34 |
sollicitudin iaculis. Duis vitae dolor. Vestibulum eget massa. Sed lorem. |
|
35 |
Nullam volutpat cursus erat. Cras felis dolor, lacinia quis, rutrum et, |
|
36 |
dictum et, ligula. Sed erat nibh, gravida in, accumsan non, placerat sed, |
|
37 |
massa. Sed sodales, ante fermentum ultricies sollicitudin, massa leo |
|
38 |
pulvinar dui, a gravida orci mi eget odio. Nunc a lacus. |
|
39 | ||
40 |
Projet: onlinestore |
|
41 |
Priv?e: oui |
test/unit/mail_handler_test.rb | ||
---|---|---|
496 | 496 |
assert_equal 'ecookbook', issue.project.identifier |
497 | 497 |
end |
498 | 498 | |
499 |
def test_add_issue_with_private_keyword |
|
500 |
User.find_by_mail('jsmith@somenet.foo').update_attribute 'language', 'fr' |
|
501 |
# give the user permission to set issues private: |
|
502 |
MemberRole.create! member_id: 3, role_id: 1 |
|
503 |
issue = submit_email( |
|
504 |
'ticket_with_localized_private_flag.eml', |
|
505 |
:allow_override => 'is_private,tracker,category,priority' |
|
506 |
) |
|
507 |
assert issue.is_a?(Issue) |
|
508 |
refute issue.new_record? |
|
509 |
issue.reload |
|
510 |
assert_equal 'New ticket on a given project', issue.subject |
|
511 |
assert issue.is_private |
|
512 |
end |
|
513 | ||
499 | 514 |
def test_add_issue_with_localized_attributes |
500 | 515 |
User.find_by_mail('jsmith@somenet.foo').update_attribute 'language', 'fr' |
501 | 516 |
issue = submit_email( |
- « Previous
- 1
- 2
- Next »