Release 2.7.3
Publish Docker Image / build-and-push (./build/Dockerfile, git.lzstealth.com/lzstealth/pulse-signage-web, web) (push) Successful in 1m15s
Publish Docker Image / build-and-push (./build/Dockerfile.player, git.lzstealth.com/lzstealth/pulse-signage-player, player) (push) Successful in 32s
Publish Docker Image / build-and-push (./build/Dockerfile, git.lzstealth.com/lzstealth/pulse-signage-web, web) (push) Successful in 1m15s
Publish Docker Image / build-and-push (./build/Dockerfile.player, git.lzstealth.com/lzstealth/pulse-signage-player, player) (push) Successful in 32s
This commit is contained in:
@@ -5,82 +5,91 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row g-3">
|
||||
<div class="col-12 col-xl-4">
|
||||
<div class="card card-outline card-primary">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Upload font</h3>
|
||||
</div>
|
||||
<form method="post" action="/settings/fonts" enctype="multipart/form-data">
|
||||
<div class="card-body d-flex flex-column gap-3 pb-0">
|
||||
<div>
|
||||
<label for="font-family" class="form-label">Font family name</label>
|
||||
<input id="font-family" name="font_family" class="form-control" maxlength="128" data-limit-text-length placeholder="Acme Sans" required />
|
||||
</div>
|
||||
<div>
|
||||
<label for="font-file" class="form-label">Font file</label>
|
||||
<input id="font-file" name="font_file" type="file" class="form-control" accept=".woff2,.woff,.ttf,.otf" required />
|
||||
</div>
|
||||
<div class="card card-outline card-primary mb-4">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Upload font</h3>
|
||||
</div>
|
||||
<style>
|
||||
.font-upload-form .invalid-feedback {
|
||||
display: none !important;
|
||||
}
|
||||
</style>
|
||||
<form method="post" action="/settings/fonts" enctype="multipart/form-data" class="font-upload-form">
|
||||
<div class="card-body">
|
||||
<div class="row g-3 align-items-end">
|
||||
<div class="col-12 col-lg-5">
|
||||
<input id="font-family" name="font_family" class="form-control" maxlength="128" data-limit-text-length placeholder="Acme Sans" required />
|
||||
</div>
|
||||
<div class="col-12 col-lg-5">
|
||||
<input id="font-file" name="font_file" type="file" class="form-control" accept=".woff2,.woff,.ttf,.otf" aria-label="Font file" required />
|
||||
</div>
|
||||
<div class="col-12 col-lg-2 d-grid">
|
||||
<button type="submit" class="btn btn-primary">Upload font</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="text-muted small mt-3">Accepted formats: WOFF2, WOFF, TTF, and OTF.</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-xl-8">
|
||||
<div class="card card-outline card-primary">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Managed fonts</h3>
|
||||
</div>
|
||||
<div class="table-responsive fonts-table-responsive">
|
||||
<table class="table table-striped align-middle mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Family</th>
|
||||
<th>File</th>
|
||||
<th>Format</th>
|
||||
<th>Status</th>
|
||||
<th>Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{#if fonts.length}}
|
||||
{{#each fonts}}
|
||||
<tr>
|
||||
<td class="fw-semibold">{{family}}</td>
|
||||
<td class="text-break">{{fileName}}</td>
|
||||
<td>{{format}}</td>
|
||||
<td>
|
||||
{{#if enabled}}
|
||||
<span class="badge text-bg-success">Enabled</span>
|
||||
{{else}}
|
||||
<span class="badge text-bg-secondary">Disabled</span>
|
||||
{{/if}}
|
||||
</td>
|
||||
<td class="text-nowrap">
|
||||
<form method="post" action="/settings/fonts/{{id}}/toggle" class="d-inline">
|
||||
<input type="hidden" name="enabled" value="{{#if enabled}}0{{else}}1{{/if}}" />
|
||||
<button type="submit" class="btn btn-secondary btn-sm">{{#if enabled}}Disable{{else}}Enable{{/if}}</button>
|
||||
</form>
|
||||
<form method="post" action="/settings/fonts/{{id}}/delete" class="d-inline ms-1" data-confirm-message="Delete this font?">
|
||||
<input type="hidden" name="family" value="{{family}}" />
|
||||
{{#if inUse}}
|
||||
<button type="submit" class="btn btn-outline-danger btn-sm" {{#if inUse}}disabled{{/if}}>Delete</button>
|
||||
{{else}}
|
||||
<button type="submit" class="btn btn-danger btn-sm">Delete</button>
|
||||
{{/if}}
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
{{else}}
|
||||
<tr>
|
||||
<td colspan="5" class="empty">No managed fonts yet.</td>
|
||||
</tr>
|
||||
{{/if}}
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="card card-outline card-primary" data-table-search-container data-table-pagination-card>
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Managed fonts</h3>
|
||||
<div class="card-tools d-flex flex-nowrap align-items-center gap-2">
|
||||
<div class="input-group input-group-sm flex-shrink-1" style="width: min(14rem, 100%);">
|
||||
<span class="input-group-text" aria-hidden="true"><i class="bi bi-search"></i></span>
|
||||
<input type="search" class="form-control" placeholder="Search fonts" aria-label="Search fonts" data-table-search />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body table-responsive p-0">
|
||||
<table class="table table-striped align-middle mb-0" data-table-searchable>
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-table-sort-key="family">Family</th>
|
||||
<th data-table-sort-key="file">File</th>
|
||||
<th data-table-sort-key="format">Format</th>
|
||||
<th data-table-sort-key="status">Status</th>
|
||||
<th>Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{#if fonts.length}}
|
||||
{{#each fonts}}
|
||||
<tr data-table-search-row data-font-toggle-row data-font-enabled="{{#if enabled}}true{{else}}false{{/if}}">
|
||||
<td data-label="Family" class="fw-semibold">{{family}}</td>
|
||||
<td data-label="File" class="text-break">{{fileName}}</td>
|
||||
<td data-label="Format">{{format}}</td>
|
||||
<td data-label="Status">
|
||||
{{#if enabled}}
|
||||
<span class="badge text-bg-success" data-font-status-badge>Enabled</span>
|
||||
{{else}}
|
||||
<span class="badge text-bg-secondary" data-font-status-badge>Disabled</span>
|
||||
{{/if}}
|
||||
</td>
|
||||
<td data-label="Actions" class="text-nowrap">
|
||||
<form method="post" action="/settings/fonts/{{id}}/toggle" class="d-inline" data-async-command>
|
||||
<input type="hidden" name="enabled" value="{{#if enabled}}0{{else}}1{{/if}}" />
|
||||
<button type="submit" class="btn btn-secondary btn-sm">{{#if enabled}}Disable{{else}}Enable{{/if}}</button>
|
||||
</form>
|
||||
<form method="post" action="/settings/fonts/{{id}}/delete" class="d-inline ms-1" data-confirm-message="Delete this font?">
|
||||
<input type="hidden" name="family" value="{{family}}" />
|
||||
{{#if inUse}}
|
||||
<button type="submit" class="btn btn-outline-danger btn-sm" disabled>Delete</button>
|
||||
{{else}}
|
||||
<button type="submit" class="btn btn-danger btn-sm">Delete</button>
|
||||
{{/if}}
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
{{else}}
|
||||
<tr data-table-search-empty-default>
|
||||
<td colspan="5" class="empty">No managed fonts yet.</td>
|
||||
</tr>
|
||||
{{/if}}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{{> table-pagination pagination=pagination basePath="/settings/fonts" alwaysShow=true}}
|
||||
</div>
|
||||
@@ -84,6 +84,11 @@
|
||||
<div class="modal-body d-grid gap-3">
|
||||
<div class="slide-image-cropper-frame">
|
||||
<img id="slide-image-cropper-image" alt="Selected image to crop" />
|
||||
<div class="slide-image-cropper-loading-overlay" aria-hidden="true">
|
||||
<div class="spinner-border text-primary slide-image-cropper-loading-spinner" role="status">
|
||||
<span class="visually-hidden">Loading image editor</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btn-toolbar flex-wrap gap-2 slide-image-cropper-toolbar" role="toolbar" aria-label="Image editing controls">
|
||||
<div class="btn-group btn-group-sm" role="group" aria-label="Rotate">
|
||||
|
||||
Reference in New Issue
Block a user