From 515a6da7087345481b608a7c85324e0cf67280fe Mon Sep 17 00:00:00 2001 From: hazycora Date: Mon, 18 Sep 2023 21:12:26 -0500 Subject: [PATCH 1/9] Add .profile README to organization pages --- routers/web/org/home.go | 44 ++++++++++++++++++++++++++++++++++++-- routers/web/org/members.go | 2 ++ routers/web/org/teams.go | 5 +++++ templates/org/home.tmpl | 10 ++++++--- templates/org/menu.tmpl | 7 +++++- 5 files changed, 62 insertions(+), 6 deletions(-) diff --git a/routers/web/org/home.go b/routers/web/org/home.go index ec866eb6b3ba1..08a39ea1b2ea0 100644 --- a/routers/web/org/home.go +++ b/routers/web/org/home.go @@ -13,6 +13,8 @@ import ( user_model "code.gitea.io/gitea/models/user" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" + "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" "code.gitea.io/gitea/modules/setting" @@ -56,6 +58,45 @@ func Home(ctx *context.Context) { ctx.Data["RenderedDescription"] = desc } + profileGitRepo, profileReadmeBlob, profileClose := shared_user.FindUserProfileReadme(ctx) + defer profileClose() + ctx.Data["HasProfileReadme"] = profileReadmeBlob != nil + + PrepareOrgProfileTabData(ctx, profileGitRepo, profileReadmeBlob) + + ctx.HTML(http.StatusOK, tplOrgHome) +} + +func PrepareOrgProfileTabData(ctx *context.Context, profileGitRepo *git.Repository, profileReadme *git.Blob) { + org := ctx.Org.Organization + + tab := ctx.FormString("tab") + if tab == "" || tab == "overview" { + if profileReadme != nil { + tab = "overview" + } else { + tab = "repositories" + } + } + ctx.Data["TabName"] = tab + + switch tab { + case "overview": + if bytes, err := profileReadme.GetBlobContent(setting.UI.MaxDisplayFileSize); err != nil { + log.Error("failed to GetBlobContent: %v", err) + } else { + if profileContent, err := markdown.RenderString(&markup.RenderContext{ + Ctx: ctx, + GitRepo: profileGitRepo, + Metas: map[string]string{"mode": "document"}, + }, bytes); err != nil { + log.Error("failed to RenderString: %v", err) + } else { + ctx.Data["ProfileReadme"] = profileContent + } + } + } + var orderBy db.SearchOrderBy ctx.Data["SortType"] = ctx.FormString("sort") switch ctx.FormString("sort") { @@ -151,9 +192,8 @@ func Home(ctx *context.Context) { pager := context.NewPagination(int(count), setting.UI.User.RepoPagingNum, page, 5) pager.SetDefaultParams(ctx) pager.AddParam(ctx, "language", "Language") + pager.AddParam(ctx, "tab", "TabName") ctx.Data["Page"] = pager ctx.Data["ShowMemberAndTeamTab"] = ctx.Org.IsMember || len(members) > 0 - - ctx.HTML(http.StatusOK, tplOrgHome) } diff --git a/routers/web/org/members.go b/routers/web/org/members.go index 34cff05ea0b92..a973377541319 100644 --- a/routers/web/org/members.go +++ b/routers/web/org/members.go @@ -73,6 +73,8 @@ func Members(ctx *context.Context) { ctx.Data["MembersIsUserOrgOwner"] = organization.IsUserOrgOwner(members, org.ID) ctx.Data["MembersTwoFaStatus"] = members.GetTwoFaStatus(ctx) + shared_user.RenderUserHeader(ctx) + ctx.HTML(http.StatusOK, tplMembers) } diff --git a/routers/web/org/teams.go b/routers/web/org/teams.go index dfb87b28f8987..4393fcc51ffdc 100644 --- a/routers/web/org/teams.go +++ b/routers/web/org/teams.go @@ -65,6 +65,7 @@ func Teams(ctx *context.Context) { return } + shared_user.RenderUserHeader(ctx) ctx.HTML(http.StatusOK, tplTeams) } @@ -276,6 +277,7 @@ func NewTeam(ctx *context.Context) { ctx.Data["PageIsOrgTeamsNew"] = true ctx.Data["Team"] = &org_model.Team{} ctx.Data["Units"] = unit_model.Units + shared_user.RenderUserHeader(ctx) ctx.HTML(http.StatusOK, tplTeamNew) } @@ -341,6 +343,7 @@ func NewTeamPost(ctx *context.Context) { ctx.Data["PageIsOrgTeamsNew"] = true ctx.Data["Units"] = unit_model.Units ctx.Data["Team"] = t + shared_user.RenderUserHeader(ctx) if ctx.HasError() { ctx.HTML(http.StatusOK, tplTeamNew) @@ -391,6 +394,7 @@ func TeamMembers(ctx *context.Context) { ctx.Data["Invites"] = invites ctx.Data["IsEmailInviteEnabled"] = setting.MailService != nil + shared_user.RenderUserHeader(ctx) ctx.HTML(http.StatusOK, tplTeamMembers) } @@ -410,6 +414,7 @@ func TeamRepositories(ctx *context.Context) { return } ctx.Data["Units"] = unit_model.Units + shared_user.RenderUserHeader(ctx) ctx.HTML(http.StatusOK, tplTeamRepositories) } diff --git a/templates/org/home.tmpl b/templates/org/home.tmpl index 18d5282a31315..5b2ee36e0789e 100644 --- a/templates/org/home.tmpl +++ b/templates/org/home.tmpl @@ -38,9 +38,13 @@
- {{template "explore/repo_search" .}} - {{template "explore/repo_list" .}} - {{template "base/paginate" .}} + {{if or (not .ProfileReadme) (eq .TabName "repositories")}} + {{template "explore/repo_search" .}} + {{template "explore/repo_list" .}} + {{template "base/paginate" .}} + {{else}} +
{{$.ProfileReadme|Str2html}}
+ {{end}}
{{if .ShowMemberAndTeamTab}} diff --git a/templates/org/menu.tmpl b/templates/org/menu.tmpl index 26c9f980a5a11..20e3644c8b57d 100644 --- a/templates/org/menu.tmpl +++ b/templates/org/menu.tmpl @@ -1,6 +1,11 @@