|
|
@@ -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 |
|
|
|
} |
|
|
@@ -197,16 +157,59 @@ func releasesOrTags(ctx *context.Context, isTagList bool) { |
|
|
|
|
|
|
|
ctx.Data["Releases"] = 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 |