All checks were successful
Build and Release / Create Release (push) Successful in 0s
Build and Release / Lint (push) Successful in 4m21s
Build and Release / Unit Tests (push) Successful in 3m22s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 3m21s
Build and Release / Build Binaries (amd64, darwin, linux-latest) (push) Successful in 2m53s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 3m30s
Build and Release / Build Binaries (arm64, darwin, linux-latest) (push) Successful in 3m1s
Build and Release / Build Binaries (arm64, linux, linux-latest) (push) Successful in 3m10s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 8h4m31s
Adds a Site Admin page to view loaded plugins with: - Plugin name, version, description - Features (Database, Web UI, API, Repository, Licensed) - License status for licensed plugins 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
80 lines
2.5 KiB
Handlebars
80 lines
2.5 KiB
Handlebars
{{template "admin/layout_head" (dict "ctxData" . "pageClass" "admin plugins")}}
|
|
<div class="admin-setting-content">
|
|
<h4 class="ui top attached header">
|
|
{{ctx.Locale.Tr "admin.plugins"}}
|
|
</h4>
|
|
<div class="ui attached segment">
|
|
{{if .PluginsEnabled}}
|
|
<p>{{ctx.Locale.Tr "admin.plugins.path"}}: <code>{{.PluginsPath}}</code></p>
|
|
{{else}}
|
|
<div class="ui warning message">
|
|
{{ctx.Locale.Tr "admin.plugins.disabled"}}
|
|
</div>
|
|
{{end}}
|
|
</div>
|
|
|
|
{{if .PluginsEnabled}}
|
|
<h4 class="ui attached header">
|
|
{{ctx.Locale.Tr "admin.plugins.loaded"}} ({{len .Plugins}})
|
|
</h4>
|
|
<div class="ui attached table segment">
|
|
{{if .Plugins}}
|
|
<table class="ui very basic striped table unstackable tw-mb-0">
|
|
<thead>
|
|
<tr>
|
|
<th>{{ctx.Locale.Tr "admin.plugins.name"}}</th>
|
|
<th>{{ctx.Locale.Tr "admin.plugins.version"}}</th>
|
|
<th>{{ctx.Locale.Tr "admin.plugins.description"}}</th>
|
|
<th>{{ctx.Locale.Tr "admin.plugins.features"}}</th>
|
|
<th>{{ctx.Locale.Tr "admin.plugins.license"}}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{{range .Plugins}}
|
|
<tr>
|
|
<td><strong>{{.Name}}</strong></td>
|
|
<td>{{.Version}}</td>
|
|
<td>{{.Description}}</td>
|
|
<td>
|
|
{{range .Features}}
|
|
<span class="ui label">{{.}}</span>
|
|
{{end}}
|
|
</td>
|
|
<td>
|
|
{{if .LicenseInfo}}
|
|
{{if .LicenseInfo.Valid}}
|
|
<span class="ui green label" data-tooltip-content="{{ctx.Locale.Tr "admin.plugins.license_expires"}} {{DateUtils.AbsoluteShort .LicenseInfo.ExpiresAt}}">
|
|
{{svg "octicon-verified"}} {{.LicenseInfo.Tier}}
|
|
</span>
|
|
{{else if .LicenseInfo.GracePeriod}}
|
|
<span class="ui yellow label">
|
|
{{svg "octicon-alert"}} {{ctx.Locale.Tr "admin.plugins.license_grace"}}
|
|
</span>
|
|
{{else}}
|
|
<span class="ui red label">
|
|
{{svg "octicon-x"}} {{ctx.Locale.Tr "admin.plugins.license_invalid"}}
|
|
</span>
|
|
{{end}}
|
|
{{else}}
|
|
<span class="ui grey label">{{ctx.Locale.Tr "admin.plugins.license_not_required"}}</span>
|
|
{{end}}
|
|
</td>
|
|
</tr>
|
|
{{end}}
|
|
</tbody>
|
|
</table>
|
|
{{else}}
|
|
<div class="ui placeholder segment">
|
|
<div class="ui icon header">
|
|
{{svg "octicon-package" 48}}
|
|
<div class="content">
|
|
{{ctx.Locale.Tr "admin.plugins.none"}}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
</div>
|
|
{{end}}
|
|
</div>
|
|
{{template "admin/layout_footer" .}}
|