diff options
author | Go MAEDA <maeda@farend.jp> | 2019-05-09 22:30:29 +0000 |
---|---|---|
committer | Go MAEDA <maeda@farend.jp> | 2019-05-09 22:30:29 +0000 |
commit | 143c359d90864615cf4b36ae8d1c78b6c595dca8 (patch) | |
tree | aa59469f080ec8c0344abdf3d72df48bf1bc6a37 /app/models/mail_handler.rb | |
parent | ae24985e0303c134fb1377f1cd1427dd4da7ba9c (diff) | |
download | redmine-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-x | app/models/mail_handler.rb | 30 |
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| |