From d3f415d105d8079264097507cd601c7ff7f428c4 Mon Sep 17 00:00:00 2001 From: a1012112796 <1012112796@qq.com> Date: Fri, 14 Jun 2024 09:32:22 +0800 Subject: [PATCH 1/3] split Propfile README to a new tab `overview` like user profile, add a new overviw tab to show profile READEME when it is exist. Signed-off-by: a1012112796 <1012112796@qq.com> --- routers/web/org/home.go | 68 ++++++++++++++++++------------- routers/web/org/members.go | 4 +- routers/web/org/teams.go | 4 +- routers/web/shared/user/header.go | 12 ++++++ templates/org/home.tmpl | 2 + templates/org/menu.tmpl | 7 +++- 6 files changed, 63 insertions(+), 34 deletions(-) diff --git a/routers/web/org/home.go b/routers/web/org/home.go index 846b1de18ab13..79588516fc583 100644 --- a/routers/web/org/home.go +++ b/routers/web/org/home.go @@ -12,7 +12,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" @@ -100,10 +99,35 @@ 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 + + prepareOrgProfileReadme(ctx) + if ctx.Written() { + return + } + var ( repos []*repo_model.Repository count int64 - err error ) repos, count, err = repo_model.SearchRepository(ctx, &repo_model.SearchRepoOptions{ ListOptions: db.ListOptions{ @@ -128,49 +152,32 @@ 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) pager.AddParamString("language", language) 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) { +func prepareOrgProfileReadme(ctx *context.Context) { + profileDbRepo, profileGitRepo, profileReadme, profileClose := shared_user.FindUserProfileReadme(ctx, ctx.Doer) + defer profileClose() + ctx.Data["HasProfileReadme"] = profileReadme != nil + if profileGitRepo == nil || profileReadme == nil { return } + viewRepositorys := ctx.FormOptionalBool("view_repositorys") + if viewRepositorys.Value() { + return + } + if bytes, err := profileReadme.GetBlobContent(setting.UI.MaxDisplayFileSize); err != nil { log.Error("failed to GetBlobContent: %v", err) } else { @@ -190,4 +197,7 @@ func prepareOrgProfileReadme(ctx *context.Context, profileGitRepo *git.Repositor ctx.Data["ProfileReadme"] = profileContent } } + + ctx.Data["PageIsViewOverview"] = true + ctx.HTML(http.StatusOK, tplOrgHome) } diff --git a/routers/web/org/members.go b/routers/web/org/members.go index 63ac57cf0dc4c..962e8a54451d2 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 144d9b1b43dd7..e532cee6db97d 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 7531e1ba26824..ef111cff806fc 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/templates/org/home.tmpl b/templates/org/home.tmpl index 4851b6997967b..7f69cadf5a15b 100644 --- a/templates/org/home.tmpl +++ b/templates/org/home.tmpl @@ -8,9 +8,11 @@ {{if .ProfileReadme}}
{{.ProfileReadme}}
{{end}} + {{if .PageIsViewRepositories}} {{template "shared/repo_search" .}} {{template "explore/repo_list" .}} {{template "base/paginate" .}} + {{end}} {{if .ShowMemberAndTeamTab}} diff --git a/templates/org/menu.tmpl b/templates/org/menu.tmpl index 698a9559c5287..20807a725c8ae 100644 --- a/templates/org/menu.tmpl +++ b/templates/org/menu.tmpl @@ -1,7 +1,12 @@
- + {{if .HasProfileReadme}} + + {{svg "octicon-info"}} {{ctx.Locale.Tr "user.overview"}} + + {{end}} + {{svg "octicon-repo"}} {{ctx.Locale.Tr "user.repositories"}} {{if .RepoCount}}
{{.RepoCount}}
From 990584f9bd5734478f8e8de8bf9f8a66ae149864 Mon Sep 17 00:00:00 2001 From: a1012112796 <1012112796@qq.com> Date: Mon, 17 Jun 2024 17:54:32 +0800 Subject: [PATCH 2/3] show repos in overview also Signed-off-by: a1012112796 <1012112796@qq.com> --- routers/web/org/home.go | 14 ++++++-------- templates/org/home.tmpl | 2 -- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/routers/web/org/home.go b/routers/web/org/home.go index 79588516fc583..b4bfaf9a1f4a9 100644 --- a/routers/web/org/home.go +++ b/routers/web/org/home.go @@ -120,9 +120,8 @@ func Home(ctx *context.Context) { ctx.Data["DisableNewPullMirrors"] = setting.Mirror.DisableNewPull ctx.Data["ShowMemberAndTeamTab"] = ctx.Org.IsMember || len(members) > 0 - prepareOrgProfileReadme(ctx) - if ctx.Written() { - return + if !prepareOrgProfileReadme(ctx) { + ctx.Data["PageIsViewRepositories"] = true } var ( @@ -154,7 +153,6 @@ func Home(ctx *context.Context) { ctx.Data["Repos"] = repos ctx.Data["Total"] = count - ctx.Data["PageIsViewRepositories"] = true pager := context.NewPagination(int(count), setting.UI.User.RepoPagingNum, page, 5) pager.SetDefaultParams(ctx) @@ -164,18 +162,18 @@ func Home(ctx *context.Context) { ctx.HTML(http.StatusOK, tplOrgHome) } -func prepareOrgProfileReadme(ctx *context.Context) { +func prepareOrgProfileReadme(ctx *context.Context) bool { profileDbRepo, profileGitRepo, profileReadme, profileClose := shared_user.FindUserProfileReadme(ctx, ctx.Doer) defer profileClose() ctx.Data["HasProfileReadme"] = profileReadme != nil if profileGitRepo == nil || profileReadme == nil { - return + return false } viewRepositorys := ctx.FormOptionalBool("view_repositorys") if viewRepositorys.Value() { - return + return false } if bytes, err := profileReadme.GetBlobContent(setting.UI.MaxDisplayFileSize); err != nil { @@ -199,5 +197,5 @@ func prepareOrgProfileReadme(ctx *context.Context) { } ctx.Data["PageIsViewOverview"] = true - ctx.HTML(http.StatusOK, tplOrgHome) + return true } diff --git a/templates/org/home.tmpl b/templates/org/home.tmpl index 7f69cadf5a15b..4851b6997967b 100644 --- a/templates/org/home.tmpl +++ b/templates/org/home.tmpl @@ -8,11 +8,9 @@ {{if .ProfileReadme}}
{{.ProfileReadme}}
{{end}} - {{if .PageIsViewRepositories}} {{template "shared/repo_search" .}} {{template "explore/repo_list" .}} {{template "base/paginate" .}} - {{end}}
{{if .ShowMemberAndTeamTab}} From 4ac2564fded9c84f47e7713c9f84d9a68a43ced6 Mon Sep 17 00:00:00 2001 From: a1012112796 <1012112796@qq.com> Date: Tue, 18 Jun 2024 16:43:55 +0800 Subject: [PATCH 3/3] use new subRoute Signed-off-by: a1012112796 <1012112796@qq.com> --- routers/web/org/home.go | 19 +++++++++++-------- routers/web/web.go | 2 ++ templates/org/menu.tmpl | 2 +- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/routers/web/org/home.go b/routers/web/org/home.go index b4bfaf9a1f4a9..71c2ce5957cf4 100644 --- a/routers/web/org/home.go +++ b/routers/web/org/home.go @@ -40,6 +40,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 @@ -120,7 +128,7 @@ func Home(ctx *context.Context) { ctx.Data["DisableNewPullMirrors"] = setting.Mirror.DisableNewPull ctx.Data["ShowMemberAndTeamTab"] = ctx.Org.IsMember || len(members) > 0 - if !prepareOrgProfileReadme(ctx) { + if !prepareOrgProfileReadme(ctx, viewRepositories) { ctx.Data["PageIsViewRepositories"] = true } @@ -162,17 +170,12 @@ func Home(ctx *context.Context) { ctx.HTML(http.StatusOK, tplOrgHome) } -func prepareOrgProfileReadme(ctx *context.Context) bool { +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 { - return false - } - - viewRepositorys := ctx.FormOptionalBool("view_repositorys") - if viewRepositorys.Value() { + if profileGitRepo == nil || profileReadme == nil || viewRepositories { return false } diff --git a/routers/web/web.go b/routers/web/web.go index 5fb1ce0e80361..c6706d4027026 100644 --- a/routers/web/web.go +++ b/routers/web/web.go @@ -991,6 +991,8 @@ func registerRoutes(m *web.Route) { }, 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 20807a725c8ae..29238f8d6bb9a 100644 --- a/templates/org/menu.tmpl +++ b/templates/org/menu.tmpl @@ -6,7 +6,7 @@ {{svg "octicon-info"}} {{ctx.Locale.Tr "user.overview"}} {{end}} - + {{svg "octicon-repo"}} {{ctx.Locale.Tr "user.repositories"}} {{if .RepoCount}}
{{.RepoCount}}