Skip to content

Commit 48731d4

Browse files
committed
Move all logic to prepare sub menu data
1 parent 51f4ad8 commit 48731d4

File tree

7 files changed

+100
-46
lines changed

7 files changed

+100
-46
lines changed

routers/web/repo/branch.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"code.gitea.io/gitea/modules/util"
2525
"code.gitea.io/gitea/modules/web"
2626
"code.gitea.io/gitea/routers/utils"
27+
"code.gitea.io/gitea/routers/web/repo/shared"
2728
"code.gitea.io/gitea/services/context"
2829
"code.gitea.io/gitea/services/forms"
2930
release_service "code.gitea.io/gitea/services/release"
@@ -46,6 +47,10 @@ func Branches(ctx *context.Context) {
4647
ctx.Data["PageIsViewCode"] = true
4748
ctx.Data["PageIsBranches"] = true
4849

50+
if !shared.PrepareRepoSubMenu(ctx) {
51+
return
52+
}
53+
4954
page := ctx.FormInt("page")
5055
if page <= 1 {
5156
page = 1

routers/web/repo/commit.go

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828
"code.gitea.io/gitea/modules/markup"
2929
"code.gitea.io/gitea/modules/setting"
3030
"code.gitea.io/gitea/modules/util"
31+
"code.gitea.io/gitea/routers/web/repo/shared"
3132
"code.gitea.io/gitea/services/context"
3233
"code.gitea.io/gitea/services/gitdiff"
3334
repo_service "code.gitea.io/gitea/services/repository"
@@ -61,9 +62,7 @@ func Commits(ctx *context.Context) {
6162
}
6263
ctx.Data["PageIsViewCode"] = true
6364

64-
commitsCount, err := ctx.Repo.GetCommitsCount()
65-
if err != nil {
66-
ctx.ServerError("GetCommitsCount", err)
65+
if !shared.PrepareRepoSubMenu(ctx) {
6766
return
6867
}
6968

@@ -97,9 +96,9 @@ func Commits(ctx *context.Context) {
9796
}
9897
ctx.Data["Username"] = ctx.Repo.Owner.Name
9998
ctx.Data["Reponame"] = ctx.Repo.Repository.Name
100-
ctx.Data["CommitCount"] = commitsCount
99+
ctx.Data["CommitCount"] = ctx.Repo.CommitsCount
101100

102-
pager := context.NewPagination(int(commitsCount), pageSize, page, 5)
101+
pager := context.NewPagination(int(ctx.Repo.CommitsCount), pageSize, page, 5)
103102
pager.SetDefaultParams(ctx)
104103
ctx.Data["Page"] = pager
105104
ctx.HTML(http.StatusOK, tplCommits)
@@ -196,6 +195,10 @@ func SearchCommits(ctx *context.Context) {
196195
ctx.Data["PageIsCommits"] = true
197196
ctx.Data["PageIsViewCode"] = true
198197

198+
if !shared.PrepareRepoSubMenu(ctx) {
199+
return
200+
}
201+
199202
query := ctx.FormTrim("q")
200203
if len(query) == 0 {
201204
ctx.Redirect(ctx.Repo.RepoLink + "/commits/" + ctx.Repo.BranchNameSubURL())
@@ -230,6 +233,10 @@ func FileHistory(ctx *context.Context) {
230233
return
231234
}
232235

236+
if !shared.PrepareRepoSubMenu(ctx) {
237+
return
238+
}
239+
233240
commitsCount, err := ctx.Repo.GitRepo.FileCommitsCount(ctx.Repo.RefName, fileName)
234241
if err != nil {
235242
ctx.ServerError("FileCommitsCount", err)

routers/web/repo/release.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
"code.gitea.io/gitea/modules/util"
2727
"code.gitea.io/gitea/modules/web"
2828
"code.gitea.io/gitea/routers/web/feed"
29+
"code.gitea.io/gitea/routers/web/repo/shared"
2930
shared_user "code.gitea.io/gitea/routers/web/shared/user"
3031
"code.gitea.io/gitea/services/context"
3132
"code.gitea.io/gitea/services/context/upload"
@@ -156,6 +157,10 @@ func Releases(ctx *context.Context) {
156157
ctx.Data["CanCreateBranch"] = false
157158
ctx.Data["HideBranchesInDropdown"] = true
158159

160+
if !shared.PrepareSubmenuTag(ctx) {
161+
return
162+
}
163+
159164
listOptions := db.ListOptions{
160165
Page: ctx.FormInt("page"),
161166
PageSize: ctx.FormInt("limit"),
@@ -207,6 +212,10 @@ func TagsList(ctx *context.Context) {
207212
ctx.Data["HideBranchesInDropdown"] = true
208213
ctx.Data["CanCreateRelease"] = ctx.Repo.CanWrite(unit.TypeReleases) && !ctx.Repo.Repository.IsArchived
209214

215+
if !shared.PrepareSubmenuTag(ctx) {
216+
return
217+
}
218+
210219
namePattern := ctx.FormTrim("q")
211220

212221
listOptions := db.ListOptions{

routers/web/repo/shared/license.go

Lines changed: 0 additions & 21 deletions
This file was deleted.

routers/web/repo/shared/submenu.go

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
// Copyright 2024 The Gitea Authors. All rights reserved.
2+
// SPDX-License-Identifier: MIT
3+
4+
package shared
5+
6+
import (
7+
"code.gitea.io/gitea/models/db"
8+
repo_model "code.gitea.io/gitea/models/repo"
9+
"code.gitea.io/gitea/modules/cache"
10+
"code.gitea.io/gitea/modules/git"
11+
"code.gitea.io/gitea/modules/optional"
12+
"code.gitea.io/gitea/services/context"
13+
repo_service "code.gitea.io/gitea/services/repository"
14+
)
15+
16+
// PrepareRepoSubMenu prepares data for repository template repo/sub_menu.tmpl
17+
func PrepareRepoSubMenu(ctx *context.Context) bool {
18+
if !PrepareSubmenuTag(ctx) {
19+
return false
20+
}
21+
22+
if !prepareSubmenuCommit(ctx) {
23+
return false
24+
}
25+
26+
// only show license on repository's home page
27+
if ctx.Data["PageIsRepoHome"] == true {
28+
if !prepareSubmenuLicense(ctx) {
29+
return false
30+
}
31+
}
32+
33+
return true
34+
}
35+
36+
func prepareSubmenuLicense(ctx *context.Context) bool {
37+
repoLicenses, err := repo_model.GetRepoLicenses(ctx, ctx.Repo.Repository)
38+
if err != nil {
39+
ctx.ServerError("GetRepoLicenses", err)
40+
return false
41+
}
42+
ctx.Data["DetectedRepoLicenses"] = repoLicenses.StringList()
43+
ctx.Data["LicenseFileName"] = repo_service.LicenseFileName
44+
return true
45+
}
46+
47+
func PrepareSubmenuTag(ctx *context.Context) bool {
48+
var err error
49+
ctx.Data["NumTags"], err = db.Count[repo_model.Release](ctx, repo_model.FindReleasesOptions{
50+
IncludeDrafts: true,
51+
IncludeTags: true,
52+
HasSha1: optional.Some(true), // only draft releases which are created with existing tags
53+
RepoID: ctx.Repo.Repository.ID,
54+
})
55+
if err != nil {
56+
ctx.ServerError("GetReleaseCountByRepoID", err)
57+
return false
58+
}
59+
return true
60+
}
61+
62+
func prepareSubmenuCommit(ctx *context.Context) bool {
63+
var err error
64+
ctx.Repo.CommitsCount, err = ctx.Repo.GetCommitsCount()
65+
if err != nil {
66+
ctx.ServerError("GetCommitsCount", err)
67+
return false
68+
}
69+
ctx.Data["CommitsCount"] = ctx.Repo.CommitsCount
70+
ctx.Repo.GitRepo.LastCommitCache = git.NewLastCommitCache(ctx.Repo.CommitsCount, ctx.Repo.Repository.FullName(), ctx.Repo.GitRepo, cache.GetCache())
71+
return true
72+
}

routers/web/repo/view.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -924,6 +924,7 @@ func prepareOpenWithEditorApps(ctx *context.Context) {
924924

925925
func renderHomeCode(ctx *context.Context) {
926926
ctx.Data["PageIsViewCode"] = true
927+
ctx.Data["PageIsRepoHome"] = true
927928
ctx.Data["RepositoryUploadEnabled"] = setting.Repository.Upload.Enabled
928929
prepareOpenWithEditorApps(ctx)
929930

@@ -981,8 +982,7 @@ func renderHomeCode(ctx *context.Context) {
981982
return
982983
}
983984

984-
// only show licenses on repository's home page
985-
if !shared.PrepareForLicenses(ctx) {
985+
if !shared.PrepareRepoSubMenu(ctx) {
986986
return
987987
}
988988

services/context/repo.go

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -513,16 +513,6 @@ func RepoAssignment(ctx *Context) context.CancelFunc {
513513
ctx.Data["RepoExternalIssuesLink"] = unit.ExternalTrackerConfig().ExternalTrackerURL
514514
}
515515

516-
ctx.Data["NumTags"], err = db.Count[repo_model.Release](ctx, repo_model.FindReleasesOptions{
517-
IncludeDrafts: true,
518-
IncludeTags: true,
519-
HasSha1: optional.Some(true), // only draft releases which are created with existing tags
520-
RepoID: ctx.Repo.Repository.ID,
521-
})
522-
if err != nil {
523-
ctx.ServerError("GetReleaseCountByRepoID", err)
524-
return nil
525-
}
526516
ctx.Data["NumReleases"], err = db.Count[repo_model.Release](ctx, repo_model.FindReleasesOptions{
527517
// only show draft releases for users who can write, read-only users shouldn't see draft releases.
528518
IncludeDrafts: ctx.Repo.CanWrite(unit_model.TypeReleases),
@@ -1031,14 +1021,6 @@ func RepoRefByType(detectRefType RepoRefType, opts ...RepoRefByTypeOptions) func
10311021
ctx.Data["IsViewCommit"] = ctx.Repo.IsViewCommit
10321022
ctx.Data["CanCreateBranch"] = ctx.Repo.CanCreateBranch()
10331023

1034-
ctx.Repo.CommitsCount, err = ctx.Repo.GetCommitsCount()
1035-
if err != nil {
1036-
ctx.ServerError("GetCommitsCount", err)
1037-
return cancel
1038-
}
1039-
ctx.Data["CommitsCount"] = ctx.Repo.CommitsCount
1040-
ctx.Repo.GitRepo.LastCommitCache = git.NewLastCommitCache(ctx.Repo.CommitsCount, ctx.Repo.Repository.FullName(), ctx.Repo.GitRepo, cache.GetCache())
1041-
10421024
return cancel
10431025
}
10441026
}

0 commit comments

Comments
 (0)