Release v2.5.6

This commit is contained in:
2026-08-05 19:38:16 +01:00
parent a8ef35b287
commit 9f831f04bc
161 changed files with 8487 additions and 1295 deletions
@@ -7,6 +7,7 @@ module.exports = function registerPlaylistsRoutes(app, deps) {
const fetchScreensByPlaylistId = deps.fetchScreensByPlaylistId;
const { buildPagination } = require('../../../lib/pagination');
const requirePermission = deps.requirePermission;
const { buildDuplicatePlaylistName, buildDuplicatePlaylist } = require('./duplicate');
const LIST_PAGE_SIZE = 25;
@@ -51,6 +52,28 @@ module.exports = function registerPlaylistsRoutes(app, deps) {
});
});
app.get('/playlists/:id/duplicate', requirePermission('playlists.read'), requirePermission('playlists.create'), async function (req, res, next) {
try {
const playlist = await common.fetchPlaylistById(pool, Number(req.params.id));
if (!playlist) {
return res.status(404).send('Playlist not found');
}
const data = await common.fetchAdminData(pool);
let duplicateName = buildDuplicatePlaylistName(playlist.name);
let duplicateIndex = 2;
while (await common.fetchDuplicateName(pool, 'c_playlists', duplicateName)) {
duplicateName = buildDuplicatePlaylistName(playlist.name) + ' (' + duplicateIndex + ')';
duplicateIndex += 1;
}
const duplicatePlaylist = buildDuplicatePlaylist(playlist, duplicateName);
res.send(await pages.renderPlaylistFormPage(duplicatePlaylist, req.query.message ? String(req.query.message) : 'Review the copied values and save when ready.', req.currentUser, data, pool));
} catch (error) {
next(error);
}
});
app.get('/playlists/:id/edit', requirePermission('playlists.update'), async function (req, res, next) {
try {
const playlist = await common.fetchPlaylistById(pool, Number(req.params.id));