Save worktree changes
This commit is contained in:
+18
-4
@@ -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 }));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user