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
@@ -0,0 +1,37 @@
// Template duplicate helpers.
function buildDuplicateTemplateName(name) {
const source = String(name || 'Template').trim() || 'Template';
return 'Copy of ' + source;
}
function cloneRegion(region) {
const cloned = JSON.parse(JSON.stringify(region || {}));
delete cloned.id;
delete cloned.template_id;
delete cloned.created_at;
delete cloned.modified_at;
delete cloned.created_by;
delete cloned.modified_by;
return cloned;
}
function buildDuplicateTemplate(template, duplicateName) {
const source = template || {};
return {
id: null,
name: String(duplicateName || buildDuplicateTemplateName(source.name)).trim(),
canvas_size_id: source.canvas_size_id || null,
canvas_size_width: source.canvas_size_width,
canvas_size_height: source.canvas_size_height,
background_color: source.background_color,
background_image_path: source.background_image_path,
region_usage: [],
regions: Array.isArray(source.regions) ? source.regions.map(cloneRegion) : []
};
}
module.exports = {
buildDuplicateTemplateName,
buildDuplicateTemplate
};
@@ -55,15 +55,17 @@ function buildTemplateFormViewModel(template, message, canvasSizes, currentUser,
template: current,
inUse: Boolean(current.inUse),
isEdit: Boolean(isEdit),
showSaveSecondaryActions: Boolean(isEdit),
showSaveSecondaryActions: true,
deleteDisabled: !isEdit || Boolean(current.inUse),
formAction: isEdit && current.id ? '/templates/' + current.id : '/templates',
formAttrs: 'data-template-has-slides="' + (current.slide_count ? 'true' : 'false') + '" data-async-save' + (isEdit ? ' data-async-save-close-url="/templates"' : ' data-async-save-new-redirect="response-url"') + ' data-async-save-new-url="/templates/new"',
formAttrs: 'data-template-has-slides="' + (current.slide_count ? 'true' : 'false') + '" data-async-save data-async-save-close-url="/templates"' + (isEdit ? '' : ' data-async-save-new-redirect="response-url"') + ' data-async-save-new-url="/templates/new"',
cancelUrl: '/templates',
cancelConfirmMessage: "You've made changes. Are you sure you want to leave this page?",
deleteUrl: isEdit && current.id ? '/templates/' + current.id + '/delete' : '',
deleteConfirmMessage: isEdit ? 'Delete this template?' : '',
canvasSizes: canvasSizes || [],
animationPresets: animationPresets,
scripts: ['js/lib/modal.js?v=' + assetVersion, 'js/templates/animation-presets.js?v=' + assetVersion, 'vendor/qrcode-generator/qrcode.js?v=' + assetVersion].concat(getRegionEditorScripts(assetVersion), ['js/templates/template-designer-utils.js?v=' + assetVersion, 'js/templates/template-designer.js?v=' + assetVersion])
scripts: ['js/lib/modal.js?v=' + assetVersion, 'js/templates/animation-presets.js?v=' + assetVersion, 'vendor/qr-code-styling/qr-code-styling-loader.js?v=' + assetVersion].concat(getRegionEditorScripts(assetVersion), ['js/templates/template-designer-utils.js?v=' + assetVersion, 'js/templates/template-designer.js?v=' + assetVersion])
};
}