Release v2.4.2

This commit is contained in:
2026-08-03 12:45:27 +01:00
parent 2b9cabdab2
commit e95928f31c
141 changed files with 7694 additions and 5078 deletions
+65 -9
View File
@@ -4,11 +4,15 @@ const registerAuthRoutes = require('./auth');
const registerPagesRoutes = require('./admin/pages');
const registerAccountRoutes = require('./admin/account');
const registerUsersRoutes = require('./admin/users');
const registerPlaylistRoutes = require('./admin/playlists');
const registerManageRoutes = require('./admin/manage');
const registerScreenCommandRoutes = require('./admin/client-commands');
const registerAnnouncementRoutes = require('./signage/announcements/routes');
const registerContentRoutes = require('./admin/content');
const registerDataSourceRoutes = require('./admin/data-sources');
const registerRootDataSourceRoutes = require('./admin/data-sources');
const registerApiSourceRoutes = require('./data-sources/api-sources/routes');
const registerRssFeedRoutes = require('./data-sources/rss-feeds/routes');
const registerTimetableRoutes = require('./data-sources/timetables/routes');
const registerSettingsRoutes = require('./settings/background-tasks');
const registerFontRoutes = require('./settings/fonts');
const { PERMISSIONS, normalizePermissionKeys } = require('#src/rbac');
@@ -74,25 +78,32 @@ function registerAuthAndAccountRoutes(app, deps) {
function registerSignageRoutes(app, deps) {
// Screen, playlist, and command routes share the player-facing wiring.
registerManageRoutes(app, {
registerPlaylistRoutes(app, {
pool: deps.pool,
common: deps.common,
pages: deps.pages,
fetchOrderedPlaylistSlides: deps.fetchOrderedPlaylistSlides,
fetchScreensByPlaylistId: deps.fetchScreensByPlaylistId,
fetchPlaylistCanvasSignature: deps.fetchPlaylistCanvasSignature,
getCanvasSignature: deps.getCanvasSignature,
normalizeScheduleMode: deps.normalizeScheduleMode,
parseDateTimeLocal: deps.parseDateTimeLocal,
parseTimeLocal: deps.parseTimeLocal,
fetchPlaylistCanvasId: deps.fetchPlaylistCanvasId,
readArrayField: deps.readArrayField,
getAuditUserId: deps.getAuditUserId,
redirectAfterSave: deps.redirectAfterSave,
notifyPlayerScreens: deps.notifyPlayerScreens,
broadcastDashboardState: deps.broadcastDashboardState,
getPlaylistDeleteBlockMessage: deps.playerActionService.getPlaylistDeleteBlockMessage,
requirePermission: deps.requirePermission
});
registerManageRoutes(app, {
pool: deps.pool,
common: deps.common,
pages: deps.pages,
getAuditUserId: deps.getAuditUserId,
redirectAfterSave: deps.redirectAfterSave,
notifyPlayerScreens: deps.notifyPlayerScreens,
broadcastDashboardState: deps.broadcastDashboardState,
getScreenDeleteBlockMessage: deps.playerActionService.getScreenDeleteBlockMessage,
getScreenConnections: deps.playerActionService.getScreenConnections,
getPlaylistDeleteBlockMessage: deps.playerActionService.getPlaylistDeleteBlockMessage,
forwardPlayerCommand: deps.playerActionService.forwardPlayerCommand,
playerPublicBaseUrl: deps.playerPublicBaseUrl,
requirePermission: deps.requirePermission
@@ -110,11 +121,13 @@ function registerSignageRoutes(app, deps) {
registerScreenCommandRoutes(app, {
pool: deps.pool,
common: deps.common,
forwardPlayerCommand: deps.playerActionService.forwardPlayerCommand,
getScreenConnections: deps.playerActionService.getScreenConnections,
isClientNameAvailable: deps.isClientNameAvailable,
withClientNameReservation: deps.withClientNameReservation,
broadcastDashboardState: deps.broadcastDashboardState,
playerPublicBaseUrl: deps.playerPublicBaseUrl,
requirePermission: deps.requirePermission
});
}
@@ -161,7 +174,50 @@ function registerSettingsAndContentRoutes(app, deps) {
requirePermission: deps.requirePermission
});
registerDataSourceRoutes(app, {
registerRootDataSourceRoutes(app, {
pool: deps.pool,
common: deps.common,
pages: deps.pages,
formatDashboardDate: deps.formatDashboardDate,
getAuditUserId: deps.getAuditUserId,
redirectAfterSave: deps.redirectAfterSave,
parseDateTimeLocal: deps.parseDateTimeLocal,
backgroundTaskQueue: deps.backgroundTaskQueue,
dataSourceTasks: deps.dataSourceTasks,
setAuthMessageCookie: deps.setAuthMessageCookie,
requirePermission: deps.requirePermission,
section: 'root'
});
registerApiSourceRoutes(app, {
pool: deps.pool,
common: deps.common,
pages: deps.pages,
formatDashboardDate: deps.formatDashboardDate,
getAuditUserId: deps.getAuditUserId,
redirectAfterSave: deps.redirectAfterSave,
parseDateTimeLocal: deps.parseDateTimeLocal,
backgroundTaskQueue: deps.backgroundTaskQueue,
dataSourceTasks: deps.dataSourceTasks,
setAuthMessageCookie: deps.setAuthMessageCookie,
requirePermission: deps.requirePermission
});
registerRssFeedRoutes(app, {
pool: deps.pool,
common: deps.common,
pages: deps.pages,
formatDashboardDate: deps.formatDashboardDate,
getAuditUserId: deps.getAuditUserId,
redirectAfterSave: deps.redirectAfterSave,
parseDateTimeLocal: deps.parseDateTimeLocal,
backgroundTaskQueue: deps.backgroundTaskQueue,
dataSourceTasks: deps.dataSourceTasks,
setAuthMessageCookie: deps.setAuthMessageCookie,
requirePermission: deps.requirePermission
});
registerTimetableRoutes(app, {
pool: deps.pool,
common: deps.common,
pages: deps.pages,