| @@ -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 '', '', '' | |||
| @@ -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}', '<br/>') | |||
| 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}', '<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 | |||
| 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}', '<br/>') | |||
| # 易修状态修改 | |||
| 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}', '<br/>') | |||
| 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}', '<br/>') | |||
| # 易修类型修改 | |||
| 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}', '<br/>') | |||
| 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}', '<br/>') | |||
| # 易修里程碑修改 | |||
| 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}', '<br/>') | |||
| 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}', '<br/>') | |||
| # 易修标记修改 | |||
| 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}', '<br/>') | |||
| 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}', '<br/>') | |||
| # 易修优先级修改 | |||
| 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}', '<br/>') | |||
| 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}', '<br/>') | |||
| # 易修完成度修改 | |||
| 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}', '<br/>') | |||
| 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}', '<br/>') | |||
| # 易修指定分支修改 | |||
| 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}', '<br/>') | |||
| 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}', '<br/>') | |||
| # 易修开始日期修改 | |||
| 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}', '<br/>') | |||
| 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}', '<br/>') | |||
| # 易修结束日期修改 | |||
| 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}', '<br/>') | |||
| 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) | |||
| return receiver&.mail, title, content | |||
| else | |||
| content.gsub!(/({ifduedate})(.*)({endduedate})/, '') | |||
| return '', '', '' | |||
| end | |||
| return receiver&.mail, title, content | |||
| rescue => e | |||
| Rails.logger.info("MessageTemplate::IssueChanged.get_email_message_content [ERROR] #{e}") | |||
| return '', '', '' | |||
| @@ -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 '', '', '' | |||
| @@ -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 '', '', '' | |||
| @@ -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 '', '', '' | |||
| @@ -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 '', '', '' | |||
| @@ -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 '', '', '' | |||
| @@ -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"] | |||
| 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 | |||
| 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 | |||
| Rails.logger.info("MessageTemplate::ProjectJoined.get_email_message_content [ERROR] #{e}") | |||
| return '', '', '' | |||
| @@ -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"] | |||
| 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 | |||
| 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 | |||
| Rails.logger.info("MessageTemplate::ProjectLeft.get_email_message_content [ERROR] #{e}") | |||
| return '', '', '' | |||
| @@ -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 '', '', '' | |||
| @@ -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 '', '', '' | |||
| @@ -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 '', '', '' | |||
| @@ -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 '', '', '' | |||
| @@ -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}', '<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? | |||
| 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})/, '<br/>删除了项目简介') | |||
| content.sub!('{ifname}', '<br/>') | |||
| 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!('{ifdescription}', '<br/>') | |||
| content.sub!('{ifidentifier}', '<br/>') | |||
| else | |||
| content.sub!('{ifdescription}', '') | |||
| content.sub!('{ifidentifier}', '') | |||
| end | |||
| content.sub!('{enddescription}', '') | |||
| content.gsub!('{description}', change_params[:description][1]) | |||
| content.sub!('{endidentifier}', '') | |||
| content.gsub!('{identifier}', change_params[:identifier][1]) | |||
| else | |||
| content.gsub!(/({ifidentifier})(.*)({endidentifier})/, '') | |||
| 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_count > 1 | |||
| content.sub!('{ifcategory}', '<br/>') | |||
| # 项目简介更改 | |||
| 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 | |||
| content.sub!('{ifcategory}', '') | |||
| if change_count > 1 | |||
| content.sub!('{ifdescription}', '<br/>') | |||
| 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})/, '<br/>删除了项目类别') | |||
| 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}', '<br/>') | |||
| else | |||
| content.sub!('{ifcategory}', '') | |||
| end | |||
| content.sub!('{endcategory}', '') | |||
| content.gsub!('{category}', category&.name) | |||
| else | |||
| if change_count > 1 | |||
| content.gsub!(/({ifcategory})(.*)({endcategory})/, '<br/>删除了项目类别') | |||
| 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}', '<br/>') | |||
| # 项目语言更改 | |||
| 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 | |||
| content.sub!('{iflanguage}', '') | |||
| if change_count > 1 | |||
| content.gsub!(/({iflanguage})(.*)({endlanguage})/, '<br/>删除了项目语言') | |||
| 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})/, '<br/>删除了项目语言') | |||
| content.sub!('{ifpermission}', '<br/>') | |||
| 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}', '<br/>') | |||
| 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}', '<br/>') | |||
| # 项目导航更改 | |||
| 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.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 '', '', '' | |||
| @@ -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 '', '', '' | |||
| @@ -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}', '<br/>') | |||
| 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}', '<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 | |||
| 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}', '<br/>') | |||
| # 合并请求里程碑修改 | |||
| 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}', '<br/>') | |||
| 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}', '<br/>') | |||
| # 合并请求标记修改 | |||
| 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}', '<br/>') | |||
| 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}', '<br/>') | |||
| # 合并请求优先级修改 | |||
| 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}', '<br/>') | |||
| 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 '', '', '' | |||
| @@ -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 '', '', '' | |||
| @@ -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 '', '', '' | |||
| @@ -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 | |||
| @@ -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 | |||