Merge pull request '更改邮件默认发送规则' (#251) from yystopf/forgeplus:hh_email_fix into develop

This commit is contained in:
yystopf 2021-11-19 10:38:04 +08:00
commit d63626424e
20 changed files with 616 additions and 568 deletions

View File

@ -36,26 +36,28 @@ class MessageTemplate::IssueAssigned < MessageTemplate
def self.get_email_message_content(receiver, operator, issue) def self.get_email_message_content(receiver, operator, issue)
if receiver.user_template_message_setting.present? if receiver.user_template_message_setting.present?
return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::IssueAssigned"] return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::IssueAssigned"]
end project = issue&.project
project = issue&.project owner = project&.owner
owner = project&.owner title = email_title
title = email_title title.gsub!('{nickname1}', operator&.real_name)
title.gsub!('{nickname1}', operator&.real_name) title.gsub!('{nickname2}', owner&.real_name)
title.gsub!('{nickname2}', owner&.real_name) title.gsub!('{repository}', project&.name)
title.gsub!('{repository}', project&.name) content = email
content = email content.gsub!('{receiver}', receiver&.real_name)
content.gsub!('{receiver}', receiver&.real_name) content.gsub!('{nickname1}', operator&.real_name)
content.gsub!('{nickname1}', operator&.real_name) content.gsub!('{login1}', operator&.login)
content.gsub!('{login1}', operator&.login) content.gsub!('{nickname2}', owner&.real_name)
content.gsub!('{nickname2}', owner&.real_name) content.gsub!('{login2}', owner&.login)
content.gsub!('{login2}', owner&.login) content.gsub!('{identifier}', project&.identifier)
content.gsub!('{identifier}', project&.identifier) content.gsub!('{repository}', project&.name)
content.gsub!('{repository}', project&.name) content.gsub!('{baseurl}', base_url)
content.gsub!('{baseurl}', base_url) content.gsub!('{title}', issue&.subject)
content.gsub!('{title}', issue&.subject) content.gsub!('{id}', issue&.id.to_s)
content.gsub!('{id}', issue&.id.to_s)
return receiver&.mail, title, content return receiver&.mail, title, content
else
return '', '', ''
end
rescue => e rescue => e
Rails.logger.info("MessageTemplate::IssueAssigned.get_email_message_content [ERROR] #{e}") Rails.logger.info("MessageTemplate::IssueAssigned.get_email_message_content [ERROR] #{e}")
return '', '', '' return '', '', ''

View File

