From 8da4b0db1ef81278bc4e7325b553fce965ca5109 Mon Sep 17 00:00:00 2001 From: dragon Date: Tue, 18 Mar 2025 17:03:01 +0800 Subject: [PATCH 01/17] fix org style --- routers/web/org/projects.go | 7 +++++++ routers/web/org/worktime.go | 8 ++++++++ routers/web/user/package.go | 10 ++++++++++ 3 files changed, 25 insertions(+) diff --git a/routers/web/org/projects.go b/routers/web/org/projects.go index 985fd2ca45d4d..fb67499546857 100644 --- a/routers/web/org/projects.go +++ b/routers/web/org/projects.go @@ -126,6 +126,13 @@ func Projects(ctx *context.Context) { pager := context.NewPagination(int(total), setting.UI.IssuePagingNum, page, numPages) pager.AddParamFromRequest(ctx.Req) + + _, err = shared_user.PrepareOrgHeader(ctx) + if err != nil { + ctx.ServerError("PrepareOrgHeader", err) + return + } + ctx.Data["Page"] = pager ctx.Data["CanWriteProjects"] = canWriteProjects(ctx) diff --git a/routers/web/org/worktime.go b/routers/web/org/worktime.go index 23369848254ba..db3cb470ef769 100644 --- a/routers/web/org/worktime.go +++ b/routers/web/org/worktime.go @@ -9,6 +9,7 @@ import ( "code.gitea.io/gitea/models/organization" "code.gitea.io/gitea/modules/templates" + shared_user "code.gitea.io/gitea/routers/web/shared/user" "code.gitea.io/gitea/services/context" ) @@ -69,6 +70,13 @@ func Worktime(ctx *context.Context) { ctx.ServerError("GetWorktime", err) return } + + _, err = shared_user.PrepareOrgHeader(ctx) + if err != nil { + ctx.ServerError("PrepareOrgHeader", err) + return + } + ctx.Data["WorktimeSumResult"] = worktimeSumResult ctx.HTML(http.StatusOK, tplByRepos) } diff --git a/routers/web/user/package.go b/routers/web/user/package.go index c01bc96e2bfe6..df3fd699182fb 100644 --- a/routers/web/user/package.go +++ b/routers/web/user/package.go @@ -43,6 +43,11 @@ const ( // ListPackages displays a list of all packages of the context user func ListPackages(ctx *context.Context) { shared_user.PrepareContextForProfileBigAvatar(ctx) + _, err := shared_user.PrepareOrgHeader(ctx) + if err != nil { + ctx.ServerError("PrepareOrgHeader", err) + return + } page := ctx.FormInt("page") if page <= 1 { page = 1 @@ -428,6 +433,11 @@ func PackageSettings(ctx *context.Context) { ctx.ServerError("LoadHeaderCount", err) return } + _, err = shared_user.PrepareOrgHeader(ctx) + if err != nil { + ctx.ServerError("PrepareOrgHeader", err) + return + } ctx.HTML(http.StatusOK, tplPackagesSettings) } From b0e66a103f518c0e1b523005025a105ad61df443 Mon Sep 17 00:00:00 2001 From: dragon Date: Wed, 19 Mar 2025 09:10:32 +0800 Subject: [PATCH 02/17] Add org check --- routers/web/user/package.go | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/routers/web/user/package.go b/routers/web/user/package.go index df3fd699182fb..5e7c516ad211f 100644 --- a/routers/web/user/package.go +++ b/routers/web/user/package.go @@ -43,11 +43,6 @@ const ( // ListPackages displays a list of all packages of the context user func ListPackages(ctx *context.Context) { shared_user.PrepareContextForProfileBigAvatar(ctx) - _, err := shared_user.PrepareOrgHeader(ctx) - if err != nil { - ctx.ServerError("PrepareOrgHeader", err) - return - } page := ctx.FormInt("page") if page <= 1 { page = 1 @@ -130,6 +125,11 @@ func ListPackages(ctx *context.Context) { ctx.Data["IsOrganizationMember"] = false ctx.Data["IsOrganizationOwner"] = false } + _, err := shared_user.PrepareOrgHeader(ctx) + if err != nil { + ctx.ServerError("PrepareOrgHeader", err) + return + } } pager := context.NewPagination(int(total), setting.UI.PackagesPagingNum, page, 5) @@ -433,12 +433,14 @@ func PackageSettings(ctx *context.Context) { ctx.ServerError("LoadHeaderCount", err) return } - _, err = shared_user.PrepareOrgHeader(ctx) - if err != nil { - ctx.ServerError("PrepareOrgHeader", err) - return + // TODO: context/org -> HandleOrgAssignment() can not be used + if ctx.ContextUser.IsOrganization() { + _, err = shared_user.PrepareOrgHeader(ctx) + if err != nil { + ctx.ServerError("PrepareOrgHeader", err) + return + } } - ctx.HTML(http.StatusOK, tplPackagesSettings) } From 9f9285a5062b43f15f9f74d01877b72c00c745f4 Mon Sep 17 00:00:00 2001 From: dragon Date: Wed, 19 Mar 2025 09:12:55 +0800 Subject: [PATCH 03/17] cleanup --- routers/web/user/package.go | 1 - 1 file changed, 1 deletion(-) diff --git a/routers/web/user/package.go b/routers/web/user/package.go index 5e7c516ad211f..8f09069ee3ae2 100644 --- a/routers/web/user/package.go +++ b/routers/web/user/package.go @@ -433,7 +433,6 @@ func PackageSettings(ctx *context.Context) { ctx.ServerError("LoadHeaderCount", err) return } - // TODO: context/org -> HandleOrgAssignment() can not be used if ctx.ContextUser.IsOrganization() { _, err = shared_user.PrepareOrgHeader(ctx) if err != nil { From ca09276cf9ebee030088f197e4830042268e22cd Mon Sep 17 00:00:00 2001 From: dragon Date: Thu, 20 Mar 2025 09:18:15 +0800 Subject: [PATCH 04/17] fix code page --- routers/web/user/code.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/routers/web/user/code.go b/routers/web/user/code.go index f9aa58b877600..e7f29c8697b2d 100644 --- a/routers/web/user/code.go +++ b/routers/web/user/code.go @@ -33,6 +33,13 @@ func CodeSearch(ctx *context.Context) { ctx.ServerError("LoadHeaderCount", err) return } + if ctx.ContextUser.IsOrganization() { + _, err := shared_user.PrepareOrgHeader(ctx) + if err != nil { + ctx.ServerError("PrepareOrgHeader", err) + return + } + } ctx.Data["IsPackageEnabled"] = setting.Packages.Enabled ctx.Data["Title"] = ctx.Tr("explore.code") From f6d469888a6cbe59b0dfa93c5ae0e3056c69c3c8 Mon Sep 17 00:00:00 2001 From: dragon Date: Tue, 8 Apr 2025 10:12:31 +0800 Subject: [PATCH 05/17] rewrite --- routers/web/org/projects.go | 12 ++++-------- routers/web/org/worktime.go | 5 ++--- routers/web/shared/user/header.go | 11 +++++++++++ routers/web/user/code.go | 12 ++++-------- routers/web/user/package.go | 22 ++++++++-------------- 5 files changed, 29 insertions(+), 33 deletions(-) diff --git a/routers/web/org/projects.go b/routers/web/org/projects.go index 82bb2dd336c77..431b1853a109e 100644 --- a/routers/web/org/projects.go +++ b/routers/web/org/projects.go @@ -101,7 +101,10 @@ func Projects(ctx *context.Context) { } ctx.Data["Projects"] = projects - shared_user.RenderUserHeader(ctx) + if err = shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) + return + } if isShowClosed { ctx.Data["State"] = "closed" @@ -126,13 +129,6 @@ func Projects(ctx *context.Context) { pager := context.NewPagination(int(total), setting.UI.IssuePagingNum, page, numPages) pager.AddParamFromRequest(ctx.Req) - - _, err = shared_user.PrepareOrgHeader(ctx) - if err != nil { - ctx.ServerError("PrepareOrgHeader", err) - return - } - ctx.Data["Page"] = pager ctx.Data["CanWriteProjects"] = canWriteProjects(ctx) diff --git a/routers/web/org/worktime.go b/routers/web/org/worktime.go index 472cb714dadd2..e647228c72b8e 100644 --- a/routers/web/org/worktime.go +++ b/routers/web/org/worktime.go @@ -72,9 +72,8 @@ func Worktime(ctx *context.Context) { return } - _, err = shared_user.PrepareOrgHeader(ctx) - if err != nil { - ctx.ServerError("PrepareOrgHeader", err) + if err = shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) return } diff --git a/routers/web/shared/user/header.go b/routers/web/shared/user/header.go index 62b146c7f3200..c4022e35eec33 100644 --- a/routers/web/shared/user/header.go +++ b/routers/web/shared/user/header.go @@ -145,6 +145,17 @@ func RenderUserHeader(ctx *context.Context) { ctx.Data["HasUserProfileReadme"] = profileReadmeBlob != nil } +func RenderUserOrgHeader(ctx *context.Context) error { + RenderUserHeader(ctx) + if ctx.ContextUser.IsOrganization() { + _, err := PrepareOrgHeader(ctx) + if err != nil { + return err + } + } + return nil +} + func LoadHeaderCount(ctx *context.Context) error { prepareContextForCommonProfile(ctx) diff --git a/routers/web/user/code.go b/routers/web/user/code.go index e7f29c8697b2d..a0d35806d3260 100644 --- a/routers/web/user/code.go +++ b/routers/web/user/code.go @@ -27,19 +27,15 @@ func CodeSearch(ctx *context.Context) { return } shared_user.PrepareContextForProfileBigAvatar(ctx) - shared_user.RenderUserHeader(ctx) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) + return + } if err := shared_user.LoadHeaderCount(ctx); err != nil { ctx.ServerError("LoadHeaderCount", err) return } - if ctx.ContextUser.IsOrganization() { - _, err := shared_user.PrepareOrgHeader(ctx) - if err != nil { - ctx.ServerError("PrepareOrgHeader", err) - return - } - } ctx.Data["IsPackageEnabled"] = setting.Packages.Enabled ctx.Data["Title"] = ctx.Tr("explore.code") diff --git a/routers/web/user/package.go b/routers/web/user/package.go index 8f09069ee3ae2..e20d06f49337c 100644 --- a/routers/web/user/package.go +++ b/routers/web/user/package.go @@ -94,7 +94,10 @@ func ListPackages(ctx *context.Context) { return } - shared_user.RenderUserHeader(ctx) + if err = shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) + return + } ctx.Data["Title"] = ctx.Tr("packages.title") ctx.Data["IsPackagesPage"] = true @@ -125,11 +128,6 @@ func ListPackages(ctx *context.Context) { ctx.Data["IsOrganizationMember"] = false ctx.Data["IsOrganizationOwner"] = false } - _, err := shared_user.PrepareOrgHeader(ctx) - if err != nil { - ctx.ServerError("PrepareOrgHeader", err) - return - } } pager := context.NewPagination(int(total), setting.UI.PackagesPagingNum, page, 5) @@ -415,7 +413,10 @@ func ListPackageVersions(ctx *context.Context) { func PackageSettings(ctx *context.Context) { pd := ctx.Package.Descriptor - shared_user.RenderUserHeader(ctx) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) + return + } ctx.Data["Title"] = pd.Package.Name ctx.Data["IsPackagesPage"] = true @@ -433,13 +434,6 @@ func PackageSettings(ctx *context.Context) { ctx.ServerError("LoadHeaderCount", err) return } - if ctx.ContextUser.IsOrganization() { - _, err = shared_user.PrepareOrgHeader(ctx) - if err != nil { - ctx.ServerError("PrepareOrgHeader", err) - return - } - } ctx.HTML(http.StatusOK, tplPackagesSettings) } From 543683c933f820c99eb16634aab336dc66f81947 Mon Sep 17 00:00:00 2001 From: dragon Date: Tue, 8 Apr 2025 13:59:57 +0800 Subject: [PATCH 06/17] refactor v1: RenderUserHeader --- routers/web/org/members.go | 5 ++--- routers/web/org/projects.go | 26 +++++++++++++++++++++----- routers/web/org/teams.go | 5 ++--- routers/web/shared/user/header.go | 6 +----- routers/web/user/package.go | 10 ++++++++-- 5 files changed, 34 insertions(+), 18 deletions(-) diff --git a/routers/web/org/members.go b/routers/web/org/members.go index 7d88d6b1adee8..84a5b3fbf5b34 100644 --- a/routers/web/org/members.go +++ b/routers/web/org/members.go @@ -54,9 +54,8 @@ func Members(ctx *context.Context) { return } - _, err = shared_user.PrepareOrgHeader(ctx) - if err != nil { - ctx.ServerError("PrepareOrgHeader", err) + if err = shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) return } diff --git a/routers/web/org/projects.go b/routers/web/org/projects.go index 431b1853a109e..83552b6ca417c 100644 --- a/routers/web/org/projects.go +++ b/routers/web/org/projects.go @@ -155,7 +155,10 @@ func RenderNewProject(ctx *context.Context) { ctx.Data["PageIsViewProjects"] = true ctx.Data["HomeLink"] = ctx.ContextUser.HomeLink() ctx.Data["CancelLink"] = ctx.ContextUser.HomeLink() + "/-/projects" - shared_user.RenderUserHeader(ctx) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) + return + } err := shared_user.LoadHeaderCount(ctx) if err != nil { @@ -170,7 +173,10 @@ func RenderNewProject(ctx *context.Context) { func NewProjectPost(ctx *context.Context) { form := web.GetForm(ctx).(*forms.CreateProjectForm) ctx.Data["Title"] = ctx.Tr("repo.projects.new") - shared_user.RenderUserHeader(ctx) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) + return + } if ctx.HasError() { RenderNewProject(ctx) @@ -251,7 +257,10 @@ func RenderEditProject(ctx *context.Context) { ctx.Data["CanWriteProjects"] = canWriteProjects(ctx) ctx.Data["CardTypes"] = project_model.GetCardConfig() - shared_user.RenderUserHeader(ctx) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) + return + } p, err := project_model.GetProjectByID(ctx, ctx.PathParamInt64("id")) if err != nil { @@ -285,7 +294,10 @@ func EditProjectPost(ctx *context.Context) { ctx.Data["CardTypes"] = project_model.GetCardConfig() ctx.Data["CancelLink"] = project_model.ProjectLinkForOrg(ctx.ContextUser, projectID) - shared_user.RenderUserHeader(ctx) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) + return + } err := shared_user.LoadHeaderCount(ctx) if err != nil { @@ -446,7 +458,11 @@ func ViewProject(ctx *context.Context) { ctx.Data["Project"] = project ctx.Data["IssuesMap"] = issuesMap ctx.Data["Columns"] = columns - shared_user.RenderUserHeader(ctx) + + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) + return + } err = shared_user.LoadHeaderCount(ctx) if err != nil { diff --git a/routers/web/org/teams.go b/routers/web/org/teams.go index b1b0dd2c49f49..a07471082a9c8 100644 --- a/routers/web/org/teams.go +++ b/routers/web/org/teams.go @@ -58,9 +58,8 @@ func Teams(ctx *context.Context) { } ctx.Data["Teams"] = ctx.Org.Teams - _, err := shared_user.PrepareOrgHeader(ctx) - if err != nil { - ctx.ServerError("PrepareOrgHeader", err) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) return } diff --git a/routers/web/shared/user/header.go b/routers/web/shared/user/header.go index c4022e35eec33..eb4f9af53a919 100644 --- a/routers/web/shared/user/header.go +++ b/routers/web/shared/user/header.go @@ -138,15 +138,11 @@ func FindOwnerProfileReadme(ctx *context.Context, doer *user_model.User, optProf return profileDbRepo, profileReadmeBlob } -func RenderUserHeader(ctx *context.Context) { +func RenderUserOrgHeader(ctx *context.Context) error { prepareContextForCommonProfile(ctx) - _, profileReadmeBlob := FindOwnerProfileReadme(ctx, ctx.Doer) ctx.Data["HasUserProfileReadme"] = profileReadmeBlob != nil -} -func RenderUserOrgHeader(ctx *context.Context) error { - RenderUserHeader(ctx) if ctx.ContextUser.IsOrganization() { _, err := PrepareOrgHeader(ctx) if err != nil { diff --git a/routers/web/user/package.go b/routers/web/user/package.go index e20d06f49337c..537f6d9f41a07 100644 --- a/routers/web/user/package.go +++ b/routers/web/user/package.go @@ -175,7 +175,10 @@ func RedirectToLastVersion(ctx *context.Context) { func ViewPackageVersion(ctx *context.Context) { pd := ctx.Package.Descriptor - shared_user.RenderUserHeader(ctx) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) + return + } ctx.Data["Title"] = pd.Package.Name ctx.Data["IsPackagesPage"] = true @@ -339,7 +342,10 @@ func ListPackageVersions(ctx *context.Context) { query := ctx.FormTrim("q") sort := ctx.FormTrim("sort") - shared_user.RenderUserHeader(ctx) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) + return + } ctx.Data["Title"] = ctx.Tr("packages.title") ctx.Data["IsPackagesPage"] = true From 2d9c4d71afa4095d253dd1dbd7093ddf0806c317 Mon Sep 17 00:00:00 2001 From: dragon Date: Tue, 8 Apr 2025 14:23:24 +0800 Subject: [PATCH 07/17] refactor v2: LoadHeaderCount --- routers/web/org/home.go | 6 ------ routers/web/org/projects.go | 24 ----------------------- routers/web/org/setting.go | 20 ++++++++----------- routers/web/org/setting_oauth2.go | 5 ++--- routers/web/org/setting_packages.go | 20 ++++++++----------- routers/web/org/teams.go | 16 +++++++-------- routers/web/repo/setting/secrets.go | 5 ++--- routers/web/shared/actions/runners.go | 5 ++--- routers/web/shared/actions/variables.go | 5 ++--- routers/web/shared/user/header.go | 6 ++++-- routers/web/user/code.go | 5 ----- routers/web/user/package.go | 23 ---------------------- routers/web/user/profile.go | 5 ++--- routers/web/user/setting/oauth2_common.go | 4 ++-- 14 files changed, 40 insertions(+), 109 deletions(-) diff --git a/routers/web/org/home.go b/routers/web/org/home.go index e3c2dcf0bdd24..e63093200a73b 100644 --- a/routers/web/org/home.go +++ b/routers/web/org/home.go @@ -86,12 +86,6 @@ func home(ctx *context.Context, viewRepositories bool) { private := ctx.FormOptionalBool("private") ctx.Data["IsPrivate"] = private - err := shared_user.LoadHeaderCount(ctx) - if err != nil { - ctx.ServerError("LoadHeaderCount", err) - return - } - opts := &organization.FindOrgMembersOpts{ Doer: ctx.Doer, OrgID: org.ID, diff --git a/routers/web/org/projects.go b/routers/web/org/projects.go index 83552b6ca417c..0d8ac2daee592 100644 --- a/routers/web/org/projects.go +++ b/routers/web/org/projects.go @@ -116,12 +116,6 @@ func Projects(ctx *context.Context) { project.RenderedContent = renderUtils.MarkdownToHtml(project.Description) } - err = shared_user.LoadHeaderCount(ctx) - if err != nil { - ctx.ServerError("LoadHeaderCount", err) - return - } - numPages := 0 if total > 0 { numPages = (int(total) - 1/setting.UI.IssuePagingNum) @@ -160,12 +154,6 @@ func RenderNewProject(ctx *context.Context) { return } - err := shared_user.LoadHeaderCount(ctx) - if err != nil { - ctx.ServerError("LoadHeaderCount", err) - return - } - ctx.HTML(http.StatusOK, tplProjectsNew) } @@ -299,12 +287,6 @@ func EditProjectPost(ctx *context.Context) { return } - err := shared_user.LoadHeaderCount(ctx) - if err != nil { - ctx.ServerError("LoadHeaderCount", err) - return - } - if ctx.HasError() { ctx.HTML(http.StatusOK, tplProjectsNew) return @@ -464,12 +446,6 @@ func ViewProject(ctx *context.Context) { return } - err = shared_user.LoadHeaderCount(ctx) - if err != nil { - ctx.ServerError("LoadHeaderCount", err) - return - } - ctx.HTML(http.StatusOK, tplProjectsView) } diff --git a/routers/web/org/setting.go b/routers/web/org/setting.go index a8a81e0ade93e..822fcb519a343 100644 --- a/routers/web/org/setting.go +++ b/routers/web/org/setting.go @@ -48,9 +48,8 @@ func Settings(ctx *context.Context) { ctx.Data["RepoAdminChangeTeamAccess"] = ctx.Org.Organization.RepoAdminChangeTeamAccess ctx.Data["ContextUser"] = ctx.ContextUser - err := shared_user.LoadHeaderCount(ctx) - if err != nil { - ctx.ServerError("LoadHeaderCount", err) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) return } @@ -194,9 +193,8 @@ func SettingsDelete(ctx *context.Context) { return } - err := shared_user.LoadHeaderCount(ctx) - if err != nil { - ctx.ServerError("LoadHeaderCount", err) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) return } @@ -218,9 +216,8 @@ func Webhooks(ctx *context.Context) { return } - err = shared_user.LoadHeaderCount(ctx) - if err != nil { - ctx.ServerError("LoadHeaderCount", err) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) return } @@ -246,9 +243,8 @@ func Labels(ctx *context.Context) { ctx.Data["PageIsOrgSettingsLabels"] = true ctx.Data["LabelTemplateFiles"] = repo_module.LabelTemplateFiles - err := shared_user.LoadHeaderCount(ctx) - if err != nil { - ctx.ServerError("LoadHeaderCount", err) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) return } diff --git a/routers/web/org/setting_oauth2.go b/routers/web/org/setting_oauth2.go index c93058477ef5c..6dd8f2ca6bb47 100644 --- a/routers/web/org/setting_oauth2.go +++ b/routers/web/org/setting_oauth2.go @@ -45,9 +45,8 @@ func Applications(ctx *context.Context) { } ctx.Data["Applications"] = apps - err = shared_user.LoadHeaderCount(ctx) - if err != nil { - ctx.ServerError("LoadHeaderCount", err) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) return } diff --git a/routers/web/org/setting_packages.go b/routers/web/org/setting_packages.go index 0912a9e0fde9b..cdce5efaa3e4a 100644 --- a/routers/web/org/setting_packages.go +++ b/routers/web/org/setting_packages.go @@ -25,9 +25,8 @@ func Packages(ctx *context.Context) { ctx.Data["PageIsOrgSettings"] = true ctx.Data["PageIsSettingsPackages"] = true - err := shared_user.LoadHeaderCount(ctx) - if err != nil { - ctx.ServerError("LoadHeaderCount", err) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) return } @@ -41,9 +40,8 @@ func PackagesRuleAdd(ctx *context.Context) { ctx.Data["PageIsOrgSettings"] = true ctx.Data["PageIsSettingsPackages"] = true - err := shared_user.LoadHeaderCount(ctx) - if err != nil { - ctx.ServerError("LoadHeaderCount", err) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) return } @@ -57,9 +55,8 @@ func PackagesRuleEdit(ctx *context.Context) { ctx.Data["PageIsOrgSettings"] = true ctx.Data["PageIsSettingsPackages"] = true - err := shared_user.LoadHeaderCount(ctx) - if err != nil { - ctx.ServerError("LoadHeaderCount", err) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) return } @@ -99,9 +96,8 @@ func PackagesRulePreview(ctx *context.Context) { ctx.Data["PageIsOrgSettings"] = true ctx.Data["PageIsSettingsPackages"] = true - err := shared_user.LoadHeaderCount(ctx) - if err != nil { - ctx.ServerError("LoadHeaderCount", err) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) return } diff --git a/routers/web/org/teams.go b/routers/web/org/teams.go index a07471082a9c8..4be790e1e7dc5 100644 --- a/routers/web/org/teams.go +++ b/routers/web/org/teams.go @@ -276,8 +276,8 @@ func NewTeam(ctx *context.Context) { ctx.Data["PageIsOrgTeamsNew"] = true ctx.Data["Team"] = &org_model.Team{} ctx.Data["Units"] = unit_model.Units - if err := shared_user.LoadHeaderCount(ctx); err != nil { - ctx.ServerError("LoadHeaderCount", err) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) return } ctx.HTML(http.StatusOK, tplTeamNew) @@ -373,8 +373,8 @@ func TeamMembers(ctx *context.Context) { ctx.Data["PageIsOrgTeams"] = true ctx.Data["PageIsOrgTeamMembers"] = true - if err := shared_user.LoadHeaderCount(ctx); err != nil { - ctx.ServerError("LoadHeaderCount", err) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) return } @@ -401,8 +401,8 @@ func TeamRepositories(ctx *context.Context) { ctx.Data["PageIsOrgTeams"] = true ctx.Data["PageIsOrgTeamRepos"] = true - if err := shared_user.LoadHeaderCount(ctx); err != nil { - ctx.ServerError("LoadHeaderCount", err) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) return } @@ -468,8 +468,8 @@ func EditTeam(ctx *context.Context) { ctx.ServerError("LoadUnits", err) return } - if err := shared_user.LoadHeaderCount(ctx); err != nil { - ctx.ServerError("LoadHeaderCount", err) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) return } ctx.Data["Team"] = ctx.Org.Team diff --git a/routers/web/repo/setting/secrets.go b/routers/web/repo/setting/secrets.go index 46cb875f9bdac..e6c967f14228d 100644 --- a/routers/web/repo/setting/secrets.go +++ b/routers/web/repo/setting/secrets.go @@ -44,9 +44,8 @@ func getSecretsCtx(ctx *context.Context) (*secretsCtx, error) { } if ctx.Data["PageIsOrgSettings"] == true { - err := shared_user.LoadHeaderCount(ctx) - if err != nil { - ctx.ServerError("LoadHeaderCount", err) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) return nil, nil } return &secretsCtx{ diff --git a/routers/web/shared/actions/runners.go b/routers/web/shared/actions/runners.go index 444bd960db58d..a1fae36973893 100644 --- a/routers/web/shared/actions/runners.go +++ b/routers/web/shared/actions/runners.go @@ -57,9 +57,8 @@ func getRunnersCtx(ctx *context.Context) (*runnersCtx, error) { } if ctx.Data["PageIsOrgSettings"] == true { - err := shared_user.LoadHeaderCount(ctx) - if err != nil { - ctx.ServerError("LoadHeaderCount", err) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) return nil, nil } return &runnersCtx{ diff --git a/routers/web/shared/actions/variables.go b/routers/web/shared/actions/variables.go index 9cc1676d7b418..106ffaebdb2c4 100644 --- a/routers/web/shared/actions/variables.go +++ b/routers/web/shared/actions/variables.go @@ -49,9 +49,8 @@ func getVariablesCtx(ctx *context.Context) (*variablesCtx, error) { } if ctx.Data["PageIsOrgSettings"] == true { - err := shared_user.LoadHeaderCount(ctx) - if err != nil { - ctx.ServerError("LoadHeaderCount", err) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) return nil, nil } return &variablesCtx{ diff --git a/routers/web/shared/user/header.go b/routers/web/shared/user/header.go index eb4f9af53a919..6aa8b80c1b4b1 100644 --- a/routers/web/shared/user/header.go +++ b/routers/web/shared/user/header.go @@ -139,11 +139,13 @@ func FindOwnerProfileReadme(ctx *context.Context, doer *user_model.User, optProf } func RenderUserOrgHeader(ctx *context.Context) error { - prepareContextForCommonProfile(ctx) + if err := LoadHeaderCount(ctx); err != nil { + return err + } _, profileReadmeBlob := FindOwnerProfileReadme(ctx, ctx.Doer) ctx.Data["HasUserProfileReadme"] = profileReadmeBlob != nil - if ctx.ContextUser.IsOrganization() { + if ctx.ContextUser != nil && ctx.ContextUser.IsOrganization() { _, err := PrepareOrgHeader(ctx) if err != nil { return err diff --git a/routers/web/user/code.go b/routers/web/user/code.go index a0d35806d3260..92550104ec83e 100644 --- a/routers/web/user/code.go +++ b/routers/web/user/code.go @@ -32,11 +32,6 @@ func CodeSearch(ctx *context.Context) { return } - if err := shared_user.LoadHeaderCount(ctx); err != nil { - ctx.ServerError("LoadHeaderCount", err) - return - } - ctx.Data["IsPackageEnabled"] = setting.Packages.Enabled ctx.Data["Title"] = ctx.Tr("explore.code") ctx.Data["IsCodePage"] = true diff --git a/routers/web/user/package.go b/routers/web/user/package.go index 537f6d9f41a07..1b6100991bfd6 100644 --- a/routers/web/user/package.go +++ b/routers/web/user/package.go @@ -109,12 +109,6 @@ func ListPackages(ctx *context.Context) { ctx.Data["Total"] = total ctx.Data["RepositoryAccessMap"] = repositoryAccessMap - err = shared_user.LoadHeaderCount(ctx) - if err != nil { - ctx.ServerError("LoadHeaderCount", err) - return - } - // TODO: context/org -> HandleOrgAssignment() can not be used if ctx.ContextUser.IsOrganization() { org := org_model.OrgFromUser(ctx.ContextUser) @@ -308,12 +302,6 @@ func ViewPackageVersion(ctx *context.Context) { } ctx.Data["HasRepositoryAccess"] = hasRepositoryAccess - err = shared_user.LoadHeaderCount(ctx) - if err != nil { - ctx.ServerError("LoadHeaderCount", err) - return - } - ctx.HTML(http.StatusOK, tplPackagesView) } @@ -402,12 +390,6 @@ func ListPackageVersions(ctx *context.Context) { ctx.Data["Total"] = total - err = shared_user.LoadHeaderCount(ctx) - if err != nil { - ctx.ServerError("LoadHeaderCount", err) - return - } - pager := context.NewPagination(int(total), setting.UI.PackagesPagingNum, page, 5) pager.AddParamFromRequest(ctx.Req) ctx.Data["Page"] = pager @@ -435,11 +417,6 @@ func PackageSettings(ctx *context.Context) { ctx.Data["Repos"] = repos ctx.Data["CanWritePackages"] = ctx.Package.AccessMode >= perm.AccessModeWrite || ctx.IsUserSiteAdmin() - err := shared_user.LoadHeaderCount(ctx) - if err != nil { - ctx.ServerError("LoadHeaderCount", err) - return - } ctx.HTML(http.StatusOK, tplPackagesSettings) } diff --git a/routers/web/user/profile.go b/routers/web/user/profile.go index 39f066a53c904..fcb5fd5c062ef 100644 --- a/routers/web/user/profile.go +++ b/routers/web/user/profile.go @@ -302,9 +302,8 @@ func prepareUserProfileTabData(ctx *context.Context, showPrivate bool, profileDb ctx.Data["Repos"] = repos ctx.Data["Total"] = total - err = shared_user.LoadHeaderCount(ctx) - if err != nil { - ctx.ServerError("LoadHeaderCount", err) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) return } diff --git a/routers/web/user/setting/oauth2_common.go b/routers/web/user/setting/oauth2_common.go index d4da468a856a7..e5be1611c58d8 100644 --- a/routers/web/user/setting/oauth2_common.go +++ b/routers/web/user/setting/oauth2_common.go @@ -28,8 +28,8 @@ func (oa *OAuth2CommonHandlers) renderEditPage(ctx *context.Context) { ctx.Data["FormActionPath"] = fmt.Sprintf("%s/%d", oa.BasePathEditPrefix, app.ID) if ctx.ContextUser != nil && ctx.ContextUser.IsOrganization() { - if err := shared_user.LoadHeaderCount(ctx); err != nil { - ctx.ServerError("LoadHeaderCount", err) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) return } } From f633723167b18ad8f82680d31775cd5a55e15cda Mon Sep 17 00:00:00 2001 From: dragon Date: Tue, 8 Apr 2025 14:33:52 +0800 Subject: [PATCH 08/17] cleanup & fix BlockedUsers --- routers/web/org/block.go | 10 ++++++++++ routers/web/org/home.go | 4 ++++ routers/web/shared/user/header.go | 4 ---- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/routers/web/org/block.go b/routers/web/org/block.go index aeb4bd51a8c95..344be3e5c54da 100644 --- a/routers/web/org/block.go +++ b/routers/web/org/block.go @@ -20,6 +20,11 @@ func BlockedUsers(ctx *context.Context) { ctx.Data["PageIsOrgSettings"] = true ctx.Data["PageIsSettingsBlockedUsers"] = true + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) + return + } + shared_user.BlockedUsers(ctx, ctx.ContextUser) if ctx.Written() { return @@ -29,6 +34,11 @@ func BlockedUsers(ctx *context.Context) { } func BlockedUsersPost(ctx *context.Context) { + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) + return + } + shared_user.BlockedUsersPost(ctx, ctx.ContextUser) if ctx.Written() { return diff --git a/routers/web/org/home.go b/routers/web/org/home.go index e63093200a73b..7eed8a71abbdc 100644 --- a/routers/web/org/home.go +++ b/routers/web/org/home.go @@ -103,6 +103,10 @@ func home(ctx *context.Context, viewRepositories bool) { ctx.Data["DisableNewPullMirrors"] = setting.Mirror.DisableNewPull ctx.Data["ShowMemberAndTeamTab"] = ctx.Org.IsMember || len(members) > 0 + if err = shared_user.LoadHeaderCount(ctx); err != nil { + ctx.ServerError("LoadHeaderCount", err) + return + } prepareResult, err := shared_user.PrepareOrgHeader(ctx) if err != nil { ctx.ServerError("PrepareOrgHeader", err) diff --git a/routers/web/shared/user/header.go b/routers/web/shared/user/header.go index 6aa8b80c1b4b1..73226c942cd70 100644 --- a/routers/web/shared/user/header.go +++ b/routers/web/shared/user/header.go @@ -202,10 +202,6 @@ type PrepareOrgHeaderResult struct { } func PrepareOrgHeader(ctx *context.Context) (result *PrepareOrgHeaderResult, err error) { - if err = LoadHeaderCount(ctx); err != nil { - return nil, err - } - result = &PrepareOrgHeaderResult{} result.ProfilePublicRepo, result.ProfilePublicReadmeBlob = FindOwnerProfileReadme(ctx, ctx.Doer) result.ProfilePrivateRepo, result.ProfilePrivateReadmeBlob = FindOwnerProfileReadme(ctx, ctx.Doer, RepoNameProfilePrivate) From 686b963c604ece83aa322e2bb7af25dbaef8605d Mon Sep 17 00:00:00 2001 From: dragon Date: Tue, 8 Apr 2025 15:40:25 +0800 Subject: [PATCH 09/17] fix Packages tmpl --- routers/web/user/package.go | 25 ++++- routers/web/user/setting/oauth2_common.go | 8 +- templates/package/shared/view.tmpl | 106 +++++++++++++++++++ templates/package/view.tmpl | 122 +++------------------- 4 files changed, 147 insertions(+), 114 deletions(-) create mode 100644 templates/package/shared/view.tmpl diff --git a/routers/web/user/package.go b/routers/web/user/package.go index 1b6100991bfd6..69451d476fe9a 100644 --- a/routers/web/user/package.go +++ b/routers/web/user/package.go @@ -109,6 +109,11 @@ func ListPackages(ctx *context.Context) { ctx.Data["Total"] = total ctx.Data["RepositoryAccessMap"] = repositoryAccessMap + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) + return + } + // TODO: context/org -> HandleOrgAssignment() can not be used if ctx.ContextUser.IsOrganization() { org := org_model.OrgFromUser(ctx.ContextUser) @@ -123,11 +128,9 @@ func ListPackages(ctx *context.Context) { ctx.Data["IsOrganizationOwner"] = false } } - pager := context.NewPagination(int(total), setting.UI.PackagesPagingNum, page, 5) pager.AddParamFromRequest(ctx.Req) ctx.Data["Page"] = pager - ctx.HTML(http.StatusOK, tplPackagesList) } @@ -161,12 +164,12 @@ func RedirectToLastVersion(ctx *context.Context) { ctx.ServerError("GetPackageDescriptor", err) return } - ctx.Redirect(pd.VersionWebLink()) } // ViewPackageVersion displays a single package version func ViewPackageVersion(ctx *context.Context) { + shared_user.PrepareContextForProfileBigAvatar(ctx) pd := ctx.Package.Descriptor if err := shared_user.RenderUserOrgHeader(ctx); err != nil { @@ -302,6 +305,11 @@ func ViewPackageVersion(ctx *context.Context) { } ctx.Data["HasRepositoryAccess"] = hasRepositoryAccess + err = shared_user.LoadHeaderCount(ctx) + if err != nil { + ctx.ServerError("LoadHeaderCount", err) + return + } ctx.HTML(http.StatusOK, tplPackagesView) } @@ -390,6 +398,12 @@ func ListPackageVersions(ctx *context.Context) { ctx.Data["Total"] = total + err = shared_user.LoadHeaderCount(ctx) + if err != nil { + ctx.ServerError("LoadHeaderCount", err) + return + } + pager := context.NewPagination(int(total), setting.UI.PackagesPagingNum, page, 5) pager.AddParamFromRequest(ctx.Req) ctx.Data["Page"] = pager @@ -417,6 +431,11 @@ func PackageSettings(ctx *context.Context) { ctx.Data["Repos"] = repos ctx.Data["CanWritePackages"] = ctx.Package.AccessMode >= perm.AccessModeWrite || ctx.IsUserSiteAdmin() + err := shared_user.LoadHeaderCount(ctx) + if err != nil { + ctx.ServerError("LoadHeaderCount", err) + return + } ctx.HTML(http.StatusOK, tplPackagesSettings) } diff --git a/routers/web/user/setting/oauth2_common.go b/routers/web/user/setting/oauth2_common.go index e5be1611c58d8..b60b385ff0566 100644 --- a/routers/web/user/setting/oauth2_common.go +++ b/routers/web/user/setting/oauth2_common.go @@ -27,11 +27,9 @@ func (oa *OAuth2CommonHandlers) renderEditPage(ctx *context.Context) { app := ctx.Data["App"].(*auth.OAuth2Application) ctx.Data["FormActionPath"] = fmt.Sprintf("%s/%d", oa.BasePathEditPrefix, app.ID) - if ctx.ContextUser != nil && ctx.ContextUser.IsOrganization() { - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { - ctx.ServerError("RenderUserOrgHeader", err) - return - } + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) + return } ctx.HTML(http.StatusOK, oa.TplAppEdit) diff --git a/templates/package/shared/view.tmpl b/templates/package/shared/view.tmpl new file mode 100644 index 0000000000000..713e1bbfc5520 --- /dev/null +++ b/templates/package/shared/view.tmpl @@ -0,0 +1,106 @@ +
+

{{.PackageDescriptor.Package.Name}} ({{.PackageDescriptor.Version.Version}})

+
+ {{$timeStr := DateUtils.TimeSince .PackageDescriptor.Version.CreatedUnix}} + {{if .HasRepositoryAccess}} + {{ctx.Locale.Tr "packages.published_by_in" $timeStr .PackageDescriptor.Creator.HomeLink .PackageDescriptor.Creator.GetDisplayName .PackageDescriptor.Repository.Link .PackageDescriptor.Repository.FullName}} + {{else}} + {{ctx.Locale.Tr "packages.published_by" $timeStr .PackageDescriptor.Creator.HomeLink .PackageDescriptor.Creator.GetDisplayName}} + {{end}} +
+
+
+
+ {{template "package/content/alpine" .}} + {{template "package/content/arch" .}} + {{template "package/content/cargo" .}} + {{template "package/content/chef" .}} + {{template "package/content/composer" .}} + {{template "package/content/conan" .}} + {{template "package/content/conda" .}} + {{template "package/content/container" .}} + {{template "package/content/cran" .}} + {{template "package/content/debian" .}} + {{template "package/content/generic" .}} + {{template "package/content/go" .}} + {{template "package/content/helm" .}} + {{template "package/content/maven" .}} + {{template "package/content/npm" .}} + {{template "package/content/nuget" .}} + {{template "package/content/pub" .}} + {{template "package/content/pypi" .}} + {{template "package/content/rpm" .}} + {{template "package/content/rubygems" .}} + {{template "package/content/swift" .}} + {{template "package/content/vagrant" .}} +
+
+ {{ctx.Locale.Tr "packages.details"}} +
+
{{svg .PackageDescriptor.Package.Type.SVGName}} {{.PackageDescriptor.Package.Type.Name}}
+ {{if .HasRepositoryAccess}} + + {{end}} +
{{svg "octicon-calendar"}} {{DateUtils.TimeSince .PackageDescriptor.Version.CreatedUnix}}
+
{{svg "octicon-download"}} {{.PackageDescriptor.Version.DownloadCount}}
+ {{template "package/metadata/alpine" .}} + {{template "package/metadata/arch" .}} + {{template "package/metadata/cargo" .}} + {{template "package/metadata/chef" .}} + {{template "package/metadata/composer" .}} + {{template "package/metadata/conan" .}} + {{template "package/metadata/conda" .}} + {{template "package/metadata/container" .}} + {{template "package/metadata/cran" .}} + {{template "package/metadata/debian" .}} + {{template "package/metadata/generic" .}} + {{template "package/metadata/helm" .}} + {{template "package/metadata/maven" .}} + {{template "package/metadata/npm" .}} + {{template "package/metadata/nuget" .}} + {{template "package/metadata/pub" .}} + {{template "package/metadata/pypi" .}} + {{template "package/metadata/rpm" .}} + {{template "package/metadata/rubygems" .}} + {{template "package/metadata/swift" .}} + {{template "package/metadata/vagrant" .}} + {{if not (and (eq .PackageDescriptor.Package.Type "container") .PackageDescriptor.Metadata.Manifests)}} +
{{svg "octicon-database"}} {{FileSize .PackageDescriptor.CalculateBlobSize}}
+ {{end}} +
+ {{if not (eq .PackageDescriptor.Package.Type "container")}} +
+ {{ctx.Locale.Tr "packages.assets"}} ({{len .PackageDescriptor.Files}}) +
+ {{range .PackageDescriptor.Files}} +
+ {{.File.Name}} + {{FileSize .Blob.Size}} +
+ {{end}} +
+ {{end}} +
+ {{ctx.Locale.Tr "packages.versions"}} ({{.TotalVersionCount}}) + {{ctx.Locale.Tr "packages.versions.view_all"}} +
+ {{range .LatestVersions}} +
+ {{.Version}} + {{DateUtils.AbsoluteShort .CreatedUnix}} +
+ {{end}} +
+ {{if or .CanWritePackages .HasRepositoryAccess}} +
+
+ {{if .HasRepositoryAccess}} +
{{svg "octicon-issue-opened"}} {{ctx.Locale.Tr "repo.issues"}}
+ {{end}} + {{if .CanWritePackages}} +
{{svg "octicon-tools"}} {{ctx.Locale.Tr "repo.settings"}}
+ {{end}} +
+ {{end}} +
+
diff --git a/templates/package/view.tmpl b/templates/package/view.tmpl index 9e92207466d96..9067f44296b72 100644 --- a/templates/package/view.tmpl +++ b/templates/package/view.tmpl @@ -1,114 +1,24 @@ {{template "base/head" .}} -
- {{template "shared/user/org_profile_avatar" .}} +{{if .ContextUser.IsOrganization}} +
+ {{template "org/header" .}}
- {{template "user/overview/header" .}} -
-

{{.PackageDescriptor.Package.Name}} ({{.PackageDescriptor.Version.Version}})

-
- {{$timeStr := DateUtils.TimeSince .PackageDescriptor.Version.CreatedUnix}} - {{if .HasRepositoryAccess}} - {{ctx.Locale.Tr "packages.published_by_in" $timeStr .PackageDescriptor.Creator.HomeLink .PackageDescriptor.Creator.GetDisplayName .PackageDescriptor.Repository.Link .PackageDescriptor.Repository.FullName}} - {{else}} - {{ctx.Locale.Tr "packages.published_by" $timeStr .PackageDescriptor.Creator.HomeLink .PackageDescriptor.Creator.GetDisplayName}} - {{end}} -
-
-
-
- {{template "package/content/alpine" .}} - {{template "package/content/arch" .}} - {{template "package/content/cargo" .}} - {{template "package/content/chef" .}} - {{template "package/content/composer" .}} - {{template "package/content/conan" .}} - {{template "package/content/conda" .}} - {{template "package/content/container" .}} - {{template "package/content/cran" .}} - {{template "package/content/debian" .}} - {{template "package/content/generic" .}} - {{template "package/content/go" .}} - {{template "package/content/helm" .}} - {{template "package/content/maven" .}} - {{template "package/content/npm" .}} - {{template "package/content/nuget" .}} - {{template "package/content/pub" .}} - {{template "package/content/pypi" .}} - {{template "package/content/rpm" .}} - {{template "package/content/rubygems" .}} - {{template "package/content/swift" .}} - {{template "package/content/vagrant" .}} + {{template "package/shared/view" .}} +
+
+{{else}} +
+
+
+
+ {{template "shared/user/profile_big_avatar" .}}
-
- {{ctx.Locale.Tr "packages.details"}} -
-
{{svg .PackageDescriptor.Package.Type.SVGName}} {{.PackageDescriptor.Package.Type.Name}}
- {{if .HasRepositoryAccess}} - - {{end}} -
{{svg "octicon-calendar"}} {{DateUtils.TimeSince .PackageDescriptor.Version.CreatedUnix}}
-
{{svg "octicon-download"}} {{.PackageDescriptor.Version.DownloadCount}}
- {{template "package/metadata/alpine" .}} - {{template "package/metadata/arch" .}} - {{template "package/metadata/cargo" .}} - {{template "package/metadata/chef" .}} - {{template "package/metadata/composer" .}} - {{template "package/metadata/conan" .}} - {{template "package/metadata/conda" .}} - {{template "package/metadata/container" .}} - {{template "package/metadata/cran" .}} - {{template "package/metadata/debian" .}} - {{template "package/metadata/generic" .}} - {{template "package/metadata/helm" .}} - {{template "package/metadata/maven" .}} - {{template "package/metadata/npm" .}} - {{template "package/metadata/nuget" .}} - {{template "package/metadata/pub" .}} - {{template "package/metadata/pypi" .}} - {{template "package/metadata/rpm" .}} - {{template "package/metadata/rubygems" .}} - {{template "package/metadata/swift" .}} - {{template "package/metadata/vagrant" .}} - {{if not (and (eq .PackageDescriptor.Package.Type "container") .PackageDescriptor.Metadata.Manifests)}} -
{{svg "octicon-database"}} {{FileSize .PackageDescriptor.CalculateBlobSize}}
- {{end}} -
- {{if not (eq .PackageDescriptor.Package.Type "container")}} -
- {{ctx.Locale.Tr "packages.assets"}} ({{len .PackageDescriptor.Files}}) -
- {{range .PackageDescriptor.Files}} -
- {{.File.Name}} - {{FileSize .Blob.Size}} -
- {{end}} -
- {{end}} -
- {{ctx.Locale.Tr "packages.versions"}} ({{.TotalVersionCount}}) - {{ctx.Locale.Tr "packages.versions.view_all"}} -
- {{range .LatestVersions}} -
- {{.Version}} - {{DateUtils.AbsoluteShort .CreatedUnix}} -
- {{end}} -
- {{if or .CanWritePackages .HasRepositoryAccess}} -
-
- {{if .HasRepositoryAccess}} -
{{svg "octicon-issue-opened"}} {{ctx.Locale.Tr "repo.issues"}}
- {{end}} - {{if .CanWritePackages}} -
{{svg "octicon-tools"}} {{ctx.Locale.Tr "repo.settings"}}
- {{end}} -
- {{end}} +
+ {{template "user/overview/header" .}} + {{template "package/shared/view" .}}
+{{end}} {{template "base/footer" .}} From 11a5510d31e82d144347154ac1eb30499c28e01b Mon Sep 17 00:00:00 2001 From: dragon Date: Tue, 8 Apr 2025 16:40:17 +0800 Subject: [PATCH 10/17] cleanup --- routers/web/org/home.go | 10 ++++---- routers/web/org/projects.go | 9 +++---- routers/web/shared/user/header.go | 22 +++++++++------- routers/web/user/code.go | 1 - routers/web/user/package.go | 42 ++++++++----------------------- routers/web/user/profile.go | 13 +++++++--- 6 files changed, 41 insertions(+), 56 deletions(-) diff --git a/routers/web/org/home.go b/routers/web/org/home.go index 7eed8a71abbdc..c25e7bc2b5ffd 100644 --- a/routers/web/org/home.go +++ b/routers/web/org/home.go @@ -103,22 +103,22 @@ func home(ctx *context.Context, viewRepositories bool) { ctx.Data["DisableNewPullMirrors"] = setting.Mirror.DisableNewPull ctx.Data["ShowMemberAndTeamTab"] = ctx.Org.IsMember || len(members) > 0 - if err = shared_user.LoadHeaderCount(ctx); err != nil { - ctx.ServerError("LoadHeaderCount", err) - return - } prepareResult, err := shared_user.PrepareOrgHeader(ctx) if err != nil { ctx.ServerError("PrepareOrgHeader", err) return } - // if no profile readme, it still means "view repositories" isViewOverview := !viewRepositories && prepareOrgProfileReadme(ctx, prepareResult) ctx.Data["PageIsViewRepositories"] = !isViewOverview ctx.Data["PageIsViewOverview"] = isViewOverview ctx.Data["ShowOrgProfileReadmeSelector"] = isViewOverview && prepareResult.ProfilePublicReadmeBlob != nil && prepareResult.ProfilePrivateReadmeBlob != nil + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) + return + } + repos, count, err := repo_model.SearchRepository(ctx, &repo_model.SearchRepoOptions{ ListOptions: db.ListOptions{ PageSize: setting.UI.User.RepoPagingNum, diff --git a/routers/web/org/projects.go b/routers/web/org/projects.go index 0d8ac2daee592..44672e16e335f 100644 --- a/routers/web/org/projects.go +++ b/routers/web/org/projects.go @@ -43,7 +43,10 @@ func MustEnableProjects(ctx *context.Context) { // Projects renders the home page of projects func Projects(ctx *context.Context) { - shared_user.PrepareContextForProfileBigAvatar(ctx) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) + return + } ctx.Data["Title"] = ctx.Tr("repo.projects") sortType := ctx.FormTrim("sort") @@ -101,10 +104,6 @@ func Projects(ctx *context.Context) { } ctx.Data["Projects"] = projects - if err = shared_user.RenderUserOrgHeader(ctx); err != nil { - ctx.ServerError("RenderUserOrgHeader", err) - return - } if isShowClosed { ctx.Data["State"] = "closed" diff --git a/routers/web/shared/user/header.go b/routers/web/shared/user/header.go index 73226c942cd70..0e3a252ca184d 100644 --- a/routers/web/shared/user/header.go +++ b/routers/web/shared/user/header.go @@ -4,6 +4,7 @@ package user import ( + "errors" "net/url" "code.gitea.io/gitea/models/db" @@ -33,10 +34,8 @@ func prepareContextForCommonProfile(ctx *context.Context) { ctx.Data["FeedURL"] = ctx.ContextUser.HomeLink() } -// PrepareContextForProfileBigAvatar set the context for big avatar view on the profile page -func PrepareContextForProfileBigAvatar(ctx *context.Context) { - prepareContextForCommonProfile(ctx) - +// prepareContextForProfileBigAvatar set the context for big avatar view on the profile page +func prepareContextForProfileBigAvatar(ctx *context.Context) { ctx.Data["IsFollowing"] = ctx.Doer != nil && user_model.IsFollowing(ctx, ctx.Doer.ID, ctx.ContextUser.ID) ctx.Data["ShowUserEmail"] = setting.UI.ShowUserEmail && ctx.ContextUser.Email != "" && ctx.IsSigned && !ctx.ContextUser.KeepEmailPrivate if setting.Service.UserLocationMapURL != "" { @@ -145,18 +144,23 @@ func RenderUserOrgHeader(ctx *context.Context) error { _, profileReadmeBlob := FindOwnerProfileReadme(ctx, ctx.Doer) ctx.Data["HasUserProfileReadme"] = profileReadmeBlob != nil - if ctx.ContextUser != nil && ctx.ContextUser.IsOrganization() { - _, err := PrepareOrgHeader(ctx) - if err != nil { - return err + if ctx.ContextUser == nil { + return errors.New("ctx.ContextUser is nil") + } + if ctx.ContextUser.IsOrganization() { + if ctx.Data["HasOrgProfileReadme"] == nil { + if _, err := PrepareOrgHeader(ctx); err != nil { + return err + } } + } else { + prepareContextForProfileBigAvatar(ctx) } return nil } func LoadHeaderCount(ctx *context.Context) error { prepareContextForCommonProfile(ctx) - repoCount, err := repo_model.CountRepository(ctx, &repo_model.SearchRepoOptions{ Actor: ctx.Doer, OwnerID: ctx.ContextUser.ID, diff --git a/routers/web/user/code.go b/routers/web/user/code.go index 92550104ec83e..9dbbca5b5a918 100644 --- a/routers/web/user/code.go +++ b/routers/web/user/code.go @@ -26,7 +26,6 @@ func CodeSearch(ctx *context.Context) { ctx.Redirect(ctx.ContextUser.HomeLink()) return } - shared_user.PrepareContextForProfileBigAvatar(ctx) if err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return diff --git a/routers/web/user/package.go b/routers/web/user/package.go index 69451d476fe9a..6ddb04e092469 100644 --- a/routers/web/user/package.go +++ b/routers/web/user/package.go @@ -42,7 +42,10 @@ const ( // ListPackages displays a list of all packages of the context user func ListPackages(ctx *context.Context) { - shared_user.PrepareContextForProfileBigAvatar(ctx) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) + return + } page := ctx.FormInt("page") if page <= 1 { page = 1 @@ -94,11 +97,6 @@ func ListPackages(ctx *context.Context) { return } - if err = shared_user.RenderUserOrgHeader(ctx); err != nil { - ctx.ServerError("RenderUserOrgHeader", err) - return - } - ctx.Data["Title"] = ctx.Tr("packages.title") ctx.Data["IsPackagesPage"] = true ctx.Data["Query"] = query @@ -169,14 +167,12 @@ func RedirectToLastVersion(ctx *context.Context) { // ViewPackageVersion displays a single package version func ViewPackageVersion(ctx *context.Context) { - shared_user.PrepareContextForProfileBigAvatar(ctx) - pd := ctx.Package.Descriptor - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } + pd := ctx.Package.Descriptor ctx.Data["Title"] = pd.Package.Name ctx.Data["IsPackagesPage"] = true ctx.Data["PackageDescriptor"] = pd @@ -304,18 +300,16 @@ func ViewPackageVersion(ctx *context.Context) { hasRepositoryAccess = permission.HasAnyUnitAccess() } ctx.Data["HasRepositoryAccess"] = hasRepositoryAccess - - err = shared_user.LoadHeaderCount(ctx) - if err != nil { - ctx.ServerError("LoadHeaderCount", err) - return - } ctx.HTML(http.StatusOK, tplPackagesView) } // ListPackageVersions lists all versions of a package func ListPackageVersions(ctx *context.Context) { - shared_user.PrepareContextForProfileBigAvatar(ctx) + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) + return + } + p, err := packages_model.GetPackageByName(ctx, ctx.Package.Owner.ID, packages_model.Type(ctx.PathParam("type")), ctx.PathParam("name")) if err != nil { if err == packages_model.ErrPackageNotExist { @@ -338,11 +332,6 @@ func ListPackageVersions(ctx *context.Context) { query := ctx.FormTrim("q") sort := ctx.FormTrim("sort") - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { - ctx.ServerError("RenderUserOrgHeader", err) - return - } - ctx.Data["Title"] = ctx.Tr("packages.title") ctx.Data["IsPackagesPage"] = true ctx.Data["PackageDescriptor"] = &packages_model.PackageDescriptor{ @@ -398,12 +387,6 @@ func ListPackageVersions(ctx *context.Context) { ctx.Data["Total"] = total - err = shared_user.LoadHeaderCount(ctx) - if err != nil { - ctx.ServerError("LoadHeaderCount", err) - return - } - pager := context.NewPagination(int(total), setting.UI.PackagesPagingNum, page, 5) pager.AddParamFromRequest(ctx.Req) ctx.Data["Page"] = pager @@ -431,11 +414,6 @@ func PackageSettings(ctx *context.Context) { ctx.Data["Repos"] = repos ctx.Data["CanWritePackages"] = ctx.Package.AccessMode >= perm.AccessModeWrite || ctx.IsUserSiteAdmin() - err := shared_user.LoadHeaderCount(ctx) - if err != nil { - ctx.ServerError("LoadHeaderCount", err) - return - } ctx.HTML(http.StatusOK, tplPackagesSettings) } diff --git a/routers/web/user/profile.go b/routers/web/user/profile.go index fcb5fd5c062ef..d399f74bcf389 100644 --- a/routers/web/user/profile.go +++ b/routers/web/user/profile.go @@ -78,8 +78,11 @@ func userProfile(ctx *context.Context) { showPrivate := ctx.IsSigned && (ctx.Doer.IsAdmin || ctx.Doer.ID == ctx.ContextUser.ID) prepareUserProfileTabData(ctx, showPrivate, profileDbRepo, profileReadmeBlob) - // call PrepareContextForProfileBigAvatar later to avoid re-querying the NumFollowers & NumFollowing - shared_user.PrepareContextForProfileBigAvatar(ctx) + // call prepareContextForProfileBigAvatar later to avoid re-querying the NumFollowers & NumFollowing + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) + return + } ctx.HTML(http.StatusOK, tplProfile) } @@ -327,9 +330,11 @@ func ActionUserFollow(ctx *context.Context) { ctx.HTTPError(http.StatusBadRequest, fmt.Sprintf("Action %q failed", ctx.FormString("action"))) return } - + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) + return + } if ctx.ContextUser.IsIndividual() { - shared_user.PrepareContextForProfileBigAvatar(ctx) ctx.HTML(http.StatusOK, tplProfileBigAvatar) return } else if ctx.ContextUser.IsOrganization() { From 68ef8eed2a645844835e62559dcabdc5263eca8e Mon Sep 17 00:00:00 2001 From: dragon Date: Tue, 8 Apr 2025 16:43:13 +0800 Subject: [PATCH 11/17] cleanup --- routers/web/org/teams.go | 41 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/routers/web/org/teams.go b/routers/web/org/teams.go index 4be790e1e7dc5..7251a7dbbb605 100644 --- a/routers/web/org/teams.go +++ b/routers/web/org/teams.go @@ -46,6 +46,10 @@ const ( // Teams render teams list page func Teams(ctx *context.Context) { + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) + return + } org := ctx.Org.Organization ctx.Data["Title"] = org.FullName ctx.Data["PageIsOrgTeams"] = true @@ -58,11 +62,6 @@ func Teams(ctx *context.Context) { } ctx.Data["Teams"] = ctx.Org.Teams - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { - ctx.ServerError("RenderUserOrgHeader", err) - return - } - ctx.HTML(http.StatusOK, tplTeams) } @@ -271,15 +270,15 @@ func TeamsRepoAction(ctx *context.Context) { // NewTeam render create new team page func NewTeam(ctx *context.Context) { + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) + return + } ctx.Data["Title"] = ctx.Org.Organization.FullName ctx.Data["PageIsOrgTeams"] = true ctx.Data["PageIsOrgTeamsNew"] = true ctx.Data["Team"] = &org_model.Team{} ctx.Data["Units"] = unit_model.Units - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { - ctx.ServerError("RenderUserOrgHeader", err) - return - } ctx.HTML(http.StatusOK, tplTeamNew) } @@ -369,15 +368,15 @@ func NewTeamPost(ctx *context.Context) { // TeamMembers render team members page func TeamMembers(ctx *context.Context) { - ctx.Data["Title"] = ctx.Org.Team.Name - ctx.Data["PageIsOrgTeams"] = true - ctx.Data["PageIsOrgTeamMembers"] = true - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } + ctx.Data["Title"] = ctx.Org.Team.Name + ctx.Data["PageIsOrgTeams"] = true + ctx.Data["PageIsOrgTeamMembers"] = true + if err := ctx.Org.Team.LoadMembers(ctx); err != nil { ctx.ServerError("GetMembers", err) return @@ -397,15 +396,15 @@ func TeamMembers(ctx *context.Context) { // TeamRepositories show the repositories of team func TeamRepositories(ctx *context.Context) { - ctx.Data["Title"] = ctx.Org.Team.Name - ctx.Data["PageIsOrgTeams"] = true - ctx.Data["PageIsOrgTeamRepos"] = true - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } + ctx.Data["Title"] = ctx.Org.Team.Name + ctx.Data["PageIsOrgTeams"] = true + ctx.Data["PageIsOrgTeamRepos"] = true + repos, err := repo_model.GetTeamRepositories(ctx, &repo_model.SearchTeamRepoOptions{ TeamID: ctx.Org.Team.ID, }) @@ -462,16 +461,16 @@ func SearchTeam(ctx *context.Context) { // EditTeam render team edit page func EditTeam(ctx *context.Context) { + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) + return + } ctx.Data["Title"] = ctx.Org.Organization.FullName ctx.Data["PageIsOrgTeams"] = true if err := ctx.Org.Team.LoadUnits(ctx); err != nil { ctx.ServerError("LoadUnits", err) return } - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { - ctx.ServerError("RenderUserOrgHeader", err) - return - } ctx.Data["Team"] = ctx.Org.Team ctx.Data["Units"] = unit_model.Units ctx.HTML(http.StatusOK, tplTeamNew) From 584cf8524b4d8c2ddb8cc8f56083e068b5b0d88b Mon Sep 17 00:00:00 2001 From: dragon Date: Tue, 8 Apr 2025 17:12:50 +0800 Subject: [PATCH 12/17] fix oauth2 error --- routers/web/shared/user/header.go | 8 ++++---- routers/web/user/setting/oauth2_common.go | 8 +++++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/routers/web/shared/user/header.go b/routers/web/shared/user/header.go index 0e3a252ca184d..b8442eb3da68c 100644 --- a/routers/web/shared/user/header.go +++ b/routers/web/shared/user/header.go @@ -4,7 +4,7 @@ package user import ( - "errors" + "fmt" "net/url" "code.gitea.io/gitea/models/db" @@ -138,15 +138,15 @@ func FindOwnerProfileReadme(ctx *context.Context, doer *user_model.User, optProf } func RenderUserOrgHeader(ctx *context.Context) error { + if ctx.ContextUser == nil { + return fmt.Errorf("ctx.ContextUser is nil") + } if err := LoadHeaderCount(ctx); err != nil { return err } _, profileReadmeBlob := FindOwnerProfileReadme(ctx, ctx.Doer) ctx.Data["HasUserProfileReadme"] = profileReadmeBlob != nil - if ctx.ContextUser == nil { - return errors.New("ctx.ContextUser is nil") - } if ctx.ContextUser.IsOrganization() { if ctx.Data["HasOrgProfileReadme"] == nil { if _, err := PrepareOrgHeader(ctx); err != nil { diff --git a/routers/web/user/setting/oauth2_common.go b/routers/web/user/setting/oauth2_common.go index b60b385ff0566..e5be1611c58d8 100644 --- a/routers/web/user/setting/oauth2_common.go +++ b/routers/web/user/setting/oauth2_common.go @@ -27,9 +27,11 @@ func (oa *OAuth2CommonHandlers) renderEditPage(ctx *context.Context) { app := ctx.Data["App"].(*auth.OAuth2Application) ctx.Data["FormActionPath"] = fmt.Sprintf("%s/%d", oa.BasePathEditPrefix, app.ID) - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { - ctx.ServerError("RenderUserOrgHeader", err) - return + if ctx.ContextUser != nil && ctx.ContextUser.IsOrganization() { + if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + ctx.ServerError("RenderUserOrgHeader", err) + return + } } ctx.HTML(http.StatusOK, oa.TplAppEdit) From 34d55af589fca458279efb7e9430e20709269ef6 Mon Sep 17 00:00:00 2001 From: dragon Date: Tue, 8 Apr 2025 17:17:57 +0800 Subject: [PATCH 13/17] clean up anything --- routers/web/shared/user/header.go | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/routers/web/shared/user/header.go b/routers/web/shared/user/header.go index b8442eb3da68c..46d0fec972683 100644 --- a/routers/web/shared/user/header.go +++ b/routers/web/shared/user/header.go @@ -25,15 +25,6 @@ import ( "code.gitea.io/gitea/services/context" ) -// prepareContextForCommonProfile store some common data into context data for user's profile related pages (including the nav menu) -// It is designed to be fast and safe to be called multiple times in one request -func prepareContextForCommonProfile(ctx *context.Context) { - ctx.Data["IsPackageEnabled"] = setting.Packages.Enabled - ctx.Data["IsRepoIndexerEnabled"] = setting.Indexer.RepoIndexerEnabled - ctx.Data["EnableFeed"] = setting.Other.EnableFeed - ctx.Data["FeedURL"] = ctx.ContextUser.HomeLink() -} - // prepareContextForProfileBigAvatar set the context for big avatar view on the profile page func prepareContextForProfileBigAvatar(ctx *context.Context) { ctx.Data["IsFollowing"] = ctx.Doer != nil && user_model.IsFollowing(ctx, ctx.Doer.ID, ctx.ContextUser.ID) @@ -141,7 +132,13 @@ func RenderUserOrgHeader(ctx *context.Context) error { if ctx.ContextUser == nil { return fmt.Errorf("ctx.ContextUser is nil") } - if err := LoadHeaderCount(ctx); err != nil { + + ctx.Data["IsPackageEnabled"] = setting.Packages.Enabled + ctx.Data["IsRepoIndexerEnabled"] = setting.Indexer.RepoIndexerEnabled + ctx.Data["EnableFeed"] = setting.Other.EnableFeed + ctx.Data["FeedURL"] = ctx.ContextUser.HomeLink() + + if err := loadHeaderCount(ctx); err != nil { return err } _, profileReadmeBlob := FindOwnerProfileReadme(ctx, ctx.Doer) @@ -159,8 +156,7 @@ func RenderUserOrgHeader(ctx *context.Context) error { return nil } -func LoadHeaderCount(ctx *context.Context) error { - prepareContextForCommonProfile(ctx) +func loadHeaderCount(ctx *context.Context) error { repoCount, err := repo_model.CountRepository(ctx, &repo_model.SearchRepoOptions{ Actor: ctx.Doer, OwnerID: ctx.ContextUser.ID, From 97953843a4f263824ba1d5c7209a74f9e7dc6e61 Mon Sep 17 00:00:00 2001 From: dragon Date: Tue, 8 Apr 2025 17:25:30 +0800 Subject: [PATCH 14/17] fix typo --- routers/web/shared/user/header.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/routers/web/shared/user/header.go b/routers/web/shared/user/header.go index 46d0fec972683..36b9faa80721d 100644 --- a/routers/web/shared/user/header.go +++ b/routers/web/shared/user/header.go @@ -4,7 +4,7 @@ package user import ( - "fmt" + "errors" "net/url" "code.gitea.io/gitea/models/db" @@ -130,7 +130,7 @@ func FindOwnerProfileReadme(ctx *context.Context, doer *user_model.User, optProf func RenderUserOrgHeader(ctx *context.Context) error { if ctx.ContextUser == nil { - return fmt.Errorf("ctx.ContextUser is nil") + return errors.New("ctx.ContextUser is nil") } ctx.Data["IsPackageEnabled"] = setting.Packages.Enabled From 417c7fed0cc840fa80cb35347121c9d98f377094 Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Wed, 9 Apr 2025 20:25:12 +0800 Subject: [PATCH 15/17] refactor --- routers/web/org/block.go | 4 +- routers/web/org/home.go | 12 ++--- routers/web/org/members.go | 2 +- routers/web/org/projects.go | 12 ++--- routers/web/org/setting.go | 8 ++-- routers/web/org/setting_oauth2.go | 2 +- routers/web/org/setting_packages.go | 8 ++-- routers/web/org/teams.go | 10 ++--- routers/web/org/worktime.go | 2 +- routers/web/repo/setting/secrets.go | 2 +- routers/web/shared/actions/runners.go | 2 +- routers/web/shared/actions/variables.go | 2 +- routers/web/shared/user/header.go | 54 +++++++++-------------- routers/web/user/code.go | 2 +- routers/web/user/package.go | 10 ++--- routers/web/user/profile.go | 12 +++-- routers/web/user/setting/oauth2_common.go | 2 +- 17 files changed, 66 insertions(+), 80 deletions(-) diff --git a/routers/web/org/block.go b/routers/web/org/block.go index 344be3e5c54da..60f722dd3926c 100644 --- a/routers/web/org/block.go +++ b/routers/web/org/block.go @@ -20,7 +20,7 @@ func BlockedUsers(ctx *context.Context) { ctx.Data["PageIsOrgSettings"] = true ctx.Data["PageIsSettingsBlockedUsers"] = true - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } @@ -34,7 +34,7 @@ func BlockedUsers(ctx *context.Context) { } func BlockedUsersPost(ctx *context.Context) { - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } diff --git a/routers/web/org/home.go b/routers/web/org/home.go index c25e7bc2b5ffd..8981af1691c63 100644 --- a/routers/web/org/home.go +++ b/routers/web/org/home.go @@ -103,22 +103,18 @@ func home(ctx *context.Context, viewRepositories bool) { ctx.Data["DisableNewPullMirrors"] = setting.Mirror.DisableNewPull ctx.Data["ShowMemberAndTeamTab"] = ctx.Org.IsMember || len(members) > 0 - prepareResult, err := shared_user.PrepareOrgHeader(ctx) + prepareResult, err := shared_user.RenderUserOrgHeader(ctx) if err != nil { - ctx.ServerError("PrepareOrgHeader", err) + ctx.ServerError("RenderUserOrgHeader", err) return } + // if no profile readme, it still means "view repositories" isViewOverview := !viewRepositories && prepareOrgProfileReadme(ctx, prepareResult) ctx.Data["PageIsViewRepositories"] = !isViewOverview ctx.Data["PageIsViewOverview"] = isViewOverview ctx.Data["ShowOrgProfileReadmeSelector"] = isViewOverview && prepareResult.ProfilePublicReadmeBlob != nil && prepareResult.ProfilePrivateReadmeBlob != nil - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { - ctx.ServerError("RenderUserOrgHeader", err) - return - } - repos, count, err := repo_model.SearchRepository(ctx, &repo_model.SearchRepoOptions{ ListOptions: db.ListOptions{ PageSize: setting.UI.User.RepoPagingNum, @@ -152,7 +148,7 @@ func home(ctx *context.Context, viewRepositories bool) { ctx.HTML(http.StatusOK, tplOrgHome) } -func prepareOrgProfileReadme(ctx *context.Context, prepareResult *shared_user.PrepareOrgHeaderResult) bool { +func prepareOrgProfileReadme(ctx *context.Context, prepareResult *shared_user.PrepareOwnerHeaderResult) bool { viewAs := ctx.FormString("view_as", util.Iif(ctx.Org.IsMember, "member", "public")) viewAsMember := viewAs == "member" diff --git a/routers/web/org/members.go b/routers/web/org/members.go index 84a5b3fbf5b34..2cbe75989a5ae 100644 --- a/routers/web/org/members.go +++ b/routers/web/org/members.go @@ -54,7 +54,7 @@ func Members(ctx *context.Context) { return } - if err = shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } diff --git a/routers/web/org/projects.go b/routers/web/org/projects.go index 44672e16e335f..8767c2935d4e3 100644 --- a/routers/web/org/projects.go +++ b/routers/web/org/projects.go @@ -43,7 +43,7 @@ func MustEnableProjects(ctx *context.Context) { // Projects renders the home page of projects func Projects(ctx *context.Context) { - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } @@ -148,7 +148,7 @@ func RenderNewProject(ctx *context.Context) { ctx.Data["PageIsViewProjects"] = true ctx.Data["HomeLink"] = ctx.ContextUser.HomeLink() ctx.Data["CancelLink"] = ctx.ContextUser.HomeLink() + "/-/projects" - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } @@ -160,7 +160,7 @@ func RenderNewProject(ctx *context.Context) { func NewProjectPost(ctx *context.Context) { form := web.GetForm(ctx).(*forms.CreateProjectForm) ctx.Data["Title"] = ctx.Tr("repo.projects.new") - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } @@ -244,7 +244,7 @@ func RenderEditProject(ctx *context.Context) { ctx.Data["CanWriteProjects"] = canWriteProjects(ctx) ctx.Data["CardTypes"] = project_model.GetCardConfig() - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } @@ -281,7 +281,7 @@ func EditProjectPost(ctx *context.Context) { ctx.Data["CardTypes"] = project_model.GetCardConfig() ctx.Data["CancelLink"] = project_model.ProjectLinkForOrg(ctx.ContextUser, projectID) - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } @@ -440,7 +440,7 @@ func ViewProject(ctx *context.Context) { ctx.Data["IssuesMap"] = issuesMap ctx.Data["Columns"] = columns - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } diff --git a/routers/web/org/setting.go b/routers/web/org/setting.go index 822fcb519a343..82c3bce722c6c 100644 --- a/routers/web/org/setting.go +++ b/routers/web/org/setting.go @@ -48,7 +48,7 @@ func Settings(ctx *context.Context) { ctx.Data["RepoAdminChangeTeamAccess"] = ctx.Org.Organization.RepoAdminChangeTeamAccess ctx.Data["ContextUser"] = ctx.ContextUser - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } @@ -193,7 +193,7 @@ func SettingsDelete(ctx *context.Context) { return } - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } @@ -216,7 +216,7 @@ func Webhooks(ctx *context.Context) { return } - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } @@ -243,7 +243,7 @@ func Labels(ctx *context.Context) { ctx.Data["PageIsOrgSettingsLabels"] = true ctx.Data["LabelTemplateFiles"] = repo_module.LabelTemplateFiles - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } diff --git a/routers/web/org/setting_oauth2.go b/routers/web/org/setting_oauth2.go index 6dd8f2ca6bb47..47f653bf886d6 100644 --- a/routers/web/org/setting_oauth2.go +++ b/routers/web/org/setting_oauth2.go @@ -45,7 +45,7 @@ func Applications(ctx *context.Context) { } ctx.Data["Applications"] = apps - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } diff --git a/routers/web/org/setting_packages.go b/routers/web/org/setting_packages.go index cdce5efaa3e4a..ec80e2867c30a 100644 --- a/routers/web/org/setting_packages.go +++ b/routers/web/org/setting_packages.go @@ -25,7 +25,7 @@ func Packages(ctx *context.Context) { ctx.Data["PageIsOrgSettings"] = true ctx.Data["PageIsSettingsPackages"] = true - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } @@ -40,7 +40,7 @@ func PackagesRuleAdd(ctx *context.Context) { ctx.Data["PageIsOrgSettings"] = true ctx.Data["PageIsSettingsPackages"] = true - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } @@ -55,7 +55,7 @@ func PackagesRuleEdit(ctx *context.Context) { ctx.Data["PageIsOrgSettings"] = true ctx.Data["PageIsSettingsPackages"] = true - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } @@ -96,7 +96,7 @@ func PackagesRulePreview(ctx *context.Context) { ctx.Data["PageIsOrgSettings"] = true ctx.Data["PageIsSettingsPackages"] = true - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } diff --git a/routers/web/org/teams.go b/routers/web/org/teams.go index 7251a7dbbb605..676c6d0c63d72 100644 --- a/routers/web/org/teams.go +++ b/routers/web/org/teams.go @@ -46,7 +46,7 @@ const ( // Teams render teams list page func Teams(ctx *context.Context) { - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } @@ -270,7 +270,7 @@ func TeamsRepoAction(ctx *context.Context) { // NewTeam render create new team page func NewTeam(ctx *context.Context) { - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } @@ -368,7 +368,7 @@ func NewTeamPost(ctx *context.Context) { // TeamMembers render team members page func TeamMembers(ctx *context.Context) { - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } @@ -396,7 +396,7 @@ func TeamMembers(ctx *context.Context) { // TeamRepositories show the repositories of team func TeamRepositories(ctx *context.Context) { - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } @@ -461,7 +461,7 @@ func SearchTeam(ctx *context.Context) { // EditTeam render team edit page func EditTeam(ctx *context.Context) { - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } diff --git a/routers/web/org/worktime.go b/routers/web/org/worktime.go index e647228c72b8e..c7b44baf7bc73 100644 --- a/routers/web/org/worktime.go +++ b/routers/web/org/worktime.go @@ -72,7 +72,7 @@ func Worktime(ctx *context.Context) { return } - if err = shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } diff --git a/routers/web/repo/setting/secrets.go b/routers/web/repo/setting/secrets.go index e6c967f14228d..c6e2d18249c2d 100644 --- a/routers/web/repo/setting/secrets.go +++ b/routers/web/repo/setting/secrets.go @@ -44,7 +44,7 @@ func getSecretsCtx(ctx *context.Context) (*secretsCtx, error) { } if ctx.Data["PageIsOrgSettings"] == true { - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return nil, nil } diff --git a/routers/web/shared/actions/runners.go b/routers/web/shared/actions/runners.go index a1fae36973893..a87f6ce4dc0d3 100644 --- a/routers/web/shared/actions/runners.go +++ b/routers/web/shared/actions/runners.go @@ -57,7 +57,7 @@ func getRunnersCtx(ctx *context.Context) (*runnersCtx, error) { } if ctx.Data["PageIsOrgSettings"] == true { - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return nil, nil } diff --git a/routers/web/shared/actions/variables.go b/routers/web/shared/actions/variables.go index 106ffaebdb2c4..a43c2c2690bc0 100644 --- a/routers/web/shared/actions/variables.go +++ b/routers/web/shared/actions/variables.go @@ -49,7 +49,7 @@ func getVariablesCtx(ctx *context.Context) (*variablesCtx, error) { } if ctx.Data["PageIsOrgSettings"] == true { - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return nil, nil } diff --git a/routers/web/shared/user/header.go b/routers/web/shared/user/header.go index 36b9faa80721d..9af62b6a65464 100644 --- a/routers/web/shared/user/header.go +++ b/routers/web/shared/user/header.go @@ -4,7 +4,6 @@ package user import ( - "errors" "net/url" "code.gitea.io/gitea/models/db" @@ -128,32 +127,41 @@ func FindOwnerProfileReadme(ctx *context.Context, doer *user_model.User, optProf return profileDbRepo, profileReadmeBlob } -func RenderUserOrgHeader(ctx *context.Context) error { - if ctx.ContextUser == nil { - return errors.New("ctx.ContextUser is nil") - } +type PrepareOwnerHeaderResult struct { + ProfilePublicRepo *repo_model.Repository + ProfilePublicReadmeBlob *git.Blob + ProfilePrivateRepo *repo_model.Repository + ProfilePrivateReadmeBlob *git.Blob + HasOrgProfileReadme bool +} + +const ( + RepoNameProfilePrivate = ".profile-private" + RepoNameProfile = ".profile" +) +func RenderUserOrgHeader(ctx *context.Context) (result *PrepareOwnerHeaderResult, err error) { ctx.Data["IsPackageEnabled"] = setting.Packages.Enabled ctx.Data["IsRepoIndexerEnabled"] = setting.Indexer.RepoIndexerEnabled ctx.Data["EnableFeed"] = setting.Other.EnableFeed ctx.Data["FeedURL"] = ctx.ContextUser.HomeLink() if err := loadHeaderCount(ctx); err != nil { - return err + return nil, err } _, profileReadmeBlob := FindOwnerProfileReadme(ctx, ctx.Doer) ctx.Data["HasUserProfileReadme"] = profileReadmeBlob != nil + result = &PrepareOwnerHeaderResult{} if ctx.ContextUser.IsOrganization() { - if ctx.Data["HasOrgProfileReadme"] == nil { - if _, err := PrepareOrgHeader(ctx); err != nil { - return err - } - } + result.ProfilePublicRepo, result.ProfilePublicReadmeBlob = FindOwnerProfileReadme(ctx, ctx.Doer) + result.ProfilePrivateRepo, result.ProfilePrivateReadmeBlob = FindOwnerProfileReadme(ctx, ctx.Doer, RepoNameProfilePrivate) + result.HasOrgProfileReadme = result.ProfilePublicReadmeBlob != nil || result.ProfilePrivateReadmeBlob != nil + ctx.Data["HasOrgProfileReadme"] = result.HasOrgProfileReadme // many pages need it to show the "overview" tab } else { prepareContextForProfileBigAvatar(ctx) } - return nil + return result, nil } func loadHeaderCount(ctx *context.Context) error { @@ -187,25 +195,3 @@ func loadHeaderCount(ctx *context.Context) error { return nil } - -const ( - RepoNameProfilePrivate = ".profile-private" - RepoNameProfile = ".profile" -) - -type PrepareOrgHeaderResult struct { - ProfilePublicRepo *repo_model.Repository - ProfilePublicReadmeBlob *git.Blob - ProfilePrivateRepo *repo_model.Repository - ProfilePrivateReadmeBlob *git.Blob - HasOrgProfileReadme bool -} - -func PrepareOrgHeader(ctx *context.Context) (result *PrepareOrgHeaderResult, err error) { - result = &PrepareOrgHeaderResult{} - result.ProfilePublicRepo, result.ProfilePublicReadmeBlob = FindOwnerProfileReadme(ctx, ctx.Doer) - result.ProfilePrivateRepo, result.ProfilePrivateReadmeBlob = FindOwnerProfileReadme(ctx, ctx.Doer, RepoNameProfilePrivate) - result.HasOrgProfileReadme = result.ProfilePublicReadmeBlob != nil || result.ProfilePrivateReadmeBlob != nil - ctx.Data["HasOrgProfileReadme"] = result.HasOrgProfileReadme // many pages need it to show the "overview" tab - return result, nil -} diff --git a/routers/web/user/code.go b/routers/web/user/code.go index 9dbbca5b5a918..f2153c6d542bc 100644 --- a/routers/web/user/code.go +++ b/routers/web/user/code.go @@ -26,7 +26,7 @@ func CodeSearch(ctx *context.Context) { ctx.Redirect(ctx.ContextUser.HomeLink()) return } - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } diff --git a/routers/web/user/package.go b/routers/web/user/package.go index 6ddb04e092469..e96f5a04ea8b2 100644 --- a/routers/web/user/package.go +++ b/routers/web/user/package.go @@ -42,7 +42,7 @@ const ( // ListPackages displays a list of all packages of the context user func ListPackages(ctx *context.Context) { - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } @@ -107,7 +107,7 @@ func ListPackages(ctx *context.Context) { ctx.Data["Total"] = total ctx.Data["RepositoryAccessMap"] = repositoryAccessMap - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } @@ -167,7 +167,7 @@ func RedirectToLastVersion(ctx *context.Context) { // ViewPackageVersion displays a single package version func ViewPackageVersion(ctx *context.Context) { - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } @@ -305,7 +305,7 @@ func ViewPackageVersion(ctx *context.Context) { // ListPackageVersions lists all versions of a package func ListPackageVersions(ctx *context.Context) { - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } @@ -398,7 +398,7 @@ func ListPackageVersions(ctx *context.Context) { func PackageSettings(ctx *context.Context) { pd := ctx.Package.Descriptor - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } diff --git a/routers/web/user/profile.go b/routers/web/user/profile.go index d399f74bcf389..ee19665109b70 100644 --- a/routers/web/user/profile.go +++ b/routers/web/user/profile.go @@ -78,8 +78,12 @@ func userProfile(ctx *context.Context) { showPrivate := ctx.IsSigned && (ctx.Doer.IsAdmin || ctx.Doer.ID == ctx.ContextUser.ID) prepareUserProfileTabData(ctx, showPrivate, profileDbRepo, profileReadmeBlob) - // call prepareContextForProfileBigAvatar later to avoid re-querying the NumFollowers & NumFollowing - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + + // prepare the user nav header data after "prepareUserProfileTabData" to avoid re-querying the NumFollowers & NumFollowing + // because ctx.Data["NumFollowers"] and "NumFollowing" logic duplicates in both of them + // and the "profile readme" related logic also duplicates in both of FindOwnerProfileReadme and RenderUserOrgHeader + // TODO: it is a bad design and should be refactored later, + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } @@ -305,7 +309,7 @@ func prepareUserProfileTabData(ctx *context.Context, showPrivate bool, profileDb ctx.Data["Repos"] = repos ctx.Data["Total"] = total - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } @@ -330,7 +334,7 @@ func ActionUserFollow(ctx *context.Context) { ctx.HTTPError(http.StatusBadRequest, fmt.Sprintf("Action %q failed", ctx.FormString("action"))) return } - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } diff --git a/routers/web/user/setting/oauth2_common.go b/routers/web/user/setting/oauth2_common.go index e5be1611c58d8..f460acce10553 100644 --- a/routers/web/user/setting/oauth2_common.go +++ b/routers/web/user/setting/oauth2_common.go @@ -28,7 +28,7 @@ func (oa *OAuth2CommonHandlers) renderEditPage(ctx *context.Context) { ctx.Data["FormActionPath"] = fmt.Sprintf("%s/%d", oa.BasePathEditPrefix, app.ID) if ctx.ContextUser != nil && ctx.ContextUser.IsOrganization() { - if err := shared_user.RenderUserOrgHeader(ctx); err != nil { + if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil { ctx.ServerError("RenderUserOrgHeader", err) return } From 6ef8d285ad558e82549d1a801c7e6e9416a6229e Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Wed, 9 Apr 2025 20:32:19 +0800 Subject: [PATCH 16/17] fix user profile readme, check time tracking --- routers/web/shared/user/header.go | 4 ++-- templates/org/menu.tmpl | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/routers/web/shared/user/header.go b/routers/web/shared/user/header.go index 9af62b6a65464..48a5d58ea427b 100644 --- a/routers/web/shared/user/header.go +++ b/routers/web/shared/user/header.go @@ -149,8 +149,6 @@ func RenderUserOrgHeader(ctx *context.Context) (result *PrepareOwnerHeaderResult if err := loadHeaderCount(ctx); err != nil { return nil, err } - _, profileReadmeBlob := FindOwnerProfileReadme(ctx, ctx.Doer) - ctx.Data["HasUserProfileReadme"] = profileReadmeBlob != nil result = &PrepareOwnerHeaderResult{} if ctx.ContextUser.IsOrganization() { @@ -159,6 +157,8 @@ func RenderUserOrgHeader(ctx *context.Context) (result *PrepareOwnerHeaderResult result.HasOrgProfileReadme = result.ProfilePublicReadmeBlob != nil || result.ProfilePrivateReadmeBlob != nil ctx.Data["HasOrgProfileReadme"] = result.HasOrgProfileReadme // many pages need it to show the "overview" tab } else { + _, profileReadmeBlob := FindOwnerProfileReadme(ctx, ctx.Doer) + ctx.Data["HasUserProfileReadme"] = profileReadmeBlob != nil prepareContextForProfileBigAvatar(ctx) } return result, nil diff --git a/templates/org/menu.tmpl b/templates/org/menu.tmpl index 2d3af2d559791..d876dabb4435a 100644 --- a/templates/org/menu.tmpl +++ b/templates/org/menu.tmpl @@ -44,7 +44,7 @@ {{end}} {{end}} - {{if .IsOrganizationOwner}} + {{if and EnableTimetracking .IsOrganizationOwner}} {{svg "octicon-clock"}} {{ctx.Locale.Tr "org.worktime"}} From 4b4c157c9951be2d4d8b4f693f5305b0302088e8 Mon Sep 17 00:00:00 2001 From: dragon Date: Thu, 10 Apr 2025 11:45:38 +0800 Subject: [PATCH 17/17] fix project page (thanks @yp05327) --- templates/org/projects/new.tmpl | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/templates/org/projects/new.tmpl b/templates/org/projects/new.tmpl index fc52130f68409..c021c5a0fe587 100644 --- a/templates/org/projects/new.tmpl +++ b/templates/org/projects/new.tmpl @@ -1,9 +1,24 @@ {{template "base/head" .}} -
- {{template "shared/user/org_profile_avatar" .}} +{{if .ContextUser.IsOrganization}} +
+ {{template "org/header" .}}
- {{template "user/overview/header" .}} - {{template "projects/new" .}} + {{template "projects/new" .}}
+{{else}} +
+
+
+
+ {{template "shared/user/profile_big_avatar" .}} +
+
+ {{template "user/overview/header" .}} + {{template "projects/new" .}} +
+
+
+
+{{end}} {{template "base/footer" .}}