mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-27 21:03:56 +01:00
Tag list should include draft releases with existing tags (#21263)
Before, a tag for a draft release disappeared in the tag list, fix #21262. Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
parent
af849ac009
commit
a08b484549
4 changed files with 24 additions and 8 deletions
|
@ -200,6 +200,7 @@ type FindReleasesOptions struct {
|
||||||
IsPreRelease util.OptionalBool
|
IsPreRelease util.OptionalBool
|
||||||
IsDraft util.OptionalBool
|
IsDraft util.OptionalBool
|
||||||
TagNames []string
|
TagNames []string
|
||||||
|
HasSha1 util.OptionalBool // useful to find draft releases which are created with existing tags
|
||||||
}
|
}
|
||||||
|
|
||||||
func (opts *FindReleasesOptions) toConds(repoID int64) builder.Cond {
|
func (opts *FindReleasesOptions) toConds(repoID int64) builder.Cond {
|
||||||
|
@ -221,6 +222,13 @@ func (opts *FindReleasesOptions) toConds(repoID int64) builder.Cond {
|
||||||
if !opts.IsDraft.IsNone() {
|
if !opts.IsDraft.IsNone() {
|
||||||
cond = cond.And(builder.Eq{"is_draft": opts.IsDraft.IsTrue()})
|
cond = cond.And(builder.Eq{"is_draft": opts.IsDraft.IsTrue()})
|
||||||
}
|
}
|
||||||
|
if !opts.HasSha1.IsNone() {
|
||||||
|
if opts.HasSha1.IsTrue() {
|
||||||
|
cond = cond.And(builder.Neq{"sha1": ""})
|
||||||
|
} else {
|
||||||
|
cond = cond.And(builder.Eq{"sha1": ""})
|
||||||
|
}
|
||||||
|
}
|
||||||
return cond
|
return cond
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -524,7 +524,9 @@ func RepoAssignment(ctx *Context) (cancel context.CancelFunc) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.Data["NumTags"], err = repo_model.GetReleaseCountByRepoID(ctx.Repo.Repository.ID, repo_model.FindReleasesOptions{
|
ctx.Data["NumTags"], err = repo_model.GetReleaseCountByRepoID(ctx.Repo.Repository.ID, repo_model.FindReleasesOptions{
|
||||||
IncludeTags: true,
|
IncludeDrafts: true,
|
||||||
|
IncludeTags: true,
|
||||||
|
HasSha1: util.OptionalBoolTrue, // only draft releases which are created with existing tags
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ServerError("GetReleaseCountByRepoID", err)
|
ctx.ServerError("GetReleaseCountByRepoID", err)
|
||||||
|
|
|
@ -117,9 +117,17 @@ func releasesOrTags(ctx *context.Context, isTagList bool) {
|
||||||
ctx.Data["CanCreateRelease"] = writeAccess && !ctx.Repo.Repository.IsArchived
|
ctx.Data["CanCreateRelease"] = writeAccess && !ctx.Repo.Repository.IsArchived
|
||||||
|
|
||||||
opts := repo_model.FindReleasesOptions{
|
opts := repo_model.FindReleasesOptions{
|
||||||
ListOptions: listOptions,
|
ListOptions: listOptions,
|
||||||
IncludeDrafts: writeAccess && !isTagList,
|
}
|
||||||
IncludeTags: isTagList,
|
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
|
||||||
}
|
}
|
||||||
|
|
||||||
releases, err := repo_model.GetReleasesByRepoID(ctx.Repo.Repository.ID, opts)
|
releases, err := repo_model.GetReleasesByRepoID(ctx.Repo.Repository.ID, opts)
|
||||||
|
|
|
@ -77,14 +77,12 @@
|
||||||
<span class="ui green label">{{$.locale.Tr "repo.release.stable"}}</span>
|
<span class="ui green label">{{$.locale.Tr "repo.release.stable"}}</span>
|
||||||
{{end}}
|
{{end}}
|
||||||
<span class="tag text blue">
|
<span class="tag text blue">
|
||||||
<a class="df ac je" href="{{if .IsDraft}}#{{else}}{{$.RepoLink}}/src/tag/{{.TagName | PathEscapeSegments}}{{end}}" rel="nofollow">{{svg "octicon-tag" 16 "mr-2"}}{{.TagName}}</a>
|
<a class="df ac je" href="{{if not .Sha1}}#{{else}}{{$.RepoLink}}/src/tag/{{.TagName | PathEscapeSegments}}{{end}}" rel="nofollow">{{svg "octicon-tag" 16 "mr-2"}}{{.TagName}}</a>
|
||||||
</span>
|
</span>
|
||||||
{{if not .IsDraft}}
|
{{if .Sha1}}
|
||||||
<span class="commit">
|
<span class="commit">
|
||||||
<a class="mono" href="{{$.RepoLink}}/src/commit/{{.Sha1}}" rel="nofollow">{{svg "octicon-git-commit" 16 "mr-2"}}{{ShortSha .Sha1}}</a>
|
<a class="mono" href="{{$.RepoLink}}/src/commit/{{.Sha1}}" rel="nofollow">{{svg "octicon-git-commit" 16 "mr-2"}}{{ShortSha .Sha1}}</a>
|
||||||
</span>
|
</span>
|
||||||
{{end}}
|
|
||||||
{{if .Sha1}}
|
|
||||||
{{template "repo/branch_dropdown" dict "root" $ "release" .}}
|
{{template "repo/branch_dropdown" dict "root" $ "release" .}}
|
||||||
{{end}}
|
{{end}}
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
Loading…
Reference in a new issue