Release v2.4.2
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
// Shared slide form view-model builder.
|
||||
|
||||
const { getRegionEditorScripts } = require('../../../lib/region-scripts');
|
||||
|
||||
function buildDefaultSlide() {
|
||||
return {
|
||||
title: '',
|
||||
template_id: null,
|
||||
content: {}
|
||||
};
|
||||
}
|
||||
|
||||
function buildTemplates(templates, templateRegions) {
|
||||
const regions = Array.isArray(templateRegions) ? templateRegions : [];
|
||||
return (Array.isArray(templates) ? templates : []).map((template) => Object.assign({}, template, {
|
||||
canvas_size_width: template.canvas_size_width,
|
||||
canvas_size_height: template.canvas_size_height,
|
||||
regions: regions.filter((region) => Number(region.template_id) === Number(template.id))
|
||||
}));
|
||||
}
|
||||
|
||||
function buildSlideFormViewModel(data, slide, message, currentUser, isEdit) {
|
||||
const assetVersion = Date.now().toString(36);
|
||||
const templateRegions = data && data.templateRegions ? data.templateRegions : [];
|
||||
const rssFeeds = data && data.rssFeeds ? data.rssFeeds : [];
|
||||
const apiSources = data && data.apiSources ? data.apiSources : [];
|
||||
const timetableGroups = data && data.timetableGroups ? data.timetableGroups : [];
|
||||
const fontLibrary = data && data.fontLibrary ? data.fontLibrary : null;
|
||||
const templates = buildTemplates(data && data.templates ? data.templates : [], templateRegions);
|
||||
const viewSlide = slide || buildDefaultSlide();
|
||||
|
||||
return {
|
||||
title: isEdit ? 'Edit slide' : 'Create slide',
|
||||
active: 'slides',
|
||||
message: message,
|
||||
isEdit: Boolean(isEdit),
|
||||
inUse: Boolean(viewSlide && viewSlide.inUse),
|
||||
action: isEdit && viewSlide.id ? '/slides/' + viewSlide.id : '/slides',
|
||||
formAttrs: isEdit
|
||||
? 'data-async-save data-async-save-close-url="/slides" data-async-save-new-url="/slides/new"'
|
||||
: 'data-async-save data-async-save-close-url="/slides" data-async-save-new-redirect="response-url" data-async-save-new-url="/slides/new"',
|
||||
slide: viewSlide,
|
||||
templates: templates,
|
||||
stylesheets: fontLibrary && fontLibrary.stylesheetHref ? [fontLibrary.stylesheetHref] : [],
|
||||
slideEditorData: {
|
||||
templates: templates,
|
||||
rssFeeds: rssFeeds,
|
||||
apiSources: apiSources,
|
||||
timetableGroups: timetableGroups,
|
||||
fontStylesheetHref: fontLibrary && fontLibrary.stylesheetHref ? fontLibrary.stylesheetHref : '',
|
||||
fontFamilyFormats: fontLibrary && fontLibrary.fontFamilyFormats ? fontLibrary.fontFamilyFormats : '',
|
||||
existingTemplateId: viewSlide && viewSlide.template_id ? viewSlide.template_id : null,
|
||||
existingContent: viewSlide && viewSlide.content ? viewSlide.content : {}
|
||||
},
|
||||
assetVersion: assetVersion,
|
||||
slideEditorScripts: getRegionEditorScripts(assetVersion),
|
||||
currentUser: currentUser || null
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
buildSlideFormViewModel: buildSlideFormViewModel
|
||||
};
|
||||
Reference in New Issue
Block a user