@ -191,177 +191,180 @@ class MessageTemplate::IssueChanged < MessageTemplate
return '', '', '' if change_params.blank? return '', '', '' if change_params.blank?
if receiver.user_template_message_setting.present? if receiver.user_template_message_setting.present?
return '', '', '' unless receiver.user_template_message_setting.email_body["CreateOrAssign::IssueChanged"] return '', '', '' unless receiver.user_template_message_setting.email_body["CreateOrAssign::IssueChanged"]
end project = issue&.project
project = issue&.project owner = project&.owner
owner = project&.owner title = email_title
title = email_title title.gsub!('{title}', issue&.subject)
title.gsub!('{title}', issue&.subject) content = email
content = email content.gsub!('{receiver}', receiver&.real_name)
content.gsub!('{receiver}', receiver&.real_name) content.gsub!('{baseurl}', base_url)
content.gsub!('{baseurl}', base_url) content.gsub!('{login1}', operator&.login)
content.gsub!('{login1}', operator&.login) content.gsub!('{nickname1}', operator&.real_name)
content.gsub!('{nickname1}', operator&.real_name) content.gsub!('{login2}', owner&.login)
content.gsub!('{login2}', owner&.login) content.gsub!('{nickname2}', owner&.real_name)
content.gsub!('{nickname2}', owner&.real_name) content.gsub!('{identifier}', project&.identifier)
content.gsub!('{identifier}', project&.identifier) content.gsub!('{repository}', project&.name)
content.gsub!('{repository}', project&.name) content.gsub!('{title}', issue&.subject)
content.gsub!('{title}', issue&.subject) content.gsub!('{id}', issue&.id.to_s)
content.gsub!('{id}', issue&.id.to_s) change_count = change_params.keys.size
change_count = change_params.keys.size # 易修负责人修改
# 易修负责人修改 if change_params[:assigned_to_id].present?
if change_params[:assigned_to_id].present? assigner1 = User.find_by_id(change_params[:assigned_to_id][0])
assigner1 = User.find_by_id(change_params[:assigned_to_id][0]) assigner2 = User.find_by_id(change_params[:assigned_to_id][1])
assigner2 = User.find_by_id(change_params[:assigned_to_id][1]) if change_count > 1
if change_count > 1 content.sub!('{ifassigner}', '<br/>')
content.sub!('{ifassigner}', '<br/>') 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 else
content.sub!('{ifassigner}', '') content.gsub!(/({ifassigner})(.*)({endassigner})/, '')
end end
content.sub!('{endassigner}', '') # 易修状态修改
content.gsub!('{assigner1}', assigner1.present? ? assigner1&.real_name : '未指派成员') if change_params[:status_id].present?
content.gsub!('{assigner2}', assigner2.present? ? assigner2&.real_name : '未指派成员') status1 = IssueStatus.find_by_id(change_params[:status_id][0])
else status2 = IssueStatus.find_by_id(change_params[:status_id][1])
content.gsub!(/({ifassigner})(.*)({endassigner})/, '') if change_count > 1
end content.sub!('{ifstatus}', '<br/>')
# 易修状态修改 else
if change_params[:status_id].present? content.sub!('{ifstatus}', '')
status1 = IssueStatus.find_by_id(change_params[:status_id][0]) end
status2 = IssueStatus.find_by_id(change_params[:status_id][1]) content.sub!('{endstatus}', '')
if change_count > 1 content.gsub!('{status1}', status1&.name)
content.sub!('{ifstatus}', '<br/>') content.gsub!('{status2}', status2&.name)
else else
content.sub!('{ifstatus}', '') content.gsub!(/({ifstatus})(.*)({endstatus})/, '')
end end
content.sub!('{endstatus}', '') # 易修类型修改
content.gsub!('{status1}', status1&.name) if change_params[:tracker_id].present?
content.gsub!('{status2}', status2&.name) tracker1 = Tracker.find_by_id(change_params[:tracker_id][0])
else tracker2 = Tracker.find_by_id(change_params[:tracker_id][1])
content.gsub!(/({ifstatus})(.*)({endstatus})/, '') if change_count > 1
end content.sub!('{iftracker}', '<br/>')
# 易修类型修改 else
if change_params[:tracker_id].present? content.sub!('{iftracker}', '')
tracker1 = Tracker.find_by_id(change_params[:tracker_id][0]) end
tracker2 = Tracker.find_by_id(change_params[:tracker_id][1]) content.sub!('{endtracker}', '')
if change_count > 1 content.gsub!('{tracker1}', tracker1&.name)
content.sub!('{iftracker}', '<br/>') content.gsub!('{tracker2}', tracker2&.name)
else else
content.sub!('{iftracker}', '') content.gsub!(/({iftracker})(.*)({endtracker})/, '')
end end
content.sub!('{endtracker}', '') # 易修里程碑修改
content.gsub!('{tracker1}', tracker1&.name) if change_params[:fixed_version_id].present?
content.gsub!('{tracker2}', tracker2&.name) fix_version1 = Version.find_by_id(change_params[:fixed_version_id][0])
else fix_version2 = Version.find_by_id(change_params[:fixed_version_id][1])
content.gsub!(/({iftracker})(.*)({endtracker})/, '') if change_count > 1
end content.sub!('{ifmilestone}', '<br/>')
# 易修里程碑修改 else
if change_params[:fixed_version_id].present? content.sub!('{ifmilestone}', '')
fix_version1 = Version.find_by_id(change_params[:fixed_version_id][0]) end
fix_version2 = Version.find_by_id(change_params[:fixed_version_id][1]) content.sub!('{endmilestone}', '')
if change_count > 1 content.gsub!('{milestone1}', fix_version1.present? ? fix_version1&.name : '未选择里程碑')
content.sub!('{ifmilestone}', '<br/>') content.gsub!('{milestone2}', fix_version2.present? ? fix_version2&.name : '未选择里程碑')
else else
content.sub!('{ifmilestone}', '') content.gsub!(/({ifmilestone})(.*)({endmilestone})/, '')
end end
content.sub!('{endmilestone}', '') # 易修标记修改
content.gsub!('{milestone1}', fix_version1.present? ? fix_version1&.name : '未选择里程碑') if change_params[:issue_tags_value].present?
content.gsub!('{milestone2}', fix_version2.present? ? fix_version2&.name : '未选择里程碑') issue_tags1 = IssueTag.where(id: change_params[:issue_tags_value][0]).distinct
else issue_tags2 = IssueTag.where(id: change_params[:issue_tags_value][1]).distinct
content.gsub!(/({ifmilestone})(.*)({endmilestone})/, '') tag1 = issue_tags1.pluck(:name).join(",").blank? ? '未选择标记' : issue_tags1.pluck(:name).join(",")
end tag2 = issue_tags2.pluck(:name).join(",").blank? ? '未选择标记' : issue_tags2.pluck(:name).join(",")
# 易修标记修改 if change_count > 1
if change_params[:issue_tags_value].present? content.sub!('{iftag}', '<br/>')
issue_tags1 = IssueTag.where(id: change_params[:issue_tags_value][0]).distinct else
issue_tags2 = IssueTag.where(id: change_params[:issue_tags_value][1]).distinct content.sub!('{iftag}', '')
tag1 = issue_tags1.pluck(:name).join(",").blank? ? '未选择标记' : issue_tags1.pluck(:name).join(",") end
tag2 = issue_tags2.pluck(:name).join(",").blank? ? '未选择标记' : issue_tags2.pluck(:name).join(",") content.sub!('{endtag}', '')
if change_count > 1 content.gsub!('{tag1}', tag1)
content.sub!('{iftag}', '<br/>') content.gsub!('{tag2}', tag2)
else else
content.sub!('{iftag}', '') content.gsub!(/({iftag})(.*)({endtag})()/, '')
end end
content.sub!('{endtag}', '') # 易修优先级修改
content.gsub!('{tag1}', tag1) if change_params[:priority_id].present?
content.gsub!('{tag2}', tag2) priority1 = IssuePriority.find_by_id(change_params[:priority_id][0])
else priority2 = IssuePriority.find_by_id(change_params[:priority_id][1])
content.gsub!(/({iftag})(.*)({endtag})()/, '') if change_count > 1
end content.sub!('{ifpriority}', '<br/>')
# 易修优先级修改 else
if change_params[:priority_id].present? content.sub!('{ifpriority}', '')
priority1 = IssuePriority.find_by_id(change_params[:priority_id][0]) end
priority2 = IssuePriority.find_by_id(change_params[:priority_id][1]) content.sub!('{endpriority}', '')
if change_count > 1 content.gsub!('{priority1}', priority1&.name)
content.sub!('{ifpriority}', '<br/>') content.gsub!('{priority2}', priority2&.name)
else else
content.sub!('{ifpriority}', '') content.gsub!(/({ifpriority})(.*)({endpriority})/, '')
end end
content.sub!('{endpriority}', '') # 易修完成度修改
content.gsub!('{priority1}', priority1&.name) if change_params[:done_ratio].present?
content.gsub!('{priority2}', priority2&.name) doneratio1 = change_params[:done_ratio][0]
else doneratio2 = change_params[:done_ratio][1]
content.gsub!(/({ifpriority})(.*)({endpriority})/, '') if change_count > 1
end content.sub!('{ifdoneratio}', '<br/>')
# 易修完成度修改 else
if change_params[:done_ratio].present? content.sub!('{ifdoneratio}', '')
doneratio1 = change_params[:done_ratio][0] end
doneratio2 = change_params[:done_ratio][1] content.sub!('{enddoneratio}', '')
if change_count > 1 content.gsub!('{doneratio1}', "#{doneratio1}%")
content.sub!('{ifdoneratio}', '<br/>') content.gsub!('{doneratio2}', "#{doneratio2}%")
else else
content.sub!('{ifdoneratio}', '') content.gsub!(/({ifdoneratio})(.*)({enddoneratio})/, '')
end end
content.sub!('{enddoneratio}', '') # 易修指定分支修改
content.gsub!('{doneratio1}', "#{doneratio1}%") if change_params[:branch_name].present?
content.gsub!('{doneratio2}', "#{doneratio2}%") branch1 = change_params[:branch_name][0].blank? ? '分支未指定' : change_params[:branch_name][0]
else branch2 = change_params[:branch_name][1].blank? ? '分支未指定' : change_params[:branch_name][1]
content.gsub!(/({ifdoneratio})(.*)({enddoneratio})/, '') if change_count > 1
end content.sub!('{ifbranch}', '<br/>')
# 易修指定分支修改 else
if change_params[:branch_name].present? content.sub!('{ifbranch}', '')
branch1 = change_params[:branch_name][0].blank? ? '分支未指定' : change_params[:branch_name][0] end
branch2 = change_params[:branch_name][1].blank? ? '分支未指定' : change_params[:branch_name][1] content.sub!('{endbranch}', '')
if change_count > 1 content.gsub!('{branch1}', branch1)
content.sub!('{ifbranch}', '<br/>') content.gsub!('{branch2}', branch2)
else else
content.sub!('{ifbranch}', '') content.gsub!(/({ifbranch})(.*)({endbranch})/, '')
end end
content.sub!('{endbranch}', '') # 易修开始日期修改
content.gsub!('{branch1}', branch1) if change_params[:start_date].present?
content.gsub!('{branch2}', branch2) startdate1 = change_params[:start_date][0].blank? ? "未选择开始日期" : change_params[:start_date][0]
else startdate2 = change_params[:start_date][1].blank? ? "未选择开始日期" : change_params[:start_date][1]
content.gsub!(/({ifbranch})(.*)({endbranch})/, '') if change_count > 1
end content.sub!('{ifstartdate}', '<br/>')
# 易修开始日期修改 else
if change_params[:start_date].present? content.sub!('{ifstartdate}', '')
startdate1 = change_params[:start_date][0].blank? ? "未选择开始日期" : change_params[:start_date][0] end
startdate2 = change_params[:start_date][1].blank? ? "未选择开始日期" : change_params[:start_date][1] content.sub!('{endstartdate}', '')
if change_count > 1 content.gsub!('{startdate1}', startdate1 )
content.sub!('{ifstartdate}', '<br/>') content.gsub!('{startdate2}', startdate2)
else else
content.sub!('{ifstartdate}', '') content.gsub!(/({ifstartdate})(.*)({endstartdate})/, '')
end end
content.sub!('{endstartdate}', '') # 易修结束日期修改
content.gsub!('{startdate1}', startdate1 ) if change_params[:due_date].present?
content.gsub!('{startdate2}', startdate2) duedate1 = change_params[:due_date][0].blank? ? '未选择结束日期' : change_params[:due_date][0]
else duedate2 = change_params[:due_date][1].blank? ? '未选择结束日期' : change_params[:due_date][1]
content.gsub!(/({ifstartdate})(.*)({endstartdate})/, '') if change_count > 1
end content.sub!('{ifduedate}', '<br/>')
# 易修结束日期修改 else
if change_params[:due_date].present? content.sub!('{ifduedate}', '')
duedate1 = change_params[:due_date][0].blank? ? '未选择结束日期' : change_params[:due_date][0] end
duedate2 = change_params[:due_date][1].blank? ? '未选择结束日期' : change_params[:due_date][1] content.sub!('{endduedate}', '')
if change_count > 1 content.gsub!('{duedate1}', duedate1)
content.sub!('{ifduedate}', '<br/>') content.gsub!('{duedate2}', duedate2)
else else
content.sub!('{ifduedate}', '') content.gsub!(/({ifduedate})(.*)({endduedate})/, '')
end end
content.sub!('{endduedate}', '')
content.gsub!('{duedate1}', duedate1) return receiver&.mail, title, content
content.gsub!('{duedate2}', duedate2)
else else
content.gsub!(/({ifduedate})(.*)({endduedate})/, '') return '', '', ''
end end
return receiver&.mail, title, content
rescue => e rescue => e
Rails.logger.info("MessageTemplate::IssueChanged.get_email_message_content [ERROR] #{e}") Rails.logger.info("MessageTemplate::IssueChanged.get_email_message_content [ERROR] #{e}")
return '', '', '' return '', '', ''

