Update of source files and integration of Portuguese translation
This commit is contained in:
parent
8eae6d6c41
commit
a527b80291
40 changed files with 2019 additions and 1658 deletions
|
@ -342,10 +342,10 @@ export default class API extends Component {
|
|||
<pre>curl -XGET '{getUrl(`api/lists/test@example.com?access_token=${accessToken}`)}'</pre>
|
||||
|
||||
|
||||
<h4>GET /api/rss/fetch/:campaignCid – {t('Trigger fetch of a campaign')}</h4>
|
||||
<h4>GET /api/rss/fetch/:campaignCid – {t('triggerFetchOfACampaign')}</h4>
|
||||
|
||||
<p>
|
||||
{t('Forces the RSS feed check to immediately check the campaign with the given CID (in :campaignCid). It works only for RSS campaigns.')}
|
||||
{t('forcesTheRssFeedCheckToImmediatelyCheck')}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
|
@ -364,7 +364,7 @@ export default class API extends Component {
|
|||
<h4>POST /api/templates/:templateId/send – {t('sendTransactionalEmail')}</h4>
|
||||
|
||||
<p>
|
||||
{t('sendSingleEmailByTemplateId')}
|
||||
{t('sendSingleEmailByTemplateWithGiven')}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
|
@ -379,10 +379,10 @@ export default class API extends Component {
|
|||
</p>
|
||||
<ul>
|
||||
<li><strong>EMAIL</strong> – {t('emailAddress')} (<em>{t('required')}</em>)</li>
|
||||
<li><strong>SEND_CONFIGURATION_ID</strong> – {t('sendConfigurationId')}</li>
|
||||
<li><strong>SEND_CONFIGURATION_ID</strong> – {t('idOfConfigurationUsedToCreateMailer')}</li>
|
||||
<li><strong>SUBJECT</strong> – {t('subject')}</li>
|
||||
<li><strong>DATA</strong> – {t('templateData')}: <em>{'{'} "any": ["type", {'{'}"of": "data"{'}'}] {'}'}</em></li>
|
||||
<li><strong>VARIABLES</strong> – {t('templateVariables')}: <em>{'{'} "FOO": "bar" {'}'}</em></li>
|
||||
<li><strong>DATA</strong> – {t('dataPassedToTemplateWhenCompilingWith')}: <em>{'{'} "any": ["type", {'{'}"of": "data"{'}'}] {'}'}</em></li>
|
||||
<li><strong>VARIABLES</strong> – {t('mapOfTemplatesubjectVariablesToReplace')}: <em>{'{'} "FOO": "bar" {'}'}</em></li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
|
|
|
@ -409,26 +409,26 @@ export default class CUD extends Component {
|
|||
if (submitResult) {
|
||||
if (this.props.entity) {
|
||||
if (afterSubmitAction === CUD.AfterSubmitAction.STATUS) {
|
||||
this.navigateToWithFlashMessage(`/campaigns/${this.props.entity.id}/status`, 'success', t('Campaign updated'));
|
||||
this.navigateToWithFlashMessage(`/campaigns/${this.props.entity.id}/status`, 'success', t('campaignUpdated'));
|
||||
} else if (afterSubmitAction === CUD.AfterSubmitAction.LEAVE) {
|
||||
this.navigateToWithFlashMessage('/campaigns', 'success', t('Campaign updated'));
|
||||
this.navigateToWithFlashMessage('/campaigns', 'success', t('campaignUpdated'));
|
||||
} else {
|
||||
await this.getFormValuesFromURL(`rest/campaigns-settings/${this.props.entity.id}`);
|
||||
this.enableForm();
|
||||
this.setFormStatusMessage('success', t('Campaign updated'));
|
||||
this.setFormStatusMessage('success', t('campaignUpdated'));
|
||||
}
|
||||
} else {
|
||||
const sourceTypeKey = Number.parseInt(this.getFormValue('source'));
|
||||
|
||||
if (sourceTypeKey === CampaignSource.CUSTOM || sourceTypeKey === CampaignSource.CUSTOM_FROM_TEMPLATE || sourceTypeKey === CampaignSource.CUSTOM_FROM_CAMPAIGN) {
|
||||
this.navigateToWithFlashMessage(`/campaigns/${submitResult}/content`, 'success', t('Campaign created'));
|
||||
this.navigateToWithFlashMessage(`/campaigns/${submitResult}/content`, 'success', t('campaignCreated'));
|
||||
} else {
|
||||
if (afterSubmitAction === CUD.AfterSubmitAction.STATUS) {
|
||||
this.navigateToWithFlashMessage(`/campaigns/${submitResult}/status`, 'success', t('Campaign created'));
|
||||
this.navigateToWithFlashMessage(`/campaigns/${submitResult}/status`, 'success', t('campaignCreated'));
|
||||
} else if (afterSubmitAction === CUD.AfterSubmitAction.LEAVE) {
|
||||
this.navigateToWithFlashMessage(`/campaigns`, 'success', t('Campaign created'));
|
||||
this.navigateToWithFlashMessage(`/campaigns`, 'success', t('campaignCreated'));
|
||||
} else {
|
||||
this.navigateToWithFlashMessage(`/campaigns/${submitResult}/edit`, 'success', t('Campaign created'));
|
||||
this.navigateToWithFlashMessage(`/campaigns/${submitResult}/edit`, 'success', t('campaignCreated'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -739,7 +739,7 @@ export default class CUD extends Component {
|
|||
|
||||
<hr/>
|
||||
|
||||
<Fieldset label={t('Tracking')}>
|
||||
<Fieldset label={t('tracking')}>
|
||||
<CheckBox id="open_tracking_disabled" text={t('disableOpenedTracking')}/>
|
||||
<CheckBox id="click_tracking_disabled" text={t('disableClickedTracking')}/>
|
||||
</Fieldset>
|
||||
|
@ -759,12 +759,12 @@ export default class CUD extends Component {
|
|||
|
||||
<ButtonRow>
|
||||
{!isEdit && (sourceTypeKey === CampaignSource.CUSTOM || sourceTypeKey === CampaignSource.CUSTOM_FROM_TEMPLATE || sourceTypeKey === CampaignSource.CUSTOM_FROM_CAMPAIGN) ?
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save and edit content')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('saveAndEditContent')}/>
|
||||
:
|
||||
<>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save and leave')} onClickAsync={async () => await this.submitHandler(CUD.AfterSubmitAction.LEAVE)}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save and go to status')} onClickAsync={async () => await this.submitHandler(CUD.AfterSubmitAction.STATUS)}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('save')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('saveAndLeave')} onClickAsync={async () => await this.submitHandler(CUD.AfterSubmitAction.LEAVE)}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('saveAndGoToStatus')} onClickAsync={async () => await this.submitHandler(CUD.AfterSubmitAction.STATUS)}/>
|
||||
</>
|
||||
}
|
||||
{canDelete && <LinkButton className="btn-danger" icon="trash-alt" label={t('delete')} to={`/campaigns/${this.props.entity.id}/delete`}/> }
|
||||
|
|
|
@ -143,13 +143,13 @@ export default class CustomContent extends Component {
|
|||
|
||||
if (submitResult) {
|
||||
if (afterSubmitAction === CustomContent.AfterSubmitAction.STATUS) {
|
||||
this.navigateToWithFlashMessage(`/campaigns/${this.props.entity.id}/status`, 'success', t('Campaign updated'));
|
||||
this.navigateToWithFlashMessage(`/campaigns/${this.props.entity.id}/status`, 'success', t('campaignUpdated'));
|
||||
} else if (afterSubmitAction === CustomContent.AfterSubmitAction.LEAVE) {
|
||||
this.navigateToWithFlashMessage('/campaigns', 'success', t('Campaign updated'));
|
||||
this.navigateToWithFlashMessage('/campaigns', 'success', t('campaignUpdated'));
|
||||
} else {
|
||||
await this.getFormValuesFromURL(`rest/campaigns-content/${this.props.entity.id}`);
|
||||
this.enableForm();
|
||||
this.setFormStatusMessage('success', t('Campaign updated'));
|
||||
this.setFormStatusMessage('success', t('campaignUpdated'));
|
||||
}
|
||||
} else {
|
||||
this.enableForm();
|
||||
|
@ -258,9 +258,9 @@ export default class CustomContent extends Component {
|
|||
{customTemplateTypeKey && getEditForm(this, customTemplateTypeKey, 'data_sourceCustom_')}
|
||||
|
||||
<ButtonRow>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save and leave')} onClickAsync={async () => await this.submitHandler(CustomContent.AfterSubmitAction.LEAVE)}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save and go to status')} onClickAsync={async () => await this.submitHandler(CustomContent.AfterSubmitAction.STATUS)}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('save')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('saveAndLeave')} onClickAsync={async () => await this.submitHandler(CustomContent.AfterSubmitAction.LEAVE)}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('saveAndGoToStatus')} onClickAsync={async () => await this.submitHandler(CustomContent.AfterSubmitAction.STATUS)}/>
|
||||
<Button className="btn-success" icon="at" label={t('testSend')} onClickAsync={async () => this.setState({showTestSendModal: true})}/>
|
||||
</ButtonRow>
|
||||
</Form>
|
||||
|
|
|
@ -122,8 +122,8 @@ export default class Statistics extends Component {
|
|||
|
||||
<hr/>
|
||||
|
||||
<h3>{t('Quick Reports')}</h3>
|
||||
<small className="text-muted"><Trans>Below, you can download pre-made reports related to this campaign. Each link generates a CSV file that can be viewed in a spreadsheet editor. Custom reports and reports that cover more than one campaign can be created through <Link to="/reports">Reports</Link> functionality of Mailtrain.</Trans></small>
|
||||
<h3>{t('quickReports')}</h3>
|
||||
<small className="text-muted"><Trans i18nKey="belowYouCanDownloadPremadeReportsRelated">Below, you can download pre-made reports related to this campaign. Each link generates a CSV file that can be viewed in a spreadsheet editor. Custom reports and reports that cover more than one campaign can be created through <Link to="/reports">Reports</Link> functionality of Mailtrain.</Trans></small>
|
||||
<ul className="list-unstyled my-3">
|
||||
<li><a href={getUrl(`quick-rpts/open-and-click-counts/${entity.id}`)}>Open and click counts per currently subscribed subscriber</a></li>
|
||||
</ul>
|
||||
|
|
|
@ -201,7 +201,7 @@ class SendControls extends Component {
|
|||
const t = this.props.t;
|
||||
this.actionDialog(
|
||||
t('confirmLaunch'),
|
||||
t('doYouWantToLaunchTheCampaign?All'),
|
||||
t('doYouWantToLaunchTheCampaign?'),
|
||||
async () => {
|
||||
await this.startAsync();
|
||||
await this.refreshEntity();
|
||||
|
@ -281,7 +281,7 @@ class SendControls extends Component {
|
|||
{this.getFormValue('sendLater') &&
|
||||
<div>
|
||||
<DatePicker id="date" label={t('date')} />
|
||||
<InputField id="time" label={t('time')} help={t('enter24hourTimeInFormatHhmmEg1348')}/>
|
||||
<InputField id="time" label={t('time')} help={t('enter24HourTimeInFormatHhmmEg1348')}/>
|
||||
{/* TODO: Timezone selector */}
|
||||
</div>
|
||||
}
|
||||
|
|
|
@ -170,17 +170,17 @@ export default class CUD extends Component {
|
|||
if (submitResult) {
|
||||
if (this.props.entity) {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage(`/campaigns/${this.props.campaign.id}/triggers`, 'success', t('Trigger updated'));
|
||||
this.navigateToWithFlashMessage(`/campaigns/${this.props.campaign.id}/triggers`, 'success', t('triggerUpdated'));
|
||||
} else {
|
||||
await this.getFormValuesFromURL(`rest/triggers/${this.props.campaign.id}/${this.props.entity.id}`, ::this.getFormValuesMutator);
|
||||
this.enableForm();
|
||||
this.setFormStatusMessage('success', t('Trigger updated'));
|
||||
this.setFormStatusMessage('success', t('triggerUpdated'));
|
||||
}
|
||||
} else {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage(`/campaigns/${this.props.campaign.id}/triggers`, 'success', t('Trigger created'));
|
||||
this.navigateToWithFlashMessage(`/campaigns/${this.props.campaign.id}/triggers`, 'success', t('triggerCreated'));
|
||||
} else {
|
||||
this.navigateToWithFlashMessage(`/campaigns/${this.props.campaign.id}/triggers/${submitResult}/edit`, 'success', t('Trigger created'));
|
||||
this.navigateToWithFlashMessage(`/campaigns/${this.props.campaign.id}/triggers/${submitResult}/edit`, 'success', t('triggerCreated'));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -245,8 +245,8 @@ export default class CUD extends Component {
|
|||
<CheckBox id="enabled" text={t('enabled')}/>
|
||||
|
||||
<ButtonRow>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save and leave')} onClickAsync={async () => await this.submitHandler(true)}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('save')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('saveAndLeave')} onClickAsync={async () => await this.submitHandler(true)}/>
|
||||
{isEdit && <LinkButton className="btn-danger" icon="trash-alt" label={t('delete')} to={`/campaigns/${this.props.campaign.id}/triggers/${this.props.entity.id}/delete`}/>}
|
||||
</ButtonRow>
|
||||
</Form>
|
||||
|
|
|
@ -150,7 +150,7 @@ export default class Files extends Component {
|
|||
{ label: t('no'), className: 'btn-primary', onClickAsync: ::this.hideDeleteFile },
|
||||
{ label: t('yes'), className: 'btn-danger', onClickAsync: ::this.performDeleteFile }
|
||||
]}>
|
||||
{t('filesareYouSureToDeleteFile', {name: this.state.fileToDeleteName})}
|
||||
{t('areYouSureYouWantToDeleteTheFile?', {name: this.state.fileToDeleteName})}
|
||||
</ModalDialog>
|
||||
|
||||
{this.props.title && <Title>{this.props.title}</Title>}
|
||||
|
|
|
@ -21,7 +21,7 @@ class NamespaceSelect extends Component {
|
|||
|
||||
function validateNamespace(t, state) {
|
||||
if (!state.getIn(['namespace', 'value'])) {
|
||||
state.setIn(['namespace', 'error'], t('namespacemustBeSelected'));
|
||||
state.setIn(['namespace', 'error'], t('namespaceMustBeSelected'));
|
||||
} else {
|
||||
state.setIn(['namespace', 'error'], null);
|
||||
}
|
||||
|
|
|
@ -99,10 +99,10 @@ export class CKEditorHost extends Component {
|
|||
<div className={styles.title}>{this.props.title}</div>
|
||||
</div>
|
||||
<div className={styles.navbarRight}>
|
||||
{this.props.canSave ? <a className={styles.btn} onClick={this.props.onSave} title={t('Save')}><Icon icon="save"/></a> : <span className={styles.btnDisabled}><Icon icon="save"/></span>}
|
||||
<a className={styles.btn} onClick={this.props.onTestSend} title={t('Send test e-mail')}><Icon icon="at"/></a>
|
||||
<a className={styles.btn} onClick={() => this.props.onShowExport('html', 'HTML')} title={t('Show HTML')}><Icon icon="file-code"/></a>
|
||||
<a className={styles.btn} onClick={::this.toggleFullscreenAsync} title={t('Maximize editor')}><Icon icon="window-maximize"/></a>
|
||||
{this.props.canSave ? <a className={styles.btn} onClick={this.props.onSave} title={t('save')}><Icon icon="save"/></a> : <span className={styles.btnDisabled}><Icon icon="save"/></span>}
|
||||
<a className={styles.btn} onClick={this.props.onTestSend} title={t('sendTestEmail-1')}><Icon icon="at"/></a>
|
||||
<a className={styles.btn} onClick={() => this.props.onShowExport('html', 'HTML')} title={t('showHtml')}><Icon icon="file-code"/></a>
|
||||
<a className={styles.btn} onClick={::this.toggleFullscreenAsync} title={t('maximizeEditor')}><Icon icon="window-maximize"/></a>
|
||||
</div>
|
||||
</div>
|
||||
<UntrustedContentHost ref={this.contentNodeRefHandler} className={styles.host} singleToken={true} contentProps={editorData} contentSrc="ckeditor/editor" tokenMethod="ckeditor" tokenParams={editorData}/>
|
||||
|
|
|
@ -94,12 +94,12 @@ export class CodeEditorHost extends Component {
|
|||
<div className={styles.title}>{this.props.title}</div>
|
||||
</div>
|
||||
<div className={styles.navbarRight}>
|
||||
<a className={styles.btn} onClick={::this.toggleWrapAsync} title={this.state.wrap ? t('Disable word wrap') : t('Enable word wrap')}>{this.state.wrap ? 'WRAP': 'NOWRAP'}</a>
|
||||
{this.props.canSave ? <a className={styles.btn} onClick={this.props.onSave} title={t('Save')}><Icon icon="save"/></a> : <span className={styles.btnDisabled}><Icon icon="floppy-disk"/></span>}
|
||||
<a className={styles.btn} onClick={this.props.onTestSend} title={t('Send test e-mail')}><Icon icon="at"/></a>
|
||||
<a className={styles.btn} onClick={() => this.props.onShowExport('html', 'HTML')} title={t('Show HTML')}><Icon icon="file-code"/></a>
|
||||
<a className={styles.btn} onClick={::this.togglePreviewAsync} title={this.state.preview ? t('Hide preview'): t('Show preview')}><Icon icon={this.state.preview ? 'eye-slash': 'eye'}/></a>
|
||||
<a className={styles.btn} onClick={::this.toggleFullscreenAsync} title={t('Maximize editor')}><Icon icon="window-maximize"/></a>
|
||||
<a className={styles.btn} onClick={::this.toggleWrapAsync} title={this.state.wrap ? t('disableWordWrap') : t('enableWordWrap')}>{this.state.wrap ? 'WRAP': 'NOWRAP'}</a>
|
||||
{this.props.canSave ? <a className={styles.btn} onClick={this.props.onSave} title={t('save')}><Icon icon="save"/></a> : <span className={styles.btnDisabled}><Icon icon="floppy-disk"/></span>}
|
||||
<a className={styles.btn} onClick={this.props.onTestSend} title={t('sendTestEmail-1')}><Icon icon="at"/></a>
|
||||
<a className={styles.btn} onClick={() => this.props.onShowExport('html', 'HTML')} title={t('showHtml')}><Icon icon="file-code"/></a>
|
||||
<a className={styles.btn} onClick={::this.togglePreviewAsync} title={this.state.preview ? t('hidePreview'): t('showPreview')}><Icon icon={this.state.preview ? 'eye-slash': 'eye'}/></a>
|
||||
<a className={styles.btn} onClick={::this.toggleFullscreenAsync} title={t('maximizeEditor')}><Icon icon="window-maximize"/></a>
|
||||
</div>
|
||||
</div>
|
||||
<UntrustedContentHost ref={this.contentNodeRefHandler} className={styles.host} singleToken={true} contentProps={editorData} contentSrc="codeeditor/editor" tokenMethod="codeeditor" tokenParams={tokenData}/>
|
||||
|
|
|
@ -75,11 +75,11 @@ export class GrapesJSHost extends Component {
|
|||
<div className={styles.title}>{this.props.title}</div>
|
||||
</div>
|
||||
<div className={styles.navbarRight}>
|
||||
{this.props.canSave ? <a className={styles.btn} onClick={this.props.onSave} title={t('Save')}><Icon icon="save"/></a> : <span className={styles.btnDisabled}><Icon icon="save"/></span>}
|
||||
<a className={styles.btn} onClick={this.props.onTestSend} title={t('Send test e-mail')}><Icon icon="at"/></a>
|
||||
<a className={styles.btn} onClick={() => this.props.onShowExport('html', 'HTML')} title={t('Show HTML')}><Icon icon="file-code"/></a>
|
||||
{this.props.sourceType === GrapesJSSourceType.MJML && <a className={styles.btn} onClick={() => this.props.onShowExport('mjml', 'MJML')} title={t('Show MJML')}>MJML</a>}
|
||||
<a className={styles.btn} onClick={::this.toggleFullscreenAsync} title={t('Maximize editor')}><Icon icon="window-maximize"/></a>
|
||||
{this.props.canSave ? <a className={styles.btn} onClick={this.props.onSave} title={t('save')}><Icon icon="save"/></a> : <span className={styles.btnDisabled}><Icon icon="save"/></span>}
|
||||
<a className={styles.btn} onClick={this.props.onTestSend} title={t('sendTestEmail-1')}><Icon icon="at"/></a>
|
||||
<a className={styles.btn} onClick={() => this.props.onShowExport('html', 'HTML')} title={t('showHtml')}><Icon icon="file-code"/></a>
|
||||
{this.props.sourceType === GrapesJSSourceType.MJML && <a className={styles.btn} onClick={() => this.props.onShowExport('mjml', 'MJML')} title={t('showMjml')}>MJML</a>}
|
||||
<a className={styles.btn} onClick={::this.toggleFullscreenAsync} title={t('maximizeEditor')}><Icon icon="window-maximize"/></a>
|
||||
</div>
|
||||
</div>
|
||||
<UntrustedContentHost ref={this.contentNodeRefHandler} className={styles.host} singleToken={true} contentProps={editorData} contentSrc="grapesjs/editor" tokenMethod="grapesjs" tokenParams={tokenData}/>
|
||||
|
|
|
@ -77,10 +77,10 @@ export class MosaicoHost extends Component {
|
|||
<div className={styles.title}>{this.props.title}</div>
|
||||
</div>
|
||||
<div className={styles.navbarRight}>
|
||||
{this.props.canSave ? <a className={styles.btn} onClick={this.props.onSave} title={t('Save')}><Icon icon="save"/></a> : <span className={styles.btnDisabled}><Icon icon="save"/></span>}
|
||||
<a className={styles.btn} onClick={this.props.onTestSend} title={t('Send test e-mail')}><Icon icon="at"/></a>
|
||||
<a className={styles.btn} onClick={() => this.props.onShowExport('html', 'HTML')} title={t('Show HTML')}><Icon icon="file-code"/></a>
|
||||
<a className={styles.btn} onClick={::this.toggleFullscreenAsync} title={t('Maximize editor')}><Icon icon="window-maximize"/></a>
|
||||
{this.props.canSave ? <a className={styles.btn} onClick={this.props.onSave} title={t('save')}><Icon icon="save"/></a> : <span className={styles.btnDisabled}><Icon icon="save"/></span>}
|
||||
<a className={styles.btn} onClick={this.props.onTestSend} title={t('sendTestEmail-1')}><Icon icon="at"/></a>
|
||||
<a className={styles.btn} onClick={() => this.props.onShowExport('html', 'HTML')} title={t('showHtml')}><Icon icon="file-code"/></a>
|
||||
<a className={styles.btn} onClick={::this.toggleFullscreenAsync} title={t('maximizeEditor')}><Icon icon="window-maximize"/></a>
|
||||
</div>
|
||||
</div>
|
||||
<UntrustedContentHost ref={this.contentNodeRefHandler} className={styles.host} singleToken={true} contentProps={editorData} contentSrc="mosaico/editor" tokenMethod="mosaico" tokenParams={tokenData}/>
|
||||
|
|
|
@ -244,7 +244,7 @@ export class UntrustedContentRoot extends Component {
|
|||
} else {
|
||||
return (
|
||||
<div className="sandbox-loading-message">
|
||||
{t('loading-1')}
|
||||
{t('loading')}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -137,17 +137,17 @@ export default class CUD extends Component {
|
|||
if (submitResult) {
|
||||
if (this.props.entity) {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage('/lists', 'success', t('List updated'));
|
||||
this.navigateToWithFlashMessage('/lists', 'success', t('listUpdated'));
|
||||
} else {
|
||||
await this.getFormValuesFromURL(`rest/lists/${this.props.entity.id}`);
|
||||
this.enableForm();
|
||||
this.setFormStatusMessage('success', t('List updated'));
|
||||
this.setFormStatusMessage('success', t('listUpdated'));
|
||||
}
|
||||
} else {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage('/lists', 'success', t('List created'));
|
||||
this.navigateToWithFlashMessage('/lists', 'success', t('listCreated'));
|
||||
} else {
|
||||
this.navigateToWithFlashMessage(`/lists/${submitResult}/edit`, 'success', t('List created'));
|
||||
this.navigateToWithFlashMessage(`/lists/${submitResult}/edit`, 'success', t('listCreated'));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -215,14 +215,14 @@ export default class CUD extends Component {
|
|||
toNameFields = <InputField id="to_name" label={t('recipientsNameTemplate')} help={t('specifyUsingMergeTagsOfThisListHowTo')}/>;
|
||||
} else {
|
||||
const fieldWizardOptions = [
|
||||
{key: FieldWizard.NONE, label: t('Empty / Custom (no fields)')},
|
||||
{key: FieldWizard.NAME, label: t('Name (one field)')},
|
||||
{key: FieldWizard.FIRST_LAST_NAME, label: t('First name and Last name (two fields)')},
|
||||
{key: FieldWizard.NONE, label: t('emptyCustomNoFields')},
|
||||
{key: FieldWizard.NAME, label: t('nameOneField')},
|
||||
{key: FieldWizard.FIRST_LAST_NAME, label: t('firstNameAndLastNameTwoFields')},
|
||||
];
|
||||
|
||||
const fieldWizardValue = this.getFormValue('fieldWizard');
|
||||
|
||||
const fieldWizardSelector = <Dropdown id="fieldWizard" label={t('Representation of subscriber\'s name')} options={fieldWizardOptions} help={t('Select how the name of a subscriber will be represented. The fields in list will be created accordingly. You can always adjust the choice later by editing the list fields. If you select "Empty / Custom", provide a template below in "Recipients name template" that will be used as subscriber\'s name as it will appear in the emails\' "To" field.')}/>
|
||||
const fieldWizardSelector = <Dropdown id="fieldWizard" label={t('representationOfSubscribersName')} options={fieldWizardOptions} help={t('selectHowTheNameOfASubscriberWillBe')}/>
|
||||
|
||||
if (fieldWizardValue === FieldWizard.NONE) {
|
||||
toNameFields = (
|
||||
|
@ -282,8 +282,8 @@ export default class CUD extends Component {
|
|||
<CheckBox id="listunsubscribe_disabled" label={t('unsubscribeHeader')} text={t('doNotSendListUnsubscribeHeaders')}/>
|
||||
|
||||
<ButtonRow>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save and leave')} onClickAsync={async () => await this.submitHandler(true)}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('save')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('saveAndLeave')} onClickAsync={async () => await this.submitHandler(true)}/>
|
||||
{canDelete && <LinkButton className="btn-danger" icon="trash-alt" label={t('delete')} to={`/lists/${this.props.entity.id}/delete`}/>}
|
||||
</ButtonRow>
|
||||
</Form>
|
||||
|
|
|
@ -310,17 +310,17 @@ export default class CUD extends Component {
|
|||
if (submitResult) {
|
||||
if (this.props.entity) {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage(`/lists/${this.props.list.id}/fields`, 'success', t('Field updated'));
|
||||
this.navigateToWithFlashMessage(`/lists/${this.props.list.id}/fields`, 'success', t('fieldUpdated'));
|
||||
} else {
|
||||
await this.getFormValuesFromURL(`rest/fields/${this.props.list.id}/${this.props.entity.id}`);
|
||||
this.enableForm();
|
||||
this.setFormStatusMessage('success', t('Field updated'));
|
||||
this.setFormStatusMessage('success', t('fieldUpdated'));
|
||||
}
|
||||
} else {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage(`/lists/${this.props.list.id}/fields`, 'success', t('Field created'));
|
||||
this.navigateToWithFlashMessage(`/lists/${this.props.list.id}/fields`, 'success', t('fieldCreated'));
|
||||
} else {
|
||||
this.navigateToWithFlashMessage(`/lists/${this.props.list.id}/fields/${submitResult}/edit`, 'success', t('Field created'));
|
||||
this.navigateToWithFlashMessage(`/lists/${this.props.list.id}/fields/${submitResult}/edit`, 'success', t('fieldCreated'));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -459,14 +459,14 @@ export default class CUD extends Component {
|
|||
|
||||
fieldSettings =
|
||||
<Fieldset label={t('fieldSettings')}>
|
||||
<CheckBox id="isInGroup" label={t('group')} text={t('Belongs to checkbox / dropdown / radio group')}/>
|
||||
<CheckBox id="isInGroup" label={t('group')} text={t('belongsToCheckboxDropdownRadioGroup')}/>
|
||||
{isInGroup &&
|
||||
<TableSelect id="group" label={t('Containing group')} withHeader dropdown dataUrl={`rest/fields-grouped-table/${this.props.list.id}`} columns={fieldsGroupedColumns} selectionLabelIndex={1} help={t('selectGroupToWhichTheOptionsShouldBelong')}/>
|
||||
<TableSelect id="group" label={t('containingGroup')} withHeader dropdown dataUrl={`rest/fields-grouped-table/${this.props.list.id}`} columns={fieldsGroupedColumns} selectionLabelIndex={1} help={t('selectGroupToWhichTheOptionsShouldBelong')}/>
|
||||
}
|
||||
{!isInGroup &&
|
||||
<>
|
||||
<InputField id="checkedLabel" label={t('Checked label')} help={t('Label that will be displayed in list and subscription when the option is checked')}/>
|
||||
<InputField id="uncheckedLabel" label={t('Unchecked label')} help={t('Label that will be displayed in list and subscription when the option is unchecked')}/>
|
||||
<InputField id="checkedLabel" label={t('checkedLabel')} help={t('labelThatWillBeDisplayedInListAnd')}/>
|
||||
<InputField id="uncheckedLabel" label={t('uncheckedLabel')} help={t('labelThatWillBeDisplayedInListAnd-1')}/>
|
||||
</>
|
||||
}
|
||||
<InputField id="default_value" label={t('defaultValue')} help={t('defaultValueUsedWhenTheFieldIsEmpty')}/>
|
||||
|
@ -512,8 +512,8 @@ export default class CUD extends Component {
|
|||
}
|
||||
|
||||
<ButtonRow>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save and leave')} onClickAsync={async () => await this.submitHandler(true)}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('save')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('saveAndLeave')} onClickAsync={async () => await this.submitHandler(true)}/>
|
||||
{isEdit && <LinkButton className="btn-danger" icon="trash-alt" label={t('delete')} to={`/lists/${this.props.list.id}/fields/${this.props.entity.id}/delete`}/>}
|
||||
</ButtonRow>
|
||||
</Form>
|
||||
|
|
|
@ -402,17 +402,17 @@ export default class CUD extends Component {
|
|||
if (submitResult) {
|
||||
if (this.props.entity) {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage('/lists/forms', 'success', t('Custom forms updated'));
|
||||
this.navigateToWithFlashMessage('/lists/forms', 'success', t('customFormsUpdated'));
|
||||
} else {
|
||||
await this.getFormValuesFromURL(`rest/forms/${this.props.entity.id}`);
|
||||
this.enableForm();
|
||||
this.setFormStatusMessage('success', t('Custom forms updated'));
|
||||
this.setFormStatusMessage('success', t('customFormsUpdated'));
|
||||
}
|
||||
} else {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage('/lists/forms', 'success', t('Custom forms created'));
|
||||
this.navigateToWithFlashMessage('/lists/forms', 'success', t('customFormsCreated'));
|
||||
} else {
|
||||
this.navigateToWithFlashMessage(`/lists/forms/${submitResult}/edit`, 'success', t('Custom forms created'));
|
||||
this.navigateToWithFlashMessage(`/lists/forms/${submitResult}/edit`, 'success', t('customFormsCreated'));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -533,9 +533,9 @@ export default class CUD extends Component {
|
|||
<div className={formsStyles.title}>{t('formPreview') + ' ' + this.state.previewLabel}</div>
|
||||
</div>
|
||||
<div className={formsStyles.navbarRight}>
|
||||
<a className={formsStyles.btn} onClick={() => this.preview(this.state.previewKey)} title={t('Refresh')}><Icon icon="sync-alt"/></a>
|
||||
<a className={formsStyles.btn} onClick={() => this.setState({previewFullscreen: !this.state.previewFullscreen})} title={t('Maximize editor')}><Icon icon="window-maximize"/></a>
|
||||
<a className={formsStyles.btn} onClick={() => this.setState({previewContents: null, previewFullscreen: false})} title={t('Close preview')}><Icon icon="window-close"/></a>
|
||||
<a className={formsStyles.btn} onClick={() => this.preview(this.state.previewKey)} title={t('refresh')}><Icon icon="sync-alt"/></a>
|
||||
<a className={formsStyles.btn} onClick={() => this.setState({previewFullscreen: !this.state.previewFullscreen})} title={t('maximizeEditor')}><Icon icon="window-maximize"/></a>
|
||||
<a className={formsStyles.btn} onClick={() => this.setState({previewContents: null, previewFullscreen: false})} title={t('closePreview')}><Icon icon="window-close"/></a>
|
||||
</div>
|
||||
</div>
|
||||
<iframe className={formsStyles.host} src={"data:text/html;charset=utf-8," + encodeURIComponent(this.state.previewContents)}></iframe>
|
||||
|
@ -553,8 +553,8 @@ export default class CUD extends Component {
|
|||
}
|
||||
|
||||
<ButtonRow>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save and leave')} onClickAsync={async () => await this.submitHandler(true)}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('save')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('saveAndLeave')} onClickAsync={async () => await this.submitHandler(true)}/>
|
||||
{canDelete && <LinkButton className="btn-danger" icon="trash-alt" label={t('delete')} to={`/lists/forms/${this.props.entity.id}/delete`}/>}
|
||||
</ButtonRow>
|
||||
</Form>
|
||||
|
|
|
@ -173,18 +173,18 @@ export default class CUD extends Component {
|
|||
if (submitResult) {
|
||||
if (this.props.entity) {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage(`/lists/${this.props.list.id}/segments`, 'success', t('Segment updated'));
|
||||
this.navigateToWithFlashMessage(`/lists/${this.props.list.id}/segments`, 'success', t('segmentUpdated'));
|
||||
} else {
|
||||
await this.getFormValuesFromURL(`rest/segments/${this.props.list.id}/${this.props.entity.id}`);
|
||||
|
||||
this.enableForm();
|
||||
this.setFormStatusMessage('success', t('Segment updated'));
|
||||
this.setFormStatusMessage('success', t('segmentUpdated'));
|
||||
}
|
||||
} else {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage(`/lists/${this.props.list.id}/segments`, 'success', t('Segment created'));
|
||||
this.navigateToWithFlashMessage(`/lists/${this.props.list.id}/segments`, 'success', t('segmentCreated'));
|
||||
} else {
|
||||
this.navigateToWithFlashMessage(`/lists/${this.props.list.id}/segments/${submitResult}/edit`, 'success', t('Segment created'));
|
||||
this.navigateToWithFlashMessage(`/lists/${this.props.list.id}/segments/${submitResult}/edit`, 'success', t('segmentCreated'));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -389,7 +389,7 @@ export default class CUD extends Component {
|
|||
<hr/>
|
||||
<ButtonRow format="wide" className={`col-12 ${styles.toolbar}`}>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('save')} onClickAsync={async () => await this.submitHandler(false)}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save and leave')} onClickAsync={async () => await this.submitHandler(true)}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('saveAndLeave')} onClickAsync={async () => await this.submitHandler(true)}/>
|
||||
|
||||
{isEdit && <LinkButton className="btn-danger" icon="trash-alt" label={t('delete')} to={`/lists/${this.props.list.id}/segments/${this.props.entity.id}/delete`}/> }
|
||||
</ButtonRow>
|
||||
|
|
|
@ -63,7 +63,7 @@ export default class List extends Component {
|
|||
</Toolbar>
|
||||
}
|
||||
|
||||
<Title>{t('Segments')}</Title>
|
||||
<Title>{t('segments')}</Title>
|
||||
|
||||
<Table ref={node => this.table = node} withHeader dataUrl={`rest/segments-table/${this.props.list.id}`} columns={columns} />
|
||||
</div>
|
||||
|
|
|
@ -409,7 +409,7 @@ export function getRuleHelpers(t, fields) {
|
|||
},
|
||||
{
|
||||
column: 'is_test',
|
||||
name: t('Test user'),
|
||||
name: t('testUser'),
|
||||
type: 'option'
|
||||
}
|
||||
];
|
||||
|
|
|
@ -144,17 +144,17 @@ export default class CUD extends Component {
|
|||
if (submitResult) {
|
||||
if (this.props.entity) {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage(`/lists/${this.props.list.id}/subscriptions`, 'success', t('Subscription updated'));
|
||||
this.navigateToWithFlashMessage(`/lists/${this.props.list.id}/subscriptions`, 'success', t('subscriptionUpdated'));
|
||||
} else {
|
||||
await this.getFormValuesFromURL(`rest/subscriptions/${this.props.list.id}/${this.props.entity.id}`);
|
||||
this.enableForm();
|
||||
this.setFormStatusMessage('success', t('Subscription updated'));
|
||||
this.setFormStatusMessage('success', t('subscriptionUpdated'));
|
||||
}
|
||||
} else {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage(`/lists/${this.props.list.id}/subscriptions`, 'success', t('Subscription created'));
|
||||
this.navigateToWithFlashMessage(`/lists/${this.props.list.id}/subscriptions`, 'success', t('subscriptionCreated'));
|
||||
} else {
|
||||
this.navigateToWithFlashMessage(`/lists/${this.props.list.id}/subscriptions/${submitResult}/edit`, 'success', t('Subscription created'));
|
||||
this.navigateToWithFlashMessage(`/lists/${this.props.list.id}/subscriptions/${submitResult}/edit`, 'success', t('subscriptionCreated'));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -237,8 +237,8 @@ export default class CUD extends Component {
|
|||
</AlignedRow>
|
||||
}
|
||||
<ButtonRow>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save and leave')} onClickAsync={async () => await this.submitHandler(true)}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('save')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('saveAndLeave')} onClickAsync={async () => await this.submitHandler(true)}/>
|
||||
{isEdit && <LinkButton className="btn-danger" icon="trash-alt" label={t('delete')} to={`/lists/${this.props.list.id}/subscriptions/${this.props.entity.id}/delete`}/>}
|
||||
</ButtonRow>
|
||||
</Form>
|
||||
|
|
|
@ -143,19 +143,19 @@ export default class CUD extends Component {
|
|||
if (submitResult) {
|
||||
if (this.props.entity) {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage('/namespaces', 'success', t('Namespace updated'));
|
||||
this.navigateToWithFlashMessage('/namespaces', 'success', t('namespaceUpdated'));
|
||||
} else {
|
||||
await this.getFormValuesFromURL(`rest/namespaces/${this.props.entity.id}`);
|
||||
await this.loadTreeData();
|
||||
|
||||
this.enableForm();
|
||||
this.setFormStatusMessage('success', t('Namespace updated'));
|
||||
this.setFormStatusMessage('success', t('namespaceUpdated'));
|
||||
}
|
||||
} else {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage('/namespaces', 'success', t('Namespace created'));
|
||||
this.navigateToWithFlashMessage('/namespaces', 'success', t('namespaceCreated'));
|
||||
} else {
|
||||
this.navigateToWithFlashMessage(`/namespaces/${submitResult}/edit`, 'success', t('Namespace created'));
|
||||
this.navigateToWithFlashMessage(`/namespaces/${submitResult}/edit`, 'success', t('namespaceCreated'));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -216,8 +216,8 @@ export default class CUD extends Component {
|
|||
<TreeTableSelect id="namespace" label={t('parentNamespace')} data={this.state.treeData}/>}
|
||||
|
||||
<ButtonRow>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save and leave')} onClickAsync={async () => await this.submitHandler(true)}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('save')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('saveAndLeave')} onClickAsync={async () => await this.submitHandler(true)}/>
|
||||
{canDelete && <LinkButton className="btn-danger" icon="trash-alt" label={t('delete')} to={`/namespaces/${this.props.entity.id}/delete`}/>}
|
||||
</ButtonRow>
|
||||
</Form>
|
||||
|
|
|
@ -174,17 +174,17 @@ export default class CUD extends Component {
|
|||
if (submitResult) {
|
||||
if (this.props.entity) {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage('/reports', 'success', t('Report updated'));
|
||||
this.navigateToWithFlashMessage('/reports', 'success', t('reportUpdated'));
|
||||
} else {
|
||||
await this.getFormValuesFromURL(`rest/reports/${this.props.entity.id}`);
|
||||
this.enableForm();
|
||||
this.setFormStatusMessage('success', t('Report updated'));
|
||||
this.setFormStatusMessage('success', t('reportUpdated'));
|
||||
}
|
||||
} else {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage('/reports', 'success', t('Report created'));
|
||||
this.navigateToWithFlashMessage('/reports', 'success', t('reportCreated'));
|
||||
} else {
|
||||
this.navigateToWithFlashMessage(`/reports/${submitResult}/edit`, 'success', t('Report created'));
|
||||
this.navigateToWithFlashMessage(`/reports/${submitResult}/edit`, 'success', t('reportCreated'));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -281,8 +281,8 @@ export default class CUD extends Component {
|
|||
}
|
||||
|
||||
<ButtonRow>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save and leave')} onClickAsync={async () => await this.submitHandler(true)}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('save')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('saveAndLeave')} onClickAsync={async () => await this.submitHandler(true)}/>
|
||||
{canDelete &&
|
||||
<LinkButton className="btn-danger" icon="trash-alt" label={t('delete')} to={`/reports/${this.props.entity.id}/delete`}/>
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@ export default class ViewAndOutput extends Component {
|
|||
this.viewTypes = {
|
||||
view: {
|
||||
url: 'rest/report-content',
|
||||
getTitle: name => t('reportName', { name }),
|
||||
getTitle: name => t('reportName-1', { name }),
|
||||
loading: t('loadingReport'),
|
||||
finishedStates: new Set([ReportState.FINISHED]),
|
||||
getContent: content => <div dangerouslySetInnerHTML={{ __html: content }}/>
|
||||
|
|
|
@ -20,7 +20,7 @@ function getMenus(t) {
|
|||
panelComponent: ReportsList,
|
||||
children: {
|
||||
':reportId([0-9]+)': {
|
||||
title: resolved => t('reportName-1', {name: ellipsizeBreadcrumbLabel(resolved.report.name)}),
|
||||
title: resolved => t('reportName', {name: ellipsizeBreadcrumbLabel(resolved.report.name)}),
|
||||
resolve: {
|
||||
report: params => `rest/reports/${params.reportId}`
|
||||
},
|
||||
|
|
|
@ -273,17 +273,17 @@ export default class CUD extends Component {
|
|||
if (submitResult) {
|
||||
if (this.props.entity) {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage('/reports/templates', 'success', t('Report template updated'));
|
||||
this.navigateToWithFlashMessage('/reports/templates', 'success', t('reportTemplateUpdated'));
|
||||
} else {
|
||||
await this.getFormValuesFromURL(`rest/report-templates/${this.props.entity.id}`);
|
||||
this.enableForm();
|
||||
this.setFormStatusMessage('success', t('Report template updated'));
|
||||
this.setFormStatusMessage('success', t('reportTemplateUpdated'));
|
||||
}
|
||||
} else {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage('/reports/templates', 'success', t('Report template created'));
|
||||
this.navigateToWithFlashMessage('/reports/templates', 'success', t('reportTemplateCreated'));
|
||||
} else {
|
||||
this.navigateToWithFlashMessage(`/reports/templates/${submitResult}/edit`, 'success', t('Report template created'));
|
||||
this.navigateToWithFlashMessage(`/reports/templates/${submitResult}/edit`, 'success', t('reportTemplateCreated'));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -322,8 +322,8 @@ export default class CUD extends Component {
|
|||
<ACEEditor id="hbs" height="700px" mode="handlebars" label={t('renderingTemplate')} help={<Trans i18nKey="useHtmlWithHandlebarsSyntaxSee">Use HTML with Handlebars syntax. See documentation <a href="http://handlebarsjs.com/">here</a>.</Trans>}/>
|
||||
|
||||
<ButtonRow>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save and leave')} onClickAsync={async () => await this.submitHandler(true)}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('save')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('saveAndLeave')} onClickAsync={async () => await this.submitHandler(true)}/>
|
||||
{canDelete &&
|
||||
<LinkButton className="btn-danger" icon="trash-alt" label={t('delete')} to={`/reports/templates/${this.props.entity.id}/delete`}/>
|
||||
}
|
||||
|
|
|
@ -166,17 +166,17 @@ export default class CUD extends Component {
|
|||
if (submitResult) {
|
||||
if (this.props.entity) {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage('/send-configurations', 'success', t('Send configuration updated'));
|
||||
this.navigateToWithFlashMessage('/send-configurations', 'success', t('sendConfigurationUpdated'));
|
||||
} else {
|
||||
await this.getFormValuesFromURL(`rest/send-configurations-private/${this.props.entity.id}`);
|
||||
this.enableForm();
|
||||
this.setFormStatusMessage('success', t('Send configuration updated'));
|
||||
this.setFormStatusMessage('success', t('sendConfigurationUpdated'));
|
||||
}
|
||||
} else {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage('/send-configurations', 'success', t('Send configuration created'));
|
||||
this.navigateToWithFlashMessage('/send-configurations', 'success', t('sendConfigurationCreated'));
|
||||
} else {
|
||||
this.navigateToWithFlashMessage(`/send-configurations/${submitResult}/edit`, 'success', t('Send configuration created'));
|
||||
this.navigateToWithFlashMessage(`/send-configurations/${submitResult}/edit`, 'success', t('sendConfigurationCreated'));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -259,8 +259,8 @@ export default class CUD extends Component {
|
|||
<hr/>
|
||||
|
||||
<ButtonRow>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save and leave')} onClickAsync={async () => await this.submitHandler(true)}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('save')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('saveAndLeave')} onClickAsync={async () => await this.submitHandler(true)}/>
|
||||
{canDelete &&
|
||||
<LinkButton className="btn-danger" icon="trash-alt" label={t('delete')} to={`/send-configurations/${this.props.entity.id}/delete`}/>
|
||||
}
|
||||
|
|
|
@ -124,11 +124,11 @@ export default class Share extends Component {
|
|||
this.usersTableSelect.refresh();
|
||||
}
|
||||
},
|
||||
{ icon: 'trash-alt', label: t('Unshare') },
|
||||
t('Confirm Unsharing'),
|
||||
t('Are you sure you want to remove the share to user "{{username}}"?', {username}),
|
||||
t('Removing share for user "{{username}}"', {username}),
|
||||
t('Share for user "{{username}}" removed', {username}),
|
||||
{ icon: 'trash-alt', label: t('unshare') },
|
||||
t('confirmUnsharing'),
|
||||
t('areYouSureYouWantToRemoveTheShareToUser', {username}),
|
||||
t('removingShareForUserUsername', {username}),
|
||||
t('shareForUserUsernameRemoved', {username}),
|
||||
null
|
||||
);
|
||||
}
|
||||
|
|
|
@ -62,11 +62,11 @@ export default class UserShares extends Component {
|
|||
}
|
||||
}
|
||||
},
|
||||
{ icon: 'trash-alt', label: t('Unshare') },
|
||||
t('Confirm Unsharing'),
|
||||
t('Are you sure you want to remove the sharing of the {{typeName}} "{{name}}"?', {typeName, name}),
|
||||
t('Removing sharing of the {{typeName}} "{{name}}"', {typeName, name}),
|
||||
t('Sharing of the {{typeName}} "{{name}}" removed', {typeName, name}),
|
||||
{ icon: 'trash-alt', label: t('unshare') },
|
||||
t('confirmUnsharing'),
|
||||
t('areYouSureYouWantToRemoveTheSharingOfThe', {typeName, name}),
|
||||
t('removingSharingOfTheTypeNameName', {typeName, name}),
|
||||
t('sharingOfTheTypeNameNameRemoved', {typeName, name}),
|
||||
null
|
||||
);
|
||||
}
|
||||
|
@ -89,15 +89,15 @@ export default class UserShares extends Component {
|
|||
{tableRestActionDialogRender(this)}
|
||||
<Title>{t('sharesForUserUsername', {username: this.props.user.username})}</Title>
|
||||
|
||||
{renderSharesTable('namespace', t('namespaces'), t('namespace-lc'))}
|
||||
{renderSharesTable('list', t('lists'), t('list-lc'))}
|
||||
{renderSharesTable('template', t('Templates'), t('template-lc'))}
|
||||
{renderSharesTable('mosaicoTemplate', t('Mosaico Templates'), t('Mosaico template'))}
|
||||
{renderSharesTable('campaign', t('Campaigns'), t('campaign-lc'))}
|
||||
{renderSharesTable('customForm', t('customForms-1', t('custom forms')))}
|
||||
{renderSharesTable('report', t('reports'), t('report-lc'))}
|
||||
{renderSharesTable('reportTemplate', t('reportTemplates'), t('report template'))}
|
||||
{renderSharesTable('sendConfiguration', t('Send Configurations'), t('send configuration'))}
|
||||
{renderSharesTable('namespace', t('namespaces'), t('namespace-1'))}
|
||||
{renderSharesTable('list', t('lists'), t('list-1'))}
|
||||
{renderSharesTable('template', t('templates'), t('template-1'))}
|
||||
{renderSharesTable('mosaicoTemplate', t('mosaicoTemplates'), t('mosaicoTemplate'))}
|
||||
{renderSharesTable('campaign', t('campaigns'), t('campaign-1'))}
|
||||
{renderSharesTable('customForm', t('customForms-1', t('customForms-2')))}
|
||||
{renderSharesTable('report', t('reports'), t('report-1'))}
|
||||
{renderSharesTable('reportTemplate', t('reportTemplates'), t('reportTemplate-2'))}
|
||||
{renderSharesTable('sendConfiguration', t('sendConfigurations-1'), t('sendConfiguration-1'))}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -144,7 +144,7 @@ export default class CUD extends Component {
|
|||
}
|
||||
|
||||
if (state.getIn(['fromSourceTemplate', 'value']) && !state.getIn(['sourceTemplate', 'value'])) {
|
||||
state.setIn(['sourceTemplate', 'error'], t('Source template must not be empty'));
|
||||
state.setIn(['sourceTemplate', 'error'], t('sourceTemplateMustNotBeEmpty'));
|
||||
} else {
|
||||
state.setIn(['sourceTemplate', 'error'], null);
|
||||
}
|
||||
|
@ -181,17 +181,17 @@ export default class CUD extends Component {
|
|||
if (submitResult) {
|
||||
if (this.props.entity) {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage('/templates', 'success', t('Template updated'));
|
||||
this.navigateToWithFlashMessage('/templates', 'success', t('templateUpdated'));
|
||||
} else {
|
||||
await this.getFormValuesFromURL(`rest/templates/${this.props.entity.id}`);
|
||||
this.enableForm();
|
||||
this.setFormStatusMessage('success', t('Template updated'));
|
||||
this.setFormStatusMessage('success', t('templateUpdated'));
|
||||
}
|
||||
} else {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage('/templates', 'success', t('Template created'));
|
||||
this.navigateToWithFlashMessage('/templates', 'success', t('templateCreated'));
|
||||
} else {
|
||||
this.navigateToWithFlashMessage(`/templates/${submitResult}/edit`, 'success', t('Template created'));
|
||||
this.navigateToWithFlashMessage(`/templates/${submitResult}/edit`, 'success', t('templateCreated'));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -327,7 +327,7 @@ export default class CUD extends Component {
|
|||
<TextArea id="description" label={t('description')}/>
|
||||
|
||||
{!isEdit &&
|
||||
<CheckBox id="fromSourceTemplate" label={t('template')} text={t('Clone from an existing template')}/>
|
||||
<CheckBox id="fromSourceTemplate" label={t('template')} text={t('cloneFromAnExistingTemplate')}/>
|
||||
}
|
||||
|
||||
{this.getFormValue('fromSourceTemplate') ?
|
||||
|
@ -351,8 +351,8 @@ export default class CUD extends Component {
|
|||
{editForm}
|
||||
|
||||
<ButtonRow>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save')}/>
|
||||
{isEdit && <Button type="submit" className="btn-primary" icon="check" label={t('Save and leave')} onClickAsync={async () => await this.submitHandler(true)}/>}
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('save')}/>
|
||||
{isEdit && <Button type="submit" className="btn-primary" icon="check" label={t('saveAndLeave')} onClickAsync={async () => await this.submitHandler(true)}/>}
|
||||
{canDelete && <LinkButton className="btn-danger" icon="trash-alt" label={t('delete')} to={`/templates/${this.props.entity.id}/delete`}/> }
|
||||
{isEdit && <Button className="btn-success" icon="at" label={t('testSend')} onClickAsync={async () => this.setState({showTestSendModal: true})}/> }
|
||||
</ButtonRow>
|
||||
|
|
|
@ -248,11 +248,11 @@ export function getTemplateTypes(t, prefix = '', entityTypeId = ResourceType.TEM
|
|||
return <StaticField
|
||||
id={prefix + 'grapesJSSourceType'}
|
||||
className={styles.formDisabled}
|
||||
label={t('Content')}>{grapesJSSourceTypeLabels[owner.getFormValue(prefix + 'grapesJSSourceType')]}</StaticField>;
|
||||
label={t('content')}>{grapesJSSourceTypeLabels[owner.getFormValue(prefix + 'grapesJSSourceType')]}</StaticField>;
|
||||
} else {
|
||||
return <Dropdown
|
||||
id={prefix + 'grapesJSSourceType'}
|
||||
label={t('Content')}
|
||||
label={t('content')}
|
||||
options={grapesJSSourceTypes}/>;
|
||||
}
|
||||
},
|
||||
|
|
|
@ -143,17 +143,17 @@ export default class CUD extends Component {
|
|||
if (submitResult) {
|
||||
if (this.props.entity) {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage('/templates/mosaico', 'success', t('Mosaico template updated'));
|
||||
this.navigateToWithFlashMessage('/templates/mosaico', 'success', t('mosaicoTemplateUpdated'));
|
||||
} else {
|
||||
await this.getFormValuesFromURL(`rest/mosaico-templates/${this.props.entity.id}`);
|
||||
this.enableForm();
|
||||
this.setFormStatusMessage('success', t('Mosaico template updated'));
|
||||
this.setFormStatusMessage('success', t('mosaicoTemplateUpdated'));
|
||||
}
|
||||
} else {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage('/templates/mosaico', 'success', t('Mosaico template created'));
|
||||
this.navigateToWithFlashMessage('/templates/mosaico', 'success', t('mosaicoTemplateCreated'));
|
||||
} else {
|
||||
this.navigateToWithFlashMessage(`/templates/mosaico/${submitResult}/edit`, 'success', t('Mosaico template created'));
|
||||
this.navigateToWithFlashMessage(`/templates/mosaico/${submitResult}/edit`, 'success', t('mosaicoTemplateCreated'));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -200,7 +200,7 @@ export default class CUD extends Component {
|
|||
|
||||
<ButtonRow>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('save')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save and leave')} onClickAsync={async () => await this.submitHandler(true)}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('saveAndLeave')} onClickAsync={async () => await this.submitHandler(true)}/>
|
||||
{canDelete && <LinkButton className="btn-danger" icon="trash-alt" label={t('delete')} to={`/templates/mosaico/${this.props.entity.id}/delete`}/>}
|
||||
{isEdit && typeKey && this.templateTypes[typeKey].getButtons(this)}
|
||||
</ButtonRow>
|
||||
|
|
|
@ -105,7 +105,7 @@ export default class List extends Component {
|
|||
<ButtonDropdown buttonClassName="btn-primary" menuClassName="dropdown-menu-right" label={t('createMosaicoTemplate')}>
|
||||
<DropdownLink to="/templates/mosaico/create">{t('blank')}</DropdownLink>
|
||||
<DropdownLink to="/templates/mosaico/create/versafix">{t('versafixOne')}</DropdownLink>
|
||||
<DropdownLink to="/templates/mosaico/create/mjml-sample">{t('MJML Sample')}</DropdownLink>
|
||||
<DropdownLink to="/templates/mosaico/create/mjml-sample">{t('mjmlSample')}</DropdownLink>
|
||||
</ButtonDropdown>
|
||||
</Toolbar>
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ export function getTemplateTypes(t) {
|
|||
if (res.errors.length > 0) {
|
||||
const msg = (
|
||||
<div>
|
||||
<p>{t('Invalid MJML')}</p>
|
||||
<p>{t('invalidMjml')}</p>
|
||||
<ul className={styles.errorsList}>
|
||||
{res.errors.map((err, idx) => <li key={idx}>Line {err.line}: {err.message}</li>)}
|
||||
</ul>
|
||||
|
@ -49,11 +49,11 @@ export function getTemplateTypes(t) {
|
|||
|
||||
owner.setFormStatusMessage('danger', msg);
|
||||
} else {
|
||||
owner.setFormStatusMessage('success', t('MJML is valid.'));
|
||||
owner.setFormStatusMessage('success', t('mjmlIsValid'));
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
owner.setFormStatusMessage('danger', t('Invalid MJML.'));
|
||||
owner.setFormStatusMessage('danger', t('invalidMjml-1'));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -88,7 +88,7 @@ export function getTemplateTypes(t) {
|
|||
typeName: t('mjml'),
|
||||
getForm: owner => (
|
||||
<>
|
||||
<ContentModalDialog visible={!!owner.state.exportModalVisible} title={t('HTML')} getContentAsync={async () => generateHtmlFromMjml(owner)} onHide={() => setExportModalVisibility(owner, false)}/>
|
||||
<ContentModalDialog visible={!!owner.state.exportModalVisible} title={t('html')} getContentAsync={async () => generateHtmlFromMjml(owner)} onHide={() => setExportModalVisibility(owner, false)}/>
|
||||
<ACEEditor id="mjml" height="700px" mode="xml" label={t('templateContent')}/>
|
||||
</>
|
||||
),
|
||||
|
@ -105,8 +105,8 @@ export function getTemplateTypes(t) {
|
|||
},
|
||||
getButtons: owner => (
|
||||
<>
|
||||
<Button className="btn-success" icon="check-circle" label={t('Validate')} onClickAsync={async () => validateMjml(owner)}/>
|
||||
<Button className="btn-success" icon="file-code" label={t('Show HTML')} onClickAsync={async () => setExportModalVisibility(owner, true)}/>
|
||||
<Button className="btn-success" icon="check-circle" label={t('validate')} onClickAsync={async () => validateMjml(owner)}/>
|
||||
<Button className="btn-success" icon="file-code" label={t('showHtml')} onClickAsync={async () => setExportModalVisibility(owner, true)}/>
|
||||
</>
|
||||
)
|
||||
};
|
||||
|
|
|
@ -174,17 +174,17 @@ export default class CUD extends Component {
|
|||
if (submitResult) {
|
||||
if (this.props.entity) {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage('/users', 'success', t('User updated'));
|
||||
this.navigateToWithFlashMessage('/users', 'success', t('userUpdated'));
|
||||
} else {
|
||||
await this.getFormValuesFromURL(`rest/users/${this.props.entity.id}`);
|
||||
this.enableForm();
|
||||
this.setFormStatusMessage('success', t('User updated'));
|
||||
this.setFormStatusMessage('success', t('userUpdated'));
|
||||
}
|
||||
} else {
|
||||
if (submitAndLeave) {
|
||||
this.navigateToWithFlashMessage('/users', 'success', t('User created'));
|
||||
this.navigateToWithFlashMessage('/users', 'success', t('userCreated'));
|
||||
} else {
|
||||
this.navigateToWithFlashMessage(`/users/${submitResult}/edit`, 'success', t('User created'));
|
||||
this.navigateToWithFlashMessage(`/users/${submitResult}/edit`, 'success', t('userCreated'));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -257,8 +257,8 @@ export default class CUD extends Component {
|
|||
<NamespaceSelect/>
|
||||
|
||||
<ButtonRow>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('Save and leave')} onClickAsync={async () => await this.submitHandler(true)}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('save')}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('saveAndLeave')} onClickAsync={async () => await this.submitHandler(true)}/>
|
||||
{canDelete && <LinkButton className="btn-danger" icon="trash-alt" label={t('deleteUser')} to={`/users/${this.props.entity.id}/delete`}/>}
|
||||
</ButtonRow>
|
||||
</Form>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue