Merge pull request 'merge develop to standalone_develop' (#267) from develop into standalone_develop
|
@ -43,7 +43,7 @@ class CompareController < ApplicationController
|
|||
|
||||
def load_compare_params
|
||||
@base = Addressable::URI.unescape(params[:base])
|
||||
@head = params[:head].include?('json') ? params[:head]&.split('.json')[0] : params[:head]
|
||||
@head = params[:head].include?('.json') ? params[:head][0..-6] : params[:head]
|
||||
|
||||
end
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ class ForksController < ApplicationController
|
|||
if current_user&.id == @project.user_id
|
||||
render_result(-1, "自己不能fork自己的项目")
|
||||
elsif Project.exists?(user_id: current_user.id, identifier: @project.identifier)
|
||||
render_result(-1, "fork失败,你已拥有了这个项目")
|
||||
render_result(0, "fork失败,你已拥有了这个项目")
|
||||
end
|
||||
# return if current_user != @project.owner
|
||||
# render_result(-1, "自己不能fork自己的项目")
|
||||
|
|
|
@ -2,7 +2,7 @@ class IssueTagsController < ApplicationController
|
|||
before_action :require_login, except: [:index]
|
||||
before_action :load_repository
|
||||
before_action :set_user
|
||||
before_action :check_issue_permission, except: :index
|
||||
before_action :check_issue_tags_permission
|
||||
before_action :set_issue_tag, only: [:edit, :update, :destroy]
|
||||
|
||||
|
||||
|
@ -122,9 +122,9 @@ class IssueTagsController < ApplicationController
|
|||
@user = @project.owner
|
||||
end
|
||||
|
||||
def check_issue_permission
|
||||
unless @project.member?(current_user) || current_user.admin?
|
||||
normal_status(-1, "您没有权限")
|
||||
def check_issue_tags_permission
|
||||
unless @project.manager?(current_user) || current_user.admin?
|
||||
return render_forbidden('你不是管理员,没有权限操作')
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ class MembersController < ApplicationController
|
|||
before_action :load_project
|
||||
before_action :find_user_with_id, only: %i[create remove change_role]
|
||||
before_action :check_user_profile_completed, only: [:create]
|
||||
before_action :operate!, except: %i[index]
|
||||
before_action :operate!
|
||||
before_action :check_member_exists!, only: %i[create]
|
||||
before_action :check_member_not_exists!, only: %i[remove change_role]
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@ class Organizations::OrganizationsController < Organizations::BaseController
|
|||
@organization.save!
|
||||
sync_organization_extension!
|
||||
|
||||
Gitea::Organization::UpdateService.call(@organization.gitea_token, login, @organization.reload)
|
||||
Gitea::Organization::UpdateService.call(current_user.gitea_token, login, @organization.reload)
|
||||
Util.write_file(@image, avatar_path(@organization)) if params[:image].present?
|
||||
end
|
||||
rescue Exception => e
|
||||
|
@ -57,10 +57,14 @@ class Organizations::OrganizationsController < Organizations::BaseController
|
|||
def destroy
|
||||
tip_exception("密码不正确") unless current_user.check_password?(password)
|
||||
ActiveRecord::Base.transaction do
|
||||
Gitea::Organization::DeleteService.call(@organization.gitea_token, @organization.login)
|
||||
@organization.destroy!
|
||||
gitea_status, gitea_message = Gitea::Organization::DeleteService.call(current_user.gitea_token, @organization.login)
|
||||
if gitea_status == 204
|
||||
@organization.destroy!
|
||||
render_ok
|
||||
else
|
||||
tip_exception("当组织内含有仓库时,无法删除此组织")
|
||||
end
|
||||
end
|
||||
render_ok
|
||||
rescue Exception => e
|
||||
uid_logger_error(e.message)
|
||||
tip_exception(e.message)
|
||||
|
|
|
@ -56,6 +56,7 @@ class PullRequestsController < ApplicationController
|
|||
end
|
||||
|
||||
def create
|
||||
return render_forbidden("你没有权限操作.") unless @project.operator?(current_user)
|
||||
ActiveRecord::Base.transaction do
|
||||
@pull_request, @gitea_pull_request = PullRequests::CreateService.call(current_user, @owner, @project, params)
|
||||
if @gitea_pull_request[:status] == :success
|
||||
|
@ -78,6 +79,7 @@ class PullRequestsController < ApplicationController
|
|||
end
|
||||
|
||||
def update
|
||||
return render_forbidden("你没有权限操作.") unless @project.operator?(current_user)
|
||||
if params[:title].nil?
|
||||
normal_status(-1, "名称不能为空")
|
||||
elsif params[:issue_tag_ids].nil?
|
||||
|
@ -197,7 +199,7 @@ class PullRequestsController < ApplicationController
|
|||
def check_can_merge
|
||||
target_head = params[:head] #源分支
|
||||
target_base = params[:base] #目标分支
|
||||
is_original = params[:is_original]
|
||||
is_original = params[:is_original] || false
|
||||
if target_head.blank? || target_base.blank?
|
||||
normal_status(-2, "请选择分支")
|
||||
elsif target_head === target_base && !is_original
|
||||
|
@ -228,11 +230,11 @@ class PullRequestsController < ApplicationController
|
|||
|
||||
private
|
||||
def load_pull_request
|
||||
@pull_request = PullRequest.find params[:id]
|
||||
@pull_request = @project.pull_requests.where(gitea_number: params[:id]).where.not(id: params[:id]).take || PullRequest.find_by_id(params[:id])
|
||||
end
|
||||
|
||||
def find_pull_request
|
||||
@pull_request = PullRequest.find_by_id(params[:id])
|
||||
@pull_request = @project.pull_requests.where(gitea_number: params[:id]).where.not(id: params[:id]).take || PullRequest.find_by_id(params[:id])
|
||||
@issue = @pull_request&.issue
|
||||
if @pull_request.blank?
|
||||
normal_status(-1, "合并请求不存在")
|
||||
|
|
|
@ -32,7 +32,8 @@ class UsersController < ApplicationController
|
|||
@waiting_applied_messages = @user.applied_messages.waiting
|
||||
@common_applied_transfer_projects = AppliedTransferProject.where(owner_id: @user.id).common + AppliedTransferProject.where(owner_id: Organization.joins(team_users: :team).where(team_users: {user_id: @user.id}, teams: {authorize: %w(admin owner)} )).common
|
||||
@common_applied_projects = AppliedProject.where(project_id: @user.full_admin_projects).common
|
||||
@undo_events = @waiting_applied_messages.size + @common_applied_transfer_projects.size + @common_applied_projects.size
|
||||
#@undo_events = @waiting_applied_messages.size + @common_applied_transfer_projects.size + @common_applied_projects.size
|
||||
@undo_events = @common_applied_transfer_projects.size + @common_applied_projects.size
|
||||
else
|
||||
@waiting_applied_messages = AppliedMessage.none
|
||||
@common_applied_transfer_projects = AppliedTransferProject.none
|
||||
|
|
|
@ -8,4 +8,11 @@ class Organizations::CreateForm < BaseForm
|
|||
validates :description, length: { maximum: 200 }
|
||||
validates :name, format: { with: NAME_REGEX, multiline: true, message: "只能含有数字、字母、下划线且不能以下划线开头和结尾" }
|
||||
|
||||
validate do
|
||||
check_name(name) unless name.blank?
|
||||
end
|
||||
|
||||
def check_name(name)
|
||||
raise "组织账号已被使用." if Owner.where(login: name.strip).exists?
|
||||
end
|
||||
end
|
||||
|
|
|
@ -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)
|
||||
else
|
||||
content.gsub!(/({ifduedate})(.*)({endduedate})/, '')
|
||||
end
|
||||
|
||||
return receiver&.mail, title, content
|
||||
return receiver&.mail, title, content
|
||||
else
|
||||
return '', '', ''
|
||||
end
|
||||
|
||||
rescue => e
|
||||
Rails.logger.info("MessageTemplate::IssueChanged.get_email_message_content [ERROR] #{e}")
|
||||
return '', '', ''
|
||||
|
|
|
@ -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"]
|
||||
end
|
||||
title = email_title
|
||||
title.gsub!('{repository}', project&.name)
|
||||
|
||||
content = email
|
||||
content.gsub!('{receiver}', receiver&.real_name)
|
||||
content.gsub!('{baseurl}', base_url)
|
||||
content.gsub!('{login}', project&.owner&.login)
|
||||
content.gsub!('{identifier}', project&.identifier)
|
||||
content.gsub!('{nickname}', project&.owner&.real_name)
|
||||
content.gsub!('{repository}', project&.name)
|
||||
title = email_title
|
||||
title.gsub!('{repository}', project&.name)
|
||||
|
||||
content = email
|
||||
content.gsub!('{receiver}', receiver&.real_name)
|
||||
content.gsub!('{baseurl}', base_url)
|
||||
content.gsub!('{login}', project&.owner&.login)
|
||||
content.gsub!('{identifier}', project&.identifier)
|
||||
content.gsub!('{nickname}', project&.owner&.real_name)
|
||||
content.gsub!('{repository}', project&.name)
|
||||
|
||||
return receiver&.mail, title, content
|
||||
return receiver&.mail, title, content
|
||||
else
|
||||
return '', '', ''
|
||||
end
|
||||
|
||||
rescue => e
|
||||
Rails.logger.info("MessageTemplate::ProjectJoined.get_email_message_content [ERROR] #{e}")
|
||||
return '', '', ''
|
||||
|
|
|
@ -33,19 +33,22 @@ class MessageTemplate::ProjectLeft < MessageTemplate
|
|||
def self.get_email_message_content(receiver, project)
|
||||
if receiver.user_template_message_setting.present?
|
||||
return '', '', '' unless receiver.user_template_message_setting.email_body["Normal::Project"]
|
||||
end
|
||||
title = email_title
|
||||
title.gsub!('{repository}', project&.name)
|
||||
|
||||
content = email
|
||||
content.gsub!('{receiver}', receiver&.real_name)
|
||||
content.gsub!('{baseurl}', base_url)
|
||||
content.gsub!('{login}', project&.owner&.login)
|
||||
content.gsub!('{identifier}', project&.identifier)
|
||||
content.gsub!('{nickname}', project&.owner&.real_name)
|
||||
content.gsub!('{repository}', project&.name)
|
||||
title = email_title
|
||||
title.gsub!('{repository}', project&.name)
|
||||
|
||||
content = email
|
||||
content.gsub!('{receiver}', receiver&.real_name)
|
||||
content.gsub!('{baseurl}', base_url)
|
||||
content.gsub!('{login}', project&.owner&.login)
|
||||
content.gsub!('{identifier}', project&.identifier)
|
||||
content.gsub!('{nickname}', project&.owner&.real_name)
|
||||
content.gsub!('{repository}', project&.name)
|
||||
|
||||
return receiver&.mail, title, content
|
||||
return receiver&.mail, title, content
|
||||
else
|
||||
return '', '', ''
|
||||
end
|
||||
|
||||
rescue => e
|
||||
Rails.logger.info("MessageTemplate::ProjectLeft.get_email_message_content [ERROR] #{e}")
|
||||
return '', '', ''
|
||||
|
|
|
@ -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
|
||||
if change_count > 1
|
||||
content.sub!('{ifdescription}', '<br/>')
|
||||
else
|
||||
content.sub!('{ifdescription}', '')
|
||||
end
|
||||
content.sub!('{enddescription}', '')
|
||||
content.gsub!('{description}', change_params[:description][1])
|
||||
content.gsub!(/({ifname})(.*)({endname})/, '')
|
||||
end
|
||||
else
|
||||
content.gsub!(/({ifdescription})(.*)({enddescription})/, '')
|
||||
end
|
||||
# 项目类别更改
|
||||
if change_params[:project_category_id].present?
|
||||
category = ProjectCategory.find_by_id(change_params[:project_category_id][1])
|
||||
if category.present?
|
||||
# 项目标识更改
|
||||
if change_params[:identifier].present?
|
||||
if change_count > 1
|
||||
content.sub!('{ifcategory}', '<br/>')
|
||||
content.sub!('{ifidentifier}', '<br/>')
|
||||
else
|
||||
content.sub!('{ifcategory}', '')
|
||||
content.sub!('{ifidentifier}', '')
|
||||
end
|
||||
content.sub!('{endidentifier}', '')
|
||||
content.gsub!('{identifier}', change_params[:identifier][1])
|
||||
else
|
||||
content.gsub!(/({ifidentifier})(.*)({endidentifier})/, '')
|
||||
end
|
||||
# 项目简介更改
|
||||
if change_params[:description].present?
|
||||
if change_params[:description][1].blank?
|
||||
if change_count > 1
|
||||
content.gsub!(/({ifdescription})(.*)({enddescription})/, '<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
|
||||
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 '', '', ''
|
||||
|
|
|
@ -130,7 +130,7 @@ class Project < ApplicationRecord
|
|||
after_create :incre_user_statistic, :incre_platform_statistic
|
||||
after_save :check_project_members, :reset_cache_data
|
||||
before_save :set_invite_code, :reset_unmember_followed, :set_recommend_and_is_pinned
|
||||
before_destroy :decre_project_common
|
||||
before_destroy :decre_project_common, :decre_forked_from_project_count
|
||||
after_destroy :decre_user_statistic, :decre_platform_statistic
|
||||
scope :project_statics_select, -> {select(:id,:name, :is_public, :identifier, :status, :project_type, :user_id, :forked_count, :description, :visits, :project_category_id, :project_language_id, :license_id, :ignore_id, :watchers_count, :created_on)}
|
||||
scope :no_anomory_projects, -> {where("projects.user_id is not null and projects.user_id != ?", 2)}
|
||||
|
@ -172,6 +172,14 @@ class Project < ApplicationRecord
|
|||
CacheAsyncClearJob.perform_later('project_common_service', self.id)
|
||||
end
|
||||
|
||||
def decre_forked_from_project_count
|
||||
forked_project = self.forked_from_project
|
||||
if forked_project.present?
|
||||
forked_project.decrement(:forked_count, 1)
|
||||
forked_project.save
|
||||
end
|
||||
end
|
||||
|
||||
def incre_user_statistic
|
||||
CacheAsyncSetJob.perform_later("user_statistic_service", {project_count: 1, project_language_count_key: self.project_language&.name, project_language_count: 1}, self.user_id)
|
||||
end
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -144,6 +144,8 @@ class Gitea::ClientService < ApplicationService
|
|||
{status: 403, message: '你没有权限操作!'}
|
||||
when 404
|
||||
{status: 404, message: '你访问的链接不存在!'}
|
||||
when 500
|
||||
{status: 500, message: ''}
|
||||
else
|
||||
if response&.body.blank?
|
||||
message = "请求失败"
|
||||
|
|
|
@ -94,7 +94,7 @@ class PullRequests::CreateService < ApplicationService
|
|||
user: @current_user,
|
||||
issue: pull_issue,
|
||||
fork_project_id: @params[:fork_project_id],
|
||||
is_original: @params[:is_original],
|
||||
is_original: is_original,
|
||||
files_count: @params[:files_count] || 0,
|
||||
commits_count: @params[:commits_count] || 0
|
||||
})
|
||||
|
@ -145,7 +145,13 @@ class PullRequests::CreateService < ApplicationService
|
|||
raise "title参数不能为空" if @params[:title].blank?
|
||||
raise "head参数不能为空" if @params[:head].blank?
|
||||
raise "base参数不能为空" if @params[:base].blank?
|
||||
raise "分支内容相同,无需创建合并请求" if @params[:head] === @params[:base] && !is_original
|
||||
raise "合并请求已存在" if @project&.pull_requests.where(head: @params[:head], base: @params[:base], status: 0, is_original: is_original, fork_project_id: @params[:fork_project_id]).present?
|
||||
raise @pull_issue.errors.full_messages.join(", ") unless pull_issue.valid?
|
||||
raise @pull_request.errors.full_messages.join(", ") unless pull_request.valid?
|
||||
end
|
||||
|
||||
def is_original
|
||||
@params[:is_original] || false
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,13 +1,17 @@
|
|||
project = object.project
|
||||
json.project do
|
||||
json.id project.id
|
||||
json.identifier project.identifier
|
||||
json.name project.name
|
||||
json.description project.description
|
||||
json.is_public project.is_public
|
||||
json.owner do
|
||||
json.partial! "/users/user_simple", locals: {user: project.owner}
|
||||
if project.present?
|
||||
json.project do
|
||||
json.id project.id
|
||||
json.identifier project.identifier
|
||||
json.name project.name
|
||||
json.description project.description
|
||||
json.is_public project.is_public
|
||||
json.owner do
|
||||
json.partial! "/users/user_simple", locals: {user: project.owner}
|
||||
end
|
||||
end
|
||||
else
|
||||
json.project nil
|
||||
end
|
||||
json.user do
|
||||
json.partial! "/users/user_simple", locals: {user: object.user}
|
||||
|
|
|
@ -14,6 +14,7 @@ json.issues do
|
|||
json.array! @issues.to_a do |issue|
|
||||
pr = issue.pull_request
|
||||
json.pull_request_id pr.id
|
||||
json.pull_request_number pr.gitea_number
|
||||
json.pull_request_status pr.status
|
||||
json.pull_request_head pr.head
|
||||
json.pull_request_base pr.base
|
||||
|
|
|
@ -16,7 +16,7 @@ zh-CN:
|
|||
'agreed': '已同意'
|
||||
trend:
|
||||
Issue: 易修(Issue)
|
||||
PullRequest: 合并请求
|
||||
PullRequest: 合并请求(PR)
|
||||
VersionRelease: 版本发布
|
||||
create: 创建了
|
||||
journal: 回复了
|
||||
|
|
|
@ -12,12 +12,27 @@
|
|||
body {
|
||||
font-family: "微软雅黑","宋体";
|
||||
background: #fff;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
h1 {
|
||||
font-size: 1.5em;
|
||||
}
|
||||
p {
|
||||
font-size: 0.8em;
|
||||
img{
|
||||
vertical-align: middle;
|
||||
border-style: none;
|
||||
}
|
||||
a{
|
||||
text-decoration: none;
|
||||
}
|
||||
.font-16{
|
||||
font-size: 16px !important;
|
||||
}
|
||||
.mt56{
|
||||
margin-top: 56px;
|
||||
}
|
||||
.color-blue{
|
||||
color:#466AFF !important;
|
||||
}
|
||||
.h_content{
|
||||
text-align: center;
|
||||
|
@ -33,6 +48,32 @@
|
|||
align-items: center;
|
||||
display: -webkit-flex;
|
||||
}
|
||||
.edu-txt-center {
|
||||
text-align: center !important;
|
||||
}
|
||||
.newTable{
|
||||
background-color: #F0F5FF;
|
||||
position: relative;
|
||||
height: 100vh;
|
||||
text-align: center;
|
||||
}
|
||||
.newMargin{
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.mainImg {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
z-index: 10;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
$(function(){
|
||||
|
@ -49,14 +90,21 @@
|
|||
<p>An error occurred on the page you were trying to access.<br />
|
||||
If you continue to experience problems please contact your Trustie administrator for assistance.</p>
|
||||
<p>If you are the Trustie administrator, check your log files for details about the error.</p> -->
|
||||
<div class="verticalCenter">
|
||||
<div class="edu-txt-center">
|
||||
<img src="/images/warn/pic_500.jpg" >
|
||||
<p class="font-18 mt40">您可以稍后尝试
|
||||
您可以稍后尝试 <a href="javascript:history.back()" class="color-blue">返回上页</a>,或者
|
||||
<a target="_blank" href="//shang.qq.com/wpa/qunwpa?idkey=2f2043d88c1bd61d182b98bf1e061c6185e23055bec832c07d8148fe11c5a6cd" class="color-blue">QQ反馈>></a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="newTable clearfix">
|
||||
<div class="mainImg">
|
||||
<img src="images/warn/pic_500.jpg" width="639px"/>
|
||||
<div class="font-16 mt56" style="text-align: center;">
|
||||
<p>服务器异常,请稍后重试</p>
|
||||
您可尝试<a href="javascript:location.reload();" class="color-blue">刷新页面</a>或<a href="/explore"
|
||||
class="color-blue">返回首页</a>,也可以通过
|
||||
<a target="_blank"
|
||||
href="https://qm.qq.com/cgi-bin/qm/qr?k=YVGUhY7uK8ovpyd7tG_lHe2qGZ63LOij&jump_from=webapi"
|
||||
class="color-blue">QQ</a>向我们反馈
|
||||
</div>
|
||||
</div>
|
||||
<div class="newMargin">
|
||||
<img src="images/warn/pic_bg.png" width="100%" height="292px"/>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 9.4 KiB |
After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 139 KiB |
After Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 141 KiB |
After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 149 KiB |
After Width: | Height: | Size: 73 KiB |
After Width: | Height: | Size: 52 KiB |