From d5d06b08b4618f77f20bd49034585e9b3029de77 Mon Sep 17 00:00:00 2001 From: Zettat123 Date: Wed, 12 Jul 2023 18:21:02 +0800 Subject: [PATCH 1/5] NumReleases include drafts if CanWrite releases --- modules/context/repo.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/context/repo.go b/modules/context/repo.go index eae71cfb7be6..1548ec37ee97 100644 --- a/modules/context/repo.go +++ b/modules/context/repo.go @@ -544,7 +544,10 @@ func RepoAssignment(ctx *Context) context.CancelFunc { ctx.ServerError("GetReleaseCountByRepoID", err) return nil } - ctx.Data["NumReleases"], err = repo_model.GetReleaseCountByRepoID(ctx, ctx.Repo.Repository.ID, repo_model.FindReleasesOptions{}) + ctx.Data["NumReleases"], err = repo_model.GetReleaseCountByRepoID(ctx, ctx.Repo.Repository.ID, repo_model.FindReleasesOptions{ + // only show draft releases for users who can write, read-only users shouldn't see draft releases. + IncludeDrafts: ctx.Repo.CanWrite(unit_model.TypeReleases), + }) if err != nil { ctx.ServerError("GetReleaseCountByRepoID", err) return nil From 86890ad6907ff50750105330ac7b0aad57c24009 Mon Sep 17 00:00:00 2001 From: Zettat123 Date: Thu, 13 Jul 2023 10:13:16 +0800 Subject: [PATCH 2/5] remove releasesOrTags --- routers/web/repo/release.go | 98 +++++++++++++------------- templates/repo/release_tag_header.tmpl | 2 +- 2 files changed, 51 insertions(+), 49 deletions(-) diff --git a/routers/web/repo/release.go b/routers/web/repo/release.go index c9f12a0f1855..f8623d35aee1 100644 --- a/routers/web/repo/release.go +++ b/routers/web/repo/release.go @@ -71,18 +71,6 @@ func calReleaseNumCommitsBehind(repoCtx *context.Repository, release *repo_model func Releases(ctx *context.Context) { ctx.Data["PageIsReleaseList"] = true ctx.Data["Title"] = ctx.Tr("repo.release.releases") - releasesOrTags(ctx, false) -} - -// TagsList render tags list page -func TagsList(ctx *context.Context) { - ctx.Data["PageIsTagList"] = true - ctx.Data["Title"] = ctx.Tr("repo.release.tags") - releasesOrTags(ctx, true) -} - -func releasesOrTags(ctx *context.Context, isTagList bool) { - ctx.Data["DefaultBranch"] = ctx.Repo.Repository.DefaultBranch ctx.Data["IsViewBranch"] = false ctx.Data["IsViewTag"] = true // Disable the showCreateNewBranch form in the dropdown on this page. @@ -100,35 +88,13 @@ func releasesOrTags(ctx *context.Context, isTagList bool) { listOptions.PageSize = setting.API.MaxResponseItems } - // TODO(20073) tags are used for compare feature which needs all tags - // filtering is done on the client-side atm - tagListStart, tagListEnd := 0, 0 - if isTagList { - tagListStart, tagListEnd = listOptions.GetStartEnd() - } - - tags, err := ctx.Repo.GitRepo.GetTags(tagListStart, tagListEnd) - if err != nil { - ctx.ServerError("GetTags", err) - return - } - ctx.Data["Tags"] = tags - writeAccess := ctx.Repo.CanWrite(unit.TypeReleases) ctx.Data["CanCreateRelease"] = writeAccess && !ctx.Repo.Repository.IsArchived opts := repo_model.FindReleasesOptions{ ListOptions: listOptions, - } - if isTagList { - // for the tags list page, show all releases with real tags (having real commit-id), - // the drafts should also be included because a real tag might be used as a draft. - opts.IncludeDrafts = true - opts.IncludeTags = true - opts.HasSha1 = util.OptionalBoolTrue - } else { // only show draft releases for users who can write, read-only users shouldn't see draft releases. - opts.IncludeDrafts = writeAccess + IncludeDrafts: writeAccess, } releases, err := repo_model.GetReleasesByRepoID(ctx, ctx.Repo.Repository.ID, opts) @@ -137,12 +103,6 @@ func releasesOrTags(ctx *context.Context, isTagList bool) { return } - count, err := repo_model.GetReleaseCountByRepoID(ctx, ctx.Repo.Repository.ID, opts) - if err != nil { - ctx.ServerError("GetReleaseCountByRepoID", err) - return - } - for _, release := range releases { release.Repo = ctx.Repo.Repository } @@ -196,18 +156,60 @@ func releasesOrTags(ctx *context.Context, isTagList bool) { } ctx.Data["Releases"] = releases - ctx.Data["ReleasesNum"] = len(releases) - pager := context.NewPagination(int(count), opts.PageSize, opts.Page, 5) + numReleases := ctx.Data["NumReleases"].(int64) + pager := context.NewPagination(int(numReleases), opts.PageSize, opts.Page, 5) pager.SetDefaultParams(ctx) ctx.Data["Page"] = pager - if isTagList { - ctx.Data["PageIsViewCode"] = !ctx.Repo.Repository.UnitEnabled(ctx, unit.TypeReleases) - ctx.HTML(http.StatusOK, tplTagsList) - } else { - ctx.HTML(http.StatusOK, tplReleasesList) + ctx.HTML(http.StatusOK, tplReleasesList) +} + +// TagsList render tags list page +func TagsList(ctx *context.Context) { + ctx.Data["PageIsTagList"] = true + ctx.Data["Title"] = ctx.Tr("repo.release.tags") + ctx.Data["IsViewBranch"] = false + ctx.Data["IsViewTag"] = true + // Disable the showCreateNewBranch form in the dropdown on this page. + ctx.Data["CanCreateBranch"] = false + ctx.Data["HideBranchesInDropdown"] = true + + listOptions := db.ListOptions{ + Page: ctx.FormInt("page"), + PageSize: ctx.FormInt("limit"), + } + if listOptions.PageSize == 0 { + listOptions.PageSize = setting.Repository.Release.DefaultPagingNum + } + if listOptions.PageSize > setting.API.MaxResponseItems { + listOptions.PageSize = setting.API.MaxResponseItems + } + + opts := repo_model.FindReleasesOptions{ + ListOptions: listOptions, + // for the tags list page, show all releases with real tags (having real commit-id), + // the drafts should also be included because a real tag might be used as a draft. + IncludeDrafts: true, + IncludeTags: true, + HasSha1: util.OptionalBoolTrue, + } + + releases, err := repo_model.GetReleasesByRepoID(ctx, ctx.Repo.Repository.ID, opts) + if err != nil { + ctx.ServerError("GetReleasesByRepoID", err) + return } + + ctx.Data["Releases"] = releases + + numTags := ctx.Data["NumTags"].(int64) + pager := context.NewPagination(int(numTags), opts.PageSize, opts.Page, 5) + pager.SetDefaultParams(ctx) + ctx.Data["Page"] = pager + + ctx.Data["PageIsViewCode"] = !ctx.Repo.Repository.UnitEnabled(ctx, unit.TypeReleases) + ctx.HTML(http.StatusOK, tplTagsList) } // ReleasesFeedRSS get feeds for releases in RSS format diff --git a/templates/repo/release_tag_header.tmpl b/templates/repo/release_tag_header.tmpl index 9938b9683e42..1bb645acc45e 100644 --- a/templates/repo/release_tag_header.tmpl +++ b/templates/repo/release_tag_header.tmpl @@ -5,7 +5,7 @@