View File

@ -33,17 +33,19 @@ class MessageTemplate::IssueDeleted < MessageTemplate
def self.get_email_message_content(receiver, operator, issue_title) def self.get_email_message_content(receiver, operator, issue_title)
if receiver.user_template_message_setting.present? if receiver.user_template_message_setting.present?
return '', '', '' unless receiver.user_template_message_setting.email_body["CreateOrAssign::IssueChanged"] return '', '', '' unless receiver.user_template_message_setting.email_body["CreateOrAssign::IssueChanged"]
end title = email_title
title = email_title title.gsub!('{title}', issue_title)
title.gsub!('{title}', issue_title) content = email
content = email content.gsub!('{receiver}', receiver&.real_name)
content.gsub!('{receiver}', receiver&.real_name) content.gsub!('{nickname}', operator&.real_name)
content.gsub!('{nickname}', operator&.real_name) content.gsub!('{login}', operator&.login)
content.gsub!('{login}', operator&.login) content.gsub!('{baseurl}', base_url)
content.gsub!('{baseurl}', base_url) content.gsub!('{title}', issue_title)
content.gsub!('{title}', issue_title)
return receiver&.mail, title, content return receiver&.mail, title, content
else
return '', '', ''
end
rescue => e rescue => e
Rails.logger.info("MessageTemplate::IssueDeleted.get_email_message_content [ERROR] #{e}") Rails.logger.info("MessageTemplate::IssueDeleted.get_email_message_content [ERROR] #{e}")
return '', '', '' return '', '', ''

View File

@ -34,16 +34,19 @@ class MessageTemplate::OrganizationJoined < MessageTemplate
def self.get_email_message_content(receiver, organization) def self.get_email_message_content(receiver, organization)
if receiver.user_template_message_setting.present? if receiver.user_template_message_setting.present?
return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::Organization"] return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::Organization"]
end title = email_title
title = email_title title.gsub!('{organization}', organization&.real_name)
title.gsub!('{organization}', organization&.real_name) content = email
content = email content.gsub!('{receiver}', receiver&.real_name)
content.gsub!('{receiver}', receiver&.real_name) content.gsub!('{baseurl}', base_url)
content.gsub!('{baseurl}', base_url) content.gsub!('{login}', organization&.login)
content.gsub!('{login}', organization&.login) content.gsub!('{organization}', organization&.real_name)
content.gsub!('{organization}', organization&.real_name)
return receiver&.mail, title, content
else
return '', '', ''
end
return receiver&.mail, title, content
rescue => e rescue => e
Rails.logger.info("MessageTemplate::OrganizationJoined.get_email_message_content [ERROR] #{e}") Rails.logger.info("MessageTemplate::OrganizationJoined.get_email_message_content [ERROR] #{e}")
return '', '', '' return '', '', ''

