Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix a bug returning 404 when display a single tag with no release #29466

Merged
merged 11 commits into from
Mar 2, 2024
9 changes: 9 additions & 0 deletions routers/web/repo/release.go
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,11 @@ func Releases(ctx *context.Context) {
ctx.ServerError("getReleaseInfos", err)
return
}
for _, rel := range releases {
if rel.Release.IsTag && rel.Release.Title == "" {
rel.Release.Title = rel.Release.TagName
}
}

ctx.Data["Releases"] = releases

Expand Down Expand Up @@ -283,6 +288,7 @@ func SingleRelease(ctx *context.Context) {
TagNames: []string{ctx.Params("*")},
// only show draft releases for users who can write, read-only users shouldn't see draft releases.
IncludeDrafts: writeAccess,
IncludeTags: true,
})
if err != nil {
ctx.ServerError("getReleaseInfos", err)
Expand All @@ -294,6 +300,9 @@ func SingleRelease(ctx *context.Context) {
}

release := releases[0].Release
if release.IsTag && release.Title == "" {
release.Title = release.TagName
}

ctx.Data["PageIsSingleTag"] = release.IsTag
if release.IsTag {
Expand Down
6 changes: 3 additions & 3 deletions templates/repo/release/list.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,18 @@
<div class="ui twelve wide column detail">
<div class="gt-df gt-ac gt-sb gt-fw gt-mb-3">
<h4 class="release-list-title gt-word-break">
<a href="{{$.RepoLink}}/releases/tag/{{$release.TagName | PathEscapeSegments}}">{{$release.Title}}</a>
{{if $.PageIsSingleTag}}{{$release.Title}}{{else}}<a href="{{$.RepoLink}}/releases/tag/{{$release.TagName | PathEscapeSegments}}">{{$release.Title}}</a>{{end}}
{{template "repo/commit_statuses" dict "Status" $info.CommitStatus "Statuses" $info.CommitStatuses "AdditionalClasses" "gt-df"}}
{{if $release.IsDraft}}
<span class="ui yellow label">{{ctx.Locale.Tr "repo.release.draft"}}</span>
{{else if $release.IsPrerelease}}
<span class="ui orange label">{{ctx.Locale.Tr "repo.release.prerelease"}}</span>
{{else}}
{{else if (not $release.IsTag)}}
<span class="ui green label">{{ctx.Locale.Tr "repo.release.stable"}}</span>
{{end}}
</h4>
<div>
{{if $.CanCreateRelease}}
{{if and $.CanCreateRelease (not $.PageIsSingleTag)}}
<a class="muted" data-tooltip-content="{{ctx.Locale.Tr "repo.release.edit"}}" href="{{$.RepoLink}}/releases/edit/{{$release.TagName | PathEscapeSegments}}" rel="nofollow">
{{svg "octicon-pencil"}}
</a>
Expand Down
6 changes: 3 additions & 3 deletions templates/repo/release_tag_header.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
<div class="gt-df">
<div class="gt-f1 gt-df gt-ac">
<h2 class="ui compact small menu header small-menu-items">
<a class="{{if .PageIsReleaseList}}active {{end}}item" href="{{.RepoLink}}/releases">{{ctx.Locale.PrettyNumber .NumReleases}} {{ctx.Locale.TrN .NumReleases "repo.release" "repo.releases"}}</a>
<a class="{{if and .PageIsReleaseList (not .PageIsSingleTag)}}active {{end}}item" href="{{.RepoLink}}/releases">{{ctx.Locale.PrettyNumber .NumReleases}} {{ctx.Locale.TrN .NumReleases "repo.release" "repo.releases"}}</a>
{{if $canReadCode}}
<a class="{{if .PageIsTagList}}active {{end}}item" href="{{.RepoLink}}/tags">{{ctx.Locale.PrettyNumber .NumTags}} {{ctx.Locale.TrN .NumTags "repo.tag" "repo.tags"}}</a>
<a class="{{if or .PageIsTagList .PageIsSingleTag}}active {{end}}item" href="{{.RepoLink}}/tags">{{ctx.Locale.PrettyNumber .NumTags}} {{ctx.Locale.TrN .NumTags "repo.tag" "repo.tags"}}</a>
{{end}}
</h2>
</div>
Expand All @@ -17,7 +17,7 @@
</a>
{{end}}
{{if and (not .PageIsTagList) .CanCreateRelease}}
<a class="ui small primary button" href="{{$.RepoLink}}/releases/new">
<a class="ui small primary button" href="{{$.RepoLink}}/releases/new{{if .PageIsSingleTag}}?tag={{.Title}}{{end}}">
lunny marked this conversation as resolved.
Show resolved Hide resolved
{{ctx.Locale.Tr "repo.release.new_release"}}
</a>
{{end}}
Expand Down
1 change: 1 addition & 0 deletions tests/integration/links_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ func TestLinksNoLogin(t *testing.T) {
"/user2/repo1/",
"/user2/repo1/projects",
"/user2/repo1/projects/1",
"/user2/repo1/releases/tag/delete-tag",
lunny marked this conversation as resolved.
Show resolved Hide resolved
"/assets/img/404.png",
"/assets/img/500.png",
"/.well-known/security.txt",
Expand Down
9 changes: 7 additions & 2 deletions web_src/js/features/repo-release.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,9 @@ function initTagNameEditor() {
const newTagHelperText = el.getAttribute('data-tag-helper-new');
const existingTagHelperText = el.getAttribute('data-tag-helper-existing');

document.getElementById('tag-name').addEventListener('keyup', (e) => {
const value = e.target.value;
const tagNameInput = document.getElementById('tag-name');
const hideTargetInput = function(tagNameInput) {
const value = tagNameInput.value;
const tagHelper = document.getElementById('tag-helper');
if (existingTags.includes(value)) {
// If the tag already exists, hide the target branch selector.
Expand All @@ -41,6 +42,10 @@ function initTagNameEditor() {
showElem('#tag-target-selector');
tagHelper.textContent = value ? newTagHelperText : defaultTagHelperText;
}
};
hideTargetInput(tagNameInput); // update on page load because the input may have a value
tagNameInput.addEventListener('change', (e) => {
lunny marked this conversation as resolved.
Show resolved Hide resolved
hideTargetInput(e.target);
});
}

Expand Down
Loading