summaryrefslogtreecommitdiffstats
path: root/templates/package/shared
diff options
context:
space:
mode:
Diffstat (limited to 'templates/package/shared')
-rw-r--r--templates/package/shared/cargo.tmpl27
-rw-r--r--templates/package/shared/cleanup_rules/edit.tmpl73
-rw-r--r--templates/package/shared/cleanup_rules/list.tmpl56
-rw-r--r--templates/package/shared/cleanup_rules/preview.tmpl34
-rw-r--r--templates/package/shared/list.tmpl57
-rw-r--r--templates/package/shared/versionlist.tmpl37
6 files changed, 284 insertions, 0 deletions
diff --git a/templates/package/shared/cargo.tmpl b/templates/package/shared/cargo.tmpl
new file mode 100644
index 0000000..5b0f639
--- /dev/null
+++ b/templates/package/shared/cargo.tmpl
@@ -0,0 +1,27 @@
+<h4 class="ui top attached header">
+ {{ctx.Locale.Tr "packages.owner.settings.cargo.title"}}
+</h4>
+<div class="ui attached segment">
+ <div class="ui form">
+ {{if .CargoIndexExists}}
+ <div class="field">
+ <label>{{ctx.Locale.Tr "packages.owner.settings.cargo.rebuild.description"}}</label>
+ </div>
+ <form class="field" action="{{.Link}}/cargo/rebuild" method="post">
+ {{.CsrfTokenHtml}}
+ <button class="ui primary button">{{ctx.Locale.Tr "packages.owner.settings.cargo.rebuild"}}</button>
+ </form>
+ {{else}}
+ <div class="field">
+ <label>{{ctx.Locale.Tr "packages.owner.settings.cargo.initialize.description"}}</label>
+ </div>
+ <form class="field" action="{{.Link}}/cargo/initialize" method="post">
+ {{.CsrfTokenHtml}}
+ <button class="ui primary button">{{ctx.Locale.Tr "packages.owner.settings.cargo.initialize"}}</button>
+ </form>
+ {{end}}
+ <div class="field">
+ <label>{{ctx.Locale.Tr "packages.registry.documentation" "Cargo" "https://forgejo.org/docs/latest/user/packages/cargo/"}}</label>
+ </div>
+ </div>
+</div>
diff --git a/templates/package/shared/cleanup_rules/edit.tmpl b/templates/package/shared/cleanup_rules/edit.tmpl
new file mode 100644
index 0000000..138a907
--- /dev/null
+++ b/templates/package/shared/cleanup_rules/edit.tmpl
@@ -0,0 +1,73 @@
+<h4 class="ui top attached header">{{if .IsEditRule}}{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.edit"}}{{else}}{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.add"}}{{end}}</h4>
+<div class="ui attached segment">
+ <form class="ui form" action="{{.Link}}" method="post">
+ {{.CsrfTokenHtml}}
+ <input name="id" type="hidden" value="{{.CleanupRule.ID}}">
+ <div class="field">
+ <div class="ui checkbox">
+ <label>{{ctx.Locale.Tr "enabled"}}</label>
+ <input type="checkbox" name="enabled" {{if .CleanupRule.Enabled}}checked{{end}}>
+ </div>
+ </div>
+ <div class="{{if .IsEditRule}}disabled {{end}}field {{if .Err_Type}}error{{end}}">
+ <label>{{ctx.Locale.Tr "packages.filter.type"}}</label>
+ <select class="ui selection dropdown" name="type">
+ {{range $type := .AvailableTypes}}
+ <option{{if eq $.CleanupRule.Type $type}} selected="selected"{{end}} value="{{$type}}">{{$type.Name}}</option>
+ {{end}}
+ </select>
+ </div>
+ <div class="field">
+ <div class="ui checkbox">
+ <label>{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.pattern_full_match"}}</label>
+ <input type="checkbox" name="match_full_name" {{if .CleanupRule.MatchFullName}}checked{{end}}>
+ </div>
+ </div>
+ <div class="divider"></div>
+ <p>{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.keep.title"}}</p>
+ <div class="field {{if .Err_KeepCount}}error{{end}}">
+ <label>{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.keep.count"}}:</label>
+ <select class="ui selection dropdown" name="keep_count">
+ <option{{if eq .CleanupRule.KeepCount 0}} selected="selected"{{end}} value="0"></option>
+ <option{{if eq .CleanupRule.KeepCount 1}} selected="selected"{{end}} value="1">{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.keep.count.1"}}</option>
+ <option{{if eq .CleanupRule.KeepCount 5}} selected="selected"{{end}} value="5">{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.keep.count.n" 5}}</option>
+ <option{{if eq .CleanupRule.KeepCount 10}} selected="selected"{{end}} value="10">{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.keep.count.n" 10}}</option>
+ <option{{if eq .CleanupRule.KeepCount 25}} selected="selected"{{end}} value="25">{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.keep.count.n" 25}}</option>
+ <option{{if eq .CleanupRule.KeepCount 50}} selected="selected"{{end}} value="50">{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.keep.count.n" 50}}</option>
+ <option{{if eq .CleanupRule.KeepCount 100}} selected="selected"{{end}} value="100">{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.keep.count.n" 100}}</option>
+ </select>
+ </div>
+ <div class="field {{if .Err_KeepPattern}}error{{end}}">
+ <label>{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.keep.pattern"}}:</label>
+ <input name="keep_pattern" type="text" value="{{.CleanupRule.KeepPattern}}">
+ <p>{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.keep.pattern.container"}}</p>
+ </div>
+ <div class="divider"></div>
+ <p>{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.remove.title"}}</p>
+ <div class="field {{if .Err_RemoveDays}}error{{end}}">
+ <label>{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.remove.days"}}:</label>
+ <select class="ui selection dropdown" name="remove_days">
+ <option{{if eq .CleanupRule.RemoveDays 0}} selected="selected"{{end}} value="0"></option>
+ <option{{if eq .CleanupRule.RemoveDays 7}} selected="selected"{{end}} value="7">{{ctx.Locale.Tr "tool.days" 7}}</option>
+ <option{{if eq .CleanupRule.RemoveDays 14}} selected="selected"{{end}} value="14">{{ctx.Locale.Tr "tool.days" 14}}</option>
+ <option{{if eq .CleanupRule.RemoveDays 30}} selected="selected"{{end}} value="30">{{ctx.Locale.Tr "tool.days" 30}}</option>
+ <option{{if eq .CleanupRule.RemoveDays 60}} selected="selected"{{end}} value="60">{{ctx.Locale.Tr "tool.days" 60}}</option>
+ <option{{if eq .CleanupRule.RemoveDays 90}} selected="selected"{{end}} value="90">{{ctx.Locale.Tr "tool.days" 90}}</option>
+ <option{{if eq .CleanupRule.RemoveDays 180}} selected="selected"{{end}} value="180">{{ctx.Locale.Tr "tool.days" 180}}</option>
+ </select>
+ </div>
+ <div class="field {{if .Err_RemovePattern}}error{{end}}">
+ <label>{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.remove.pattern"}}:</label>
+ <input name="remove_pattern" type="text" value="{{.CleanupRule.RemovePattern}}">
+ </div>
+ <div class="field">
+ {{if .IsEditRule}}
+ <button class="ui primary button" name="action" value="save">{{ctx.Locale.Tr "save"}}</button>
+ <button class="ui red button" name="action" value="remove">{{ctx.Locale.Tr "remove"}}</button>
+ <a class="ui button" href="{{.Link}}/preview">{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.preview"}}</a>
+ {{else}}
+ <button class="ui primary button" name="action" value="save">{{ctx.Locale.Tr "add"}}</button>
+ {{end}}
+ </div>
+ </form>
+</div>
diff --git a/templates/package/shared/cleanup_rules/list.tmpl b/templates/package/shared/cleanup_rules/list.tmpl
new file mode 100644
index 0000000..ba1683b
--- /dev/null
+++ b/templates/package/shared/cleanup_rules/list.tmpl
@@ -0,0 +1,56 @@
+<h4 class="ui top attached header">
+ {{ctx.Locale.Tr "packages.owner.settings.cleanuprules.title"}}
+ <div class="ui right">
+ <a class="ui primary tiny button" href="{{.Link}}/rules/add">{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.add"}}</a>
+ </div>
+</h4>
+<div class="ui attached segment">
+ <div class="flex-list">
+ {{range .CleanupRules}}
+ <div class="flex-item">
+ <div class="flex-item-leading">
+ {{svg .Type.SVGName 32}}
+ </div>
+ <div class="flex-item-main">
+ <div class="flex-item-title">
+ <a class="item" href="{{$.Link}}/rules/{{.ID}}">{{.Type.Name}}</a>
+ </div>
+ <div class="flex-item-body">
+ <p>{{if .Enabled}}{{ctx.Locale.Tr "enabled"}}{{else}}{{ctx.Locale.Tr "disabled"}}{{end}}</p>
+ </div>
+ {{if .KeepCount}}
+ <div class="flex-item-body">
+ <p>{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.keep.count"}}:</p> {{if eq .KeepCount 1}}{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.keep.count.1"}}{{else}}{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.keep.count.n" .KeepCount}}{{end}}
+ </div>
+ {{end}}
+ {{if .KeepPattern}}
+ <div class="flex-item-body">
+ <p>{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.keep.pattern"}}:</p> {{StringUtils.EllipsisString .KeepPattern 100}}
+ </div>
+ {{end}}
+ {{if .RemoveDays}}
+ <div class="flex-item-body">
+ <p>{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.remove.days"}}:</p> {{ctx.Locale.Tr "tool.days" .RemoveDays}}
+ </div>
+ {{end}}
+ {{if .RemovePattern}}
+ <div class="flex-item-body">
+ <p>{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.remove.pattern"}}:</p> {{StringUtils.EllipsisString .RemovePattern 100}}
+ </div>
+ {{end}}
+ </div>
+ <div class="flex-item-trailing">
+ <div class="ui dropdown tiny basic button">
+ {{svg "octicon-kebab-horizontal"}}
+ <div class="menu">
+ <a class="item" href="{{$.Link}}/rules/{{.ID}}">{{ctx.Locale.Tr "edit"}}</a>
+ <a class="item" href="{{$.Link}}/rules/{{.ID}}/preview">{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.preview"}}</a>
+ </div>
+ </div>
+ </div>
+ </div>
+ {{else}}
+ <div class="item">{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.none"}}</div>
+ {{end}}
+ </div>
+</div>
diff --git a/templates/package/shared/cleanup_rules/preview.tmpl b/templates/package/shared/cleanup_rules/preview.tmpl
new file mode 100644
index 0000000..0d9c4b0
--- /dev/null
+++ b/templates/package/shared/cleanup_rules/preview.tmpl
@@ -0,0 +1,34 @@
+<h4 class="ui top attached header">{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.preview"}}</h4>
+<div class="ui attached segment">
+ <p>{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.preview.overview" (len .VersionsToRemove)}}</p>
+</div>
+<div class="ui attached table segment">
+ <table class="ui very basic striped table unstackable">
+ <thead>
+ <tr>
+ <th>{{ctx.Locale.Tr "admin.packages.type"}}</th>
+ <th>{{ctx.Locale.Tr "admin.packages.name"}}</th>
+ <th>{{ctx.Locale.Tr "admin.packages.version"}}</th>
+ <th>{{ctx.Locale.Tr "admin.packages.creator"}}</th>
+ <th>{{ctx.Locale.Tr "admin.packages.size"}}</th>
+ <th>{{ctx.Locale.Tr "admin.packages.published"}}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{range .VersionsToRemove}}
+ <tr>
+ <td>{{.Package.Type.Name}}</td>
+ <td>{{.Package.Name}}</td>
+ <td><a href="{{.VersionWebLink}}">{{.Version.Version}}</a></td>
+ <td><a href="{{.Creator.HomeLink}}">{{.Creator.Name}}</a></td>
+ <td>{{ctx.Locale.TrSize .CalculateBlobSize}}</td>
+ <td>{{DateTime "short" .Version.CreatedUnix}}</td>
+ </tr>
+ {{else}}
+ <tr>
+ <td colspan="6">{{ctx.Locale.Tr "packages.owner.settings.cleanuprules.preview.none"}}</td>
+ </tr>
+ {{end}}
+ </tbody>
+ </table>
+</div>
diff --git a/templates/package/shared/list.tmpl b/templates/package/shared/list.tmpl
new file mode 100644
index 0000000..36f8bc1
--- /dev/null
+++ b/templates/package/shared/list.tmpl
@@ -0,0 +1,57 @@
+{{template "base/alert" .}}
+{{if .HasPackages}}
+<form class="ui form ignore-dirty">
+ <div class="ui small fluid action input">
+ {{template "shared/search/input" dict "Value" .Query "Placeholder" (ctx.Locale.Tr "search.package_kind")}}
+ <select class="ui small dropdown" name="type">
+ <option value="">{{ctx.Locale.Tr "packages.filter.type"}}</option>
+ <option value="all">{{ctx.Locale.Tr "packages.filter.type.all"}}</option>
+ {{range $type := .AvailableTypes}}
+ <option{{if eq $.PackageType $type}} selected="selected"{{end}} value="{{$type}}">{{$type.Name}}</option>
+ {{end}}
+ </select>
+ {{template "shared/search/button"}}
+ </div>
+</form>
+{{end}}
+<div>
+ {{range .PackageDescriptors}}
+ <div class="flex-list">
+ <div class="flex-item">
+ <div class="flex-item-main">
+ <div class="flex-item-title">
+ <a href="{{.VersionWebLink}}">{{.Package.Name}}</a>
+ <span class="ui label">{{svg .Package.Type.SVGName 16}} {{.Package.Type.Name}}</span>
+ </div>
+ <div class="flex-item-body">
+ {{$timeStr := TimeSinceUnix .Version.CreatedUnix ctx.Locale}}
+ {{$hasRepositoryAccess := false}}
+ {{if .Repository}}
+ {{$hasRepositoryAccess = index $.RepositoryAccessMap .Repository.ID}}
+ {{end}}
+ {{if $hasRepositoryAccess}}
+ {{ctx.Locale.Tr "packages.published_by_in" $timeStr .Creator.HomeLink .Creator.GetDisplayName .Repository.Link .Repository.FullName}}
+ {{else}}
+ {{ctx.Locale.Tr "packages.published_by" $timeStr .Creator.HomeLink .Creator.GetDisplayName}}
+ {{end}}
+ </div>
+ </div>
+ </div>
+ </div>
+ {{else}}
+ {{if not .HasPackages}}
+ <div class="empty-placeholder">
+ {{svg "octicon-package" 48}}
+ <h2>{{ctx.Locale.Tr "packages.empty"}}</h2>
+ {{if and .Repository .CanWritePackages}}
+ {{$packagesUrl := URLJoin .Owner.HomeLink "-" "packages"}}
+ <p>{{ctx.Locale.Tr "packages.empty.repo" $packagesUrl}}</p>
+ {{end}}
+ <p>{{ctx.Locale.Tr "packages.empty.documentation" "https://forgejo.org/docs/latest/user/packages/"}}</p>
+ </div>
+ {{else}}
+ <p class="tw-py-4">{{ctx.Locale.Tr "packages.filter.no_result"}}</p>
+ {{end}}
+ {{end}}
+ {{template "base/paginate" .}}
+</div>
diff --git a/templates/package/shared/versionlist.tmpl b/templates/package/shared/versionlist.tmpl
new file mode 100644
index 0000000..e5c568e
--- /dev/null
+++ b/templates/package/shared/versionlist.tmpl
@@ -0,0 +1,37 @@
+<p><a href="{{.PackageDescriptor.PackageWebLink}}">{{.PackageDescriptor.Package.Name}}</a> / <strong>{{ctx.Locale.Tr "packages.versions"}}</strong></p>
+<form class="ui form ignore-dirty">
+ <div class="ui small fluid action input">
+ {{template "shared/search/input" dict "Value" .Query "Placeholder" (ctx.Locale.Tr "search.package_kind")}}
+ <select class="ui small dropdown" name="sort">
+ <option value="version_asc"{{if eq .Sort "version_asc"}} selected="selected"{{end}}>{{ctx.Locale.Tr "filter.string.asc"}}</option>
+ <option value="version_desc"{{if eq .Sort "version_desc"}} selected="selected"{{end}}>{{ctx.Locale.Tr "filter.string.desc"}}</option>
+ <option value="created_asc"{{if eq .Sort "created_asc"}} selected="selected"{{end}}>{{ctx.Locale.Tr "repo.issues.filter_sort.oldest"}}</option>
+ <option value="created_desc"{{if or (eq .Sort "") (eq .Sort "created_desc")}} selected="selected"{{end}}>{{ctx.Locale.Tr "repo.issues.filter_sort.latest"}}</option>
+ </select>
+ {{if eq .PackageDescriptor.Package.Type "container"}}
+ <select class="ui small dropdown" name="tagged">
+ {{$isTagged := or (eq .Tagged "") (eq .Tagged "tagged")}}
+ <option value="tagged"{{if $isTagged}} selected="selected"{{end}}>{{ctx.Locale.Tr "packages.filter.container.tagged"}}</option>
+ <option value="untagged"{{if not $isTagged}} selected="selected"{{end}}>{{ctx.Locale.Tr "packages.filter.container.untagged"}}</option>
+ </select>
+ {{end}}
+ {{template "shared/search/button"}}
+ </div>
+</form>
+<div>
+ {{range .PackageDescriptors}}
+ <div class="flex-list">
+ <div class="flex-item">
+ <div class="flex-item-main">
+ <a class="flex-item-title" href="{{.VersionWebLink}}">{{.Version.LowerVersion}}</a>
+ <div class="flex-item-body">
+ {{ctx.Locale.Tr "packages.published_by" (TimeSinceUnix .Version.CreatedUnix ctx.Locale) .Creator.HomeLink .Creator.GetDisplayName}}
+ </div>
+ </div>
+ </div>
+ </div>
+ {{else}}
+ <p class="tw-py-4">{{ctx.Locale.Tr "packages.filter.no_result"}}</p>
+ {{end}}
+ {{template "base/paginate" .}}
+</div>