diff --git a/client/src/account/API.js b/client/src/account/API.js index beb3f2bc..d3a07a4b 100644 --- a/client/src/account/API.js +++ b/client/src/account/API.js @@ -138,7 +138,7 @@ export default class API extends Component { {t('example')}

-
curl -XPOST '{getUrl(`api/subscribe/B16uVTdW?access_token=${accessToken}`)}' \
+                
curl -XPOST '{getUrl(`api/subscribe/B16uVTdW?access_token=${accessToken}`)}' \
--data 'EMAIL=test@example.com&MERGE_CHECKBOX=yes&REQUIRE_CONFIRMATION=yes'

POST /api/unsubscribe/:listId – {t('removeSubscription')}

@@ -165,7 +165,7 @@ export default class API extends Component { {t('example')}

-
curl -XPOST '{getUrl(`api/unsubscribe/B16uVTdW?access_token=${accessToken}`)}' \
+                
curl -XPOST '{getUrl(`api/unsubscribe/B16uVTdW?access_token=${accessToken}`)}' \
--data 'EMAIL=test@example.com'

POST /api/delete/:listId – {t('deleteSubscription')}

@@ -192,7 +192,7 @@ export default class API extends Component { {t('example')}

-
curl -XPOST '{getUrl(`api/delete/B16uVTdW?access_token=${accessToken}`)}' \
+                
curl -XPOST '{getUrl(`api/delete/B16uVTdW?access_token=${accessToken}`)}' \
--data 'EMAIL=test@example.com'

POST /api/field/:listId – {t('addNewCustomField')}

@@ -240,7 +240,7 @@ export default class API extends Component { {t('example')}

-
curl -XPOST '{getUrl(`api/field/B16uVTdW?access_token=${accessToken}`)}' \
+                
curl -XPOST '{getUrl(`api/field/B16uVTdW?access_token=${accessToken}`)}' \
--data 'NAME=Birthday&TYPE=birthday-us&VISIBLE=yes'

GET /api/blacklist/get – {t('getListOfBlacklistedEmails')}

@@ -292,7 +292,7 @@ export default class API extends Component { {t('example')}

-
curl -XPOST '{getUrl(`api/blacklist/add?access_token={accessToken}`)}' \
+                
curl -XPOST '{getUrl(`api/blacklist/add?access_token={accessToken}`)}' \
--data 'EMAIL=test@example.com&'

POST /api/blacklist/delete – {t('deleteEmailFromBlacklist')}

@@ -319,7 +319,7 @@ export default class API extends Component { {t('example')}

-
curl -XPOST '{getUrl(`api/blacklist/delete?access_token=${accessToken}`)}' \
+                
curl -XPOST '{getUrl(`api/blacklist/delete?access_token=${accessToken}`)}' \
--data 'EMAIL=test@example.com&'

GET /api/lists/:email – {t('getTheListsAUserHasSubscribedTo')}

@@ -381,15 +381,14 @@ export default class API extends Component {
  • EMAIL – {t('emailAddress')} ({t('required')})
  • SEND_CONFIGURATION_ID – {t('idOfConfigurationUsedToCreateMailer')}
  • SUBJECT – {t('subject')}
  • -
  • DATA – {t('dataPassedToTemplateWhenCompilingWith')}: {'{'} "any": ["type", {'{'}"of": "data"{'}'}] {'}'}
  • -
  • VARIABLES – {t('mapOfTemplatesubjectVariablesToReplace')}: {'{'} "FOO": "bar" {'}'}
  • +
  • VARIABLES – {t('mapOfTemplatesubjectVariablesToReplace')}
  • {t('example')}

    -
    curl -XPOST '{getUrl(`api/templates/1/send?access_token={accessToken}`)}' \
    +                
    curl -XPOST '{getUrl(`api/templates/1/send?access_token=${accessToken}`)}' \
    --data 'EMAIL=test@example.com&SUBJECT=Test&VARIABLES[FOO]=bar&VARIABLES[TEST]=example'
    ); diff --git a/client/src/campaigns/CUD.js b/client/src/campaigns/CUD.js index 74585082..37a27284 100644 --- a/client/src/campaigns/CUD.js +++ b/client/src/campaigns/CUD.js @@ -244,7 +244,7 @@ export default class CUD extends Component { return filterData(data, [ 'name', 'description', 'segment', 'namespace', 'send_configuration', - 'from_name_override', 'from_email_override', 'reply_to_override', 'subject_override', + 'from_name_override', 'from_email_override', 'reply_to_override', 'data', 'click_tracking_disabled', 'open_tracking_disabled', 'unsubscribe_url', 'type', 'source', 'parent', 'lists' ]); @@ -284,6 +284,8 @@ export default class CUD extends Component { send_configuration: null, namespace: mailtrainConfig.user.namespace, + subject: '', + click_tracking_disabled: false, open_tracking_disabled: false, @@ -326,6 +328,10 @@ export default class CUD extends Component { state.setIn(['name', 'error'], t('nameMustNotBeEmpty')); } + if (!state.getIn(['subject', 'value'])) { + state.setIn(['subject', 'error'], t('"Subject" line must not be empty"')); + } + if (!state.getIn(['send_configuration', 'value'])) { state.setIn(['send_configuration', 'error'], t('sendConfigurationMustBeSelected')); } @@ -592,7 +598,6 @@ export default class CUD extends Component { { data: 2, title: t('id'), render: data => {data} }, { data: 3, title: t('description') }, { data: 4, title: t('type'), render: data => this.mailerTypes[data].typeName }, - { data: 5, title: t('created'), render: data => moment(data).fromNow() }, { data: 6, title: t('namespace') } ]; @@ -604,10 +609,10 @@ export default class CUD extends Component { const addOverridable = (id, label) => { if(this.state.sendConfiguration[id + '_overridable']){ if (this.getFormValue(id + '_overriden')) { - sendSettings.push(); + sendSettings.push(); } else { sendSettings.push( - + {this.state.sendConfiguration[id]} ); @@ -616,7 +621,7 @@ export default class CUD extends Component { } else{ sendSettings.push( - + {this.state.sendConfiguration[id]} ); @@ -626,7 +631,8 @@ export default class CUD extends Component { addOverridable('from_name', t('fromName')); addOverridable('from_email', t('fromEmailAddress')); addOverridable('reply_to', t('replytoEmailAddress')); - addOverridable('subject', t('subjectLine')); + + sendSettings.push(); } else { sendSettings = {t('loadingSendConfiguration')} } @@ -760,8 +766,6 @@ export default class CUD extends Component { } - - {templateEdit} diff --git a/client/src/campaigns/Content.js b/client/src/campaigns/Content.js index c1e42816..0a2da44c 100644 --- a/client/src/campaigns/Content.js +++ b/client/src/campaigns/Content.js @@ -20,7 +20,7 @@ import {getEditForm, getTemplateTypes, getTypeForm, ResourceType} from '../templ import axios from '../lib/axios'; import styles from "../lib/styles.scss"; import {getUrl} from "../lib/urls"; -import {TestSendModalDialog} from "./TestSendModalDialog"; +import {TestSendModalDialog, TestSendModalDialogMode} from "./TestSendModalDialog"; import {withComponentMixins} from "../lib/decorator-helpers"; import {ContentModalDialog} from "../lib/modals"; @@ -234,10 +234,11 @@ export default class CustomContent extends Component { return (
    this.setState({showTestSendModal: false})} getDataAsync={this.sendModalGetDataHandler} - entity={this.props.entity} + campaign={this.props.entity} />
    diff --git a/client/src/campaigns/Status.js b/client/src/campaigns/Status.js index 10d3bf34..5f70fc7f 100644 --- a/client/src/campaigns/Status.js +++ b/client/src/campaigns/Status.js @@ -16,6 +16,7 @@ import {CampaignStatus, CampaignType} from "../../../shared/campaigns"; import moment from 'moment'; import campaignsStyles from "./styles.scss"; import {withComponentMixins} from "../lib/decorator-helpers"; +import {TestSendModalDialog, TestSendModalDialogMode} from "./TestSendModalDialog"; @withComponentMixins([ @@ -25,7 +26,7 @@ import {withComponentMixins} from "../lib/decorator-helpers"; withPageHelpers, requiresAuthenticatedUser ]) -class TestUser extends Component { +class PreviewForTestUserModalDialog extends Component { constructor(props) { super(props); this.initForm({ @@ -34,7 +35,9 @@ class TestUser extends Component { } static propTypes = { - entity: PropTypes.object.isRequired + visible: PropTypes.bool.isRequired, + onHide: PropTypes.func.isRequired, + entity: PropTypes.object.isRequired, } localValidateFormValues(state) { @@ -64,6 +67,10 @@ class TestUser extends Component { } } + async hideModal() { + this.props.onHide(); + } + render() { const t = this.props.t; @@ -76,12 +83,14 @@ class TestUser extends Component { ]; return ( -
    - - -