View File

@ -34,16 +34,19 @@ class MessageTemplate::OrganizationLeft < MessageTemplate
def self.get_email_message_content(receiver, organization) def self.get_email_message_content(receiver, organization)
if receiver.user_template_message_setting.present? if receiver.user_template_message_setting.present?
return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::Organization"] return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::Organization"]
end title = email_title
title = email_title title.gsub!('{organization}', organization&.real_name)
title.gsub!('{organization}', organization&.real_name) content = email
content = email content.gsub!('{receiver}', receiver&.real_name)
content.gsub!('{receiver}', receiver&.real_name) content.gsub!('{baseurl}', base_url)
content.gsub!('{baseurl}', base_url) content.gsub!('{login}', organization&.login)
content.gsub!('{login}', organization&.login) content.gsub!('{organization}', organization&.real_name)
content.gsub!('{organization}', organization&.real_name)
return receiver&.mail, title, content
else
return '', '', ''
end
return receiver&.mail, title, content
rescue => e rescue => e
Rails.logger.info("MessageTemplate::OrganizationLeft.get_email_message_content [ERROR] #{e}") Rails.logger.info("MessageTemplate::OrganizationLeft.get_email_message_content [ERROR] #{e}")
return '', '', '' return '', '', ''

View File

@ -34,18 +34,21 @@ class MessageTemplate::OrganizationRole < MessageTemplate
def self.get_email_message_content(receiver, organization, role) def self.get_email_message_content(receiver, organization, role)
if receiver.user_template_message_setting.present? if receiver.user_template_message_setting.present?
return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::Permission"] return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::Permission"]
end title = email_title
title = email_title title.gsub!('{organization}', organization&.real_name)
title.gsub!('{organization}', organization&.real_name) title.gsub!('{role}', role)
title.gsub!('{role}', role) content = email
content = email content.gsub!('{receiver}', receiver&.real_name)
content.gsub!('{receiver}', receiver&.real_name) content.gsub!('{baseurl}', base_url)
content.gsub!('{baseurl}', base_url) content.gsub!('{login}', organization&.login)
content.gsub!('{login}', organization&.login) content.gsub!('{organization}', organization&.real_name)
content.gsub!('{organization}', organization&.real_name) content.gsub!('{role}', role)
content.gsub!('{role}', role)
return receiver&.mail, title, content
else
return '', '', ''
end
return receiver&.mail, title, content
rescue => e rescue => e
Rails.logger.info("MessageTemplate::OrganizationRole.get_email_message_content [ERROR] #{e}") Rails.logger.info("MessageTemplate::OrganizationRole.get_email_message_content [ERROR] #{e}")
return '', '', '' return '', '', ''

View File

@ -38,27 +38,30 @@ class MessageTemplate::ProjectIssue < MessageTemplate
def self.get_email_message_content(receiver, is_manager, operator, issue) def self.get_email_message_content(receiver, is_manager, operator, issue)
if receiver.user_template_message_setting.present? && is_manager if receiver.user_template_message_setting.present? && is_manager
return '', '', '' unless receiver.user_template_message_setting.email_body["ManageProject::Issue"] 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 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 rescue => e
Rails.logger.info("MessageTemplate::ProjectIssue.get_email_message_content [ERROR] #{e}") Rails.logger.info("MessageTemplate::ProjectIssue.get_email_message_content [ERROR] #{e}")
return '', '', '' return '', '', ''

View File

@ -34,19 +34,22 @@ class MessageTemplate::ProjectJoined < MessageTemplate
def self.get_email_message_content(receiver, project) def self.get_email_message_content(receiver, project)
if receiver.user_template_message_setting.present? if receiver.user_template_message_setting.present?
return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::Project"] return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::Project"]
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
else
return '', '', ''
end 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)
return receiver&.mail, title, content
rescue => e rescue => e
Rails.logger.info("MessageTemplate::ProjectJoined.get_email_message_content [ERROR] #{e}") Rails.logger.info("MessageTemplate::ProjectJoined.get_email_message_content [ERROR] #{e}")
return '', '', '' return '', '', ''

View File

@ -33,19 +33,22 @@ class MessageTemplate::ProjectLeft < MessageTemplate
def self.get_email_message_content(receiver, project) def self.get_email_message_content(receiver, project)
if receiver.user_template_message_setting.present? if receiver.user_template_message_setting.present?
return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::Project"] return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::Project"]
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
else
return '', '', ''
end 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)
return receiver&.mail, title, content
rescue => e rescue => e
Rails.logger.info("MessageTemplate::ProjectLeft.get_email_message_content [ERROR] #{e}") Rails.logger.info("MessageTemplate::ProjectLeft.get_email_message_content [ERROR] #{e}")
return '', '', '' return '', '', ''

View File

@ -34,23 +34,25 @@ class MessageTemplate::ProjectMemberJoined < MessageTemplate
def self.get_email_message_content(receiver, user, project) def self.get_email_message_content(receiver, user, project)
if receiver.user_template_message_setting.present? if receiver.user_template_message_setting.present?
return '', '', '' unless receiver.user_template_message_setting.email_body["ManageProject::Member"] 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 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 rescue => e
Rails.logger.info("MessageTemplate::ProjectMemberJoined.get_email_message_content [ERROR] #{e}") Rails.logger.info("MessageTemplate::ProjectMemberJoined.get_email_message_content [ERROR] #{e}")
return '', '', '' return '', '', ''

View File

