From 8d95f43dbc305b5a172a746ad16276668842a666 Mon Sep 17 00:00:00 2001 From: Tomas Bures Date: Mon, 18 Feb 2019 20:36:44 +0000 Subject: [PATCH] Added feature to create template from another template. --- client/src/templates/CUD.js | 48 ++++++++++++++++++++++++++------- client/src/templates/helpers.js | 4 +-- server/lib/campaign-content.js | 32 ++++++++++++++++++++++ server/models/campaigns.js | 30 +-------------------- server/models/templates.js | 17 ++++++++++++ 5 files changed, 90 insertions(+), 41 deletions(-) create mode 100644 server/lib/campaign-content.js diff --git a/client/src/templates/CUD.js b/client/src/templates/CUD.js index 2d423707..f8234d7a 100644 --- a/client/src/templates/CUD.js +++ b/client/src/templates/CUD.js @@ -12,12 +12,12 @@ import { } from '../lib/page' import { Button, - ButtonRow, + ButtonRow, CheckBox, Dropdown, Form, FormSendMethod, InputField, - StaticField, + StaticField, TableSelect, TextArea, withForm } from '../lib/form'; @@ -41,6 +41,8 @@ import styles import {getUrl} from "../lib/urls"; import {TestSendModalDialog} from "./TestSendModalDialog"; import {withComponentMixins} from "../lib/decorator-helpers"; +import moment + from 'moment'; @withComponentMixins([ @@ -98,6 +100,10 @@ console.log('constructor') description: '', namespace: mailtrainConfig.user.namespace, type: mailtrainConfig.editors[0], + + fromSourceTemplate: false, + sourceTemplate: null, + text: '', html: '', data: {}, @@ -122,6 +128,12 @@ console.log('constructor') state.setIn(['type', 'error'], t('typeMustBeSelected')); } + if (state.getIn(['fromSourceTemplate', 'value']) && !state.getIn(['sourceTemplate', 'value'])) { + state.setIn(['sourceTemplate', 'error'], t('Source template must not be empty')); + } else { + state.setIn(['sourceTemplate', 'error'], null); + } + validateNamespace(t, state); if (typeKey) { @@ -255,6 +267,13 @@ console.log('constructor') typeForm = getTypeForm(this, typeKey, isEdit); } + const templatesColumns = [ + { data: 1, title: t('name') }, + { data: 2, title: t('description') }, + { data: 3, title: t('type'), render: data => this.templateTypes[data].typeName }, + { data: 4, title: t('created'), render: data => moment(data).fromNow() }, + { data: 5, title: t('namespace') }, + ]; return (
@@ -281,16 +300,25 @@ console.log('constructor')