7681d582cd
Before, the `GiteaLocaleNumber.js` was just written as a a drop-in replacement for old `js-pretty-number`. Actually, we can use Golang's `text` package to format. This PR partially completes the TODOs in `GiteaLocaleNumber.js`: > if we have complete backend locale support (eg: Golang "x/text" package), we can drop this component. > tooltip: only 2 usages of this, we can replace it with Golang's "x/text/number" package in the future. This PR also helps #24131 Screenshots: <details> ![image](https://user-images.githubusercontent.com/2114189/232179420-b1b9974b-9d96-4408-b209-b80182c8b359.png) ![image](https://user-images.githubusercontent.com/2114189/232179416-14f36aa0-3f3e-4ac9-b366-7bd3a4464a11.png) </details>
200 lines
9.0 KiB
Handlebars
200 lines
9.0 KiB
Handlebars
{{template "base/head" .}}
|
|
<div role="main" aria-label="{{.Title}}" class="page-content repository release">
|
|
{{template "repo/header" .}}
|
|
<div class="ui container">
|
|
{{template "base/alert" .}}
|
|
<h2 class="ui compact small menu header">
|
|
{{if .Permission.CanRead $.UnitTypeReleases}}
|
|
<a class="{{if (and (not .PageIsSingleTag) (not .PageIsTagList))}}active {{end}}item" href="{{.RepoLink}}/releases">{{.locale.Tr "repo.release.releases"}}</a>
|
|
{{end}}
|
|
{{if .Permission.CanRead $.UnitTypeCode}}
|
|
<a class="{{if (or .PageIsSingleTag .PageIsTagList)}}active {{end}}item" href="{{.RepoLink}}/tags">{{.locale.Tr "repo.release.tags"}}</a>
|
|
{{end}}
|
|
</h2>
|
|
{{if .EnableFeed}}
|
|
<a href="{{.RepoLink}}/{{if .PageIsTagList}}tags{{else}}releases{{end}}.rss"><i class="ui grey icon gt-ml-3" data-tooltip-content="{{.locale.Tr "rss_feed"}}">{{svg "octicon-rss" 18}}</i></a>
|
|
{{end}}
|
|
{{if (and .CanCreateRelease (not .PageIsTagList))}}
|
|
<a class="ui right small green button" href="{{$.RepoLink}}/releases/new">
|
|
{{.locale.Tr "repo.release.new_release"}}
|
|
</a>
|
|
{{end}}
|
|
{{if .PageIsTagList}}
|
|
<div class="ui divider"></div>
|
|
{{if gt .ReleasesNum 0}}
|
|
<h4 class="ui top attached header">
|
|
<div class="five wide column gt-df gt-ac">
|
|
{{svg "octicon-tag" 16 "gt-mr-2"}}{{.locale.Tr "repo.release.tags"}}
|
|
</div>
|
|
</h4>
|
|
<div class="ui attached table segment">
|
|
<table class="ui very basic striped fixed table single line" id="tags-table">
|
|
<thead></thead>
|
|
<tbody class="tag-list">
|
|
{{range $idx, $release := .Releases}}
|
|
<tr>
|
|
<td class="tag">
|
|
<h3 class="release-tag-name gt-mb-3">
|
|
<a class="gt-df gt-ac" href="{{$.RepoLink}}/releases/tag/{{.TagName | PathEscapeSegments}}" rel="nofollow">{{.TagName}}</a>
|
|
</h3>
|
|
<div class="download gt-df gt-ac">
|
|
{{if $.Permission.CanRead $.UnitTypeCode}}
|
|
{{if .CreatedUnix}}
|
|
<span class="gt-mr-3">{{svg "octicon-clock" 16 "gt-mr-2"}}{{TimeSinceUnix .CreatedUnix $.locale}}</span>
|
|
{{end}}
|
|
<a class="gt-mr-3 gt-mono muted" href="{{$.RepoLink}}/src/commit/{{.Sha1}}" rel="nofollow">{{svg "octicon-git-commit" 16 "gt-mr-2"}}{{ShortSha .Sha1}}</a>
|
|
{{if not $.DisableDownloadSourceArchives}}
|
|
<a class="archive-link gt-mr-3 muted" href="{{$.RepoLink}}/archive/{{.TagName | PathEscapeSegments}}.zip" rel="nofollow">{{svg "octicon-file-zip" 16 "gt-mr-2"}}ZIP</a>
|
|
<a class="archive-link gt-mr-3 muted" href="{{$.RepoLink}}/archive/{{.TagName | PathEscapeSegments}}.tar.gz" rel="nofollow">{{svg "octicon-file-zip" 16 "gt-mr-2"}}TAR.GZ</a>
|
|
{{end}}
|
|
{{if (and $.CanCreateRelease $release.IsTag)}}
|
|
<a class="gt-mr-3 muted" href="{{$.RepoLink}}/releases/new?tag={{.TagName}}">{{svg "octicon-tag" 16 "gt-mr-2"}}{{$.locale.Tr "repo.release.new_release"}}</a>
|
|
{{end}}
|
|
{{if (and ($.Permission.CanWrite $.UnitTypeCode) $release.IsTag)}}
|
|
<a class="ui delete-button gt-mr-3 muted" data-url="{{$.RepoLink}}/tags/delete" data-id="{{.ID}}">
|
|
{{svg "octicon-trash" 16 "gt-mr-2"}}{{$.locale.Tr "repo.release.delete_tag"}}
|
|
</a>
|
|
{{end}}
|
|
{{if (not $release.IsTag)}}
|
|
<a class="gt-mr-3 muted" href="{{$.RepoLink}}/releases/tag/{{.TagName | PathEscapeSegments}}">{{svg "octicon-tag" 16 "gt-mr-2"}}{{$.locale.Tr "repo.release.detail"}}</a>
|
|
{{end}}
|
|
{{end}}
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
{{end}}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
{{end}}
|
|
{{else}}
|
|
<ul id="release-list">
|
|
{{range $idx, $release := .Releases}}
|
|
<li class="ui grid">
|
|
<div class="ui four wide column meta gt-mt-2">
|
|
<a class="gt-df gt-ac gt-je muted" href="{{if not .Sha1}}#{{else}}{{$.RepoLink}}/src/tag/{{.TagName | PathEscapeSegments}}{{end}}" rel="nofollow">{{svg "octicon-tag" 16 "gt-mr-2"}}{{.TagName}}</a>
|
|
{{if .Sha1}}
|
|
<span class="commit">
|
|
<a class="gt-mono muted" href="{{$.RepoLink}}/src/commit/{{.Sha1}}" rel="nofollow">{{svg "octicon-git-commit" 16 "gt-mr-2"}}{{ShortSha .Sha1}}</a>
|
|
</span>
|
|
{{template "repo/branch_dropdown" dict "root" $ "release" .}}
|
|
{{end}}
|
|
</div>
|
|
<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-df gt-ac">
|
|
<a href="{{$.RepoLink}}/releases/tag/{{.TagName | PathEscapeSegments}}">{{.Title}}</a>
|
|
{{if .IsDraft}}
|
|
<span class="ui yellow label gt-ml-3 gt-mt-1">{{$.locale.Tr "repo.release.draft"}}</span>
|
|
{{else if .IsPrerelease}}
|
|
<span class="ui orange label gt-ml-3 gt-mt-1">{{$.locale.Tr "repo.release.prerelease"}}</span>
|
|
{{else if not .IsTag}}
|
|
<span class="ui green label gt-ml-3 gt-mt-1">{{$.locale.Tr "repo.release.stable"}}</span>
|
|
{{end}}
|
|
</h4>
|
|
<div class="gt-df gt-ac">
|
|
{{if and $.CanCreateRelease (not .IsTag)}}
|
|
<a class="muted gt-ml-3 gt-df gt-ac" data-tooltip-content="{{$.locale.Tr "repo.release.edit"}}" href="{{$.RepoLink}}/releases/edit/{{.TagName | PathEscapeSegments}}" rel="nofollow">
|
|
{{svg "octicon-pencil"}}
|
|
</a>
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
{{if .IsTag}}
|
|
<p class="text grey">
|
|
{{if gt .Publisher.ID 0}}
|
|
<span class="author">
|
|
{{avatar $.Context .Publisher 20}}
|
|
<a href="{{.Publisher.HomeLink}}">{{.Publisher.Name}}</a>
|
|
</span>
|
|
<span class="released">
|
|
{{$.locale.Tr "repo.tagged_this"}}
|
|
</span>
|
|
{{if .CreatedUnix}}
|
|
<span class="time">{{TimeSinceUnix .CreatedUnix $.locale}}</span>
|
|
{{end}}
|
|
|
|
|
{{end}}
|
|
<span class="ahead"><a href="{{$.RepoLink}}/compare/{{.TagName | PathEscapeSegments}}{{if .Target}}...{{.Target | PathEscapeSegments}}{{end}}">{{$.locale.Tr "repo.release.ahead.commits" .NumCommitsBehind | Str2html}}</a> {{$.locale.Tr "repo.tag.ahead.target" $.DefaultBranch}}</span>
|
|
</p>
|
|
{{else}}
|
|
<p class="text grey">
|
|
<span class="author">
|
|
{{if .OriginalAuthor}}
|
|
{{svg "octicon-mark-github" 16 "gt-mr-2"}}{{.OriginalAuthor}}
|
|
{{else if .Publisher}}
|
|
{{avatar $.Context .Publisher 20}}
|
|
<a href="{{.Publisher.HomeLink}}">{{.Publisher.GetDisplayName}}</a>
|
|
{{else}}
|
|
Ghost
|
|
{{end}}
|
|
</span>
|
|
<span class="released">
|
|
{{$.locale.Tr "repo.released_this"}}
|
|
</span>
|
|
{{if .CreatedUnix}}
|
|
<span class="time">{{TimeSinceUnix .CreatedUnix $.locale}}</span>
|
|
{{end}}
|
|
{{if not .IsDraft}}
|
|
| <span class="ahead"><a href="{{$.RepoLink}}/compare/{{.TagName | PathEscapeSegments}}...{{.Target | PathEscapeSegments}}">{{$.locale.Tr "repo.release.ahead.commits" .NumCommitsBehind | Str2html}}</a> {{$.locale.Tr "repo.release.ahead.target" .Target}}</span>
|
|
{{end}}
|
|
</p>
|
|
{{end}}
|
|
<div class="markup desc">
|
|
{{Str2html .Note}}
|
|
</div>
|
|
<details class="download gt-border-secondary-top gt-mt-4 gt-pt-4" {{if eq $idx 0}}open{{end}}>
|
|
<summary class="gt-mb-4">
|
|
{{$.locale.Tr "repo.release.downloads"}}
|
|
</summary>
|
|
<ul class="list">
|
|
{{if and (not $.DisableDownloadSourceArchives) (not .IsDraft) ($.Permission.CanRead $.UnitTypeCode)}}
|
|
<li>
|
|
<a class="archive-link" href="{{$.RepoLink}}/archive/{{.TagName | PathEscapeSegments}}.zip" rel="nofollow"><strong>{{svg "octicon-file-zip" 16 "gt-mr-2"}}{{$.locale.Tr "repo.release.source_code"}} (ZIP)</strong></a>
|
|
</li>
|
|
<li>
|
|
<a class="archive-link" href="{{$.RepoLink}}/archive/{{.TagName | PathEscapeSegments}}.tar.gz" rel="nofollow"><strong>{{svg "octicon-file-zip" 16 "gt-mr-2"}}{{$.locale.Tr "repo.release.source_code"}} (TAR.GZ)</strong></a>
|
|
</li>
|
|
{{end}}
|
|
{{if .Attachments}}
|
|
{{range .Attachments}}
|
|
<li>
|
|
<span class="ui text middle aligned right">
|
|
<span class="ui text grey">{{.Size | FileSize}}</span>
|
|
<span data-tooltip-content="{{$.locale.Tr "repo.release.download_count" ($.locale.PrettyNumber .DownloadCount)}}">
|
|
{{svg "octicon-info"}}
|
|
</span>
|
|
</span>
|
|
<a target="_blank" rel="noopener noreferrer" href="{{.DownloadURL}}">
|
|
<strong>{{svg "octicon-package" 16 "gt-mr-2"}}{{.Name}}</strong>
|
|
</a>
|
|
</li>
|
|
{{end}}
|
|
{{end}}
|
|
</ul>
|
|
</details>
|
|
<span class="dot"> </span>
|
|
</div>
|
|
</li>
|
|
{{end}}
|
|
</ul>
|
|
{{end}}
|
|
{{template "base/paginate" .}}
|
|
</div>
|
|
</div>
|
|
|
|
{{if (and ($.Permission.CanWrite $.UnitTypeCode) .PageIsTagList)}}
|
|
<div class="ui small basic delete modal">
|
|
<div class="ui header">
|
|
{{svg "octicon-trash" 16 "gt-mr-2"}}
|
|
{{.locale.Tr "repo.release.delete_tag"}}
|
|
</div>
|
|
<div class="content">
|
|
<p>{{.locale.Tr "repo.release.deletion_tag_desc"}}</p>
|
|
</div>
|
|
{{template "base/delete_modal_actions" .}}
|
|
</div>
|
|
{{end}}
|
|
|
|
{{template "base/footer" .}}
|