mirror of
https://github.com/go-gitea/gitea.git
synced 2024-09-01 14:56:30 +00:00
Merge branch 'main' into lunny/lock_abstract2
This commit is contained in:
commit
3e268b95f4
@ -206,7 +206,7 @@ buttons.list.unordered.tooltip=添加待办清单
|
|||||||
buttons.list.ordered.tooltip=添加编号列表
|
buttons.list.ordered.tooltip=添加编号列表
|
||||||
buttons.list.task.tooltip=添加任务列表
|
buttons.list.task.tooltip=添加任务列表
|
||||||
buttons.mention.tooltip=提及用户或团队
|
buttons.mention.tooltip=提及用户或团队
|
||||||
buttons.ref.tooltip=引用一个问题或拉取请求
|
buttons.ref.tooltip=引用一个问题或合并请求
|
||||||
buttons.switch_to_legacy.tooltip=使用旧版编辑器
|
buttons.switch_to_legacy.tooltip=使用旧版编辑器
|
||||||
buttons.enable_monospace_font=启用等宽字体
|
buttons.enable_monospace_font=启用等宽字体
|
||||||
buttons.disable_monospace_font=禁用等宽字体
|
buttons.disable_monospace_font=禁用等宽字体
|
||||||
@ -1752,8 +1752,9 @@ compare.compare_head=比较
|
|||||||
pulls.desc=启用合并请求和代码评审。
|
pulls.desc=启用合并请求和代码评审。
|
||||||
pulls.new=创建合并请求
|
pulls.new=创建合并请求
|
||||||
pulls.new.blocked_user=无法创建合并请求,因为您已被仓库所有者屏蔽。
|
pulls.new.blocked_user=无法创建合并请求,因为您已被仓库所有者屏蔽。
|
||||||
|
pulls.new.must_collaborator=您必须是仓库的协作者才能创建合并请求。
|
||||||
pulls.edit.already_changed=无法保存对合并请求的更改。其内容似乎已被其他用户更改。 请刷新页面并重新编辑以避免覆盖他们的更改
|
pulls.edit.already_changed=无法保存对合并请求的更改。其内容似乎已被其他用户更改。 请刷新页面并重新编辑以避免覆盖他们的更改
|
||||||
pulls.view=查看拉取请求
|
pulls.view=查看合并请求
|
||||||
pulls.compare_changes=创建合并请求
|
pulls.compare_changes=创建合并请求
|
||||||
pulls.allow_edits_from_maintainers=允许维护者编辑
|
pulls.allow_edits_from_maintainers=允许维护者编辑
|
||||||
pulls.allow_edits_from_maintainers_desc=对基础分支有写入权限的用户也可以推送到此分支
|
pulls.allow_edits_from_maintainers_desc=对基础分支有写入权限的用户也可以推送到此分支
|
||||||
@ -1830,8 +1831,8 @@ pulls.wrong_commit_id=提交 id 必须在目标分支 上
|
|||||||
pulls.no_merge_desc=由于未启用合并选项,此合并请求无法被合并。
|
pulls.no_merge_desc=由于未启用合并选项,此合并请求无法被合并。
|
||||||
pulls.no_merge_helper=在仓库设置中启用合并选项或者手工合并请求。
|
pulls.no_merge_helper=在仓库设置中启用合并选项或者手工合并请求。
|
||||||
pulls.no_merge_wip=这个合并请求无法合并,因为被标记为尚未完成的工作。
|
pulls.no_merge_wip=这个合并请求无法合并,因为被标记为尚未完成的工作。
|
||||||
pulls.no_merge_not_ready=此拉取请求尚未准备好合并,请检查审核状态和状态检查。
|
pulls.no_merge_not_ready=此合并请求尚未准备好合并,请检查审核状态和状态检查。
|
||||||
pulls.no_merge_access=您无权合并此拉取请求。
|
pulls.no_merge_access=您无权合并此合并请求。
|
||||||
pulls.merge_pull_request=创建合并提交
|
pulls.merge_pull_request=创建合并提交
|
||||||
pulls.rebase_merge_pull_request=变基后快进
|
pulls.rebase_merge_pull_request=变基后快进
|
||||||
pulls.rebase_merge_commit_pull_request=变基后创建合并提交
|
pulls.rebase_merge_commit_pull_request=变基后创建合并提交
|
||||||
@ -1876,6 +1877,7 @@ pulls.cmd_instruction_checkout_title=检出
|
|||||||
pulls.cmd_instruction_checkout_desc=从你的仓库中检出一个新的分支并测试变更。
|
pulls.cmd_instruction_checkout_desc=从你的仓库中检出一个新的分支并测试变更。
|
||||||
pulls.cmd_instruction_merge_title=合并
|
pulls.cmd_instruction_merge_title=合并
|
||||||
pulls.cmd_instruction_merge_desc=合并变更并更新到 Gitea 上
|
pulls.cmd_instruction_merge_desc=合并变更并更新到 Gitea 上
|
||||||
|
pulls.cmd_instruction_merge_warning=警告:此操作不能合并该合并请求,因为“自动检测手动合并”未启用
|
||||||
pulls.clear_merge_message=清除合并信息
|
pulls.clear_merge_message=清除合并信息
|
||||||
pulls.clear_merge_message_hint=清除合并消息只会删除提交消息内容,并保留生成的 git 附加内容,如“Co-Authored-By …”。
|
pulls.clear_merge_message_hint=清除合并消息只会删除提交消息内容,并保留生成的 git 附加内容,如“Co-Authored-By …”。
|
||||||
|
|
||||||
@ -1888,11 +1890,11 @@ pulls.auto_merge_cancel_schedule=取消自动合并
|
|||||||
pulls.auto_merge_not_scheduled=此合并请求没有计划自动合并。
|
pulls.auto_merge_not_scheduled=此合并请求没有计划自动合并。
|
||||||
pulls.auto_merge_canceled_schedule=此合并请求的自动合并已取消。
|
pulls.auto_merge_canceled_schedule=此合并请求的自动合并已取消。
|
||||||
|
|
||||||
pulls.auto_merge_newly_scheduled_comment=`已于 %[1]s 设置此拉取请求在所有检查成功后自动合并`
|
pulls.auto_merge_newly_scheduled_comment=`已于 %[1]s 设置此合并请求在所有检查成功后自动合并`
|
||||||
pulls.auto_merge_canceled_schedule_comment=`已于 %[1]s 取消了自动合并设置 `
|
pulls.auto_merge_canceled_schedule_comment=`已于 %[1]s 取消了自动合并设置 `
|
||||||
|
|
||||||
pulls.delete.title=删除此拉取请求?
|
pulls.delete.title=删除此合并请求?
|
||||||
pulls.delete.text=你真的要删除这个拉取请求吗? (这将永久删除所有内容。如果你打算将内容存档,请考虑关闭它)
|
pulls.delete.text=你真的要删除这个合并请求吗? (这将永久删除所有内容。如果你打算将内容存档,请考虑关闭它)
|
||||||
|
|
||||||
pulls.recently_pushed_new_branches=您已经于%[2]s推送了分支 <strong>%[1]s</strong>
|
pulls.recently_pushed_new_branches=您已经于%[2]s推送了分支 <strong>%[1]s</strong>
|
||||||
|
|
||||||
@ -2125,7 +2127,7 @@ settings.allow_only_contributors_to_track_time=仅允许成员跟踪时间
|
|||||||
settings.pulls_desc=启用合并请求
|
settings.pulls_desc=启用合并请求
|
||||||
settings.pulls.ignore_whitespace=忽略空白冲突
|
settings.pulls.ignore_whitespace=忽略空白冲突
|
||||||
settings.pulls.enable_autodetect_manual_merge=启用自动检测手动合并 (注意:在某些特殊情况下可能发生错误判断)
|
settings.pulls.enable_autodetect_manual_merge=启用自动检测手动合并 (注意:在某些特殊情况下可能发生错误判断)
|
||||||
settings.pulls.allow_rebase_update=允许通过变基更新拉取请求分支
|
settings.pulls.allow_rebase_update=允许通过变基更新合并请求分支
|
||||||
settings.pulls.default_delete_branch_after_merge=默认合并后删除合并请求分支
|
settings.pulls.default_delete_branch_after_merge=默认合并后删除合并请求分支
|
||||||
settings.pulls.default_allow_edits_from_maintainers=默认开启允许维护者编辑
|
settings.pulls.default_allow_edits_from_maintainers=默认开启允许维护者编辑
|
||||||
settings.releases_desc=启用发布
|
settings.releases_desc=启用发布
|
||||||
@ -2375,7 +2377,7 @@ settings.protect_status_check_matched=匹配
|
|||||||
settings.protect_invalid_status_check_pattern=无效的状态检查规则:“%s”。
|
settings.protect_invalid_status_check_pattern=无效的状态检查规则:“%s”。
|
||||||
settings.protect_no_valid_status_check_patterns=没有有效的状态检查规则。
|
settings.protect_no_valid_status_check_patterns=没有有效的状态检查规则。
|
||||||
settings.protect_required_approvals=所需的批准:
|
settings.protect_required_approvals=所需的批准:
|
||||||
settings.protect_required_approvals_desc=只允许合并有足够审核人数的拉取请求。
|
settings.protect_required_approvals_desc=只允许合并有足够审核人数的合并请求。
|
||||||
settings.dismiss_stale_approvals=取消过时的批准
|
settings.dismiss_stale_approvals=取消过时的批准
|
||||||
settings.dismiss_stale_approvals_desc=当新的提交更改合并请求内容被推送到分支时,旧的批准将被撤销。
|
settings.dismiss_stale_approvals_desc=当新的提交更改合并请求内容被推送到分支时,旧的批准将被撤销。
|
||||||
settings.ignore_stale_approvals=忽略过期批准
|
settings.ignore_stale_approvals=忽略过期批准
|
||||||
@ -2400,7 +2402,7 @@ settings.block_rejected_reviews=拒绝审核阻止了此合并
|
|||||||
settings.block_rejected_reviews_desc=如果官方审查人员要求作出改动,即使有足够的批准,合并也不允许。
|
settings.block_rejected_reviews_desc=如果官方审查人员要求作出改动,即使有足够的批准,合并也不允许。
|
||||||
settings.block_on_official_review_requests=有官方审核阻止了代码合并
|
settings.block_on_official_review_requests=有官方审核阻止了代码合并
|
||||||
settings.block_on_official_review_requests_desc=处于评审状态时,即使有足够的批准,也不能合并。
|
settings.block_on_official_review_requests_desc=处于评审状态时,即使有足够的批准,也不能合并。
|
||||||
settings.block_outdated_branch=如果拉取请求已经过时,阻止合并
|
settings.block_outdated_branch=如果合并请求已经过时,阻止合并
|
||||||
settings.block_outdated_branch_desc=当头部分支落后基础分支时,不能合并。
|
settings.block_outdated_branch_desc=当头部分支落后基础分支时,不能合并。
|
||||||
settings.default_branch_desc=请选择一个默认的分支用于合并请求和提交:
|
settings.default_branch_desc=请选择一个默认的分支用于合并请求和提交:
|
||||||
settings.merge_style_desc=合并方式
|
settings.merge_style_desc=合并方式
|
||||||
|
@ -13,7 +13,6 @@ import (
|
|||||||
"code.gitea.io/gitea/models/organization"
|
"code.gitea.io/gitea/models/organization"
|
||||||
repo_model "code.gitea.io/gitea/models/repo"
|
repo_model "code.gitea.io/gitea/models/repo"
|
||||||
"code.gitea.io/gitea/modules/base"
|
"code.gitea.io/gitea/modules/base"
|
||||||
"code.gitea.io/gitea/modules/git"
|
|
||||||
"code.gitea.io/gitea/modules/log"
|
"code.gitea.io/gitea/modules/log"
|
||||||
"code.gitea.io/gitea/modules/markup"
|
"code.gitea.io/gitea/modules/markup"
|
||||||
"code.gitea.io/gitea/modules/markup/markdown"
|
"code.gitea.io/gitea/modules/markup/markdown"
|
||||||
@ -42,6 +41,14 @@ func Home(ctx *context.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
home(ctx, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Repositories(ctx *context.Context) {
|
||||||
|
home(ctx, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
func home(ctx *context.Context, viewRepositories bool) {
|
||||||
org := ctx.Org.Organization
|
org := ctx.Org.Organization
|
||||||
|
|
||||||
ctx.Data["PageIsUserProfile"] = true
|
ctx.Data["PageIsUserProfile"] = true
|
||||||
@ -101,10 +108,34 @@ func Home(ctx *context.Context) {
|
|||||||
private := ctx.FormOptionalBool("private")
|
private := ctx.FormOptionalBool("private")
|
||||||
ctx.Data["IsPrivate"] = private
|
ctx.Data["IsPrivate"] = private
|
||||||
|
|
||||||
|
err := shared_user.LoadHeaderCount(ctx)
|
||||||
|
if err != nil {
|
||||||
|
ctx.ServerError("LoadHeaderCount", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
opts := &organization.FindOrgMembersOpts{
|
||||||
|
OrgID: org.ID,
|
||||||
|
PublicOnly: ctx.Org.PublicMemberOnly,
|
||||||
|
ListOptions: db.ListOptions{Page: 1, PageSize: 25},
|
||||||
|
}
|
||||||
|
members, _, err := organization.FindOrgMembers(ctx, opts)
|
||||||
|
if err != nil {
|
||||||
|
ctx.ServerError("FindOrgMembers", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ctx.Data["Members"] = members
|
||||||
|
ctx.Data["Teams"] = ctx.Org.Teams
|
||||||
|
ctx.Data["DisableNewPullMirrors"] = setting.Mirror.DisableNewPull
|
||||||
|
ctx.Data["ShowMemberAndTeamTab"] = ctx.Org.IsMember || len(members) > 0
|
||||||
|
|
||||||
|
if !prepareOrgProfileReadme(ctx, viewRepositories) {
|
||||||
|
ctx.Data["PageIsViewRepositories"] = true
|
||||||
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
repos []*repo_model.Repository
|
repos []*repo_model.Repository
|
||||||
count int64
|
count int64
|
||||||
err error
|
|
||||||
)
|
)
|
||||||
repos, count, err = repo_model.SearchRepository(ctx, &repo_model.SearchRepoOptions{
|
repos, count, err = repo_model.SearchRepository(ctx, &repo_model.SearchRepoOptions{
|
||||||
ListOptions: db.ListOptions{
|
ListOptions: db.ListOptions{
|
||||||
@ -129,29 +160,8 @@ func Home(ctx *context.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
opts := &organization.FindOrgMembersOpts{
|
|
||||||
OrgID: org.ID,
|
|
||||||
PublicOnly: ctx.Org.PublicMemberOnly,
|
|
||||||
ListOptions: db.ListOptions{Page: 1, PageSize: 25},
|
|
||||||
}
|
|
||||||
members, _, err := organization.FindOrgMembers(ctx, opts)
|
|
||||||
if err != nil {
|
|
||||||
ctx.ServerError("FindOrgMembers", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
ctx.Data["Repos"] = repos
|
ctx.Data["Repos"] = repos
|
||||||
ctx.Data["Total"] = count
|
ctx.Data["Total"] = count
|
||||||
ctx.Data["Members"] = members
|
|
||||||
ctx.Data["Teams"] = ctx.Org.Teams
|
|
||||||
ctx.Data["DisableNewPullMirrors"] = setting.Mirror.DisableNewPull
|
|
||||||
ctx.Data["PageIsViewRepositories"] = true
|
|
||||||
|
|
||||||
err = shared_user.LoadHeaderCount(ctx)
|
|
||||||
if err != nil {
|
|
||||||
ctx.ServerError("LoadHeaderCount", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
pager := context.NewPagination(int(count), setting.UI.User.RepoPagingNum, page, 5)
|
pager := context.NewPagination(int(count), setting.UI.User.RepoPagingNum, page, 5)
|
||||||
pager.SetDefaultParams(ctx)
|
pager.SetDefaultParams(ctx)
|
||||||
@ -173,18 +183,16 @@ func Home(ctx *context.Context) {
|
|||||||
}
|
}
|
||||||
ctx.Data["Page"] = pager
|
ctx.Data["Page"] = pager
|
||||||
|
|
||||||
ctx.Data["ShowMemberAndTeamTab"] = ctx.Org.IsMember || len(members) > 0
|
|
||||||
|
|
||||||
profileDbRepo, profileGitRepo, profileReadmeBlob, profileClose := shared_user.FindUserProfileReadme(ctx, ctx.Doer)
|
|
||||||
defer profileClose()
|
|
||||||
prepareOrgProfileReadme(ctx, profileGitRepo, profileDbRepo, profileReadmeBlob)
|
|
||||||
|
|
||||||
ctx.HTML(http.StatusOK, tplOrgHome)
|
ctx.HTML(http.StatusOK, tplOrgHome)
|
||||||
}
|
}
|
||||||
|
|
||||||
func prepareOrgProfileReadme(ctx *context.Context, profileGitRepo *git.Repository, profileDbRepo *repo_model.Repository, profileReadme *git.Blob) {
|
func prepareOrgProfileReadme(ctx *context.Context, viewRepositories bool) bool {
|
||||||
if profileGitRepo == nil || profileReadme == nil {
|
profileDbRepo, profileGitRepo, profileReadme, profileClose := shared_user.FindUserProfileReadme(ctx, ctx.Doer)
|
||||||
return
|
defer profileClose()
|
||||||
|
ctx.Data["HasProfileReadme"] = profileReadme != nil
|
||||||
|
|
||||||
|
if profileGitRepo == nil || profileReadme == nil || viewRepositories {
|
||||||
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
if bytes, err := profileReadme.GetBlobContent(setting.UI.MaxDisplayFileSize); err != nil {
|
if bytes, err := profileReadme.GetBlobContent(setting.UI.MaxDisplayFileSize); err != nil {
|
||||||
@ -206,4 +214,7 @@ func prepareOrgProfileReadme(ctx *context.Context, profileGitRepo *git.Repositor
|
|||||||
ctx.Data["ProfileReadme"] = profileContent
|
ctx.Data["ProfileReadme"] = profileContent
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ctx.Data["PageIsViewOverview"] = true
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
@ -54,9 +54,9 @@ func Members(ctx *context.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = shared_user.LoadHeaderCount(ctx)
|
err = shared_user.RenderOrgHeader(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ServerError("LoadHeaderCount", err)
|
ctx.ServerError("RenderOrgHeader", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,9 +59,9 @@ func Teams(ctx *context.Context) {
|
|||||||
}
|
}
|
||||||
ctx.Data["Teams"] = ctx.Org.Teams
|
ctx.Data["Teams"] = ctx.Org.Teams
|
||||||
|
|
||||||
err := shared_user.LoadHeaderCount(ctx)
|
err := shared_user.RenderOrgHeader(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ServerError("LoadHeaderCount", err)
|
ctx.ServerError("RenderOrgHeader", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,3 +162,15 @@ func LoadHeaderCount(ctx *context.Context) error {
|
|||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func RenderOrgHeader(ctx *context.Context) error {
|
||||||
|
if err := LoadHeaderCount(ctx); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
_, _, profileReadmeBlob, profileClose := FindUserProfileReadme(ctx, ctx.Doer)
|
||||||
|
defer profileClose()
|
||||||
|
ctx.Data["HasProfileReadme"] = profileReadmeBlob != nil
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
@ -995,6 +995,8 @@ func registerRoutes(m *web.Router) {
|
|||||||
}, context.PackageAssignment(), reqPackageAccess(perm.AccessModeRead))
|
}, context.PackageAssignment(), reqPackageAccess(perm.AccessModeRead))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m.Get("/repositories", org.Repositories)
|
||||||
|
|
||||||
m.Group("/projects", func() {
|
m.Group("/projects", func() {
|
||||||
m.Group("", func() {
|
m.Group("", func() {
|
||||||
m.Get("", org.Projects)
|
m.Get("", org.Projects)
|
||||||
|
@ -1,7 +1,12 @@
|
|||||||
<div class="ui container">
|
<div class="ui container">
|
||||||
<overflow-menu class="ui secondary pointing tabular borderless menu tw-mb-4">
|
<overflow-menu class="ui secondary pointing tabular borderless menu tw-mb-4">
|
||||||
<div class="overflow-menu-items">
|
<div class="overflow-menu-items">
|
||||||
<a class="{{if .PageIsViewRepositories}}active {{end}}item" href="{{$.Org.HomeLink}}">
|
{{if .HasProfileReadme}}
|
||||||
|
<a class="{{if .PageIsViewOverview}}active {{end}}item" href="{{$.Org.HomeLink}}">
|
||||||
|
{{svg "octicon-info"}} {{ctx.Locale.Tr "user.overview"}}
|
||||||
|
</a>
|
||||||
|
{{end}}
|
||||||
|
<a class="{{if .PageIsViewRepositories}}active {{end}}item" href="{{$.Org.HomeLink}}{{if .HasProfileReadme}}/-/repositories{{end}}">
|
||||||
{{svg "octicon-repo"}} {{ctx.Locale.Tr "user.repositories"}}
|
{{svg "octicon-repo"}} {{ctx.Locale.Tr "user.repositories"}}
|
||||||
{{if .RepoCount}}
|
{{if .RepoCount}}
|
||||||
<div class="ui small label">{{.RepoCount}}</div>
|
<div class="ui small label">{{.RepoCount}}</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user