Add tags list for repos whose release setting is disabled (#23465)
Close #23427 Co-Author: @wxiaoguang If a repo's release setting is enabled, the logic has't changed. Clicking the "Tags" button will jump to `/{user}/{repo}/tags` and `templates/repo/release/list.tmpl` template will be used. <img src="https://user-images.githubusercontent.com/15528715/224939362-bd8974fd-08b0-4f79-a114-3389d15847ca.png" width="600px" /> If the release setting is disabled, clicking the "Tags" button will still jump to `/{user}/{repo}/tags` but a new template `templates/repo/tag/list.tmpl` will be used. <img src="https://user-images.githubusercontent.com/15528715/233834564-74741e49-f4e9-47c8-ac12-e306642798dc.png" width="600px" /> Since both templates above need to render the tags list, I moved the tags list to a shared template located in `templates/repo/tag/table.tmpl`. --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com> Co-authored-by: Giteabot <teabot@gitea.io>
This commit is contained in:
parent
5cf7da63ee
commit
30c1cd9775
9 changed files with 281 additions and 231 deletions
|
@ -29,8 +29,9 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
tplReleases base.TplName = "repo/release/list"
|
tplReleasesList base.TplName = "repo/release/list"
|
||||||
tplReleaseNew base.TplName = "repo/release/new"
|
tplReleaseNew base.TplName = "repo/release/new"
|
||||||
|
tplTagsList base.TplName = "repo/tag/list"
|
||||||
)
|
)
|
||||||
|
|
||||||
// calReleaseNumCommitsBehind calculates given release has how many commits behind release target.
|
// calReleaseNumCommitsBehind calculates given release has how many commits behind release target.
|
||||||
|
@ -58,16 +59,19 @@ func calReleaseNumCommitsBehind(repoCtx *context.Repository, release *repo_model
|
||||||
|
|
||||||
// Releases render releases list page
|
// Releases render releases list page
|
||||||
func Releases(ctx *context.Context) {
|
func Releases(ctx *context.Context) {
|
||||||
|
ctx.Data["PageIsReleaseList"] = true
|
||||||
|
ctx.Data["Title"] = ctx.Tr("repo.release.releases")
|
||||||
releasesOrTags(ctx, false)
|
releasesOrTags(ctx, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TagsList render tags list page
|
// TagsList render tags list page
|
||||||
func TagsList(ctx *context.Context) {
|
func TagsList(ctx *context.Context) {
|
||||||
|
ctx.Data["PageIsTagList"] = true
|
||||||
|
ctx.Data["Title"] = ctx.Tr("repo.release.tags")
|
||||||
releasesOrTags(ctx, true)
|
releasesOrTags(ctx, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
func releasesOrTags(ctx *context.Context, isTagList bool) {
|
func releasesOrTags(ctx *context.Context, isTagList bool) {
|
||||||
ctx.Data["PageIsReleaseList"] = true
|
|
||||||
ctx.Data["DefaultBranch"] = ctx.Repo.Repository.DefaultBranch
|
ctx.Data["DefaultBranch"] = ctx.Repo.Repository.DefaultBranch
|
||||||
ctx.Data["IsViewBranch"] = false
|
ctx.Data["IsViewBranch"] = false
|
||||||
ctx.Data["IsViewTag"] = true
|
ctx.Data["IsViewTag"] = true
|
||||||
|
@ -75,14 +79,6 @@ func releasesOrTags(ctx *context.Context, isTagList bool) {
|
||||||
ctx.Data["CanCreateBranch"] = false
|
ctx.Data["CanCreateBranch"] = false
|
||||||
ctx.Data["HideBranchesInDropdown"] = true
|
ctx.Data["HideBranchesInDropdown"] = true
|
||||||
|
|
||||||
if isTagList {
|
|
||||||
ctx.Data["Title"] = ctx.Tr("repo.release.tags")
|
|
||||||
ctx.Data["PageIsTagList"] = true
|
|
||||||
} else {
|
|
||||||
ctx.Data["Title"] = ctx.Tr("repo.release.releases")
|
|
||||||
ctx.Data["PageIsTagList"] = false
|
|
||||||
}
|
|
||||||
|
|
||||||
listOptions := db.ListOptions{
|
listOptions := db.ListOptions{
|
||||||
Page: ctx.FormInt("page"),
|
Page: ctx.FormInt("page"),
|
||||||
PageSize: ctx.FormInt("limit"),
|
PageSize: ctx.FormInt("limit"),
|
||||||
|
@ -196,7 +192,11 @@ func releasesOrTags(ctx *context.Context, isTagList bool) {
|
||||||
pager.SetDefaultParams(ctx)
|
pager.SetDefaultParams(ctx)
|
||||||
ctx.Data["Page"] = pager
|
ctx.Data["Page"] = pager
|
||||||
|
|
||||||
ctx.HTML(http.StatusOK, tplReleases)
|
if isTagList {
|
||||||
|
ctx.HTML(http.StatusOK, tplTagsList)
|
||||||
|
} else {
|
||||||
|
ctx.HTML(http.StatusOK, tplReleasesList)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReleasesFeedRSS get feeds for releases in RSS format
|
// ReleasesFeedRSS get feeds for releases in RSS format
|
||||||
|
@ -282,7 +282,7 @@ func SingleRelease(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.Data["Releases"] = []*repo_model.Release{release}
|
ctx.Data["Releases"] = []*repo_model.Release{release}
|
||||||
ctx.HTML(http.StatusOK, tplReleases)
|
ctx.HTML(http.StatusOK, tplReleasesList)
|
||||||
}
|
}
|
||||||
|
|
||||||
// LatestRelease redirects to the latest release
|
// LatestRelease redirects to the latest release
|
||||||
|
|
|
@ -1198,7 +1198,7 @@ func RegisterRoutes(m *web.Route) {
|
||||||
}, context.RepoMustNotBeArchived(), reqRepoCodeWriter, repo.MustBeNotEmpty)
|
}, context.RepoMustNotBeArchived(), reqRepoCodeWriter, repo.MustBeNotEmpty)
|
||||||
}, reqSignIn, context.RepoAssignment, context.UnitTypes())
|
}, reqSignIn, context.RepoAssignment, context.UnitTypes())
|
||||||
|
|
||||||
// Releases
|
// Tags
|
||||||
m.Group("/{username}/{reponame}", func() {
|
m.Group("/{username}/{reponame}", func() {
|
||||||
m.Group("/tags", func() {
|
m.Group("/tags", func() {
|
||||||
m.Get("", repo.TagsList)
|
m.Get("", repo.TagsList)
|
||||||
|
@ -1207,6 +1207,12 @@ func RegisterRoutes(m *web.Route) {
|
||||||
}, func(ctx *context.Context) {
|
}, func(ctx *context.Context) {
|
||||||
ctx.Data["EnableFeed"] = setting.Other.EnableFeed
|
ctx.Data["EnableFeed"] = setting.Other.EnableFeed
|
||||||
}, repo.MustBeNotEmpty, reqRepoCodeReader, context.RepoRefByType(context.RepoRefTag, true))
|
}, repo.MustBeNotEmpty, reqRepoCodeReader, context.RepoRefByType(context.RepoRefTag, true))
|
||||||
|
m.Post("/tags/delete", repo.DeleteTag, reqSignIn,
|
||||||
|
repo.MustBeNotEmpty, context.RepoMustNotBeArchived(), reqRepoCodeWriter, context.RepoRef())
|
||||||
|
}, reqSignIn, context.RepoAssignment, context.UnitTypes())
|
||||||
|
|
||||||
|
// Releases
|
||||||
|
m.Group("/{username}/{reponame}", func() {
|
||||||
m.Group("/releases", func() {
|
m.Group("/releases", func() {
|
||||||
m.Get("/", repo.Releases)
|
m.Get("/", repo.Releases)
|
||||||
m.Get("/tag/*", repo.SingleRelease)
|
m.Get("/tag/*", repo.SingleRelease)
|
||||||
|
@ -1224,8 +1230,6 @@ func RegisterRoutes(m *web.Route) {
|
||||||
m.Post("/attachments", repo.UploadReleaseAttachment)
|
m.Post("/attachments", repo.UploadReleaseAttachment)
|
||||||
m.Post("/attachments/remove", repo.DeleteAttachment)
|
m.Post("/attachments/remove", repo.DeleteAttachment)
|
||||||
}, reqSignIn, repo.MustBeNotEmpty, context.RepoMustNotBeArchived(), reqRepoReleaseWriter, context.RepoRef())
|
}, reqSignIn, repo.MustBeNotEmpty, context.RepoMustNotBeArchived(), reqRepoReleaseWriter, context.RepoRef())
|
||||||
m.Post("/tags/delete", repo.DeleteTag, reqSignIn,
|
|
||||||
repo.MustBeNotEmpty, context.RepoMustNotBeArchived(), reqRepoCodeWriter, context.RepoRef())
|
|
||||||
m.Group("/releases", func() {
|
m.Group("/releases", func() {
|
||||||
m.Get("/edit/*", repo.EditRelease)
|
m.Get("/edit/*", repo.EditRelease)
|
||||||
m.Post("/edit/*", web.Bind(forms.EditReleaseForm{}), repo.EditReleasePost)
|
m.Post("/edit/*", web.Bind(forms.EditReleaseForm{}), repo.EditReleasePost)
|
||||||
|
|
|
@ -1,73 +1,16 @@
|
||||||
{{template "base/head" .}}
|
{{template "base/head" .}}
|
||||||
<div role="main" aria-label="{{.Title}}" class="page-content repository release">
|
<div role="main" aria-label="{{.Title}}" class="page-content repository releases">
|
||||||
{{template "repo/header" .}}
|
{{template "repo/header" .}}
|
||||||
<div class="ui container">
|
<div class="ui container">
|
||||||
{{template "base/alert" .}}
|
{{template "base/alert" .}}
|
||||||
<h2 class="ui compact small menu header">
|
{{template "repo/sub_menu_release_tag" .}}
|
||||||
{{if .Permission.CanRead $.UnitTypeReleases}}
|
|
||||||
<a class="{{if (and (not .PageIsSingleTag) (not .PageIsTagList))}}active {{end}}item" href="{{.RepoLink}}/releases">{{.locale.Tr "repo.release.releases"}}</a>
|
{{if .CanCreateRelease}}
|
||||||
{{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">
|
<a class="ui right small green button" href="{{$.RepoLink}}/releases/new">
|
||||||
{{.locale.Tr "repo.release.new_release"}}
|
{{.locale.Tr "repo.release.new_release"}}
|
||||||
</a>
|
</a>
|
||||||
{{end}}
|
{{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">
|
<ul id="release-list">
|
||||||
{{range $idx, $release := .Releases}}
|
{{range $idx, $release := .Releases}}
|
||||||
<li class="ui grid">
|
<li class="ui grid">
|
||||||
|
@ -178,7 +121,7 @@
|
||||||
</li>
|
</li>
|
||||||
{{end}}
|
{{end}}
|
||||||
</ul>
|
</ul>
|
||||||
{{end}}
|
|
||||||
{{template "base/paginate" .}}
|
{{template "base/paginate" .}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<a href="{{.RepoLink}}/branches">{{svg "octicon-git-branch"}} <b>{{.BranchesCount}}</b> {{.locale.TrN .BranchesCount "repo.branch" "repo.branches"}}</a>
|
<a href="{{.RepoLink}}/branches">{{svg "octicon-git-branch"}} <b>{{.BranchesCount}}</b> {{.locale.TrN .BranchesCount "repo.branch" "repo.branches"}}</a>
|
||||||
</div>
|
</div>
|
||||||
{{if $.Permission.CanRead $.UnitTypeCode}}
|
{{if $.Permission.CanRead $.UnitTypeCode}}
|
||||||
<div class="item">
|
<div class="item{{if .PageIsTagList}} active{{end}}">
|
||||||
<a href="{{.RepoLink}}/tags">{{svg "octicon-tag"}} <b>{{.NumTags}}</b> {{.locale.TrN .NumTags "repo.tag" "repo.tags"}}</a>
|
<a href="{{.RepoLink}}/tags">{{svg "octicon-tag"}} <b>{{.NumTags}}</b> {{.locale.TrN .NumTags "repo.tag" "repo.tags"}}</a>
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
17
templates/repo/sub_menu_release_tag.tmpl
Normal file
17
templates/repo/sub_menu_release_tag.tmpl
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
{{$canReadReleases := $.Permission.CanRead $.UnitTypeReleases}}
|
||||||
|
{{$canReadCode := $.Permission.CanRead $.UnitTypeCode}}
|
||||||
|
|
||||||
|
{{if $canReadReleases}}
|
||||||
|
<h2 class="ui compact small menu header">
|
||||||
|
<a class="{{if .PageIsReleaseList}}active {{end}}item" href="{{.RepoLink}}/releases">{{.locale.Tr "repo.release.releases"}}</a>
|
||||||
|
{{if $canReadCode}}
|
||||||
|
<a class="{{if .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}}
|
||||||
|
{{else if $canReadCode}}
|
||||||
|
{{template "repo/sub_menu" .}}
|
||||||
|
{{end}}
|
85
templates/repo/tag/list.tmpl
Normal file
85
templates/repo/tag/list.tmpl
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
{{template "base/head" .}}
|
||||||
|
|
||||||
|
<div role="main" aria-label="{{.Title}}" class="page-content repository tags">
|
||||||
|
{{template "repo/header" .}}
|
||||||
|
<div class="ui container">
|
||||||
|
{{template "base/alert" .}}
|
||||||
|
{{template "repo/sub_menu_release_tag" .}}
|
||||||
|
|
||||||
|
<div class="ui divider"></div>
|
||||||
|
|
||||||
|
<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>
|
||||||
|
|
||||||
|
{{$canReadReleases := $.Permission.CanRead $.UnitTypeReleases}}
|
||||||
|
|
||||||
|
<div class="ui attached table segment">
|
||||||
|
<table class="ui very basic striped fixed table single line" id="tags-table">
|
||||||
|
<tbody class="tag-list">
|
||||||
|
{{range $idx, $release := .Releases}}
|
||||||
|
<tr>
|
||||||
|
<td class="tag">
|
||||||
|
<h3 class="release-tag-name gt-mb-3">
|
||||||
|
{{if $canReadReleases}}
|
||||||
|
<a class="gt-df gt-ac" href="{{$.RepoLink}}/releases/tag/{{.TagName | PathEscapeSegments}}" rel="nofollow">{{.TagName}}</a>
|
||||||
|
{{else}}
|
||||||
|
<a class="gt-df gt-ac" href="{{$.RepoLink}}/src/tag/{{.TagName | PathEscapeSegments}}" rel="nofollow">{{.TagName}}</a>
|
||||||
|
{{end}}
|
||||||
|
</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 $canReadReleases $.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 and $canReadReleases (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>
|
||||||
|
|
||||||
|
{{template "base/paginate" .}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{if $.Permission.CanWrite $.UnitTypeCode}}
|
||||||
|
<div class="ui g-modal-confirm delete modal">
|
||||||
|
<div class="header">
|
||||||
|
{{svg "octicon-trash"}}
|
||||||
|
{{.locale.Tr "repo.release.delete_tag"}}
|
||||||
|
</div>
|
||||||
|
<div class="content">
|
||||||
|
<p>{{.locale.Tr "repo.release.deletion_tag_desc"}}</p>
|
||||||
|
</div>
|
||||||
|
{{template "base/modal_actions_confirm" .}}
|
||||||
|
</div>
|
||||||
|
{{end}}
|
||||||
|
|
||||||
|
|
||||||
|
{{template "base/footer" .}}
|
|
@ -30,6 +30,7 @@
|
||||||
@import "./install.css";
|
@import "./install.css";
|
||||||
@import "./form.css";
|
@import "./form.css";
|
||||||
@import "./repository.css";
|
@import "./repository.css";
|
||||||
|
@import "./repository-release-tag.css";
|
||||||
@import "./editor.css";
|
@import "./editor.css";
|
||||||
@import "./editor-markdown.css";
|
@import "./editor-markdown.css";
|
||||||
@import "./organization.css";
|
@import "./organization.css";
|
||||||
|
|
151
web_src/css/repository-release-tag.css
Normal file
151
web_src/css/repository-release-tag.css
Normal file
|
@ -0,0 +1,151 @@
|
||||||
|
.repository.releases #release-list {
|
||||||
|
border-top: 1px solid var(--color-secondary);
|
||||||
|
margin-top: 20px;
|
||||||
|
padding-top: 15px;
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.releases #release-list .release-list-title {
|
||||||
|
font-size: 2rem;
|
||||||
|
font-weight: normal;
|
||||||
|
margin-top: -4px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.releases #release-list > li {
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.releases #release-list > li .meta,
|
||||||
|
.repository.releases #release-list > li .detail {
|
||||||
|
padding-top: 30px;
|
||||||
|
padding-bottom: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.releases #release-list > li .meta {
|
||||||
|
text-align: right;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.releases #release-list > li .meta .label {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.releases #release-list > li .meta .commit {
|
||||||
|
display: block;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.releases #release-list > li .meta .choose {
|
||||||
|
margin-top: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.releases #release-list > li .meta .choose .button {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.releases #release-list > li .detail {
|
||||||
|
border-left: 2px solid var(--color-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.releases #release-list > li .detail .author img {
|
||||||
|
margin-bottom: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.releases #release-list > li .detail .download > a .svg {
|
||||||
|
margin-left: 5px;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.releases #release-list > li .detail .download .list {
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.releases #release-list > li .detail .download .list li {
|
||||||
|
list-style: none;
|
||||||
|
display: block;
|
||||||
|
padding: 8px;
|
||||||
|
border: 1px solid var(--color-secondary);
|
||||||
|
background: var(--color-light);
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.releases #release-list > li .detail .download .list li a > .text.right {
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.releases #release-list > li .detail .download .list li + li {
|
||||||
|
border-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.releases #release-list > li .detail .download .list li:first-of-type {
|
||||||
|
border-radius: var(--border-radius) 0 0 var(--border-radius);
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.releases #release-list > li .detail .download .list li:last-of-type {
|
||||||
|
border-radius: 0 var(--border-radius) var(--border-radius) 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.releases #release-list > li .detail .dot {
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
background-color: var(--color-secondary-dark-3);
|
||||||
|
z-index: 9;
|
||||||
|
position: absolute;
|
||||||
|
display: block;
|
||||||
|
left: -6px;
|
||||||
|
top: 40px;
|
||||||
|
border-radius: 100%;
|
||||||
|
border: 2.5px solid var(--color-body);
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.tags #tags-table .tag {
|
||||||
|
padding: 8px 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.tags #tags-table .release-tag-name {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.new.release .target {
|
||||||
|
min-width: 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.new.release .target #tag-name {
|
||||||
|
margin-top: -4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.new.release .target .at {
|
||||||
|
margin-left: -5px;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.new.release .target .selection.dropdown {
|
||||||
|
padding-top: 10px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.new.release .prerelease.field {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 438px) {
|
||||||
|
.repository.new.release .field button,
|
||||||
|
.repository.new.release .field input {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.repository.new.release .field button {
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.new.release .field .wrap_remove {
|
||||||
|
height: 38px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository.new.release .field .attachment_edit {
|
||||||
|
width: 450px !important;
|
||||||
|
}
|
|
@ -1923,157 +1923,6 @@
|
||||||
flex: 1
|
flex: 1
|
||||||
}
|
}
|
||||||
|
|
||||||
.repository.release #release-list {
|
|
||||||
border-top: 1px solid var(--color-secondary);
|
|
||||||
margin-top: 20px;
|
|
||||||
padding-top: 15px;
|
|
||||||
padding-left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.release #release-list .release-list-title {
|
|
||||||
font-size: 2rem;
|
|
||||||
font-weight: normal;
|
|
||||||
margin-top: -4px;
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.release #release-list > li {
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.release #release-list > li .meta,
|
|
||||||
.repository.release #release-list > li .detail {
|
|
||||||
padding-top: 30px;
|
|
||||||
padding-bottom: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.release #release-list > li .meta {
|
|
||||||
text-align: right;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.release #release-list > li .meta .label {
|
|
||||||
margin-right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.release #release-list > li .meta .commit {
|
|
||||||
display: block;
|
|
||||||
margin-top: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.release #release-list > li .meta .choose {
|
|
||||||
margin-top: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.release #release-list > li .meta .choose .button {
|
|
||||||
margin-right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.release #release-list > li .detail {
|
|
||||||
border-left: 2px solid var(--color-secondary);
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.release #release-list > li .detail .author img {
|
|
||||||
margin-bottom: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.release #release-list > li .detail .download > a .svg {
|
|
||||||
margin-left: 5px;
|
|
||||||
margin-right: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.release #release-list > li .detail .download .list {
|
|
||||||
padding-left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.release #release-list > li .detail .download .list li {
|
|
||||||
list-style: none;
|
|
||||||
display: block;
|
|
||||||
padding: 8px;
|
|
||||||
border: 1px solid var(--color-secondary);
|
|
||||||
background: var(--color-light);
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.release #release-list > li .detail .download .list li a > .text.right {
|
|
||||||
margin-right: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.release #release-list > li .detail .download .list li + li {
|
|
||||||
border-top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.release #release-list > li .detail .download .list li:first-of-type {
|
|
||||||
border-radius: var(--border-radius) 0 0 var(--border-radius);
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.release #release-list > li .detail .download .list li:last-of-type {
|
|
||||||
border-radius: 0 var(--border-radius) var(--border-radius) 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.release #release-list > li .detail .dot {
|
|
||||||
width: 10px;
|
|
||||||
height: 10px;
|
|
||||||
background-color: var(--color-secondary-dark-3);
|
|
||||||
z-index: 9;
|
|
||||||
position: absolute;
|
|
||||||
display: block;
|
|
||||||
left: -6px;
|
|
||||||
top: 40px;
|
|
||||||
border-radius: 100%;
|
|
||||||
border: 2.5px solid var(--color-body);
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.release #tags-table .tag {
|
|
||||||
padding: 8px 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.release #tags-table .release-tag-name {
|
|
||||||
font-size: 18px;
|
|
||||||
font-weight: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.new.release .target {
|
|
||||||
min-width: 500px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.new.release .target #tag-name {
|
|
||||||
margin-top: -4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.new.release .target .at {
|
|
||||||
margin-left: -5px;
|
|
||||||
margin-right: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.new.release .target .selection.dropdown {
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.new.release .prerelease.field {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 438px) {
|
|
||||||
.repository.new.release .field button,
|
|
||||||
.repository.new.release .field input {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 767px) {
|
|
||||||
.repository.new.release .field button {
|
|
||||||
margin-bottom: 1em;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.new.release .field .wrap_remove {
|
|
||||||
height: 38px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.new.release .field .attachment_edit {
|
|
||||||
width: 450px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.packages .empty {
|
.repository.packages .empty {
|
||||||
padding-top: 70px;
|
padding-top: 70px;
|
||||||
|
|
Loading…
Reference in a new issue