@ -34,23 +34,26 @@ class MessageTemplate::ProjectMemberLeft < MessageTemplate
def self.get_email_message_content(receiver, user, project) def self.get_email_message_content(receiver, user, project)
if receiver.user_template_message_setting.present? if receiver.user_template_message_setting.present?
return '', '', '' unless receiver.user_template_message_setting.email_body["ManageProject::Member"] 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 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 rescue => e
Rails.logger.info("MessageTemplate::ProjectMemberLeft.get_email_message_content [ERROR] #{e}") Rails.logger.info("MessageTemplate::ProjectMemberLeft.get_email_message_content [ERROR] #{e}")
return '', '', '' return '', '', ''

View File

@ -38,27 +38,29 @@ class MessageTemplate::ProjectPullRequest < MessageTemplate
def self.get_email_message_content(receiver, is_manager, operator, pull_request) def self.get_email_message_content(receiver, is_manager, operator, pull_request)
if receiver.user_template_message_setting.present? && is_manager if receiver.user_template_message_setting.present? && is_manager
return '', '', '' unless receiver.user_template_message_setting.email_body["ManageProject::PullRequest"] 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 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 rescue => e
Rails.logger.info("MessageTemplate::ProjectPullRequest.get_email_message_content [ERROR] #{e}") Rails.logger.info("MessageTemplate::ProjectPullRequest.get_email_message_content [ERROR] #{e}")
return '', '', '' return '', '', ''

View File

@ -34,21 +34,24 @@ class MessageTemplate::ProjectRole < MessageTemplate
def self.get_email_message_content(receiver, project, role) def self.get_email_message_content(receiver, project, role)
if receiver.user_template_message_setting.present? if receiver.user_template_message_setting.present?
return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::Permission"] return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::Permission"]
end title = email_title
title = email_title title.gsub!('{repository}', project&.name)
title.gsub!('{repository}', project&.name) title.gsub!('{role}', role)
title.gsub!('{role}', role) title.gsub!('{nickname}', project&.owner&.real_name)
title.gsub!('{nickname}', project&.owner&.real_name) content = email
content = email content.gsub!('{receiver}', receiver&.real_name)
content.gsub!('{receiver}', receiver&.real_name) content.gsub!('{baseurl}', base_url)
content.gsub!('{baseurl}', base_url) content.gsub!('{login}', project&.owner&.login)
content.gsub!('{login}', project&.owner&.login) content.gsub!('{nickname}', project&.owner&.real_name)
content.gsub!('{nickname}', project&.owner&.real_name) content.gsub!('{identifier}', project&.identifier)
content.gsub!('{identifier}', project&.identifier) content.gsub!('{repository}', project&.name)
content.gsub!('{repository}', project&.name) content.gsub!('{role}', role)
content.gsub!('{role}', role)
return receiver&.mail, title, content
else
return '', '', ''
end
return receiver&.mail, title, content
rescue => e rescue => e
Rails.logger.info("MessageTemplate::ProjectRole.get_email_message_content [ERROR] #{e}") Rails.logger.info("MessageTemplate::ProjectRole.get_email_message_content [ERROR] #{e}")
return '', '', '' return '', '', ''

View File

@ -159,150 +159,152 @@ class MessageTemplate::ProjectSettingChanged < MessageTemplate
end end
def self.get_email_message_content(receiver, operator, project, change_params) def self.get_email_message_content(receiver, operator, project, change_params)
return '', '', '' if change_params.blank?
if receiver.user_template_message_setting.present? if receiver.user_template_message_setting.present?
return '', '', '' unless receiver.user_template_message_setting.email_body["ManageProject::SettingChanged"] return '', '', '' unless receiver.user_template_message_setting.email_body["ManageProject::SettingChanged"]
end owner = project&.owner
return '', '', '' if change_params.blank? title = email_title
owner = project&.owner title.gsub!('{nickname2}', owner&.real_name)
title = email_title title.gsub!('{repository}', project&.name)
title.gsub!('{nickname2}', owner&.real_name)
title.gsub!('{repository}', project&.name)
content = email content = email
content.gsub!('{receiver}', receiver&.real_name) content.gsub!('{receiver}', receiver&.real_name)
content.gsub!('{baseurl}', base_url) content.gsub!('{baseurl}', base_url)
content.gsub!('{login1}', operator&.login) content.gsub!('{login1}', operator&.login)
content.gsub!('{nickname1}', operator&.real_name) content.gsub!('{nickname1}', operator&.real_name)
content.gsub!('{login2}', owner&.login) content.gsub!('{login2}', owner&.login)
content.gsub!('{nickname2}', owner&.real_name) content.gsub!('{nickname2}', owner&.real_name)
content.gsub!('{identifier}', project&.identifier) content.gsub!('{identifier}', project&.identifier)
content.gsub!('{repository}', project&.name) content.gsub!('{repository}', project&.name)
change_count = change_params.keys.size change_count = change_params.keys.size
# 项目名称更改 # 项目名称更改
if change_params[:name].present? if change_params[:name].present?
if change_count > 1
content.sub!('{ifname}', '<br/>')
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}', '<br/>')
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?
if change_count > 1 if change_count > 1
content.gsub!(/({ifdescription})(.*)({enddescription})/, '<br/>删除了项目简介') content.sub!('{ifname}', '<br/>')
else else
content.gsub!(/({ifdescription})(.*)({enddescription})/, '删除了项目简介') 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}', '<br/>')
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?
if change_count > 1
content.gsub!(/({ifdescription})(.*)({enddescription})/, '<br/>删除了项目简介')
else
content.gsub!(/({ifdescription})(.*)({enddescription})/, '删除了项目简介')
end
else
if change_count > 1
content.sub!('{ifdescription}', '<br/>')
else
content.sub!('{ifdescription}', '')
end
content.sub!('{enddescription}', '')
content.gsub!('{description}', change_params[:description][1])
end end
else else
if change_count > 1 content.gsub!(/({ifdescription})(.*)({enddescription})/, '')
content.sub!('{ifdescription}', '<br/>')
else
content.sub!('{ifdescription}', '')
end
content.sub!('{enddescription}', '')
content.gsub!('{description}', change_params[:description][1])
end end
else # 项目类别更改
content.gsub!(/({ifdescription})(.*)({enddescription})/, '') if change_params[:project_category_id].present?
end category = ProjectCategory.find_by_id(change_params[:project_category_id][1])
# 项目类别更改 if category.present?
if change_params[:project_category_id].present? if change_count > 1
category = ProjectCategory.find_by_id(change_params[:project_category_id][1]) content.sub!('{ifcategory}', '<br/>')
if category.present? else
if change_count > 1 content.sub!('{ifcategory}', '')
content.sub!('{ifcategory}', '<br/>') end
content.sub!('{endcategory}', '')
content.gsub!('{category}', category&.name)
else else
content.sub!('{ifcategory}', '') if change_count > 1
content.gsub!(/({ifcategory})(.*)({endcategory})/, '<br/>删除了项目类别')
else
content.gsub!(/({ifcategory})(.*)({endcategory})/, '删除了项目类别')
end
end end
content.sub!('{endcategory}', '')
content.gsub!('{category}', category&.name)
else else
if change_count > 1 content.gsub!(/({ifcategory})(.*)({endcategory})/, '')
content.gsub!(/({ifcategory})(.*)({endcategory})/, '<br/>删除了项目类别') 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}', '<br/>')
else
content.sub!('{iflanguage}', '')
end
content.sub!('{endlanguage}', '')
content.gsub!('{language}', language&.name)
else else
content.gsub!(/({ifcategory})(.*)({endcategory})/, '删除了项目类别') if change_count > 1
content.gsub!(/({iflanguage})(.*)({endlanguage})/, '<br/>删除了项目语言')
else
content.gsub!(/({iflanguage})(.*)({endlanguage})/, '删除了项目语言')
end
end end
else
content.gsub!(/({iflanguage})(.*)({endlanguage})/, '')
end end
else # 项目公私有更改
content.gsub!(/({ifcategory})(.*)({endcategory})/, '') if change_params[:is_public].present?
end permission = change_params[:is_public][1] ? '公有' : '私有'
# 项目语言更改
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 if change_count > 1
content.sub!('{iflanguage}', '<br/>') content.sub!('{ifpermission}', '<br/>')
else else
content.sub!('{iflanguage}', '') content.sub!('{ifpermission}', '')
end end
content.sub!('{endlanguage}', '') content.sub!('{endpermission}', '')
content.gsub!('{language}', language&.name) content.gsub!('{permission}', permission)
else 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 if change_count > 1
content.gsub!(/({iflanguage})(.*)({endlanguage})/, '<br/>删除了项目语言') content.sub!('{ifnavbar}', '<br/>')
else else
content.gsub!(/({iflanguage})(.*)({endlanguage})/, '删除了项目语言') content.sub!('{ifnavbar}', '')
end end
end content.sub!('{endnavbar}', '')
else content.gsub!('{navbar}', navbar)
content.gsub!(/({iflanguage})(.*)({endlanguage})/, '')
end
# 项目公私有更改
if change_params[:is_public].present?
permission = change_params[:is_public][1] ? '公有' : '私有'
if change_count > 1
content.sub!('{ifpermission}', '<br/>')
else else
content.sub!('{ifpermission}', '') content.gsub!(/({ifnavbar})(.*)({endnavbar})/, '')
end 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}', '<br/>')
else
content.sub!('{ifnavbar}', '')
end
content.sub!('{endnavbar}', '')
content.gsub!('{navbar}', navbar)
else
content.gsub!(/({ifnavbar})(.*)({endnavbar})/, '')
end
return receiver&.mail, title, content return receiver&.mail, title, content
else
return '', '', ''
end
rescue => e rescue => e
Rails.logger.info("MessageTemplate::ProjectSettingChanged.get_email_message_content [ERROR] #{e}") Rails.logger.info("MessageTemplate::ProjectSettingChanged.get_email_message_content [ERROR] #{e}")
return '', '', '' return '', '', ''

