@capillarytech/creatives-library 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/CapTagList/index.js +2 -2
- package/components/CapTagList/messages.js +4 -0
- package/components/CardGrid/index.js +2 -2
- package/components/Ckeditor/index.js +3 -1
- package/components/Edmeditor/index.js +1 -1
- package/components/FormBuilder/index.js +143 -38
- package/containers/Ebill/index.js +1 -1
- package/containers/Ebill/reducer.js +5 -2
- package/containers/Ebill/sagas.js +6 -2
- package/containers/Email/_email.scss +9 -0
- package/containers/Email/index.js +643 -602
- package/containers/Email/reducer.js +5 -2
- package/containers/Email/sagas.js +6 -2
- package/containers/MobilePush/Create/index.js +23 -1
- package/containers/MobilePush/Create/messages.js +1 -1
- package/containers/MobilePush/Create/reducer.js +6 -3
- package/containers/MobilePush/Create/sagas.js +6 -3
- package/containers/MobilePush/Edit/index.js +22 -1
- package/containers/MobilePush/Edit/messages.js +1 -1
- package/containers/MobilePush/Edit/reducer.js +6 -3
- package/containers/MobilePush/Edit/sagas.js +6 -3
- package/containers/Sms/Create/index.js +18 -11
- package/containers/Sms/Create/messages.js +4 -0
- package/containers/Sms/Create/reducer.js +6 -3
- package/containers/Sms/Create/sagas.js +7 -2
- package/containers/Sms/Edit/index.js +18 -11
- package/containers/Sms/Edit/messages.js +4 -0
- package/containers/Sms/Edit/reducer.js +6 -3
- package/containers/Sms/Edit/sagas.js +7 -2
- package/containers/Templates/index.js +85 -19
- package/containers/Templates/messages.js +28 -0
- package/containers/Templates/reducer.js +3 -2
- package/package.json +1 -1
|
@@ -26,7 +26,6 @@ import * as actions from './actions';
|
|
|
26
26
|
import * as smsActions from '../Sms/Create/actions';
|
|
27
27
|
import * as mobilepushActions from '../MobilePush/Create/actions';
|
|
28
28
|
import * as smsEditActions from '../Sms/Edit/actions';
|
|
29
|
-
import * as ebillActions from '../Ebill/actions';
|
|
30
29
|
import CardGrid from '../../components/CardGrid';
|
|
31
30
|
import PreviewSideBar from '../../components/PreviewSideBar';
|
|
32
31
|
import './_templates.scss';
|
|
@@ -411,6 +410,26 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
411
410
|
}
|
|
412
411
|
};
|
|
413
412
|
|
|
413
|
+
handleBlankTemplateAction = (item) => {
|
|
414
|
+
const type = this.props.location.query.type;
|
|
415
|
+
const module = this.props.location.query.module ? this.props.location.query.module : 'default';
|
|
416
|
+
if (item === "uploadFile") {
|
|
417
|
+
document.getElementById('filename').click();
|
|
418
|
+
} else if (item === "editor") {
|
|
419
|
+
this.toggleEdmEmailTemplateSelection();
|
|
420
|
+
} else if (item === 'textTemplate') {
|
|
421
|
+
this.props.router.push({
|
|
422
|
+
pathname: `/mobilepush/create/text`,
|
|
423
|
+
query: type === 'embedded' ? {type: 'embedded', module} : {module},
|
|
424
|
+
});
|
|
425
|
+
} else if (item === 'imageTemplate') {
|
|
426
|
+
this.props.router.push({
|
|
427
|
+
pathname: `/mobilepush/create/image`,
|
|
428
|
+
query: type === 'embedded' ? {type: 'embedded', module} : {module},
|
|
429
|
+
});
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
|
|
414
433
|
handleFileUpload = (e, {files}) => {
|
|
415
434
|
if (files.length === 0) {
|
|
416
435
|
return;
|
|
@@ -431,6 +450,10 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
431
450
|
const text = reader.result;
|
|
432
451
|
this.props.actions.handleHtmlUpload(text);
|
|
433
452
|
const type = this.props.location.query.type;
|
|
453
|
+
if (type === 'embedded' && module === "subscription") {
|
|
454
|
+
this.props.createNew();
|
|
455
|
+
return;
|
|
456
|
+
}
|
|
434
457
|
this.props.router.push({
|
|
435
458
|
pathname: `/${this.props.route.name.toLowerCase()}/create`,
|
|
436
459
|
query: type === 'embedded' ? {type: 'embedded', module, isLanguageSupport, isEdmSupport} : {module},
|
|
@@ -438,8 +461,8 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
438
461
|
};
|
|
439
462
|
reader.readAsText(files[0]);
|
|
440
463
|
} else {
|
|
441
|
-
|
|
442
|
-
|
|
464
|
+
const message = getMessageObject('error', this.props.intl.formatMessage(messages.invalidUploadFileError), true);
|
|
465
|
+
this.props.globalActions.addMessageToQueue(message);
|
|
443
466
|
}
|
|
444
467
|
};
|
|
445
468
|
|
|
@@ -747,6 +770,10 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
747
770
|
} else {
|
|
748
771
|
getQuery = (type === 'embedded') ? {type: 'embedded', module} : {module};
|
|
749
772
|
}
|
|
773
|
+
if (type === 'embedded' && module === "subscription") {
|
|
774
|
+
this.props.createNew();
|
|
775
|
+
return;
|
|
776
|
+
}
|
|
750
777
|
this.props.router.push({
|
|
751
778
|
pathname: `/${this.state.channel.toLowerCase()}/create`,
|
|
752
779
|
query: getQuery,
|
|
@@ -828,20 +855,53 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
828
855
|
this.setState({showModal: false});
|
|
829
856
|
}
|
|
830
857
|
|
|
831
|
-
populateTemplatesList(data) {
|
|
858
|
+
populateTemplatesList = (data, blankTemplateRequired) => {
|
|
832
859
|
if (!data) {
|
|
833
860
|
return [];
|
|
834
861
|
}
|
|
835
862
|
const type = this.props.location.query.type;
|
|
836
863
|
const items = [];
|
|
864
|
+
const channel = this.state.channel.toLowerCase();
|
|
837
865
|
|
|
838
|
-
if (type === 'embedded' &&
|
|
866
|
+
if (type === 'embedded' && channel !== 'wechat' && blankTemplateRequired) {
|
|
867
|
+
let content;
|
|
868
|
+
if (channel === 'sms') {
|
|
869
|
+
content = (<div className="sms-template-content" onClick={this.createTemplate}>
|
|
870
|
+
<div style={{textAlign: 'center', lineHeight: '260px'}} className="sms-text">{this.props.intl.formatMessage(messages.blankTemplate)}</div>
|
|
871
|
+
</div>);
|
|
872
|
+
} else if (channel === 'email') {
|
|
873
|
+
content = (<div className="sms-template-content">
|
|
874
|
+
<div style={{textAlign: 'center', lineHeight: '260px'}} className="sms-text">
|
|
875
|
+
<div>
|
|
876
|
+
<button type="button" className="ant-btn cap-button edit-button ant-btn-ghost" onClick={() => this.handleBlankTemplateAction('uploadFile')}><span>Upload File</span></button>
|
|
877
|
+
<button type="button" className="ant-btn cap-button preview-button ant-btn-danger" onClick={() => this.handleBlankTemplateAction('editor')}><span>Use Editor</span></button>
|
|
878
|
+
</div>
|
|
879
|
+
</div>
|
|
880
|
+
</div>);
|
|
881
|
+
} else if (channel === 'mobilepush') {
|
|
882
|
+
content = (<div className="sms-template-content">
|
|
883
|
+
<div style={{textAlign: 'center', lineHeight: '260px'}} className="sms-text">
|
|
884
|
+
<div>
|
|
885
|
+
<button
|
|
886
|
+
type="button"
|
|
887
|
+
className="ant-btn cap-button edit-button ant-btn-ghost"
|
|
888
|
+
onClick={() => this.handleBlankTemplateAction('textTemplate')}>
|
|
889
|
+
<span>{this.props.intl.formatMessage(messages.textTemplate)}</span>
|
|
890
|
+
</button>
|
|
891
|
+
<button
|
|
892
|
+
type="button"
|
|
893
|
+
className="ant-btn cap-button preview-button ant-btn-danger"
|
|
894
|
+
onClick={() => this.handleBlankTemplateAction('imageTemplate')}>
|
|
895
|
+
<span>{this.props.intl.formatMessage(messages.imageTemplate)}</span>
|
|
896
|
+
</button>
|
|
897
|
+
</div>
|
|
898
|
+
</div>
|
|
899
|
+
</div>);
|
|
900
|
+
}
|
|
839
901
|
items.push(
|
|
840
902
|
{
|
|
841
903
|
id: 'blankTemplate',
|
|
842
|
-
content
|
|
843
|
-
<div style={{textAlign: 'center', lineHeight: '260px'}} className="sms-text">{this.props.intl.formatMessage(messages.blankTemplate)}</div>
|
|
844
|
-
</div>,
|
|
904
|
+
content,
|
|
845
905
|
}
|
|
846
906
|
);
|
|
847
907
|
} /*else if (type === 'embedded' && this.state.channel.toLowerCase() === "mobilepush") {
|
|
@@ -996,13 +1056,13 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
996
1056
|
onOk={this.handleOk}
|
|
997
1057
|
onCancel={this.handleCancel}
|
|
998
1058
|
footer={[
|
|
999
|
-
<CapButton key="back" onClick={this.handleCancel}>
|
|
1059
|
+
<CapButton key="back" onClick={this.handleCancel}>{this.props.intl.formatMessage(messages.cancelText)}</CapButton>,
|
|
1000
1060
|
<CapButton key="submit" type="primary" id="delete-version" onClick={this.handleOk}>
|
|
1001
|
-
|
|
1061
|
+
{this.props.intl.formatMessage(messages.yesText)}
|
|
1002
1062
|
</CapButton>,
|
|
1003
1063
|
]}
|
|
1004
1064
|
>
|
|
1005
|
-
|
|
1065
|
+
{this.props.intl.formatMessage(messages.templateDeleteConfirm)}
|
|
1006
1066
|
</Modal>);
|
|
1007
1067
|
return modal;
|
|
1008
1068
|
};
|
|
@@ -1151,10 +1211,10 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1151
1211
|
const createPushMenu = (
|
|
1152
1212
|
<Menu onClick={this.createTemplate}>
|
|
1153
1213
|
<MenuItem key="text">
|
|
1154
|
-
|
|
1214
|
+
{this.props.intl.formatMessage(messages.textTemplate)}
|
|
1155
1215
|
</MenuItem>
|
|
1156
1216
|
<MenuItem key="image">
|
|
1157
|
-
|
|
1217
|
+
{this.props.intl.formatMessage(messages.imageTemplate)}
|
|
1158
1218
|
</MenuItem>
|
|
1159
1219
|
</Menu>
|
|
1160
1220
|
);
|
|
@@ -1194,7 +1254,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1194
1254
|
const cmsTemplateSelectionContent = (
|
|
1195
1255
|
<CardGrid
|
|
1196
1256
|
className={""}
|
|
1197
|
-
listItem={this.populateTemplatesList(this.props.Templates.cmsTemplates)}
|
|
1257
|
+
listItem={this.populateTemplatesList(this.props.Templates.cmsTemplates, false)}
|
|
1198
1258
|
// filterContent={filterContent}
|
|
1199
1259
|
onHoverItem={this.handleOnHoverItem}
|
|
1200
1260
|
onItemClick={this.handleEdmDefaultTemplateSelection}
|
|
@@ -1240,22 +1300,28 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1240
1300
|
<Pagination onPageChange={() => { this.getAllTemplates({getNextPage: true}); }} paginationSelector="pagination-container">
|
|
1241
1301
|
<CardGrid
|
|
1242
1302
|
className={this.state.channel.toLowerCase() === "mobilepush" ? "mobilepush-templates" : ""}
|
|
1243
|
-
listItem={this.populateTemplatesList(this.props.TemplatesList)}
|
|
1303
|
+
listItem={this.populateTemplatesList(this.props.TemplatesList, true)}
|
|
1244
1304
|
filterContent={filterContent}
|
|
1245
1305
|
onHoverItem={this.handleOnHoverItem}
|
|
1246
1306
|
onItemClick={this.handleOnItemClick}
|
|
1247
1307
|
enablePagination
|
|
1248
1308
|
>
|
|
1249
1309
|
</CardGrid>
|
|
1310
|
+
{(this.state.selectedAccount === '' && _.isEmpty(this.props.Templates.selectedWeChatAccount)) && (this.state.channel.toLowerCase() === 'wechat' || this.state.channel.toLowerCase() === "mobilepush") && <div style={{ height: '65vh', textAlign: 'center', lineHeight: '65vh'}}>
|
|
1311
|
+
<span style={{ fontFamily: 'open-sans', fontSize: '24px', color: '#B5B5B5'}}>{this.props.intl.formatMessage(messages.noAccountMessage)}</span>
|
|
1312
|
+
</div>}
|
|
1313
|
+
{(((this.state.selectedAccount !== '' && !_.isEmpty(this.props.Templates.selectedWeChatAccount) && this.state.channel.toLowerCase() === 'wechat') || this.state.channel.toLowerCase() !== 'wechat') && _.isEmpty(this.props.TemplatesList)) && !this.props.Templates.getAllTemplatesInProgress && <div style={{ height: '65vh', textAlign: 'center', lineHeight: '65vh'}}>
|
|
1314
|
+
<span style={{ fontFamily: 'open-sans', fontSize: '24px', color: '#B5B5B5'}}>{this.props.intl.formatMessage(messages.noTemplatesMessage)}</span>
|
|
1315
|
+
</div>}
|
|
1250
1316
|
</Pagination>
|
|
1251
1317
|
</Row>
|
|
1252
1318
|
<Row>
|
|
1253
|
-
{(this.state.selectedAccount === '' && _.isEmpty(this.props.Templates.selectedWeChatAccount)) && (this.state.channel.toLowerCase() === 'wechat' || this.state.channel.toLowerCase() === "mobilepush") && <div style={{ height: '65vh', textAlign: 'center', lineHeight: '65vh'}}>
|
|
1319
|
+
{/* {(this.state.selectedAccount === '' && _.isEmpty(this.props.Templates.selectedWeChatAccount)) && (this.state.channel.toLowerCase() === 'wechat' || this.state.channel.toLowerCase() === "mobilepush") && <div style={{ height: '65vh', textAlign: 'center', lineHeight: '65vh'}}>
|
|
1254
1320
|
<span style={{ fontFamily: 'open-sans', fontSize: '24px', color: '#B5B5B5'}}>{this.props.intl.formatMessage(messages.noAccountMessage)}</span>
|
|
1255
1321
|
</div>}
|
|
1256
1322
|
{(((this.state.selectedAccount !== '' && !_.isEmpty(this.props.Templates.selectedWeChatAccount) && this.state.channel.toLowerCase() === 'wechat') || this.state.channel.toLowerCase() !== 'wechat') && _.isEmpty(this.props.TemplatesList)) && !this.props.Templates.getAllTemplatesInProgress && <div style={{ height: '65vh', textAlign: 'center', lineHeight: '65vh'}}>
|
|
1257
1323
|
<span style={{ fontFamily: 'open-sans', fontSize: '24px', color: '#B5B5B5'}}>{this.props.intl.formatMessage(messages.noTemplatesMessage)}</span>
|
|
1258
|
-
</div>}
|
|
1324
|
+
</div>} */}
|
|
1259
1325
|
<PreviewSideBar
|
|
1260
1326
|
showPreview={this.state.previewOpen}
|
|
1261
1327
|
templateData={this.state.previewTemplate}
|
|
@@ -1267,7 +1333,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1267
1333
|
location={this.props.location}
|
|
1268
1334
|
>
|
|
1269
1335
|
</PreviewSideBar>
|
|
1270
|
-
{(this.state.channel.toLowerCase() === 'ebill' || this.state.channel.toLowerCase() === 'email') && <EmailPreview
|
|
1336
|
+
{(this.state.channel.toLowerCase() === 'ebill' || this.state.channel.toLowerCase() === 'email') && htmlPreviewContent && <EmailPreview
|
|
1271
1337
|
header={previewHeader}
|
|
1272
1338
|
content={htmlPreviewContent}
|
|
1273
1339
|
show={this.state.showHtmlPreview}
|
|
@@ -1278,7 +1344,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1278
1344
|
updatedByName={commonUtil.getUserNameById(parseInt(this.state.previewTemplate.updatedBy, 10), commonUtil.getMergedUserList(this.props.Templates.userList))}
|
|
1279
1345
|
/>}
|
|
1280
1346
|
<SlideBox
|
|
1281
|
-
header={(<h3>
|
|
1347
|
+
header={(<h3>{this.props.intl.formatMessage(messages.templateSelection)}</h3>)}
|
|
1282
1348
|
width={60}
|
|
1283
1349
|
content={cmsTemplateSelectionContent}
|
|
1284
1350
|
show={this.state.showEdmEmailTemplates}
|
|
@@ -186,4 +186,32 @@ export default defineMessages({
|
|
|
186
186
|
id: 'app.containers.Templates.preview',
|
|
187
187
|
defaultMessage: 'Preview',
|
|
188
188
|
},
|
|
189
|
+
invalidUploadFileError: {
|
|
190
|
+
id: 'app.containers.Templates.invalidUploadFileError',
|
|
191
|
+
defaultMessage: 'File cannot be uploaded. Please select another file with valid file format.',
|
|
192
|
+
},
|
|
193
|
+
templateDeleteConfirm: {
|
|
194
|
+
id: 'app.containers.Templates.templateDeleteConfirm',
|
|
195
|
+
defaultMessage: 'Are you sure you want to delete this Template?',
|
|
196
|
+
},
|
|
197
|
+
cancelText: {
|
|
198
|
+
id: 'app.containers.Templates.cancelText',
|
|
199
|
+
defaultMessage: 'Cancel',
|
|
200
|
+
},
|
|
201
|
+
yesText: {
|
|
202
|
+
id: 'app.containers.Templates.yesText',
|
|
203
|
+
defaultMessage: 'Yes',
|
|
204
|
+
},
|
|
205
|
+
templateSelection: {
|
|
206
|
+
id: 'app.containers.Templates.templateSelection',
|
|
207
|
+
defaultMessage: 'Template Selection',
|
|
208
|
+
},
|
|
209
|
+
textTemplate: {
|
|
210
|
+
id: 'app.containers.Templates.textTemplate',
|
|
211
|
+
defaultMessage: 'Text',
|
|
212
|
+
},
|
|
213
|
+
imageTemplate: {
|
|
214
|
+
id: 'app.containers.Templates.imageTemplate',
|
|
215
|
+
defaultMessage: 'Image',
|
|
216
|
+
},
|
|
189
217
|
});
|
|
@@ -78,12 +78,13 @@ function templatesReducer(state = initialState, action) {
|
|
|
78
78
|
.set('templates', fromJS([]));
|
|
79
79
|
case types.SET_SELECTED_LAYOUT:
|
|
80
80
|
return state
|
|
81
|
-
.set('selectedEmailLayout',
|
|
81
|
+
.set('selectedEmailLayout', action.selectedTemplate)
|
|
82
82
|
.set('edmTemplate', fromJS({}));
|
|
83
83
|
case types.SEND_ZIPPED_FILE_REQUEST:
|
|
84
84
|
return state
|
|
85
85
|
.set('sendingFile', true)
|
|
86
|
-
.set('errorSendingFile', false)
|
|
86
|
+
.set('errorSendingFile', false)
|
|
87
|
+
.set('selectedEmailLayout', "");
|
|
87
88
|
case types.SEND_ZIPPED_FILE_SUCCESS:
|
|
88
89
|
return state
|
|
89
90
|
.set('sendingFile', false)
|