From deafc1afffb399580d49e2af937a0e071d669c2d Mon Sep 17 00:00:00 2001 From: Zettat123 Date: Tue, 14 Mar 2023 16:08:43 +0800 Subject: [PATCH 01/12] add tag list --- routers/web/repo/release.go | 53 +++++++++++++++++++++++++++++++- routers/web/web.go | 6 +++- templates/repo/release/list.tmpl | 47 +--------------------------- templates/repo/sub_menu.tmpl | 2 +- templates/repo/tag/list.tmpl | 13 ++++++++ templates/repo/tag/table.tmpl | 51 ++++++++++++++++++++++++++++++ 6 files changed, 123 insertions(+), 49 deletions(-) create mode 100644 templates/repo/tag/list.tmpl create mode 100644 templates/repo/tag/table.tmpl diff --git a/routers/web/repo/release.go b/routers/web/repo/release.go index 3ffadd34ace7b..69b6eb6395b02 100644 --- a/routers/web/repo/release.go +++ b/routers/web/repo/release.go @@ -11,6 +11,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/models/db" + "code.gitea.io/gitea/models/perm" repo_model "code.gitea.io/gitea/models/repo" "code.gitea.io/gitea/models/unit" user_model "code.gitea.io/gitea/models/user" @@ -31,6 +32,7 @@ import ( const ( tplReleases base.TplName = "repo/release/list" tplReleaseNew base.TplName = "repo/release/new" + tplTagsList base.TplName = "repo/tag/list" ) // calReleaseNumCommitsBehind calculates given release has how many commits behind release target. @@ -68,7 +70,11 @@ func Releases(ctx *context.Context) { // TagsList render tags list page func TagsList(ctx *context.Context) { - releasesOrTags(ctx, true) + if ctx.Repo.CanAccess(perm.AccessModeRead, unit.TypeReleases) { + releasesOrTags(ctx, true) + } else { + tags(ctx) + } } func releasesOrTags(ctx *context.Context, isTagList bool) { @@ -200,6 +206,51 @@ func releasesOrTags(ctx *context.Context, isTagList bool) { ctx.HTML(http.StatusOK, tplReleases) } +// tags render the tags list if repo's release is disabled. +func tags(ctx *context.Context) { + ctx.Data["PageIsTagList"] = true + ctx.Data["Title"] = ctx.Tr("repo.release.tags") + + 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, + 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 + } + + count, err := repo_model.GetReleaseCountByRepoID(ctx, ctx.Repo.Repository.ID, opts) + if err != nil { + ctx.ServerError("GetReleaseCountByRepoID", err) + return + } + + ctx.Data["Releases"] = releases + ctx.Data["ReleasesNum"] = len(releases) + + pager := context.NewPagination(int(count), opts.PageSize, opts.Page, 5) + pager.SetDefaultParams(ctx) + ctx.Data["Page"] = pager + + ctx.HTML(http.StatusOK, tplTagsList) +} + // ReleasesFeedRSS get feeds for releases in RSS format func ReleasesFeedRSS(ctx *context.Context) { releasesOrTagsFeed(ctx, true, "rss") diff --git a/routers/web/web.go b/routers/web/web.go index 4bd2f76c571f1..a55dfeccdb210 100644 --- a/routers/web/web.go +++ b/routers/web/web.go @@ -1168,7 +1168,7 @@ func RegisterRoutes(m *web.Route) { }, context.RepoMustNotBeArchived(), reqRepoCodeWriter, repo.MustBeNotEmpty) }, reqSignIn, context.RepoAssignment, context.UnitTypes()) - // Releases + // Tags m.Group("/{username}/{reponame}", func() { m.Group("/tags", func() { m.Get("", repo.TagsList) @@ -1177,6 +1177,10 @@ func RegisterRoutes(m *web.Route) { }, func(ctx *context.Context) { ctx.Data["EnableFeed"] = setting.EnableFeed }, repo.MustBeNotEmpty, reqRepoCodeReader, context.RepoRefByType(context.RepoRefTag, true)) + }, reqSignIn, context.RepoAssignment, context.UnitTypes()) + + // Releases + m.Group("/{username}/{reponame}", func() { m.Group("/releases", func() { m.Get("/", repo.Releases) m.Get("/tag/*", repo.SingleRelease) diff --git a/templates/repo/release/list.tmpl b/templates/repo/release/list.tmpl index 3dc3deb3954c7..2a98e3b04761f 100644 --- a/templates/repo/release/list.tmpl +++ b/templates/repo/release/list.tmpl @@ -21,52 +21,7 @@ {{end}} {{if .PageIsTagList}}
- {{if gt .ReleasesNum 0}} -

-
- {{svg "octicon-tag" 16 "gt-mr-2"}}{{.locale.Tr "repo.release.tags"}} -
-

-
- - - - {{range $idx, $release := .Releases}} - - - - {{end}} - -
-

- {{.TagName}} -

-
- {{if $.Permission.CanRead $.UnitTypeCode}} - {{if .CreatedUnix}} - {{svg "octicon-clock" 16 "gt-mr-2"}}{{TimeSinceUnix .CreatedUnix $.locale}} - {{end}} - {{svg "octicon-git-commit" 16 "gt-mr-2"}}{{ShortSha .Sha1}} - {{if not $.DisableDownloadSourceArchives}} - {{svg "octicon-file-zip" 16 "gt-mr-2"}}ZIP - {{svg "octicon-file-zip" 16 "gt-mr-2"}}TAR.GZ - {{end}} - {{if (and $.CanCreateRelease $release.IsTag)}} - {{svg "octicon-tag" 16 "gt-mr-2"}}{{$.locale.Tr "repo.release.new_release"}} - {{end}} - {{if (and ($.Permission.CanWrite $.UnitTypeCode) $release.IsTag)}} - - {{svg "octicon-trash" 16 "gt-mr-2"}}{{$.locale.Tr "repo.release.delete_tag"}} - - {{end}} - {{if (not $release.IsTag)}} - {{svg "octicon-tag" 16 "gt-mr-2"}}{{$.locale.Tr "repo.release.detail"}} - {{end}} - {{end}} -
-
-
- {{end}} + {{template "repo/tag/table" .}} {{else}}