View File

@ -36,26 +36,28 @@ class MessageTemplate::PullRequestAssigned < MessageTemplate
def self.get_email_message_content(receiver, operator, pull_request) def self.get_email_message_content(receiver, operator, pull_request)
if receiver.user_template_message_setting.present? if receiver.user_template_message_setting.present?
return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::PullRequestAssigned"] return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::PullRequestAssigned"]
end project = pull_request&.project
project = pull_request&.project owner = project&.owner
owner = project&.owner title = email_title
title = email_title title.gsub!('{nickname1}', operator&.real_name)
title.gsub!('{nickname1}', operator&.real_name) title.gsub!('{nickname2}', owner&.real_name)
title.gsub!('{nickname2}', owner&.real_name) title.gsub!('{repository}', project&.name)
title.gsub!('{repository}', project&.name) content = email
content = email content.gsub!('{receiver}', receiver&.real_name)
content.gsub!('{receiver}', receiver&.real_name) content.gsub!('{nickname1}', operator&.real_name)
content.gsub!('{nickname1}', operator&.real_name) content.gsub!('{login1}', operator&.login)
content.gsub!('{login1}', operator&.login) content.gsub!('{nickname2}', owner&.real_name)
content.gsub!('{nickname2}', owner&.real_name) content.gsub!('{login2}', owner&.login)
content.gsub!('{login2}', owner&.login) content.gsub!('{identifier}', project&.identifier)
content.gsub!('{identifier}', project&.identifier) content.gsub!('{repository}', project&.name)
content.gsub!('{repository}', project&.name) content.gsub!('{baseurl}', base_url)
content.gsub!('{baseurl}', base_url) content.gsub!('{title}', pull_request&.title)
content.gsub!('{title}', pull_request&.title) content.gsub!('{id}', pull_request&.id.to_s)
content.gsub!('{id}', pull_request&.id.to_s)
return receiver&.mail, title, content return receiver&.mail, title, content
else
return '', '', ''
end
rescue => e rescue => e
Rails.logger.info("MessageTemplate::PullRequestAssigned.get_email_message_content [ERROR] #{e}") Rails.logger.info("MessageTemplate::PullRequestAssigned.get_email_message_content [ERROR] #{e}")
return '', '', '' return '', '', ''

View File

