aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authora1012112796 <1012112796@qq.com>2024-08-27 10:54:12 +0800
committerGitHub <noreply@github.com>2024-08-27 10:54:12 +0800
commit39d2fdefaf0dd42aa5e3ee8d3ea0a84b40c005f5 (patch)
treef2053041bd48c03688f330468b93c74b873f83bf
parent521d91944ed10add89f435efd2e3df17d8af2d51 (diff)
downloadgitea-39d2fdefaf0dd42aa5e3ee8d3ea0a84b40c005f5.tar.gz
gitea-39d2fdefaf0dd42aa5e3ee8d3ea0a84b40c005f5.zip
Split org Propfile README to a new tab `overview` (#31373)
like user profile, add a new overviw tab to show profile READEME when it is exist. replace #31349 (another solution option) example view: ![屏幕截图 2024-06-14 094116](https://github.com/go-gitea/gitea/assets/25342410/3303a1f2-ae02-48e0-9519-7fa11e65657f) ![屏幕截图 2024-06-14 094101](https://github.com/go-gitea/gitea/assets/25342410/7a4a5a48-dc2b-4ad4-b2a2-9ea4ab5d5808) --------- Signed-off-by: a1012112796 <1012112796@qq.com>
-rw-r--r--routers/web/org/home.go75
-rw-r--r--routers/web/org/members.go4
-rw-r--r--routers/web/org/teams.go4
-rw-r--r--routers/web/shared/user/header.go12
-rw-r--r--routers/web/web.go2
-rw-r--r--templates/org/menu.tmpl7
6 files changed, 67 insertions, 37 deletions
diff --git a/routers/web/org/home.go b/routers/web/org/home.go
index 77d49f5b78..366a7b20de 100644
--- a/routers/web/org/home.go
+++ b/routers/web/org/home.go
@@ -13,7 +13,6 @@ import (
"code.gitea.io/gitea/models/organization"
repo_model "code.gitea.io/gitea/models/repo"
"code.gitea.io/gitea/modules/base"
- "code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/markup"
"code.gitea.io/gitea/modules/markup/markdown"
@@ -42,6 +41,14 @@ func Home(ctx *context.Context) {
return
}
+ home(ctx, false)
+}
+
+func Repositories(ctx *context.Context) {
+ home(ctx, true)
+}
+
+func home(ctx *context.Context, viewRepositories bool) {
org := ctx.Org.Organization
ctx.Data["PageIsUserProfile"] = true
@@ -101,10 +108,34 @@ func Home(ctx *context.Context) {
private := ctx.FormOptionalBool("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 (
repos []*repo_model.Repository
count int64
- err error
)
repos, count, err = repo_model.SearchRepository(ctx, &repo_model.SearchRepoOptions{
ListOptions: db.ListOptions{
@@ -129,29 +160,8 @@ func Home(ctx *context.Context) {
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["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.SetDefaultParams(ctx)
@@ -173,18 +183,16 @@ func Home(ctx *context.Context) {
}
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)
}
-func prepareOrgProfileReadme(ctx *context.Context, profileGitRepo *git.Repository, profileDbRepo *repo_model.Repository, profileReadme *git.Blob) {
- if profileGitRepo == nil || profileReadme == nil {
- return
+func prepareOrgProfileReadme(ctx *context.Context, viewRepositories bool) bool {
+ profileDbRepo, profileGitRepo, profileReadme, profileClose := shared_user.FindUserProfileReadme(ctx, ctx.Doer)
+ 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 {
@@ -206,4 +214,7 @@ func prepareOrgProfileReadme(ctx *context.Context, profileGitRepo *git.Repositor
ctx.Data["ProfileReadme"] = profileContent
}
}
+
+ ctx.Data["PageIsViewOverview"] = true
+ return true
}
diff --git a/routers/web/org/members.go b/routers/web/org/members.go
index 58d0b9b8c4..8ff75b0651 100644
--- a/routers/web/org/members.go
+++ b/routers/web/org/members.go
@@ -54,9 +54,9 @@ func Members(ctx *context.Context) {
return
}
- err = shared_user.LoadHeaderCount(ctx)
+ err = shared_user.RenderOrgHeader(ctx)
if err != nil {
- ctx.ServerError("LoadHeaderCount", err)
+ ctx.ServerError("RenderOrgHeader", err)
return
}
diff --git a/routers/web/org/teams.go b/routers/web/org/teams.go
index aaac1177ae..31b9601ce7 100644
--- a/routers/web/org/teams.go
+++ b/routers/web/org/teams.go
@@ -59,9 +59,9 @@ func Teams(ctx *context.Context) {
}
ctx.Data["Teams"] = ctx.Org.Teams
- err := shared_user.LoadHeaderCount(ctx)
+ err := shared_user.RenderOrgHeader(ctx)
if err != nil {
- ctx.ServerError("LoadHeaderCount", err)
+ ctx.ServerError("RenderOrgHeader", err)
return
}
diff --git a/routers/web/shared/user/header.go b/routers/web/shared/user/header.go
index 7531e1ba26..ef111cff80 100644
--- a/routers/web/shared/user/header.go
+++ b/routers/web/shared/user/header.go
@@ -162,3 +162,15 @@ func LoadHeaderCount(ctx *context.Context) error {
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
+}
diff --git a/routers/web/web.go b/routers/web/web.go
index 4e917b5ede..98b4252cb9 100644
--- a/routers/web/web.go
+++ b/routers/web/web.go
@@ -995,6 +995,8 @@ func registerRoutes(m *web.Router) {
}, context.PackageAssignment(), reqPackageAccess(perm.AccessModeRead))
}
+ m.Get("/repositories", org.Repositories)
+
m.Group("/projects", func() {
m.Group("", func() {
m.Get("", org.Projects)
diff --git a/templates/org/menu.tmpl b/templates/org/menu.tmpl
index 698a9559c5..29238f8d6b 100644
--- a/templates/org/menu.tmpl
+++ b/templates/org/menu.tmpl
@@ -1,7 +1,12 @@
<div class="ui container">
<overflow-menu class="ui secondary pointing tabular borderless menu tw-mb-4">
<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"}}
{{if .RepoCount}}
<div class="ui small label">{{.RepoCount}}</div>