Forms preview

This commit is contained in:
Tomas Bures 2018-12-15 20:09:07 +01:00
parent 97bbac8698
commit ba996d845d
23 changed files with 206 additions and 99 deletions

View file

@ -1,7 +1,12 @@
'use strict';
const passport = require('../../lib/passport');
const lists = require('../../models/lists');
const forms = require('../../models/forms');
const fields = require('../../models/fields');
const settings = require('../../models/settings');
const tools = require('../../lib/tools');
const contextHelpers = require('../../lib/context-helpers');
const router = require('../../lib/router-async').create();
const {castToInteger} = require('../../lib/helpers');
@ -38,5 +43,45 @@ router.postAsync('/forms-validate', passport.loggedIn, async (req, res) => {
return res.json(await forms.serverValidate(req.context, req.body));
});
router.postAsync('/forms-preview', passport.loggedIn, passport.csrfProtection, async (req, res) => {
function sortAndFilterCustomFieldsBy(key) {
data.customFields = data.customFields.filter(fld => fld[key] !== null);
data.customFields.sort((a, b) => a[key] - b[key]);
}
const formKey = req.body.formKey;
const listId = req.body.listId;
const data = {};
const list = await lists.getById(req.context, listId);
data.title = list.name;
data.cid = list.cid;
data.isWeb = true;
data.customFields = await fields.forHbs(req.context, listId, {});
const configItems = await settings.get(contextHelpers.getAdminContext(), ['pgpPrivateKey']);
data.hasPubkey = !!configItems.pgpPrivateKey;
data.formInputStyle = req.body.formInputStyle;
if (formKey === 'web_subscribe') {
sortAndFilterCustomFieldsBy('order_subscribe');
} else if (formKey === 'web_manage') {
sortAndFilterCustomFieldsBy('order_manage');
}
const tmpl = {
template: req.body.template,
layout: req.body.layout,
type: 'mjml'
};
const htmlRenderer = await tools.getTemplate(tmpl, req.locale);
return res.json({content: htmlRenderer(data)});
});
module.exports = router;