Basic support for Mosaico-based email templates.

This commit is contained in:
Tomas Bures 2018-04-02 11:58:32 +02:00
parent b5cdf57f72
commit 7b5642e911
38 changed files with 1271 additions and 751 deletions

View file

@ -3,17 +3,27 @@
import React from "react";
import {
ACEEditor,
AlignedRow,
CKEditor
} from "../lib/form";
import 'brace/mode/text';
import 'brace/mode/html'
import {MosaicoEditor, ResourceType} from "../lib/mosaico";
export function getTemplateTypes(t) {
const templateTypes = {};
templateTypes.mosaico = {
typeName: t('Mosaico')
typeName: t('Mosaico'),
getHTMLEditor: owner => <AlignedRow label={t('Template content (HTML)')}><MosaicoEditor ref={node => owner.editorNode = node} entity={owner.props.entity} entityTypeId={ResourceType.TEMPLATE} title={t('Mosaico Template Designer')} onFullscreenAsync={::owner.setElementInFullscreen}/></AlignedRow>,
htmlEditorBeforeSave: async owner => {
const {html, metadata, model} = await owner.editorNode.exportState();
owner.updateFormValue('html', html);
owner.updateFormValue('data', {metadata, model});
}
};
templateTypes.grapejs = {
@ -22,12 +32,14 @@ export function getTemplateTypes(t) {
templateTypes.ckeditor = {
typeName: t('CKEditor'),
form: <CKEditor id="html" height="600px" label={t('Template content (HTML)')}/>
getHTMLEditor: owner => <CKEditor id="html" height="600px" label={t('Template content (HTML)')}/>,
htmlEditorBeforeSave: async owner => {}
};
templateTypes.codeeditor = {
typeName: t('Code Editor'),
form: <ACEEditor id="html" height="600px" mode="html" label={t('Template content (HTML)')}/>
getHTMLEditor: owner => <ACEEditor id="html" height="600px" mode="html" label={t('Template content (HTML)')}/>,
htmlEditorBeforeSave: async owner => {}
};
templateTypes.mjml = {