@ -103,89 +103,92 @@ class MessageTemplate::PullRequestChanged < MessageTemplate
return '', '', '' if change_params.blank? return '', '', '' if change_params.blank?
if receiver.user_template_message_setting.present? if receiver.user_template_message_setting.present?
return '', '', '' unless receiver.user_template_message_setting.email_body["CreateOrAssign::PullRequestChanged"] return '', '', '' unless receiver.user_template_message_setting.email_body["CreateOrAssign::PullRequestChanged"]
end project = pull_request&.project
project = pull_request&.project owner = project&.owner
owner = project&.owner title = email_title
title = email_title title.gsub!('{title}', pull_request&.title)
title.gsub!('{title}', pull_request&.title) content = email
content = email content.gsub!('{receiver}', receiver&.real_name)
content.gsub!('{receiver}', receiver&.real_name) content.gsub!('{nickname1}', operator&.real_name)
content.gsub!('{nickname1}', operator&.real_name) content.gsub!('{login1}', operator&.login)
content.gsub!('{login1}', operator&.login) content.gsub!('{nickname2}', owner&.real_name)
content.gsub!('{nickname2}', owner&.real_name) content.gsub!('{login2}', owner&.login)
content.gsub!('{login2}', owner&.login) content.gsub!('{identifier}', project&.identifier)
content.gsub!('{identifier}', project&.identifier) content.gsub!('{repository}', project&.name)
content.gsub!('{repository}', project&.name) content.gsub!('{baseurl}', base_url)
content.gsub!('{baseurl}', base_url) content.gsub!('{title}', pull_request&.title)
content.gsub!('{title}', pull_request&.title) content.gsub!('{id}', pull_request&.id.to_s)
content.gsub!('{id}', pull_request&.id.to_s)
change_count = change_params.keys.size change_count = change_params.keys.size
# 合并请求审查成员修改 # 合并请求审查成员修改
if change_params[:assigned_to_id].present? if change_params[:assigned_to_id].present?
assigner1 = User.find_by_id(change_params[:assigned_to_id][0]) assigner1 = User.find_by_id(change_params[:assigned_to_id][0])
assigner2 = User.find_by_id(change_params[:assigned_to_id][1]) assigner2 = User.find_by_id(change_params[:assigned_to_id][1])
if change_count > 1 if change_count > 1
content.sub!('{ifassigner}', '<br/>') content.sub!('{ifassigner}', '<br/>')
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 else
content.sub!('{ifassigner}', '') content.gsub!(/({ifassigner})(.*)({endassigner})/, '')
end end
content.sub!('{endassigner}', '') # 合并请求里程碑修改
content.gsub!('{assigner1}', assigner1.present? ? assigner1&.real_name : '未指派成员') if change_params[:fixed_version_id].present?
content.gsub!('{assigner2}', assigner2.present? ? assigner2&.real_name : '未指派成员') fix_version1 = Version.find_by_id(change_params[:fixed_version_id][0])
else fix_version2 = Version.find_by_id(change_params[:fixed_version_id][1])
content.gsub!(/({ifassigner})(.*)({endassigner})/, '') if change_count > 1
end content.sub!('{ifmilestone}', '<br/>')
# 合并请求里程碑修改 else
if change_params[:fixed_version_id].present? content.sub!('{ifmilestone}', '')
fix_version1 = Version.find_by_id(change_params[:fixed_version_id][0]) end
fix_version2 = Version.find_by_id(change_params[:fixed_version_id][1]) content.sub!('{endmilestone}', '')
if change_count > 1 content.gsub!('{milestone1}', fix_version1.present? ? fix_version1&.name : '未选择里程碑')
content.sub!('{ifmilestone}', '<br/>') content.gsub!('{milestone2}', fix_version2.present? ? fix_version2&.name : '未选择里程碑')
else else
content.sub!('{ifmilestone}', '') content.gsub!(/({ifmilestone})(.*)({endmilestone})/, '')
end end
content.sub!('{endmilestone}', '') # 合并请求标记修改
content.gsub!('{milestone1}', fix_version1.present? ? fix_version1&.name : '未选择里程碑') if change_params[:issue_tags_value].present?
content.gsub!('{milestone2}', fix_version2.present? ? fix_version2&.name : '未选择里程碑') issue_tags1 = IssueTag.where(id: change_params[:issue_tags_value][0]).distinct
else issue_tags2 = IssueTag.where(id: change_params[:issue_tags_value][1]).distinct
content.gsub!(/({ifmilestone})(.*)({endmilestone})/, '') tag1 = issue_tags1.pluck(:name).join(",").blank? ? '未选择标记' : issue_tags1.pluck(:name).join(",")
end tag2 = issue_tags2.pluck(:name).join(",").blank? ? '未选择标记' : issue_tags2.pluck(:name).join(",")
# 合并请求标记修改 if change_count > 1
if change_params[:issue_tags_value].present? content.sub!('{iftag}', '<br/>')
issue_tags1 = IssueTag.where(id: change_params[:issue_tags_value][0]).distinct else
issue_tags2 = IssueTag.where(id: change_params[:issue_tags_value][1]).distinct content.sub!('{iftag}', '')
tag1 = issue_tags1.pluck(:name).join(",").blank? ? '未选择标记' : issue_tags1.pluck(:name).join(",") end
tag2 = issue_tags2.pluck(:name).join(",").blank? ? '未选择标记' : issue_tags2.pluck(:name).join(",") content.sub!('{endtag}', '')
if change_count > 1 content.gsub!('{tag1}', tag1)
content.sub!('{iftag}', '<br/>') content.gsub!('{tag2}', tag2)
else else
content.sub!('{iftag}', '') content.gsub!(/({iftag})(.*)({endtag})()/, '')
end end
content.sub!('{endtag}', '') # 合并请求优先级修改
content.gsub!('{tag1}', tag1) if change_params[:priority_id].present?
content.gsub!('{tag2}', tag2) priority1 = IssuePriority.find_by_id(change_params[:priority_id][0])
else priority2 = IssuePriority.find_by_id(change_params[:priority_id][1])
content.gsub!(/({iftag})(.*)({endtag})()/, '') if change_count > 1
end content.sub!('{ifpriority}', '<br/>')
# 合并请求优先级修改 else
if change_params[:priority_id].present? content.sub!('{ifpriority}', '')
priority1 = IssuePriority.find_by_id(change_params[:priority_id][0]) end
priority2 = IssuePriority.find_by_id(change_params[:priority_id][1])
if change_count > 1
content.sub!('{ifpriority}', '<br/>')
else
content.sub!('{ifpriority}', '') content.sub!('{ifpriority}', '')
content.sub!('{endpriority}', '')
content.gsub!('{priority1}', priority1&.name)
content.gsub!('{priority2}', priority2&.name)
else
content.gsub!(/({ifpriority})(.*)({endpriority})/, '')
end end
content.sub!('{ifpriority}', '')
content.sub!('{endpriority}', '') return receiver&.mail, title, content
content.gsub!('{priority1}', priority1&.name)
content.gsub!('{priority2}', priority2&.name)
else else
content.gsub!(/({ifpriority})(.*)({endpriority})/, '') return '', '', ''
end end
return receiver&.mail, title, content
rescue => e rescue => e
Rails.logger.info("MessageTemplate::PullRequestChanged.get_email_message_content [ERROR] #{e}") Rails.logger.info("MessageTemplate::PullRequestChanged.get_email_message_content [ERROR] #{e}")
return '', '', '' return '', '', ''

