Save worktree changes

This commit is contained in:
2026-07-25 02:29:19 +01:00
parent 8d3b7d557b
commit db9d718cd8
170 changed files with 11719 additions and 3414 deletions
+18 -4
View File
@@ -6,6 +6,7 @@ const { hasPermission, hasAnyPermission } = require('../rbac');
const VIEWS_ROOT = path.join(__dirname, 'views');
const cache = new Map();
const SIGNAGE_VIEW_PREFIXES = new Set(['dashboard', 'clients', 'screens', 'playlists', 'slides', 'canvas-sizes', 'templates']);
function inferMessageVariant(message, fallbackVariant) {
const text = String(message || '').trim();
@@ -13,7 +14,11 @@ function inferMessageVariant(message, fallbackVariant) {
return 'danger';
}
return String(fallbackVariant || '').trim().toLowerCase() || 'primary';
if (/\b(?:already exists|already exist|already taken|duplicate|must be unique|name already exists)\b/i.test(text)) {
return 'warning';
}
return String(fallbackVariant || '').trim().toLowerCase() || 'info';
}
Handlebars.registerHelper('eq', function (left, right) {
@@ -104,8 +109,17 @@ Handlebars.registerHelper('saveActionButtons', function (options) {
].join(''));
});
function resolveTemplatePath(relativePath) {
const firstSegment = String(relativePath || '').split(/[\\/]/)[0];
if (SIGNAGE_VIEW_PREFIXES.has(firstSegment)) {
return path.join(VIEWS_ROOT, 'signage', relativePath);
}
return path.join(VIEWS_ROOT, relativePath);
}
function loadTemplate(relativePath) {
const filePath = path.join(VIEWS_ROOT, relativePath);
const filePath = resolveTemplatePath(relativePath);
const stat = fs.statSync(filePath);
const cached = cache.get(filePath);
if (cached && cached.mtimeMs === stat.mtimeMs) {
@@ -122,7 +136,7 @@ function renderView(viewName, context) {
viewContext.messageVariant = inferMessageVariant(viewContext.message, 'primary');
}
const page = loadTemplate(`${viewName}.hbs`);
const layout = loadTemplate(path.join('layout.hbs'));
const layout = loadTemplate(path.join('shared', 'layout.hbs'));
const body = page(viewContext);
return layout(Object.assign({}, viewContext, { body: body }));
}
@@ -133,7 +147,7 @@ function renderFragment(viewName, context) {
viewContext.messageVariant = inferMessageVariant(viewContext.message, 'primary');
}
const page = loadTemplate(`${viewName}.hbs`);
const layout = loadTemplate(path.join('frame-layout.hbs'));
const layout = loadTemplate(path.join('shared', 'frame-layout.hbs'));
const body = page(viewContext);
return layout(Object.assign({}, viewContext, { body: body }));
}