diff --git a/app/models/message_template/issue_assigned.rb b/app/models/message_template/issue_assigned.rb index 23632c3ef..10ad5eb2d 100644 --- a/app/models/message_template/issue_assigned.rb +++ b/app/models/message_template/issue_assigned.rb @@ -36,26 +36,28 @@ class MessageTemplate::IssueAssigned < MessageTemplate def self.get_email_message_content(receiver, operator, issue) if receiver.user_template_message_setting.present? return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::IssueAssigned"] + project = issue&.project + owner = project&.owner + title = email_title + title.gsub!('{nickname1}', operator&.real_name) + title.gsub!('{nickname2}', owner&.real_name) + title.gsub!('{repository}', project&.name) + content = email + content.gsub!('{receiver}', receiver&.real_name) + content.gsub!('{nickname1}', operator&.real_name) + content.gsub!('{login1}', operator&.login) + content.gsub!('{nickname2}', owner&.real_name) + content.gsub!('{login2}', owner&.login) + content.gsub!('{identifier}', project&.identifier) + content.gsub!('{repository}', project&.name) + content.gsub!('{baseurl}', base_url) + content.gsub!('{title}', issue&.subject) + content.gsub!('{id}', issue&.id.to_s) + + return receiver&.mail, title, content + else + return '', '', '' end - project = issue&.project - owner = project&.owner - title = email_title - title.gsub!('{nickname1}', operator&.real_name) - title.gsub!('{nickname2}', owner&.real_name) - title.gsub!('{repository}', project&.name) - content = email - content.gsub!('{receiver}', receiver&.real_name) - content.gsub!('{nickname1}', operator&.real_name) - content.gsub!('{login1}', operator&.login) - content.gsub!('{nickname2}', owner&.real_name) - content.gsub!('{login2}', owner&.login) - content.gsub!('{identifier}', project&.identifier) - content.gsub!('{repository}', project&.name) - content.gsub!('{baseurl}', base_url) - content.gsub!('{title}', issue&.subject) - content.gsub!('{id}', issue&.id.to_s) - - return receiver&.mail, title, content rescue => e Rails.logger.info("MessageTemplate::IssueAssigned.get_email_message_content [ERROR] #{e}") return '', '', '' diff --git a/app/models/message_template/issue_changed.rb b/app/models/message_template/issue_changed.rb index 90a72d1a0..10007cfb0 100644 --- a/app/models/message_template/issue_changed.rb +++ b/app/models/message_template/issue_changed.rb @@ -191,177 +191,180 @@ class MessageTemplate::IssueChanged < MessageTemplate return '', '', '' if change_params.blank? if receiver.user_template_message_setting.present? return '', '', '' unless receiver.user_template_message_setting.email_body["CreateOrAssign::IssueChanged"] - end - project = issue&.project - owner = project&.owner - title = email_title - title.gsub!('{title}', issue&.subject) - content = email - content.gsub!('{receiver}', receiver&.real_name) - content.gsub!('{baseurl}', base_url) - content.gsub!('{login1}', operator&.login) - content.gsub!('{nickname1}', operator&.real_name) - content.gsub!('{login2}', owner&.login) - content.gsub!('{nickname2}', owner&.real_name) - content.gsub!('{identifier}', project&.identifier) - content.gsub!('{repository}', project&.name) - content.gsub!('{title}', issue&.subject) - content.gsub!('{id}', issue&.id.to_s) - change_count = change_params.keys.size - # 易修负责人修改 - if change_params[:assigned_to_id].present? - assigner1 = User.find_by_id(change_params[:assigned_to_id][0]) - assigner2 = User.find_by_id(change_params[:assigned_to_id][1]) - if change_count > 1 - content.sub!('{ifassigner}', '
') + project = issue&.project + owner = project&.owner + title = email_title + title.gsub!('{title}', issue&.subject) + content = email + content.gsub!('{receiver}', receiver&.real_name) + content.gsub!('{baseurl}', base_url) + content.gsub!('{login1}', operator&.login) + content.gsub!('{nickname1}', operator&.real_name) + content.gsub!('{login2}', owner&.login) + content.gsub!('{nickname2}', owner&.real_name) + content.gsub!('{identifier}', project&.identifier) + content.gsub!('{repository}', project&.name) + content.gsub!('{title}', issue&.subject) + content.gsub!('{id}', issue&.id.to_s) + change_count = change_params.keys.size + # 易修负责人修改 + if change_params[:assigned_to_id].present? + assigner1 = User.find_by_id(change_params[:assigned_to_id][0]) + assigner2 = User.find_by_id(change_params[:assigned_to_id][1]) + if change_count > 1 + content.sub!('{ifassigner}', '
') + else + content.sub!('{ifassigner}', '') + end + content.sub!('{endassigner}', '') + content.gsub!('{assigner1}', assigner1.present? ? assigner1&.real_name : '未指派成员') + content.gsub!('{assigner2}', assigner2.present? ? assigner2&.real_name : '未指派成员') else - content.sub!('{ifassigner}', '') + content.gsub!(/({ifassigner})(.*)({endassigner})/, '') end - content.sub!('{endassigner}', '') - content.gsub!('{assigner1}', assigner1.present? ? assigner1&.real_name : '未指派成员') - content.gsub!('{assigner2}', assigner2.present? ? assigner2&.real_name : '未指派成员') - else - content.gsub!(/({ifassigner})(.*)({endassigner})/, '') - end - # 易修状态修改 - if change_params[:status_id].present? - status1 = IssueStatus.find_by_id(change_params[:status_id][0]) - status2 = IssueStatus.find_by_id(change_params[:status_id][1]) - if change_count > 1 - content.sub!('{ifstatus}', '
') + # 易修状态修改 + if change_params[:status_id].present? + status1 = IssueStatus.find_by_id(change_params[:status_id][0]) + status2 = IssueStatus.find_by_id(change_params[:status_id][1]) + if change_count > 1 + content.sub!('{ifstatus}', '
') + else + content.sub!('{ifstatus}', '') + end + content.sub!('{endstatus}', '') + content.gsub!('{status1}', status1&.name) + content.gsub!('{status2}', status2&.name) else - content.sub!('{ifstatus}', '') + content.gsub!(/({ifstatus})(.*)({endstatus})/, '') end - content.sub!('{endstatus}', '') - content.gsub!('{status1}', status1&.name) - content.gsub!('{status2}', status2&.name) - else - content.gsub!(/({ifstatus})(.*)({endstatus})/, '') - end - # 易修类型修改 - if change_params[:tracker_id].present? - tracker1 = Tracker.find_by_id(change_params[:tracker_id][0]) - tracker2 = Tracker.find_by_id(change_params[:tracker_id][1]) - if change_count > 1 - content.sub!('{iftracker}', '
') + # 易修类型修改 + if change_params[:tracker_id].present? + tracker1 = Tracker.find_by_id(change_params[:tracker_id][0]) + tracker2 = Tracker.find_by_id(change_params[:tracker_id][1]) + if change_count > 1 + content.sub!('{iftracker}', '
') + else + content.sub!('{iftracker}', '') + end + content.sub!('{endtracker}', '') + content.gsub!('{tracker1}', tracker1&.name) + content.gsub!('{tracker2}', tracker2&.name) else - content.sub!('{iftracker}', '') + content.gsub!(/({iftracker})(.*)({endtracker})/, '') end - content.sub!('{endtracker}', '') - content.gsub!('{tracker1}', tracker1&.name) - content.gsub!('{tracker2}', tracker2&.name) - else - content.gsub!(/({iftracker})(.*)({endtracker})/, '') - end - # 易修里程碑修改 - if change_params[:fixed_version_id].present? - fix_version1 = Version.find_by_id(change_params[:fixed_version_id][0]) - fix_version2 = Version.find_by_id(change_params[:fixed_version_id][1]) - if change_count > 1 - content.sub!('{ifmilestone}', '
') + # 易修里程碑修改 + if change_params[:fixed_version_id].present? + fix_version1 = Version.find_by_id(change_params[:fixed_version_id][0]) + fix_version2 = Version.find_by_id(change_params[:fixed_version_id][1]) + if change_count > 1 + content.sub!('{ifmilestone}', '
') + else + content.sub!('{ifmilestone}', '') + end + content.sub!('{endmilestone}', '') + content.gsub!('{milestone1}', fix_version1.present? ? fix_version1&.name : '未选择里程碑') + content.gsub!('{milestone2}', fix_version2.present? ? fix_version2&.name : '未选择里程碑') else - content.sub!('{ifmilestone}', '') + content.gsub!(/({ifmilestone})(.*)({endmilestone})/, '') end - content.sub!('{endmilestone}', '') - content.gsub!('{milestone1}', fix_version1.present? ? fix_version1&.name : '未选择里程碑') - content.gsub!('{milestone2}', fix_version2.present? ? fix_version2&.name : '未选择里程碑') - else - content.gsub!(/({ifmilestone})(.*)({endmilestone})/, '') - end - # 易修标记修改 - if change_params[:issue_tags_value].present? - issue_tags1 = IssueTag.where(id: change_params[:issue_tags_value][0]).distinct - issue_tags2 = IssueTag.where(id: change_params[:issue_tags_value][1]).distinct - tag1 = issue_tags1.pluck(:name).join(",").blank? ? '未选择标记' : issue_tags1.pluck(:name).join(",") - tag2 = issue_tags2.pluck(:name).join(",").blank? ? '未选择标记' : issue_tags2.pluck(:name).join(",") - if change_count > 1 - content.sub!('{iftag}', '
') + # 易修标记修改 + if change_params[:issue_tags_value].present? + issue_tags1 = IssueTag.where(id: change_params[:issue_tags_value][0]).distinct + issue_tags2 = IssueTag.where(id: change_params[:issue_tags_value][1]).distinct + tag1 = issue_tags1.pluck(:name).join(",").blank? ? '未选择标记' : issue_tags1.pluck(:name).join(",") + tag2 = issue_tags2.pluck(:name).join(",").blank? ? '未选择标记' : issue_tags2.pluck(:name).join(",") + if change_count > 1 + content.sub!('{iftag}', '
') + else + content.sub!('{iftag}', '') + end + content.sub!('{endtag}', '') + content.gsub!('{tag1}', tag1) + content.gsub!('{tag2}', tag2) else - content.sub!('{iftag}', '') + content.gsub!(/({iftag})(.*)({endtag})()/, '') end - content.sub!('{endtag}', '') - content.gsub!('{tag1}', tag1) - content.gsub!('{tag2}', tag2) - else - content.gsub!(/({iftag})(.*)({endtag})()/, '') - end - # 易修优先级修改 - if change_params[:priority_id].present? - priority1 = IssuePriority.find_by_id(change_params[:priority_id][0]) - priority2 = IssuePriority.find_by_id(change_params[:priority_id][1]) - if change_count > 1 - content.sub!('{ifpriority}', '
') + # 易修优先级修改 + if change_params[:priority_id].present? + priority1 = IssuePriority.find_by_id(change_params[:priority_id][0]) + priority2 = IssuePriority.find_by_id(change_params[:priority_id][1]) + if change_count > 1 + content.sub!('{ifpriority}', '
') + else + content.sub!('{ifpriority}', '') + end + content.sub!('{endpriority}', '') + content.gsub!('{priority1}', priority1&.name) + content.gsub!('{priority2}', priority2&.name) else - content.sub!('{ifpriority}', '') + content.gsub!(/({ifpriority})(.*)({endpriority})/, '') end - content.sub!('{endpriority}', '') - content.gsub!('{priority1}', priority1&.name) - content.gsub!('{priority2}', priority2&.name) - else - content.gsub!(/({ifpriority})(.*)({endpriority})/, '') - end - # 易修完成度修改 - if change_params[:done_ratio].present? - doneratio1 = change_params[:done_ratio][0] - doneratio2 = change_params[:done_ratio][1] - if change_count > 1 - content.sub!('{ifdoneratio}', '
') + # 易修完成度修改 + if change_params[:done_ratio].present? + doneratio1 = change_params[:done_ratio][0] + doneratio2 = change_params[:done_ratio][1] + if change_count > 1 + content.sub!('{ifdoneratio}', '
') + else + content.sub!('{ifdoneratio}', '') + end + content.sub!('{enddoneratio}', '') + content.gsub!('{doneratio1}', "#{doneratio1}%") + content.gsub!('{doneratio2}', "#{doneratio2}%") else - content.sub!('{ifdoneratio}', '') + content.gsub!(/({ifdoneratio})(.*)({enddoneratio})/, '') end - content.sub!('{enddoneratio}', '') - content.gsub!('{doneratio1}', "#{doneratio1}%") - content.gsub!('{doneratio2}', "#{doneratio2}%") - else - content.gsub!(/({ifdoneratio})(.*)({enddoneratio})/, '') - end - # 易修指定分支修改 - if change_params[:branch_name].present? - branch1 = change_params[:branch_name][0].blank? ? '分支未指定' : change_params[:branch_name][0] - branch2 = change_params[:branch_name][1].blank? ? '分支未指定' : change_params[:branch_name][1] - if change_count > 1 - content.sub!('{ifbranch}', '
') + # 易修指定分支修改 + if change_params[:branch_name].present? + branch1 = change_params[:branch_name][0].blank? ? '分支未指定' : change_params[:branch_name][0] + branch2 = change_params[:branch_name][1].blank? ? '分支未指定' : change_params[:branch_name][1] + if change_count > 1 + content.sub!('{ifbranch}', '
') + else + content.sub!('{ifbranch}', '') + end + content.sub!('{endbranch}', '') + content.gsub!('{branch1}', branch1) + content.gsub!('{branch2}', branch2) else - content.sub!('{ifbranch}', '') + content.gsub!(/({ifbranch})(.*)({endbranch})/, '') end - content.sub!('{endbranch}', '') - content.gsub!('{branch1}', branch1) - content.gsub!('{branch2}', branch2) - else - content.gsub!(/({ifbranch})(.*)({endbranch})/, '') - end - # 易修开始日期修改 - if change_params[:start_date].present? - startdate1 = change_params[:start_date][0].blank? ? "未选择开始日期" : change_params[:start_date][0] - startdate2 = change_params[:start_date][1].blank? ? "未选择开始日期" : change_params[:start_date][1] - if change_count > 1 - content.sub!('{ifstartdate}', '
') + # 易修开始日期修改 + if change_params[:start_date].present? + startdate1 = change_params[:start_date][0].blank? ? "未选择开始日期" : change_params[:start_date][0] + startdate2 = change_params[:start_date][1].blank? ? "未选择开始日期" : change_params[:start_date][1] + if change_count > 1 + content.sub!('{ifstartdate}', '
') + else + content.sub!('{ifstartdate}', '') + end + content.sub!('{endstartdate}', '') + content.gsub!('{startdate1}', startdate1 ) + content.gsub!('{startdate2}', startdate2) else - content.sub!('{ifstartdate}', '') + content.gsub!(/({ifstartdate})(.*)({endstartdate})/, '') end - content.sub!('{endstartdate}', '') - content.gsub!('{startdate1}', startdate1 ) - content.gsub!('{startdate2}', startdate2) - else - content.gsub!(/({ifstartdate})(.*)({endstartdate})/, '') - end - # 易修结束日期修改 - if change_params[:due_date].present? - duedate1 = change_params[:due_date][0].blank? ? '未选择结束日期' : change_params[:due_date][0] - duedate2 = change_params[:due_date][1].blank? ? '未选择结束日期' : change_params[:due_date][1] - if change_count > 1 - content.sub!('{ifduedate}', '
') + # 易修结束日期修改 + if change_params[:due_date].present? + duedate1 = change_params[:due_date][0].blank? ? '未选择结束日期' : change_params[:due_date][0] + duedate2 = change_params[:due_date][1].blank? ? '未选择结束日期' : change_params[:due_date][1] + if change_count > 1 + content.sub!('{ifduedate}', '
') + else + content.sub!('{ifduedate}', '') + end + content.sub!('{endduedate}', '') + content.gsub!('{duedate1}', duedate1) + content.gsub!('{duedate2}', duedate2) else - content.sub!('{ifduedate}', '') + content.gsub!(/({ifduedate})(.*)({endduedate})/, '') end - content.sub!('{endduedate}', '') - content.gsub!('{duedate1}', duedate1) - content.gsub!('{duedate2}', duedate2) - else - content.gsub!(/({ifduedate})(.*)({endduedate})/, '') - end - return receiver&.mail, title, content + return receiver&.mail, title, content + else + return '', '', '' + end + rescue => e Rails.logger.info("MessageTemplate::IssueChanged.get_email_message_content [ERROR] #{e}") return '', '', '' diff --git a/app/models/message_template/issue_deleted.rb b/app/models/message_template/issue_deleted.rb index c08ee0439..d51782cf1 100644 --- a/app/models/message_template/issue_deleted.rb +++ b/app/models/message_template/issue_deleted.rb @@ -33,17 +33,19 @@ class MessageTemplate::IssueDeleted < MessageTemplate def self.get_email_message_content(receiver, operator, issue_title) if receiver.user_template_message_setting.present? return '', '', '' unless receiver.user_template_message_setting.email_body["CreateOrAssign::IssueChanged"] - end - title = email_title - title.gsub!('{title}', issue_title) - content = email - content.gsub!('{receiver}', receiver&.real_name) - content.gsub!('{nickname}', operator&.real_name) - content.gsub!('{login}', operator&.login) - content.gsub!('{baseurl}', base_url) - content.gsub!('{title}', issue_title) + title = email_title + title.gsub!('{title}', issue_title) + content = email + content.gsub!('{receiver}', receiver&.real_name) + content.gsub!('{nickname}', operator&.real_name) + content.gsub!('{login}', operator&.login) + content.gsub!('{baseurl}', base_url) + content.gsub!('{title}', issue_title) - return receiver&.mail, title, content + return receiver&.mail, title, content + else + return '', '', '' + end rescue => e Rails.logger.info("MessageTemplate::IssueDeleted.get_email_message_content [ERROR] #{e}") return '', '', '' diff --git a/app/models/message_template/organization_joined.rb b/app/models/message_template/organization_joined.rb index 22cfb48d0..30f91ac98 100644 --- a/app/models/message_template/organization_joined.rb +++ b/app/models/message_template/organization_joined.rb @@ -34,16 +34,19 @@ class MessageTemplate::OrganizationJoined < MessageTemplate def self.get_email_message_content(receiver, organization) if receiver.user_template_message_setting.present? return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::Organization"] + title = email_title + title.gsub!('{organization}', organization&.real_name) + content = email + content.gsub!('{receiver}', receiver&.real_name) + content.gsub!('{baseurl}', base_url) + content.gsub!('{login}', organization&.login) + content.gsub!('{organization}', organization&.real_name) + + return receiver&.mail, title, content + else + return '', '', '' end - title = email_title - title.gsub!('{organization}', organization&.real_name) - content = email - content.gsub!('{receiver}', receiver&.real_name) - content.gsub!('{baseurl}', base_url) - content.gsub!('{login}', organization&.login) - content.gsub!('{organization}', organization&.real_name) - - return receiver&.mail, title, content + rescue => e Rails.logger.info("MessageTemplate::OrganizationJoined.get_email_message_content [ERROR] #{e}") return '', '', '' diff --git a/app/models/message_template/organization_left.rb b/app/models/message_template/organization_left.rb index eee752f05..50a771385 100644 --- a/app/models/message_template/organization_left.rb +++ b/app/models/message_template/organization_left.rb @@ -34,16 +34,19 @@ class MessageTemplate::OrganizationLeft < MessageTemplate def self.get_email_message_content(receiver, organization) if receiver.user_template_message_setting.present? return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::Organization"] + title = email_title + title.gsub!('{organization}', organization&.real_name) + content = email + content.gsub!('{receiver}', receiver&.real_name) + content.gsub!('{baseurl}', base_url) + content.gsub!('{login}', organization&.login) + content.gsub!('{organization}', organization&.real_name) + + return receiver&.mail, title, content + else + return '', '', '' end - title = email_title - title.gsub!('{organization}', organization&.real_name) - content = email - content.gsub!('{receiver}', receiver&.real_name) - content.gsub!('{baseurl}', base_url) - content.gsub!('{login}', organization&.login) - content.gsub!('{organization}', organization&.real_name) - return receiver&.mail, title, content rescue => e Rails.logger.info("MessageTemplate::OrganizationLeft.get_email_message_content [ERROR] #{e}") return '', '', '' diff --git a/app/models/message_template/organization_role.rb b/app/models/message_template/organization_role.rb index b6024f614..207712956 100644 --- a/app/models/message_template/organization_role.rb +++ b/app/models/message_template/organization_role.rb @@ -34,18 +34,21 @@ class MessageTemplate::OrganizationRole < MessageTemplate def self.get_email_message_content(receiver, organization, role) if receiver.user_template_message_setting.present? return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::Permission"] + title = email_title + title.gsub!('{organization}', organization&.real_name) + title.gsub!('{role}', role) + content = email + content.gsub!('{receiver}', receiver&.real_name) + content.gsub!('{baseurl}', base_url) + content.gsub!('{login}', organization&.login) + content.gsub!('{organization}', organization&.real_name) + content.gsub!('{role}', role) + + return receiver&.mail, title, content + else + return '', '', '' end - title = email_title - title.gsub!('{organization}', organization&.real_name) - title.gsub!('{role}', role) - content = email - content.gsub!('{receiver}', receiver&.real_name) - content.gsub!('{baseurl}', base_url) - content.gsub!('{login}', organization&.login) - content.gsub!('{organization}', organization&.real_name) - content.gsub!('{role}', role) - return receiver&.mail, title, content rescue => e Rails.logger.info("MessageTemplate::OrganizationRole.get_email_message_content [ERROR] #{e}") return '', '', '' diff --git a/app/models/message_template/project_issue.rb b/app/models/message_template/project_issue.rb index 9106bcc8f..8d7d99aa7 100644 --- a/app/models/message_template/project_issue.rb +++ b/app/models/message_template/project_issue.rb @@ -38,27 +38,30 @@ class MessageTemplate::ProjectIssue < MessageTemplate def self.get_email_message_content(receiver, is_manager, operator, issue) if receiver.user_template_message_setting.present? && is_manager return '', '', '' unless receiver.user_template_message_setting.email_body["ManageProject::Issue"] + project = issue&.project + owner = project&.owner + title = email_title + title.gsub!('{nickname1}', operator&.real_name) + title.gsub!('{nickname2}', owner&.real_name) + title.gsub!('{repository}', project&.name) + + content = email + content.gsub!('{receiver}', receiver&.real_name) + content.gsub!('{baseurl}', base_url) + content.gsub!('{login1}', operator&.login) + content.gsub!('{nickname1}', operator&.real_name) + content.gsub!('{nickname2}', owner&.real_name) + content.gsub!('{repository}', project&.name) + content.gsub!('{login2}', owner&.login) + content.gsub!('{identifier}', project&.identifier) + content.gsub!('{id}', issue&.id.to_s) + content.gsub!('{title}', issue&.subject) + + return receiver&.mail, title, content + else + return '', '', '' end - project = issue&.project - owner = project&.owner - title = email_title - title.gsub!('{nickname1}', operator&.real_name) - title.gsub!('{nickname2}', owner&.real_name) - title.gsub!('{repository}', project&.name) - - content = email - content.gsub!('{receiver}', receiver&.real_name) - content.gsub!('{baseurl}', base_url) - content.gsub!('{login1}', operator&.login) - content.gsub!('{nickname1}', operator&.real_name) - content.gsub!('{nickname2}', owner&.real_name) - content.gsub!('{repository}', project&.name) - content.gsub!('{login2}', owner&.login) - content.gsub!('{identifier}', project&.identifier) - content.gsub!('{id}', issue&.id.to_s) - content.gsub!('{title}', issue&.subject) - - return receiver&.mail, title, content + rescue => e Rails.logger.info("MessageTemplate::ProjectIssue.get_email_message_content [ERROR] #{e}") return '', '', '' diff --git a/app/models/message_template/project_joined.rb b/app/models/message_template/project_joined.rb index b46dc51a7..c2d23fbd2 100644 --- a/app/models/message_template/project_joined.rb +++ b/app/models/message_template/project_joined.rb @@ -34,19 +34,22 @@ class MessageTemplate::ProjectJoined < MessageTemplate def self.get_email_message_content(receiver, project) if receiver.user_template_message_setting.present? return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::Project"] - end - title = email_title - title.gsub!('{repository}', project&.name) - - content = email - content.gsub!('{receiver}', receiver&.real_name) - content.gsub!('{baseurl}', base_url) - content.gsub!('{login}', project&.owner&.login) - content.gsub!('{identifier}', project&.identifier) - content.gsub!('{nickname}', project&.owner&.real_name) - content.gsub!('{repository}', project&.name) + title = email_title + title.gsub!('{repository}', project&.name) + + content = email + content.gsub!('{receiver}', receiver&.real_name) + content.gsub!('{baseurl}', base_url) + content.gsub!('{login}', project&.owner&.login) + content.gsub!('{identifier}', project&.identifier) + content.gsub!('{nickname}', project&.owner&.real_name) + content.gsub!('{repository}', project&.name) - return receiver&.mail, title, content + return receiver&.mail, title, content + else + return '', '', '' + end + rescue => e Rails.logger.info("MessageTemplate::ProjectJoined.get_email_message_content [ERROR] #{e}") return '', '', '' diff --git a/app/models/message_template/project_left.rb b/app/models/message_template/project_left.rb index 3dfa7bb61..6f5bafa02 100644 --- a/app/models/message_template/project_left.rb +++ b/app/models/message_template/project_left.rb @@ -33,19 +33,22 @@ class MessageTemplate::ProjectLeft < MessageTemplate def self.get_email_message_content(receiver, project) if receiver.user_template_message_setting.present? return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::Project"] - end - title = email_title - title.gsub!('{repository}', project&.name) - - content = email - content.gsub!('{receiver}', receiver&.real_name) - content.gsub!('{baseurl}', base_url) - content.gsub!('{login}', project&.owner&.login) - content.gsub!('{identifier}', project&.identifier) - content.gsub!('{nickname}', project&.owner&.real_name) - content.gsub!('{repository}', project&.name) + title = email_title + title.gsub!('{repository}', project&.name) + + content = email + content.gsub!('{receiver}', receiver&.real_name) + content.gsub!('{baseurl}', base_url) + content.gsub!('{login}', project&.owner&.login) + content.gsub!('{identifier}', project&.identifier) + content.gsub!('{nickname}', project&.owner&.real_name) + content.gsub!('{repository}', project&.name) - return receiver&.mail, title, content + return receiver&.mail, title, content + else + return '', '', '' + end + rescue => e Rails.logger.info("MessageTemplate::ProjectLeft.get_email_message_content [ERROR] #{e}") return '', '', '' diff --git a/app/models/message_template/project_member_joined.rb b/app/models/message_template/project_member_joined.rb index 7a781750c..e9b6b5d51 100644 --- a/app/models/message_template/project_member_joined.rb +++ b/app/models/message_template/project_member_joined.rb @@ -34,23 +34,25 @@ class MessageTemplate::ProjectMemberJoined < MessageTemplate def self.get_email_message_content(receiver, user, project) if receiver.user_template_message_setting.present? return '', '', '' unless receiver.user_template_message_setting.email_body["ManageProject::Member"] - end - title = email_title - title.gsub!('{nickname1}', user&.real_name) - title.gsub!('{nickname2}', project&.owner&.real_name) - title.gsub!('{repository}', project&.name) - - content = email - content.gsub!('{receiver}', receiver&.real_name) - content.gsub!('{baseurl}', base_url) - content.gsub!('{login1}', user&.login) - content.gsub!('{login2}', project&.owner&.login) - content.gsub!('{identifier}', project&.identifier) - content.gsub!('{nickname1}', user&.real_name) - content.gsub!('{nickname2}', project&.owner&.real_name) - content.gsub!('{repository}', project&.name) + title = email_title + title.gsub!('{nickname1}', user&.real_name) + title.gsub!('{nickname2}', project&.owner&.real_name) + title.gsub!('{repository}', project&.name) + + content = email + content.gsub!('{receiver}', receiver&.real_name) + content.gsub!('{baseurl}', base_url) + content.gsub!('{login1}', user&.login) + content.gsub!('{login2}', project&.owner&.login) + content.gsub!('{identifier}', project&.identifier) + content.gsub!('{nickname1}', user&.real_name) + content.gsub!('{nickname2}', project&.owner&.real_name) + content.gsub!('{repository}', project&.name) - return receiver&.mail, title, content + return receiver&.mail, title, content + else + return '', '', '' + end rescue => e Rails.logger.info("MessageTemplate::ProjectMemberJoined.get_email_message_content [ERROR] #{e}") return '', '', '' diff --git a/app/models/message_template/project_member_left.rb b/app/models/message_template/project_member_left.rb index f41791233..23d4ef5f3 100644 --- a/app/models/message_template/project_member_left.rb +++ b/app/models/message_template/project_member_left.rb @@ -34,23 +34,26 @@ class MessageTemplate::ProjectMemberLeft < MessageTemplate def self.get_email_message_content(receiver, user, project) if receiver.user_template_message_setting.present? return '', '', '' unless receiver.user_template_message_setting.email_body["ManageProject::Member"] + title = email_title + title.gsub!('{nickname1}', user&.real_name) + title.gsub!('{nickname2}', project&.owner&.real_name) + title.gsub!('{repository}', project&.name) + + content = email + content.gsub!('{receiver}', receiver&.real_name) + content.gsub!('{baseurl}', base_url) + content.gsub!('{login1}', user&.login) + content.gsub!('{login2}', project&.owner&.login) + content.gsub!('{identifier}', project&.identifier) + content.gsub!('{nickname1}', user&.real_name) + content.gsub!('{nickname2}', project&.owner&.real_name) + content.gsub!('{repository}', project&.name) + + return receiver&.mail, title, content + else + return '', '', '' end - title = email_title - title.gsub!('{nickname1}', user&.real_name) - title.gsub!('{nickname2}', project&.owner&.real_name) - title.gsub!('{repository}', project&.name) - - content = email - content.gsub!('{receiver}', receiver&.real_name) - content.gsub!('{baseurl}', base_url) - content.gsub!('{login1}', user&.login) - content.gsub!('{login2}', project&.owner&.login) - content.gsub!('{identifier}', project&.identifier) - content.gsub!('{nickname1}', user&.real_name) - content.gsub!('{nickname2}', project&.owner&.real_name) - content.gsub!('{repository}', project&.name) - return receiver&.mail, title, content rescue => e Rails.logger.info("MessageTemplate::ProjectMemberLeft.get_email_message_content [ERROR] #{e}") return '', '', '' diff --git a/app/models/message_template/project_pull_request.rb b/app/models/message_template/project_pull_request.rb index ac04651ef..40c700b29 100644 --- a/app/models/message_template/project_pull_request.rb +++ b/app/models/message_template/project_pull_request.rb @@ -38,27 +38,29 @@ class MessageTemplate::ProjectPullRequest < MessageTemplate def self.get_email_message_content(receiver, is_manager, operator, pull_request) if receiver.user_template_message_setting.present? && is_manager return '', '', '' unless receiver.user_template_message_setting.email_body["ManageProject::PullRequest"] + project = pull_request&.project + owner = project&.owner + title = email_title + title.gsub!('{nickname1}', operator&.real_name) + title.gsub!('{nickname2}', owner&.real_name) + title.gsub!('{repository}', project&.name) + + content = email + content.gsub!('{receiver}', receiver&.real_name) + content.gsub!('{baseurl}', base_url) + content.gsub!('{login1}', operator&.login) + content.gsub!('{nickname1}', operator&.real_name) + content.gsub!('{nickname2}', owner&.real_name) + content.gsub!('{repository}', project&.name) + content.gsub!('{login2}', owner&.login) + content.gsub!('{identifier}', project&.identifier) + content.gsub!('{id}', pull_request&.id.to_s) + content.gsub!('{title}', pull_request&.title) + + return receiver&.mail, title, content + else + return '', '', '' end - project = pull_request&.project - owner = project&.owner - title = email_title - title.gsub!('{nickname1}', operator&.real_name) - title.gsub!('{nickname2}', owner&.real_name) - title.gsub!('{repository}', project&.name) - - content = email - content.gsub!('{receiver}', receiver&.real_name) - content.gsub!('{baseurl}', base_url) - content.gsub!('{login1}', operator&.login) - content.gsub!('{nickname1}', operator&.real_name) - content.gsub!('{nickname2}', owner&.real_name) - content.gsub!('{repository}', project&.name) - content.gsub!('{login2}', owner&.login) - content.gsub!('{identifier}', project&.identifier) - content.gsub!('{id}', pull_request&.id.to_s) - content.gsub!('{title}', pull_request&.title) - - return receiver&.mail, title, content rescue => e Rails.logger.info("MessageTemplate::ProjectPullRequest.get_email_message_content [ERROR] #{e}") return '', '', '' diff --git a/app/models/message_template/project_role.rb b/app/models/message_template/project_role.rb index e306f5c02..f7f4940df 100644 --- a/app/models/message_template/project_role.rb +++ b/app/models/message_template/project_role.rb @@ -34,21 +34,24 @@ class MessageTemplate::ProjectRole < MessageTemplate def self.get_email_message_content(receiver, project, role) if receiver.user_template_message_setting.present? return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::Permission"] + title = email_title + title.gsub!('{repository}', project&.name) + title.gsub!('{role}', role) + title.gsub!('{nickname}', project&.owner&.real_name) + content = email + content.gsub!('{receiver}', receiver&.real_name) + content.gsub!('{baseurl}', base_url) + content.gsub!('{login}', project&.owner&.login) + content.gsub!('{nickname}', project&.owner&.real_name) + content.gsub!('{identifier}', project&.identifier) + content.gsub!('{repository}', project&.name) + content.gsub!('{role}', role) + + return receiver&.mail, title, content + else + return '', '', '' end - title = email_title - title.gsub!('{repository}', project&.name) - title.gsub!('{role}', role) - title.gsub!('{nickname}', project&.owner&.real_name) - content = email - content.gsub!('{receiver}', receiver&.real_name) - content.gsub!('{baseurl}', base_url) - content.gsub!('{login}', project&.owner&.login) - content.gsub!('{nickname}', project&.owner&.real_name) - content.gsub!('{identifier}', project&.identifier) - content.gsub!('{repository}', project&.name) - content.gsub!('{role}', role) - return receiver&.mail, title, content rescue => e Rails.logger.info("MessageTemplate::ProjectRole.get_email_message_content [ERROR] #{e}") return '', '', '' diff --git a/app/models/message_template/project_setting_changed.rb b/app/models/message_template/project_setting_changed.rb index 457ab9207..3ce17433d 100644 --- a/app/models/message_template/project_setting_changed.rb +++ b/app/models/message_template/project_setting_changed.rb @@ -159,150 +159,152 @@ class MessageTemplate::ProjectSettingChanged < MessageTemplate end def self.get_email_message_content(receiver, operator, project, change_params) + return '', '', '' if change_params.blank? if receiver.user_template_message_setting.present? return '', '', '' unless receiver.user_template_message_setting.email_body["ManageProject::SettingChanged"] - end - return '', '', '' if change_params.blank? - owner = project&.owner - title = email_title - title.gsub!('{nickname2}', owner&.real_name) - title.gsub!('{repository}', project&.name) - - content = email - content.gsub!('{receiver}', receiver&.real_name) - content.gsub!('{baseurl}', base_url) - content.gsub!('{login1}', operator&.login) - content.gsub!('{nickname1}', operator&.real_name) - content.gsub!('{login2}', owner&.login) - content.gsub!('{nickname2}', owner&.real_name) - content.gsub!('{identifier}', project&.identifier) - content.gsub!('{repository}', project&.name) - change_count = change_params.keys.size - # 项目名称更改 - if change_params[:name].present? - if change_count > 1 - content.sub!('{ifname}', '
') - else - content.sub!('{ifname}', '') - end - content.sub!('{endname}', '') - content.gsub!('{name}', change_params[:name][1]) - else - content.gsub!(/({ifname})(.*)({endname})/, '') - end - # 项目标识更改 - if change_params[:identifier].present? - if change_count > 1 - content.sub!('{ifidentifier}', '
') - else - content.sub!('{ifidentifier}', '') - end - content.sub!('{endidentifier}', '') - content.gsub!('{identifier}', change_params[:identifier][1]) - else - content.gsub!(/({ifidentifier})(.*)({endidentifier})/, '') - end - # 项目简介更改 - if change_params[:description].present? - if change_params[:description][1].blank? + owner = project&.owner + title = email_title + title.gsub!('{nickname2}', owner&.real_name) + title.gsub!('{repository}', project&.name) + + content = email + content.gsub!('{receiver}', receiver&.real_name) + content.gsub!('{baseurl}', base_url) + content.gsub!('{login1}', operator&.login) + content.gsub!('{nickname1}', operator&.real_name) + content.gsub!('{login2}', owner&.login) + content.gsub!('{nickname2}', owner&.real_name) + content.gsub!('{identifier}', project&.identifier) + content.gsub!('{repository}', project&.name) + change_count = change_params.keys.size + # 项目名称更改 + if change_params[:name].present? if change_count > 1 - content.gsub!(/({ifdescription})(.*)({enddescription})/, '
删除了项目简介') + content.sub!('{ifname}', '
') else - content.gsub!(/({ifdescription})(.*)({enddescription})/, '删除了项目简介') + content.sub!('{ifname}', '') end + content.sub!('{endname}', '') + content.gsub!('{name}', change_params[:name][1]) else - if change_count > 1 - content.sub!('{ifdescription}', '
') - else - content.sub!('{ifdescription}', '') - end - content.sub!('{enddescription}', '') - content.gsub!('{description}', change_params[:description][1]) + content.gsub!(/({ifname})(.*)({endname})/, '') end - else - content.gsub!(/({ifdescription})(.*)({enddescription})/, '') - end - # 项目类别更改 - if change_params[:project_category_id].present? - category = ProjectCategory.find_by_id(change_params[:project_category_id][1]) - if category.present? + # 项目标识更改 + if change_params[:identifier].present? if change_count > 1 - content.sub!('{ifcategory}', '
') + content.sub!('{ifidentifier}', '
') else - content.sub!('{ifcategory}', '') + content.sub!('{ifidentifier}', '') + end + content.sub!('{endidentifier}', '') + content.gsub!('{identifier}', change_params[:identifier][1]) + else + content.gsub!(/({ifidentifier})(.*)({endidentifier})/, '') + end + # 项目简介更改 + if change_params[:description].present? + if change_params[:description][1].blank? + if change_count > 1 + content.gsub!(/({ifdescription})(.*)({enddescription})/, '
删除了项目简介') + else + content.gsub!(/({ifdescription})(.*)({enddescription})/, '删除了项目简介') + end + else + if change_count > 1 + content.sub!('{ifdescription}', '
') + else + content.sub!('{ifdescription}', '') + end + content.sub!('{enddescription}', '') + content.gsub!('{description}', change_params[:description][1]) end - content.sub!('{endcategory}', '') - content.gsub!('{category}', category&.name) else - if change_count > 1 - content.gsub!(/({ifcategory})(.*)({endcategory})/, '
删除了项目类别') - else - content.gsub!(/({ifcategory})(.*)({endcategory})/, '删除了项目类别') + content.gsub!(/({ifdescription})(.*)({enddescription})/, '') + end + # 项目类别更改 + if change_params[:project_category_id].present? + category = ProjectCategory.find_by_id(change_params[:project_category_id][1]) + if category.present? + if change_count > 1 + content.sub!('{ifcategory}', '
') + else + content.sub!('{ifcategory}', '') + end + content.sub!('{endcategory}', '') + content.gsub!('{category}', category&.name) + else + if change_count > 1 + content.gsub!(/({ifcategory})(.*)({endcategory})/, '
删除了项目类别') + else + content.gsub!(/({ifcategory})(.*)({endcategory})/, '删除了项目类别') + end end + else + content.gsub!(/({ifcategory})(.*)({endcategory})/, '') end - else - content.gsub!(/({ifcategory})(.*)({endcategory})/, '') - end - # 项目语言更改 - if change_params[:project_language_id].present? - language = ProjectLanguage.find_by_id(change_params[:project_language_id][1]) - if language.present? - if change_count > 1 - content.sub!('{iflanguage}', '
') + # 项目语言更改 + if change_params[:project_language_id].present? + language = ProjectLanguage.find_by_id(change_params[:project_language_id][1]) + if language.present? + if change_count > 1 + content.sub!('{iflanguage}', '
') + else + content.sub!('{iflanguage}', '') + end + content.sub!('{endlanguage}', '') + content.gsub!('{language}', language&.name) else - content.sub!('{iflanguage}', '') + if change_count > 1 + content.gsub!(/({iflanguage})(.*)({endlanguage})/, '
删除了项目语言') + else + content.gsub!(/({iflanguage})(.*)({endlanguage})/, '删除了项目语言') + end end - content.sub!('{endlanguage}', '') - content.gsub!('{language}', language&.name) else + content.gsub!(/({iflanguage})(.*)({endlanguage})/, '') + end + # 项目公私有更改 + if change_params[:is_public].present? + permission = change_params[:is_public][1] ? '公有' : '私有' if change_count > 1 - content.gsub!(/({iflanguage})(.*)({endlanguage})/, '
删除了项目语言') + content.sub!('{ifpermission}', '
') else - content.gsub!(/({iflanguage})(.*)({endlanguage})/, '删除了项目语言') + content.sub!('{ifpermission}', '') end - end - else - content.gsub!(/({iflanguage})(.*)({endlanguage})/, '') - end - # 项目公私有更改 - if change_params[:is_public].present? - permission = change_params[:is_public][1] ? '公有' : '私有' - if change_count > 1 - content.sub!('{ifpermission}', '
') + content.sub!('{endpermission}', '') + content.gsub!('{permission}', permission) else - content.sub!('{ifpermission}', '') + content.gsub!(/({ifpermission})(.*)({endpermission})/, '') end - content.sub!('{endpermission}', '') - content.gsub!('{permission}', permission) - else - content.gsub!(/({ifpermission})(.*)({endpermission})/, '') - end - # 项目导航更改 - if change_params[:navbar].present? - unit_types = project.project_units.order(unit_type: :asc).pluck(:unit_type) - unit_types.delete('code') - unit_types.unshift('代码库') - unit_types.unshift('主页') - unit_types.append('动态') - navbar = unit_types.join(',') - navbar.gsub!('issues', '易修') - navbar.gsub!('pulls', '合并请求') - navbar.gsub!('wiki', 'Wiki') - navbar.gsub!('devops', '工作流') - navbar.gsub!('versions', '里程碑') - navbar.gsub!('resources', '资源库') - if change_count > 1 - content.sub!('{ifnavbar}', '
') + # 项目导航更改 + if change_params[:navbar].present? + unit_types = project.project_units.order(unit_type: :asc).pluck(:unit_type) + unit_types.delete('code') + unit_types.unshift('代码库') + unit_types.unshift('主页') + unit_types.append('动态') + navbar = unit_types.join(',') + navbar.gsub!('issues', '易修') + navbar.gsub!('pulls', '合并请求') + navbar.gsub!('wiki', 'Wiki') + navbar.gsub!('devops', '工作流') + navbar.gsub!('versions', '里程碑') + navbar.gsub!('resources', '资源库') + if change_count > 1 + content.sub!('{ifnavbar}', '
') + else + content.sub!('{ifnavbar}', '') + end + content.sub!('{endnavbar}', '') + content.gsub!('{navbar}', navbar) else - content.sub!('{ifnavbar}', '') + content.gsub!(/({ifnavbar})(.*)({endnavbar})/, '') end - content.sub!('{endnavbar}', '') - content.gsub!('{navbar}', navbar) + + return receiver&.mail, title, content else - content.gsub!(/({ifnavbar})(.*)({endnavbar})/, '') + return '', '', '' end - - return receiver&.mail, title, content rescue => e Rails.logger.info("MessageTemplate::ProjectSettingChanged.get_email_message_content [ERROR] #{e}") return '', '', '' diff --git a/app/models/message_template/pull_request_assigned.rb b/app/models/message_template/pull_request_assigned.rb index 1101ca46b..bca37151a 100644 --- a/app/models/message_template/pull_request_assigned.rb +++ b/app/models/message_template/pull_request_assigned.rb @@ -36,26 +36,28 @@ class MessageTemplate::PullRequestAssigned < MessageTemplate def self.get_email_message_content(receiver, operator, pull_request) if receiver.user_template_message_setting.present? return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::PullRequestAssigned"] - end - project = pull_request&.project - owner = project&.owner - title = email_title - title.gsub!('{nickname1}', operator&.real_name) - title.gsub!('{nickname2}', owner&.real_name) - title.gsub!('{repository}', project&.name) - content = email - content.gsub!('{receiver}', receiver&.real_name) - content.gsub!('{nickname1}', operator&.real_name) - content.gsub!('{login1}', operator&.login) - content.gsub!('{nickname2}', owner&.real_name) - content.gsub!('{login2}', owner&.login) - content.gsub!('{identifier}', project&.identifier) - content.gsub!('{repository}', project&.name) - content.gsub!('{baseurl}', base_url) - content.gsub!('{title}', pull_request&.title) - content.gsub!('{id}', pull_request&.id.to_s) + project = pull_request&.project + owner = project&.owner + title = email_title + title.gsub!('{nickname1}', operator&.real_name) + title.gsub!('{nickname2}', owner&.real_name) + title.gsub!('{repository}', project&.name) + content = email + content.gsub!('{receiver}', receiver&.real_name) + content.gsub!('{nickname1}', operator&.real_name) + content.gsub!('{login1}', operator&.login) + content.gsub!('{nickname2}', owner&.real_name) + content.gsub!('{login2}', owner&.login) + content.gsub!('{identifier}', project&.identifier) + content.gsub!('{repository}', project&.name) + content.gsub!('{baseurl}', base_url) + content.gsub!('{title}', pull_request&.title) + content.gsub!('{id}', pull_request&.id.to_s) - return receiver&.mail, title, content + return receiver&.mail, title, content + else + return '', '', '' + end rescue => e Rails.logger.info("MessageTemplate::PullRequestAssigned.get_email_message_content [ERROR] #{e}") return '', '', '' diff --git a/app/models/message_template/pull_request_changed.rb b/app/models/message_template/pull_request_changed.rb index fc4457f37..ab2c73b6b 100644 --- a/app/models/message_template/pull_request_changed.rb +++ b/app/models/message_template/pull_request_changed.rb @@ -103,89 +103,92 @@ class MessageTemplate::PullRequestChanged < MessageTemplate return '', '', '' if change_params.blank? if receiver.user_template_message_setting.present? return '', '', '' unless receiver.user_template_message_setting.email_body["CreateOrAssign::PullRequestChanged"] - end - project = pull_request&.project - owner = project&.owner - title = email_title - title.gsub!('{title}', pull_request&.title) - content = email - content.gsub!('{receiver}', receiver&.real_name) - content.gsub!('{nickname1}', operator&.real_name) - content.gsub!('{login1}', operator&.login) - content.gsub!('{nickname2}', owner&.real_name) - content.gsub!('{login2}', owner&.login) - content.gsub!('{identifier}', project&.identifier) - content.gsub!('{repository}', project&.name) - content.gsub!('{baseurl}', base_url) - content.gsub!('{title}', pull_request&.title) - content.gsub!('{id}', pull_request&.id.to_s) - - change_count = change_params.keys.size - # 合并请求审查成员修改 - if change_params[:assigned_to_id].present? - assigner1 = User.find_by_id(change_params[:assigned_to_id][0]) - assigner2 = User.find_by_id(change_params[:assigned_to_id][1]) - if change_count > 1 - content.sub!('{ifassigner}', '
') + project = pull_request&.project + owner = project&.owner + title = email_title + title.gsub!('{title}', pull_request&.title) + content = email + content.gsub!('{receiver}', receiver&.real_name) + content.gsub!('{nickname1}', operator&.real_name) + content.gsub!('{login1}', operator&.login) + content.gsub!('{nickname2}', owner&.real_name) + content.gsub!('{login2}', owner&.login) + content.gsub!('{identifier}', project&.identifier) + content.gsub!('{repository}', project&.name) + content.gsub!('{baseurl}', base_url) + content.gsub!('{title}', pull_request&.title) + content.gsub!('{id}', pull_request&.id.to_s) + + change_count = change_params.keys.size + # 合并请求审查成员修改 + if change_params[:assigned_to_id].present? + assigner1 = User.find_by_id(change_params[:assigned_to_id][0]) + assigner2 = User.find_by_id(change_params[:assigned_to_id][1]) + if change_count > 1 + content.sub!('{ifassigner}', '
') + else + content.sub!('{ifassigner}', '') + end + content.sub!('{endassigner}', '') + content.gsub!('{assigner1}', assigner1.present? ? assigner1&.real_name : '未指派成员') + content.gsub!('{assigner2}', assigner2.present? ? assigner2&.real_name : '未指派成员') else - content.sub!('{ifassigner}', '') + content.gsub!(/({ifassigner})(.*)({endassigner})/, '') end - content.sub!('{endassigner}', '') - content.gsub!('{assigner1}', assigner1.present? ? assigner1&.real_name : '未指派成员') - content.gsub!('{assigner2}', assigner2.present? ? assigner2&.real_name : '未指派成员') - else - content.gsub!(/({ifassigner})(.*)({endassigner})/, '') - end - # 合并请求里程碑修改 - if change_params[:fixed_version_id].present? - fix_version1 = Version.find_by_id(change_params[:fixed_version_id][0]) - fix_version2 = Version.find_by_id(change_params[:fixed_version_id][1]) - if change_count > 1 - content.sub!('{ifmilestone}', '
') + # 合并请求里程碑修改 + if change_params[:fixed_version_id].present? + fix_version1 = Version.find_by_id(change_params[:fixed_version_id][0]) + fix_version2 = Version.find_by_id(change_params[:fixed_version_id][1]) + if change_count > 1 + content.sub!('{ifmilestone}', '
') + else + content.sub!('{ifmilestone}', '') + end + content.sub!('{endmilestone}', '') + content.gsub!('{milestone1}', fix_version1.present? ? fix_version1&.name : '未选择里程碑') + content.gsub!('{milestone2}', fix_version2.present? ? fix_version2&.name : '未选择里程碑') else - content.sub!('{ifmilestone}', '') + content.gsub!(/({ifmilestone})(.*)({endmilestone})/, '') end - content.sub!('{endmilestone}', '') - content.gsub!('{milestone1}', fix_version1.present? ? fix_version1&.name : '未选择里程碑') - content.gsub!('{milestone2}', fix_version2.present? ? fix_version2&.name : '未选择里程碑') - else - content.gsub!(/({ifmilestone})(.*)({endmilestone})/, '') - end - # 合并请求标记修改 - if change_params[:issue_tags_value].present? - issue_tags1 = IssueTag.where(id: change_params[:issue_tags_value][0]).distinct - issue_tags2 = IssueTag.where(id: change_params[:issue_tags_value][1]).distinct - tag1 = issue_tags1.pluck(:name).join(",").blank? ? '未选择标记' : issue_tags1.pluck(:name).join(",") - tag2 = issue_tags2.pluck(:name).join(",").blank? ? '未选择标记' : issue_tags2.pluck(:name).join(",") - if change_count > 1 - content.sub!('{iftag}', '
') + # 合并请求标记修改 + if change_params[:issue_tags_value].present? + issue_tags1 = IssueTag.where(id: change_params[:issue_tags_value][0]).distinct + issue_tags2 = IssueTag.where(id: change_params[:issue_tags_value][1]).distinct + tag1 = issue_tags1.pluck(:name).join(",").blank? ? '未选择标记' : issue_tags1.pluck(:name).join(",") + tag2 = issue_tags2.pluck(:name).join(",").blank? ? '未选择标记' : issue_tags2.pluck(:name).join(",") + if change_count > 1 + content.sub!('{iftag}', '
') + else + content.sub!('{iftag}', '') + end + content.sub!('{endtag}', '') + content.gsub!('{tag1}', tag1) + content.gsub!('{tag2}', tag2) else - content.sub!('{iftag}', '') + content.gsub!(/({iftag})(.*)({endtag})()/, '') end - content.sub!('{endtag}', '') - content.gsub!('{tag1}', tag1) - content.gsub!('{tag2}', tag2) - else - content.gsub!(/({iftag})(.*)({endtag})()/, '') - end - # 合并请求优先级修改 - if change_params[:priority_id].present? - priority1 = IssuePriority.find_by_id(change_params[:priority_id][0]) - priority2 = IssuePriority.find_by_id(change_params[:priority_id][1]) - if change_count > 1 - content.sub!('{ifpriority}', '
') + # 合并请求优先级修改 + if change_params[:priority_id].present? + priority1 = IssuePriority.find_by_id(change_params[:priority_id][0]) + priority2 = IssuePriority.find_by_id(change_params[:priority_id][1]) + if change_count > 1 + content.sub!('{ifpriority}', '
') + else + content.sub!('{ifpriority}', '') + end + content.sub!('{ifpriority}', '') + content.sub!('{endpriority}', '') + content.gsub!('{priority1}', priority1&.name) + content.gsub!('{priority2}', priority2&.name) else - content.sub!('{ifpriority}', '') + content.gsub!(/({ifpriority})(.*)({endpriority})/, '') end - content.sub!('{ifpriority}', '') - content.sub!('{endpriority}', '') - content.gsub!('{priority1}', priority1&.name) - content.gsub!('{priority2}', priority2&.name) + + return receiver&.mail, title, content else - content.gsub!(/({ifpriority})(.*)({endpriority})/, '') + return '', '', '' end - return receiver&.mail, title, content rescue => e Rails.logger.info("MessageTemplate::PullRequestChanged.get_email_message_content [ERROR] #{e}") return '', '', '' diff --git a/app/models/message_template/pull_request_closed.rb b/app/models/message_template/pull_request_closed.rb index f160ebf20..ea1ffabcb 100644 --- a/app/models/message_template/pull_request_closed.rb +++ b/app/models/message_template/pull_request_closed.rb @@ -36,24 +36,27 @@ class MessageTemplate::PullRequestClosed < MessageTemplate def self.get_email_message_content(receiver, operator, pull_request) if receiver.user_template_message_setting.present? return '', '', '' unless receiver.user_template_message_setting.email_body["CreateOrAssign::PullRequestChanged"] + project = pull_request&.project + owner = project&.owner + title = email_title + title.gsub!('{title}', pull_request&.title) + content = email + content.gsub!('{receiver}', receiver&.real_name) + content.gsub!('{nickname1}', operator&.real_name) + content.gsub!('{login1}', operator&.login) + content.gsub!('{nickname2}', owner&.real_name) + content.gsub!('{login2}', owner&.login) + content.gsub!('{identifier}', project&.identifier) + content.gsub!('{repository}', project&.name) + content.gsub!('{baseurl}', base_url) + content.gsub!('{title}', pull_request&.title) + content.gsub!('{id}', pull_request&.id.to_s) + + return receiver&.mail, title, content + else + return '', '', '' end - project = pull_request&.project - owner = project&.owner - title = email_title - title.gsub!('{title}', pull_request&.title) - content = email - content.gsub!('{receiver}', receiver&.real_name) - content.gsub!('{nickname1}', operator&.real_name) - content.gsub!('{login1}', operator&.login) - content.gsub!('{nickname2}', owner&.real_name) - content.gsub!('{login2}', owner&.login) - content.gsub!('{identifier}', project&.identifier) - content.gsub!('{repository}', project&.name) - content.gsub!('{baseurl}', base_url) - content.gsub!('{title}', pull_request&.title) - content.gsub!('{id}', pull_request&.id.to_s) - return receiver&.mail, title, content rescue => e Rails.logger.info("MessageTemplate::PullRequestClosed.get_email_message_content [ERROR] #{e}") return '', '', '' diff --git a/app/models/message_template/pull_request_merged.rb b/app/models/message_template/pull_request_merged.rb index 3dccffdd7..eb4bb5e17 100644 --- a/app/models/message_template/pull_request_merged.rb +++ b/app/models/message_template/pull_request_merged.rb @@ -36,24 +36,26 @@ class MessageTemplate::PullRequestMerged < MessageTemplate def self.get_email_message_content(receiver, operator, pull_request) if receiver.user_template_message_setting.present? return '', '', '' unless receiver.user_template_message_setting.email_body["CreateOrAssign::PullRequestChanged"] + project = pull_request&.project + owner = project&.owner + title = email_title + title.gsub!('{title}', pull_request&.title) + content = email + content.gsub!('{receiver}', receiver&.real_name) + content.gsub!('{nickname1}', operator&.real_name) + content.gsub!('{login1}', operator&.login) + content.gsub!('{nickname2}', owner&.real_name) + content.gsub!('{login2}', owner&.login) + content.gsub!('{identifier}', project&.identifier) + content.gsub!('{repository}', project&.name) + content.gsub!('{baseurl}', base_url) + content.gsub!('{title}', pull_request&.title) + content.gsub!('{id}', pull_request&.id.to_s) + + return receiver&.mail, title, content + else + return '', '', '' end - project = pull_request&.project - owner = project&.owner - title = email_title - title.gsub!('{title}', pull_request&.title) - content = email - content.gsub!('{receiver}', receiver&.real_name) - content.gsub!('{nickname1}', operator&.real_name) - content.gsub!('{login1}', operator&.login) - content.gsub!('{nickname2}', owner&.real_name) - content.gsub!('{login2}', owner&.login) - content.gsub!('{identifier}', project&.identifier) - content.gsub!('{repository}', project&.name) - content.gsub!('{baseurl}', base_url) - content.gsub!('{title}', pull_request&.title) - content.gsub!('{id}', pull_request&.id.to_s) - - return receiver&.mail, title, content rescue => e Rails.logger.info("MessageTemplate::PullRequestMerged.get_email_message_content [ERROR] #{e}") return '', '', '' diff --git a/app/models/user_template_message_setting.rb b/app/models/user_template_message_setting.rb index c581e626e..3a3416ee3 100644 --- a/app/models/user_template_message_setting.rb +++ b/app/models/user_template_message_setting.rb @@ -44,17 +44,17 @@ class UserTemplateMessageSetting < ApplicationRecord def self.init_email_body { - "Normal::Permission": true, - "Normal::Project": true, - "Normal::Organization": true, - "Normal::IssueAssigned": true, - "Normal::PullRequestAssigned": true, - "CreateOrAssign::IssueChanged": true, - "CreateOrAssign::PullRequestChanged": true, - "ManageProject::Issue": true, - "ManageProject::PullRequest": true, - "ManageProject::Member": true, - "ManageProject::SettingChanged": true, + "Normal::Permission": false, + "Normal::Project": false, + "Normal::Organization": false, + "Normal::IssueAssigned": false, + "Normal::PullRequestAssigned": false, + "CreateOrAssign::IssueChanged": false, + "CreateOrAssign::PullRequestChanged": false, + "ManageProject::Issue": false, + "ManageProject::PullRequest": false, + "ManageProject::Member": false, + "ManageProject::SettingChanged": false, }.stringify_keys! end diff --git a/app/services/cache/v2/project_common_service.rb b/app/services/cache/v2/project_common_service.rb index 760c6d05b..8ed0a0636 100644 --- a/app/services/cache/v2/project_common_service.rb +++ b/app/services/cache/v2/project_common_service.rb @@ -196,6 +196,7 @@ class Cache::V2::ProjectCommonService < ApplicationService def reset_project_common load_project + return unless @project.present? return unless @project.is_full_public $redis_cache.del(project_common_key) reset_project_owner_id