Release v1.1.3: playlist drag sorting, local SortableJS, and playlist UI updates

This commit is contained in:
2026-07-15 00:45:40 +01:00
parent b0649d838e
commit b7f1d800ef
9 changed files with 164 additions and 54 deletions
+5 -1
View File
@@ -105,7 +105,11 @@
{{/if}}
{{#if scripts.length}}
{{#each scripts}}
<script src="/assets/{{this}}"></script>
{{#if (isExternalUrl this)}}
<script src="{{this}}"></script>
{{else}}
<script src="/assets/{{this}}"></script>
{{/if}}
{{/each}}
{{/if}}
</body>
+10 -10
View File
@@ -29,19 +29,21 @@
<div class="card">
<h3>Playlist items</h3>
<table class="table-cards">
<thead><tr><th>Order</th><th>Slide</th><th>Duration</th><th>Schedule</th><th>Actions</th></tr></thead>
<thead><tr><th>Order</th><th>Slide</th><th>Schedule</th><th>Duration</th><th>Actions</th></tr></thead>
<tbody id="playlist-items-body">
{{#if playlistSlides.length}}
{{#each playlistSlides}}
<tr data-playlist-slide-row data-row-key="existing-{{id}}" data-slide-id="{{slide_id}}" data-canvas-signature="{{canvasSignature}}">
<td class="playlist-order-cell" data-label="Order">{{displayOrder}}</td>
<td class="playlist-order-cell" data-label="Order">
<div class="playlist-order-cell-inner">
<button type="button" class="playlist-drag-handle" data-playlist-drag-handle aria-label="Drag to reorder" title="Drag to reorder"></button>
<span class="playlist-order-number">{{displayOrder}}</span>
</div>
</td>
<td data-label="Slide">
{{title}}
<input type="hidden" name="slide_id[]" value="{{slide_id}}" />
</td>
<td data-label="Duration">
<input name="duration_seconds[]" type="number" min="1" value="{{duration_seconds}}" required />
</td>
<td data-label="Schedule">
<div class="playlist-schedule-summary">{{scheduleSummary}}</div>
<input type="hidden" name="schedule_mode[]" value="{{schedule_mode}}" />
@@ -51,10 +53,11 @@
<input type="hidden" name="schedule_end_time[]" value="{{schedule_end_time}}" />
<input type="hidden" name="schedule_days_json[]" value="{{schedule_days_json}}" />
</td>
<td data-label="Duration">
<input name="duration_seconds[]" type="number" min="1" value="{{duration_seconds}}" required />
</td>
<td data-label="Actions">
<div class="actions playlist-item-actions">
<button type="button" class="secondary" data-playlist-move="up" {{#if isFirst}}disabled{{/if}}>Up</button>
<button type="button" class="secondary" data-playlist-move="down" {{#if isLast}}disabled{{/if}}>Down</button>
<button type="button" class="schedule-config-button" data-schedule-config="/admin/playlists/{{../playlist.id}}/slides/{{id}}/config" data-schedule-config-row="existing-{{id}}">Schedule</button>
<button type="button" class="danger" data-playlist-remove-row>Remove</button>
</div>
@@ -82,9 +85,6 @@
{{/each}}
</select>
</label>
<label style="width: 160px;">Visible for (seconds)
<input id="playlist-add-duration" type="number" min="1" value="10" required />
</label>
</div>
<button type="button" id="playlist-add-slide-button">Add slide</button>
</form>