summaryrefslogtreecommitdiffstats
path: root/app/models/mail_handler.rb
diff options
context:
space:
mode:
authorGo MAEDA <maeda@farend.jp>2019-05-09 22:30:29 +0000
committerGo MAEDA <maeda@farend.jp>2019-05-09 22:30:29 +0000
commit143c359d90864615cf4b36ae8d1c78b6c595dca8 (patch)
treeaa59469f080ec8c0344abdf3d72df48bf1bc6a37 /app/models/mail_handler.rb
parentae24985e0303c134fb1377f1cd1427dd4da7ba9c (diff)
downloadredmine-143c359d90864615cf4b36ae8d1c78b6c595dca8.tar.gz
redmine-143c359d90864615cf4b36ae8d1c78b6c595dca8.zip
Allows setting the private flag via mail keyword (#31324).
Patch by Jens Krämer. git-svn-id: http://svn.redmine.org/redmine/trunk@18150 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models/mail_handler.rb')
-rwxr-xr-xapp/models/mail_handler.rb30
1 files changed, 29 insertions, 1 deletions
diff --git a/app/models/mail_handler.rb b/app/models/mail_handler.rb
index 0d004ecb5..8b5d7133f 100755
--- a/app/models/mail_handler.rb
+++ b/app/models/mail_handler.rb
@@ -203,7 +203,9 @@ class MailHandler < ActionMailer::Base
end
issue.description = cleaned_up_text_body
issue.start_date ||= User.current.today if Setting.default_issue_start_date_to_creation_date?
- issue.is_private = (handler_options[:issue][:is_private] == '1')
+ if handler_options[:issue][:is_private] == '1'
+ issue.is_private = true
+ end
# add To and Cc as watchers before saving so the watchers can reply to Redmine
add_watchers(issue)
@@ -415,12 +417,38 @@ class MailHandler < ActionMailer::Base
'due_date' => get_keyword(:due_date, :format => '\d{4}-\d{2}-\d{2}'),
'estimated_hours' => get_keyword(:estimated_hours),
'done_ratio' => get_keyword(:done_ratio, :format => '(\d|10)?0'),
+ 'is_private' => get_keyword_bool(:is_private),
'parent_issue_id' => get_keyword(:parent_issue)
}.delete_if {|k, v| v.blank? }
attrs
end
+ def get_keyword_bool(attr)
+ true_values = ["1"]
+ false_values = ["0"]
+ locales = [Setting.default_language]
+ if user
+ locales << user.language
+ end
+ locales.select(&:present?).each do |locale|
+ true_values << l("general_text_yes", :default => '', :locale => locale)
+ true_values << l("general_text_Yes", :default => '', :locale => locale)
+ false_values << l("general_text_no", :default => '', :locale => locale)
+ false_values << l("general_text_No", :default => '', :locale => locale)
+ end
+ values = (true_values + false_values).select(&:present?)
+ format = Regexp.union values
+ if value = get_keyword(attr, :format => format)
+ if true_values.include?(value)
+ return true
+ elsif false_values.include?(value)
+ return false
+ end
+ end
+ nil
+ end
+
# Returns a Hash of issue custom field values extracted from keywords in the email body
def custom_field_values_from_keywords(customized)
customized.custom_field_values.inject({}) do |h, v|