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