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] 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 846b1de18a..79588516fc 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 63ac57cf0d..962e8a5445 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 144d9b1b43..e532cee6db 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/templates/org/home.tmpl b/templates/org/home.tmpl index 4851b69979..7f69cadf5a 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 698a9559c5..20807a725c 100644 --- a/templates/org/menu.tmpl +++ b/templates/org/menu.tmpl @@ -1,7 +1,12 @@