rin
Public Open-source lightweight git hosting.
releases.html · 91 lines · 4.4 KB
Raw
1 {{define "content"}}
2 <div class="container">
3 {{template "repo_header" .}}
4
5 <div class="flex items-center justify-between flex-wrap gap-2 mb-4">
6 <div class="flex items-center gap-2 text-sm text-muted">
7 <span class="font-medium text-foreground">{{len .Releases}}</span>
8 <span>{{pluralT .Lang (len .Releases) "releases.count"}}</span>
9 <span>·</span>
10 <span class="font-medium text-foreground">{{.TagCount}}</span>
11 <span>{{pluralT .Lang .TagCount "releases.tags"}}</span>
12 </div>
13
14 {{if .CanWrite}}
15 <a href="/{{.Repo.OwnerUsername}}/{{.Repo.Name}}/releases/new" class="btn btn-primary btn-sm">
16 {{icon "plus" "size-3.5"}}
17 <span>{{t .Lang "releases.new"}}</span>
18 </a>
19 {{end}}
20 </div>
21
22 {{if .Releases}}
23 <div class="flex flex-col gap-6">
24 {{range .Releases}}
25 <article class="card" id="{{.TagName}}">
26 <div class="card-header flex items-center justify-between flex-wrap gap-2">
27 <div class="flex items-center gap-2.5 flex-wrap min-w-0">
28 <h2 class="text-base font-bold" style="margin:0;">{{.Title}}</h2>
29 <a href="/{{$.Repo.OwnerUsername}}/{{$.Repo.Name}}/tree/{{.TagName}}" class="badge badge-primary font-mono text-xs flex items-center gap-1">
30 {{icon "tag" "size-3"}}
31 <span>{{.TagName}}</span>
32 </a>
33 {{if .IsPrerelease}}
34 <span class="badge badge-outline text-xs" style="color:hsl(var(--warning-fg, 38 92% 50%));border-color:currentColor;">
35 {{t $.Lang "releases.prerelease"}}
36 </span>
37 {{end}}
38 </div>
39
40 <div class="flex items-center gap-2 text-xs text-muted flex-shrink-0">
41 <div class="flex items-center gap-1.5">
42 {{avatar .AuthorUsername .AuthorAvatar}}
43 <a href="/{{.AuthorUsername}}" class="font-medium text-foreground">@{{.AuthorUsername}}</a>
44 <span>·</span>
45 <span>{{formatDate .PublishedAt}}</span>
46 </div>
47 {{if $.CanWrite}}
48 <form method="post" action="/{{$.Repo.OwnerUsername}}/{{$.Repo.Name}}/releases/{{.ID}}/delete" onsubmit="return confirm('{{t $.Lang "releases.delete_confirm"}}');" style="margin:0;">
49 <input type="hidden" name="_csrf" value="{{$.CSRFToken}}">
50 <button type="submit" class="btn btn-ghost btn-icon text-muted" style="width:1.8rem;height:1.8rem;" title="{{t $.Lang "releases.delete"}}">
51 {{icon "trash" "size-3.5"}}
52 </button>
53 </form>
54 {{end}}
55 </div>
56 </div>
57
58 <div class="card-body markdown-body">
59 {{if .BodyHTML}}
60 {{.BodyHTML}}
61 {{else}}
62 <span class="text-xs text-muted">—</span>
63 {{end}}
64 </div>
65
66 <!-- Release Assets (Source Code) -->
67 <div class="card-body" style="border-top:1px solid hsl(var(--border));padding:0.6rem 0.9rem;background:hsl(var(--muted)/0.15);">
68 <div class="text-xs font-semibold text-muted uppercase mb-2" style="letter-spacing:0.04em;">{{t $.Lang "releases.assets"}}</div>
69 <div class="flex flex-col gap-1.5">
70 <a href="/{{$.Repo.OwnerUsername}}/{{$.Repo.Name}}/archive/{{.TagName}}.zip" class="flex items-center gap-2 text-xs font-mono font-medium hover:underline" style="color:hsl(var(--primary));">
71 {{icon "download" "size-3.5"}}
72 <span>{{t $.Lang "releases.source_zip"}}</span>
73 </a>
74 <a href="/{{$.Repo.OwnerUsername}}/{{$.Repo.Name}}/archive/{{.TagName}}.tar.gz" class="flex items-center gap-2 text-xs font-mono font-medium hover:underline" style="color:hsl(var(--primary));">
75 {{icon "download" "size-3.5"}}
76 <span>{{t $.Lang "releases.source_tar"}}</span>
77 </a>
78 </div>
79 </div>
80 </article>
81 {{end}}
82 </div>
83 {{else}}
84 {{if .CanWrite}}
85 {{template "ui_empty_state" (dict "Icon" "tag" "Title" (t .Lang "releases.empty") "ActionHref" (printf "/%s/%s/releases/new" .Repo.OwnerUsername .Repo.Name) "ActionLabel" (t .Lang "releases.new") "ActionIcon" "plus")}}
86 {{else}}
87 {{template "ui_empty_state" (dict "Icon" "tag" "Title" (t .Lang "releases.empty"))}}
88 {{end}}
89 {{end}}
90 </div>
91 {{end}}