View File

@ -36,24 +36,27 @@ class MessageTemplate::PullRequestClosed < MessageTemplate
def self.get_email_message_content(receiver, operator, pull_request) def self.get_email_message_content(receiver, operator, pull_request)
if receiver.user_template_message_setting.present? if receiver.user_template_message_setting.present?
return '', '', '' unless receiver.user_template_message_setting.email_body["CreateOrAssign::PullRequestChanged"] return '', '', '' unless receiver.user_template_message_setting.email_body["CreateOrAssign::PullRequestChanged"]
end project = pull_request&.project
project = pull_request&.project owner = project&.owner
owner = project&.owner title = email_title
title = email_title title.gsub!('{title}', pull_request&.title)
title.gsub!('{title}', pull_request&.title) content = email
content = email content.gsub!('{receiver}', receiver&.real_name)
content.gsub!('{receiver}', receiver&.real_name) content.gsub!('{nickname1}', operator&.real_name)
content.gsub!('{nickname1}', operator&.real_name) content.gsub!('{login1}', operator&.login)
content.gsub!('{login1}', operator&.login) content.gsub!('{nickname2}', owner&.real_name)
content.gsub!('{nickname2}', owner&.real_name) content.gsub!('{login2}', owner&.login)
content.gsub!('{login2}', owner&.login) content.gsub!('{identifier}', project&.identifier)
content.gsub!('{identifier}', project&.identifier) content.gsub!('{repository}', project&.name)
content.gsub!('{repository}', project&.name) content.gsub!('{baseurl}', base_url)
content.gsub!('{baseurl}', base_url) content.gsub!('{title}', pull_request&.title)
content.gsub!('{title}', pull_request&.title) content.gsub!('{id}', pull_request&.id.to_s)
content.gsub!('{id}', pull_request&.id.to_s)
return receiver&.mail, title, content
else
return '', '', ''
end
return receiver&.mail, title, content
rescue => e rescue => e
Rails.logger.info("MessageTemplate::PullRequestClosed.get_email_message_content [ERROR] #{e}") Rails.logger.info("MessageTemplate::PullRequestClosed.get_email_message_content [ERROR] #{e}")
return '', '', '' return '', '', ''

View File

@ -36,24 +36,26 @@ class MessageTemplate::PullRequestMerged < MessageTemplate
def self.get_email_message_content(receiver, operator, pull_request) def self.get_email_message_content(receiver, operator, pull_request)
if receiver.user_template_message_setting.present? if receiver.user_template_message_setting.present?
return '', '', '' unless receiver.user_template_message_setting.email_body["CreateOrAssign::PullRequestChanged"] return '', '', '' unless receiver.user_template_message_setting.email_body["CreateOrAssign::PullRequestChanged"]
end project = pull_request&.project
project = pull_request&.project owner = project&.owner
owner = project&.owner title = email_title
title = email_title title.gsub!('{title}', pull_request&.title)
title.gsub!('{title}', pull_request&.title) content = email
content = email content.gsub!('{receiver}', receiver&.real_name)
content.gsub!('{receiver}', receiver&.real_name) content.gsub!('{nickname1}', operator&.real_name)
content.gsub!('{nickname1}', operator&.real_name) content.gsub!('{login1}', operator&.login)
content.gsub!('{login1}', operator&.login) content.gsub!('{nickname2}', owner&.real_name)
content.gsub!('{nickname2}', owner&.real_name) content.gsub!('{login2}', owner&.login)
content.gsub!('{login2}', owner&.login) content.gsub!('{identifier}', project&.identifier)
content.gsub!('{identifier}', project&.identifier) content.gsub!('{repository}', project&.name)
content.gsub!('{repository}', project&.name) content.gsub!('{baseurl}', base_url)
content.gsub!('{baseurl}', base_url) content.gsub!('{title}', pull_request&.title)
content.gsub!('{title}', pull_request&.title) content.gsub!('{id}', pull_request&.id.to_s)
content.gsub!('{id}', pull_request&.id.to_s)
return receiver&.mail, title, content return receiver&.mail, title, content
else
return '', '', ''
end
rescue => e rescue => e
Rails.logger.info("MessageTemplate::PullRequestMerged.get_email_message_content [ERROR] #{e}") Rails.logger.info("MessageTemplate::PullRequestMerged.get_email_message_content [ERROR] #{e}")
return '', '', '' return '', '', ''

View File

@ -44,17 +44,17 @@ class UserTemplateMessageSetting < ApplicationRecord
def self.init_email_body def self.init_email_body
{ {
"Normal::Permission": true, "Normal::Permission": false,
"Normal::Project": true, "Normal::Project": false,
"Normal::Organization": true, "Normal::Organization": false,
"Normal::IssueAssigned": true, "Normal::IssueAssigned": false,
"Normal::PullRequestAssigned": true, "Normal::PullRequestAssigned": false,
"CreateOrAssign::IssueChanged": true, "CreateOrAssign::IssueChanged": false,
"CreateOrAssign::PullRequestChanged": true, "CreateOrAssign::PullRequestChanged": false,
"ManageProject::Issue": true, "ManageProject::Issue": false,
"ManageProject::PullRequest": true, "ManageProject::PullRequest": false,
"ManageProject::Member": true, "ManageProject::Member": false,
"ManageProject::SettingChanged": true, "ManageProject::SettingChanged": false,
}.stringify_keys! }.stringify_keys!
end end

View File

@ -196,6 +196,7 @@ class Cache::V2::ProjectCommonService < ApplicationService
def reset_project_common def reset_project_common
load_project load_project
return unless @project.present?
return unless @project.is_full_public return unless @project.is_full_public
$redis_cache.del(project_common_key) $redis_cache.del(project_common_key)
reset_project_owner_id reset_project_owner_id