@capillarytech/creatives-library 2.0.34 → 2.0.36
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 +1 -3
- package/components/CustomPopOver/index.js +1 -1
- package/components/FormBuilder/index.js +190 -190
- package/components/PreviewSideBar/index.js +1 -1
- package/components/TemplatePreview/index.js +1 -1
- package/containers/Assets/Gallery/index.js +1 -1
- package/containers/CreativesContainer/SlideBoxContent.js +6 -4
- package/containers/CreativesContainer/SlideBoxHeader.js +4 -3
- package/containers/CreativesContainer/actions.js +12 -0
- package/containers/CreativesContainer/constants.js +2 -0
- package/containers/CreativesContainer/index.js +13 -4
- package/containers/CreativesContainer/reducer.js +7 -1
- package/containers/CreativesContainer/selectors.js +5 -0
- package/containers/Email/index.js +30 -24
- package/containers/EmailWrapper/index.js +5 -4
- package/containers/Login/components/LoginForm/index.js +1 -1
- package/containers/Sms/Create/index.js +36 -60
- package/containers/Sms/Edit/index.js +30 -46
- package/containers/Templates/index.js +15 -63
- package/containers/Templates/reducer.js +1 -0
- package/containers/TemplatesV2/_templatesV2.scss +5 -0
- package/containers/TemplatesV2/index.js +58 -17
- package/containers/TemplatesV2/messages.js +8 -0
- package/containers/WeChat/index.js +15 -5
- package/index.js +7 -1
- package/package.json +13 -13
- package/routes.js +4 -1
|
@@ -24,6 +24,7 @@ import '../Create/_smsCreate.scss';
|
|
|
24
24
|
import messages from './messages';
|
|
25
25
|
import * as globalActions from '../../../containers/Cap/actions';
|
|
26
26
|
import {getMessageObject} from '../../../utils/messageUtils';
|
|
27
|
+
import * as creativesContainerActions from '../../CreativesContainer/actions';
|
|
27
28
|
// import callNativeEvent from '../../../utils/callNativeEvent';
|
|
28
29
|
|
|
29
30
|
export class Edit extends React.Component { // eslint-disable-line react/prefer-stateless-function
|
|
@@ -84,7 +85,6 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
84
85
|
}
|
|
85
86
|
|
|
86
87
|
componentWillMount() {
|
|
87
|
-
console.log('edit mounting');
|
|
88
88
|
const query = {
|
|
89
89
|
layout: 'SMS',
|
|
90
90
|
type: 'LAYOUT',
|
|
@@ -148,7 +148,6 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
150
|
if (nextProps.Edit.editResponse && nextProps.Edit.editResponse.templateId) {
|
|
151
|
-
console.log('reseting schema');
|
|
152
151
|
this.resetSchema();
|
|
153
152
|
this.setState({
|
|
154
153
|
formData: {},
|
|
@@ -177,7 +176,7 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
177
176
|
delete injectedTags["Store custom fields"];
|
|
178
177
|
delete injectedTags["Transaction custom fields"];
|
|
179
178
|
injectedTags = _.merge({}, injectedTags, nextProps.metaEntities.tags.custom);
|
|
180
|
-
|
|
179
|
+
|
|
181
180
|
if (!_.has(nextProps.metaEntities.tags.custom, "Registration custom fields")) {
|
|
182
181
|
delete injectedTags["Registration custom fields"];
|
|
183
182
|
}
|
|
@@ -196,15 +195,14 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
196
195
|
}
|
|
197
196
|
|
|
198
197
|
onTemplateNameChange(name) {
|
|
199
|
-
|
|
198
|
+
|
|
200
199
|
}
|
|
201
200
|
|
|
202
201
|
onTemplateContentChange(content) {
|
|
203
|
-
|
|
202
|
+
|
|
204
203
|
}
|
|
205
204
|
|
|
206
205
|
onFormDataChange(formData, tabCount, currentTab) {
|
|
207
|
-
console.log('Form data changed is ', formData, tabCount, currentTab);
|
|
208
206
|
this.setState({formData, tabCount, currentTab});
|
|
209
207
|
if (currentTab) {
|
|
210
208
|
this.setState({currentTab});
|
|
@@ -212,18 +210,16 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
212
210
|
}
|
|
213
211
|
|
|
214
212
|
onVersionNameChange(data, versionIndex) {
|
|
215
|
-
|
|
213
|
+
|
|
216
214
|
}
|
|
217
215
|
|
|
218
216
|
onTagSelect(data, currentTab) {
|
|
219
|
-
console.log('parent data tag', data, currentTab);
|
|
220
217
|
const editorId = currentTab > 1 ? `sms-editor${currentTab}` : 'sms-editor';
|
|
221
218
|
this.insertAtCursor(document.getElementById(editorId), `{{${data}}}`, currentTab);
|
|
222
219
|
document.getElementById(editorId).focus();
|
|
223
220
|
}
|
|
224
221
|
|
|
225
222
|
onTabChange(data) {
|
|
226
|
-
console.log('inside parent ontabchange', data, this.state);
|
|
227
223
|
this.setState({currentTab: data});
|
|
228
224
|
}
|
|
229
225
|
|
|
@@ -247,7 +243,6 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
247
243
|
}
|
|
248
244
|
if (type === 'embedded' || count > 0) {
|
|
249
245
|
setTimeout( () => {
|
|
250
|
-
console.log('removing standalone');
|
|
251
246
|
if (type === 'embedded' && !_.isEmpty(that.state.formData)) {
|
|
252
247
|
that.removeStandAlone();
|
|
253
248
|
} else {
|
|
@@ -263,7 +258,7 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
263
258
|
formData[0].base = true;
|
|
264
259
|
}
|
|
265
260
|
formData.base = data.versions.base;
|
|
266
|
-
|
|
261
|
+
|
|
267
262
|
this.setState({tabCount, formData, editData: data, currentTab}, () => {
|
|
268
263
|
});
|
|
269
264
|
}
|
|
@@ -273,12 +268,10 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
273
268
|
}
|
|
274
269
|
|
|
275
270
|
getFormData(e, value) {
|
|
276
|
-
console.log('posting final result', this.state.formData);
|
|
277
271
|
const formData = _.cloneDeep(this.state.formData);
|
|
278
272
|
let baseData = {};
|
|
279
273
|
let versionIdx;
|
|
280
274
|
_.forEach(formData, (val, idx) => {
|
|
281
|
-
console.log('val', val);
|
|
282
275
|
if (val.base && idx !== 'base') {
|
|
283
276
|
baseData = val;
|
|
284
277
|
versionIdx = idx;
|
|
@@ -292,7 +285,7 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
292
285
|
result.base = baseData;
|
|
293
286
|
const msgObj = updateCharCount(baseData['sms-editor']);
|
|
294
287
|
result.base.msg_count = msgObj.msgCount;
|
|
295
|
-
|
|
288
|
+
|
|
296
289
|
const response = {
|
|
297
290
|
action: "getFormData",
|
|
298
291
|
value: result,
|
|
@@ -300,8 +293,8 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
300
293
|
validity: this.state.isFormValid,
|
|
301
294
|
type: 'SMS',
|
|
302
295
|
};
|
|
303
|
-
this.setState({checkValidation: true});
|
|
304
|
-
|
|
296
|
+
this.setState({checkValidation: true, loading: true});
|
|
297
|
+
|
|
305
298
|
if (e) {
|
|
306
299
|
e.source.postMessage(JSON.stringify(response), e.origin);
|
|
307
300
|
}
|
|
@@ -309,7 +302,6 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
309
302
|
}
|
|
310
303
|
|
|
311
304
|
getCurrentWindow(e) {
|
|
312
|
-
console.log('in sms create', e);
|
|
313
305
|
const response = {
|
|
314
306
|
action: e.action,
|
|
315
307
|
value: 'edit',
|
|
@@ -370,7 +362,6 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
370
362
|
}
|
|
371
363
|
|
|
372
364
|
handleOnTagsContextChange = (data) => {
|
|
373
|
-
console.log('parent tags context', data);
|
|
374
365
|
const query = {
|
|
375
366
|
layout: 'SMS',
|
|
376
367
|
type: 'TAG',
|
|
@@ -389,10 +380,9 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
389
380
|
}
|
|
390
381
|
|
|
391
382
|
startTemplateCreation(data) {
|
|
392
|
-
console.log('startTemplateCreation');
|
|
393
383
|
if (data.edit) {
|
|
394
384
|
const ifUnicode = checkUnicode(data.content);
|
|
395
|
-
|
|
385
|
+
|
|
396
386
|
const content = data.content;
|
|
397
387
|
const tempData = {
|
|
398
388
|
'sms-editor': content,
|
|
@@ -409,14 +399,12 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
409
399
|
}
|
|
410
400
|
|
|
411
401
|
startLoading(ifEdit) {
|
|
412
|
-
console.log('startLoading', ifEdit);
|
|
413
402
|
if (ifEdit) {
|
|
414
403
|
this.setState({loading: true});
|
|
415
404
|
}
|
|
416
405
|
}
|
|
417
406
|
|
|
418
407
|
moveToTemplates() {
|
|
419
|
-
console.log('in move to Templates');
|
|
420
408
|
const modalContent = {
|
|
421
409
|
title: "Alert",
|
|
422
410
|
body: "Do you really want to go back? All your temporary changes will be lost!",
|
|
@@ -433,7 +421,6 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
433
421
|
}
|
|
434
422
|
|
|
435
423
|
discardValues() {
|
|
436
|
-
console.log('discarding', this.props.Edit);
|
|
437
424
|
this.resetSchema();
|
|
438
425
|
this.setState({
|
|
439
426
|
formData: {},
|
|
@@ -462,15 +449,13 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
462
449
|
}
|
|
463
450
|
}
|
|
464
451
|
if (isValid) {
|
|
465
|
-
console.log('isValid');
|
|
466
452
|
return true;
|
|
467
453
|
}
|
|
468
|
-
|
|
454
|
+
|
|
469
455
|
return false;
|
|
470
456
|
}
|
|
471
457
|
|
|
472
458
|
injectEvents(schema) {
|
|
473
|
-
console.log('now injecting events in edit');
|
|
474
459
|
const temp = schema;
|
|
475
460
|
temp.standalone.sections = this.injectSections(temp.standalone.sections);
|
|
476
461
|
_.forEach(temp.containers, (container) => {
|
|
@@ -513,7 +498,7 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
513
498
|
_.forEach(col.supportedEvents, (event) => {
|
|
514
499
|
temp.injectedEvents[event] = this.getMappedEvent(col.id, event);
|
|
515
500
|
});
|
|
516
|
-
|
|
501
|
+
|
|
517
502
|
temp = this.injectMessages(temp);
|
|
518
503
|
return true;
|
|
519
504
|
});
|
|
@@ -530,7 +515,7 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
530
515
|
_.forEach(col.supportedEvents, (event) => {
|
|
531
516
|
temp.injectedEvents[event] = this.getMappedEvent(col.id, event);
|
|
532
517
|
});
|
|
533
|
-
|
|
518
|
+
|
|
534
519
|
temp = this.injectMessages(temp);
|
|
535
520
|
return true;
|
|
536
521
|
});
|
|
@@ -550,7 +535,7 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
550
535
|
_.forEach(inputField.supportedEvents, (event) => {
|
|
551
536
|
temp.injectedEvents[event] = this.getMappedEvent(inputField.id, event);
|
|
552
537
|
});
|
|
553
|
-
|
|
538
|
+
|
|
554
539
|
temp = this.injectMessages(temp);
|
|
555
540
|
return true;
|
|
556
541
|
});
|
|
@@ -565,7 +550,7 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
565
550
|
_.forEach(actionField.supportedEvents, (event) => {
|
|
566
551
|
temp.injectedEvents[event] = this.getMappedEvent(actionField.id, event);
|
|
567
552
|
});
|
|
568
|
-
|
|
553
|
+
|
|
569
554
|
temp = this.injectMessages(temp);
|
|
570
555
|
return true;
|
|
571
556
|
});
|
|
@@ -675,17 +660,15 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
675
660
|
}
|
|
676
661
|
|
|
677
662
|
renameVersion(data, currentTab) {
|
|
678
|
-
|
|
663
|
+
|
|
679
664
|
}
|
|
680
665
|
|
|
681
666
|
markFinalVersion(data, currentTab) {
|
|
682
667
|
const message = getMessageObject('success', 'Template Marked as Final Successfully', true);
|
|
683
668
|
this.props.globalActions.addMessageToQueue(message);
|
|
684
|
-
console.log('markFinal version', data, currentTab);
|
|
685
669
|
}
|
|
686
670
|
|
|
687
671
|
duplicateVersion(data, currentTab) {
|
|
688
|
-
console.log('duplicate version', data, currentTab);
|
|
689
672
|
this.addVersion(this.state.tabCount);
|
|
690
673
|
}
|
|
691
674
|
|
|
@@ -699,7 +682,6 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
699
682
|
}
|
|
700
683
|
|
|
701
684
|
addVersion(data, addNow) {
|
|
702
|
-
console.log('adding version', data);
|
|
703
685
|
let tabIndex = data + 1;
|
|
704
686
|
const schema = _.cloneDeep(this.state.schema);
|
|
705
687
|
const containers = schema.containers.slice();
|
|
@@ -723,7 +705,7 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
723
705
|
});
|
|
724
706
|
firstPane.sections = sections;
|
|
725
707
|
schema.containers[0].panes.push(firstPane);
|
|
726
|
-
|
|
708
|
+
|
|
727
709
|
if (tabIndex === 5) {
|
|
728
710
|
schema.containers[0].tabBarExtraContent.sections[0].actionFields[0].cols[0].disabled = true;
|
|
729
711
|
}
|
|
@@ -748,7 +730,7 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
748
730
|
});
|
|
749
731
|
firstPane.sections = sections;
|
|
750
732
|
schema.containers[0].panes.push(firstPane);
|
|
751
|
-
|
|
733
|
+
|
|
752
734
|
if (tabIndex === 5) {
|
|
753
735
|
schema.containers[0].tabBarExtraContent.sections[0].actionFields[0].cols[0].disabled = true;
|
|
754
736
|
}
|
|
@@ -783,10 +765,8 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
783
765
|
}
|
|
784
766
|
|
|
785
767
|
handleFrameTasks = (e) => {
|
|
786
|
-
console.log('data listened to is', e.data);
|
|
787
768
|
const type = e.data;
|
|
788
769
|
if (typeof type === 'object') {
|
|
789
|
-
console.log('received something', type);
|
|
790
770
|
const action = type.action;
|
|
791
771
|
switch (action) {
|
|
792
772
|
case "startTemplateCreation":
|
|
@@ -810,15 +790,15 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
810
790
|
this.getFormData(e);
|
|
811
791
|
break;
|
|
812
792
|
case "startTemplateCreation":
|
|
813
|
-
|
|
793
|
+
|
|
814
794
|
//this.getFormData(e);
|
|
815
795
|
break;
|
|
816
796
|
case "moveToTemplates":
|
|
817
|
-
|
|
797
|
+
|
|
818
798
|
this.moveToTemplates();
|
|
819
799
|
break;
|
|
820
800
|
case "validateContent":
|
|
821
|
-
|
|
801
|
+
|
|
822
802
|
this.validateContent(e);
|
|
823
803
|
break;
|
|
824
804
|
default:
|
|
@@ -828,7 +808,7 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
828
808
|
|
|
829
809
|
removeStandAlone() {
|
|
830
810
|
let formData = _.cloneDeep(this.state.formData);
|
|
831
|
-
|
|
811
|
+
|
|
832
812
|
let baseFormData = {};
|
|
833
813
|
const oldBaseKeys = formData[0];
|
|
834
814
|
let baseIndex = -1;
|
|
@@ -871,12 +851,11 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
871
851
|
temp.panes.push(basePane);
|
|
872
852
|
}
|
|
873
853
|
});
|
|
874
|
-
|
|
854
|
+
|
|
875
855
|
this.setState({ schema, loadingStatus: this.state.loadingStatus + 1, formData, tabCount: 1, tabKey: formData.base.tabKey, currentTab: 1 });
|
|
876
856
|
}
|
|
877
857
|
|
|
878
858
|
validateContent = (e) => {
|
|
879
|
-
console.log('posting final validation result', this.state.isFormValid);
|
|
880
859
|
const response = {
|
|
881
860
|
action: "validateContent",
|
|
882
861
|
value: this.state.isFormValid,
|
|
@@ -896,7 +875,7 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
896
875
|
|
|
897
876
|
saveFormData(formData) {
|
|
898
877
|
//Logic to save in db etc
|
|
899
|
-
|
|
878
|
+
|
|
900
879
|
const obj = _.cloneDeep(this.state.editData);
|
|
901
880
|
obj.versions = {
|
|
902
881
|
base: {},
|
|
@@ -907,7 +886,7 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
907
886
|
}
|
|
908
887
|
obj.name = formData['template-name'];
|
|
909
888
|
obj.versions.base = formData.base;
|
|
910
|
-
|
|
889
|
+
|
|
911
890
|
this.props.actions.editTemplate(obj);
|
|
912
891
|
}
|
|
913
892
|
isSmsLoading = () => {
|
|
@@ -917,6 +896,9 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
917
896
|
if (!isLoading) {
|
|
918
897
|
isLoading = this.state.loadingStatus < 3;
|
|
919
898
|
}
|
|
899
|
+
if (isLoading) {
|
|
900
|
+
this.props.creativesContainerActions.hideCreativesContanerLoader();
|
|
901
|
+
}
|
|
920
902
|
return isLoading;
|
|
921
903
|
}
|
|
922
904
|
render() {
|
|
@@ -986,6 +968,7 @@ Edit.propTypes = {
|
|
|
986
968
|
supportedTags: PropTypes.array,
|
|
987
969
|
getDefaultTags: PropTypes.string,
|
|
988
970
|
isLoadingMetaEntities: PropTypes.bool,
|
|
971
|
+
creativesContainerActions: PropTypes.object,
|
|
989
972
|
};
|
|
990
973
|
|
|
991
974
|
const mapStateToProps = createStructuredSelector({
|
|
@@ -1000,6 +983,7 @@ function mapDispatchToProps(dispatch) {
|
|
|
1000
983
|
return {
|
|
1001
984
|
actions: bindActionCreators(actions, dispatch),
|
|
1002
985
|
globalActions: bindActionCreators(globalActions, dispatch),
|
|
986
|
+
creativesContainerActions: bindActionCreators(creativesContainerActions, dispatch),
|
|
1003
987
|
};
|
|
1004
988
|
}
|
|
1005
989
|
|
|
@@ -8,15 +8,13 @@ import PropTypes from 'prop-types';
|
|
|
8
8
|
|
|
9
9
|
import React from 'react';
|
|
10
10
|
import { connect } from 'react-redux';
|
|
11
|
-
import Helmet from 'react-helmet';
|
|
12
11
|
import { FormattedMessage, injectIntl, intlShape } from 'react-intl';
|
|
13
12
|
import { createStructuredSelector } from 'reselect';
|
|
14
13
|
import moment from "moment";
|
|
15
14
|
import _ from 'lodash';
|
|
16
15
|
import { bindActionCreators } from 'redux';
|
|
17
|
-
import { Row, Select, Spin, Dropdown,
|
|
18
|
-
import {
|
|
19
|
-
import {CapButton, CapInput, CapIcon} from '@capillarytech/cap-ui-library';
|
|
16
|
+
import { Row, Select, Spin, Dropdown, Menu, Modal} from 'antd';
|
|
17
|
+
import {CapButton, CapInput, CapIcon, CapSelect, CapPopover} from '@capillarytech/cap-ui-library';
|
|
20
18
|
import { makeSelectTemplates, makeSelectTemplatesResponse } from './selectors';
|
|
21
19
|
import { makeSelectCreate as makeSelectCreateSms} from '../Sms/Create/selectors';
|
|
22
20
|
import { makeSelectCreate as makeSelectCreateMobilePush } from '../MobilePush/Create/selectors';
|
|
@@ -47,7 +45,6 @@ import EmailPreview from '../../components/EmailPreview';
|
|
|
47
45
|
import CreativesContainer from '../CreativesContainer';
|
|
48
46
|
const MenuItem = Menu.Item;
|
|
49
47
|
const Option = Select.Option;
|
|
50
|
-
const BreadcrumbItem = Breadcrumb.Item;
|
|
51
48
|
|
|
52
49
|
export class Templates extends React.Component { // eslint-disable-line react/prefer-stateless-function
|
|
53
50
|
constructor(props) {
|
|
@@ -138,6 +135,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
138
135
|
if (this.state.channel.toLowerCase() === 'wechat' && !_.isEmpty(this.props.Templates.selectedWeChatAccount)) {
|
|
139
136
|
queryParams.wecrmId = this.props.Templates.selectedWeChatAccount.configs.wecrm_app_id;
|
|
140
137
|
queryParams.wecrmToken = this.props.Templates.selectedWeChatAccount.configs.wecrm_token;
|
|
138
|
+
queryParams.originalId = this.props.Templates.selectedWeChatAccount.sourceAccountIdentifier;
|
|
141
139
|
}
|
|
142
140
|
if (this.state.channel.toLowerCase() === "mobilepush" && !_.isEmpty(this.props.Templates.selectedWeChatAccount)) {
|
|
143
141
|
queryParams.accountId = this.props.Templates.selectedWeChatAccount.id;
|
|
@@ -189,6 +187,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
189
187
|
if (this.state.channel.toLowerCase() === 'wechat' && !_.isEmpty(nextProps.Templates.selectedWeChatAccount)) {
|
|
190
188
|
params.wecrmId = nextProps.Templates.selectedWeChatAccount.configs.wecrm_app_id;
|
|
191
189
|
params.wecrmToken = nextProps.Templates.selectedWeChatAccount.configs.wecrm_token;
|
|
190
|
+
params.originalId = nextProps.Templates.selectedWeChatAccount.sourceAccountIdentifier;
|
|
192
191
|
}
|
|
193
192
|
if (this.state.channel.toLowerCase() === "mobilepush" && !_.isEmpty(nextProps.Templates.selectedWeChatAccount)) {
|
|
194
193
|
params.accountId = nextProps.Templates.selectedWeChatAccount.id;
|
|
@@ -200,6 +199,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
200
199
|
if (this.state.channel.toLowerCase() === 'wechat' && nextProps.Templates.selectedWeChatAccount) {
|
|
201
200
|
params.wecrmId = nextProps.Templates.selectedWeChatAccount.configs.wecrm_app_id;
|
|
202
201
|
params.wecrmToken = nextProps.Templates.selectedWeChatAccount.configs.wecrm_token;
|
|
202
|
+
params.originalId = nextProps.Templates.selectedWeChatAccount.sourceAccountIdentifier;
|
|
203
203
|
}
|
|
204
204
|
if (this.state.channel.toLowerCase() === "mobilepush" && nextProps.Templates.selectedWeChatAccount) {
|
|
205
205
|
params.accountId = nextProps.Templates.selectedWeChatAccount.id;
|
|
@@ -220,6 +220,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
220
220
|
this.setState({selectedAccount: selectedAccount.name}, () => {
|
|
221
221
|
params.wecrmId = selectedAccount.configs.wecrm_app_id;
|
|
222
222
|
params.wecrmToken = selectedAccount.configs.wecrm_token;
|
|
223
|
+
params.originalId = selectedAccount.sourceAccountIdentifier;
|
|
223
224
|
nextProps.actions.setWeChatAccount(selectedAccount);
|
|
224
225
|
this.getAllTemplates({params});
|
|
225
226
|
});
|
|
@@ -331,6 +332,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
331
332
|
if (this.state.channel.toLowerCase() === 'wechat') {
|
|
332
333
|
paramsDefault.wecrmId = nextProps.Templates.weCrmAccounts[0].configs.wecrm_app_id;
|
|
333
334
|
paramsDefault.wecrmToken = nextProps.Templates.weCrmAccounts[0].configs.wecrm_token;
|
|
335
|
+
paramsDefault.originalId = nextProps.Templates.weCrmAccounts[0].sourceAccountIdentifier;
|
|
334
336
|
nextProps.actions.setWeChatAccount(nextProps.Templates.weCrmAccounts[0]);
|
|
335
337
|
} else if (this.state.channel.toLowerCase() === 'mobilepush') {
|
|
336
338
|
nextProps.actions.setWeChatAccount(nextProps.Templates.weCrmAccounts[0]);
|
|
@@ -358,10 +360,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
358
360
|
params.wecrmId = this.props.Templates.weCrmAccounts[_.findIndex(this.props.Templates.weCrmAccounts, { name: value})].configs.wecrm_app_id;
|
|
359
361
|
params.wecrmToken = this.props.Templates.weCrmAccounts[_.findIndex(this.props.Templates.weCrmAccounts, { name: value})].configs.wecrm_token;
|
|
360
362
|
this.props.actions.setWeChatAccount(this.props.Templates.weCrmAccounts[_.findIndex(this.props.Templates.weCrmAccounts, { name: value})]);
|
|
363
|
+
params.originalId = this.props.Templates.weCrmAccounts[_.findIndex(this.props.Templates.weCrmAccounts, { name: value})].sourceAccountIdentifier;
|
|
361
364
|
} else if (this.state.channel.toLowerCase() === 'mobilepush') {
|
|
362
365
|
this.props.actions.setWeChatAccount(this.props.Templates.weCrmAccounts[_.findIndex(this.props.Templates.weCrmAccounts, { name: value})]);
|
|
363
366
|
params.accountId = this.props.Templates.weCrmAccounts[_.findIndex(this.props.Templates.weCrmAccounts, { name: value})].id;
|
|
364
367
|
}
|
|
368
|
+
console.log("getAllTemplates params: ", params);
|
|
365
369
|
this.getAllTemplates({params, resetPage: true});
|
|
366
370
|
});
|
|
367
371
|
}
|
|
@@ -371,8 +375,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
371
375
|
getAllTemplates = ({params, getNextPage, resetPage}, resetTemplates) => {
|
|
372
376
|
let queryParams = params;
|
|
373
377
|
let page = this.state.page;
|
|
374
|
-
|
|
375
|
-
|
|
376
378
|
if (resetTemplates) {
|
|
377
379
|
queryParams.name = this.state.searchText;
|
|
378
380
|
queryParams.sortBy = this.state.sortBy;
|
|
@@ -397,6 +399,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
397
399
|
if (this.state.channel.toLowerCase() === 'wechat' && !_.isEmpty(this.props.Templates.selectedWeChatAccount)) {
|
|
398
400
|
queryParams.wecrmId = this.props.Templates.selectedWeChatAccount.configs.wecrm_app_id;
|
|
399
401
|
queryParams.wecrmToken = this.props.Templates.selectedWeChatAccount.configs.wecrm_token;
|
|
402
|
+
queryParams.originalId = this.props.Templates.selectedWeChatAccount.sourceAccountIdentifier;
|
|
400
403
|
}
|
|
401
404
|
if (this.state.channel.toLowerCase() === "mobilepush" && !_.isEmpty(this.props.Templates.selectedWeChatAccount)) {
|
|
402
405
|
queryParams.accountId = this.props.Templates.selectedWeChatAccount.id;
|
|
@@ -744,6 +747,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
744
747
|
if (this.state.channel.toLowerCase() === 'wechat') {
|
|
745
748
|
params.wecrmId = this.props.Templates.selectedWeChatAccount.configs.wecrm_app_id;
|
|
746
749
|
params.wecrmToken = this.props.Templates.selectedWeChatAccount.configs.wecrm_token;
|
|
750
|
+
params.originalId = this.props.Templates.selectedWeChatAccount.sourceAccountIdentifier;
|
|
747
751
|
}
|
|
748
752
|
if (this.state.channel.toLowerCase() === "mobilepush") {
|
|
749
753
|
params.accountId = this.props.Templates.selectedWeChatAccount.id;
|
|
@@ -761,6 +765,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
761
765
|
if (this.state.channel.toLowerCase() === 'wechat') {
|
|
762
766
|
params.wecrmId = this.props.Templates.selectedWeChatAccount.configs.wecrm_app_id;
|
|
763
767
|
params.wecrmToken = this.props.Templates.selectedWeChatAccount.configs.wecrm_token;
|
|
768
|
+
params.originalId = this.props.Templates.selectedWeChatAccount.sourceAccountIdentifier;
|
|
764
769
|
}
|
|
765
770
|
if (this.state.channel.toLowerCase() === "mobilepush") {
|
|
766
771
|
params.accountId = this.props.Templates.selectedWeChatAccount.id;
|
|
@@ -1183,23 +1188,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1183
1188
|
}
|
|
1184
1189
|
|
|
1185
1190
|
render() {
|
|
1186
|
-
let pageHeaderText = '';
|
|
1187
|
-
const moduleName = this.props.location.query.module;
|
|
1188
|
-
if (this.props.location.query.type !== 'embedded') {
|
|
1189
|
-
if (this.state.channel.toUpperCase() === 'WECHAT') {
|
|
1190
|
-
pageHeaderText = this.props.intl.formatMessage(messages.wechatHeader);
|
|
1191
|
-
} else if (this.state.channel.toUpperCase() === 'SMS') {
|
|
1192
|
-
pageHeaderText = this.props.intl.formatMessage(messages.smsHeader);
|
|
1193
|
-
} else if (this.state.channel.toUpperCase() === 'EMAIL') {
|
|
1194
|
-
pageHeaderText = this.props.intl.formatMessage(messages.emailHeader);
|
|
1195
|
-
} else if (this.state.channel.toUpperCase() === 'MOBILEPUSH') {
|
|
1196
|
-
pageHeaderText = this.props.intl.formatMessage(messages.mobilepushHeader);
|
|
1197
|
-
} else if (this.state.channel.toUpperCase() === 'EBILL') {
|
|
1198
|
-
pageHeaderText = this.props.intl.formatMessage(messages.ebillHeader);
|
|
1199
|
-
} else if (this.state.channel.toUpperCase() === 'LINE') {
|
|
1200
|
-
pageHeaderText = this.props.intl.formatMessage(messages.lineHeader);
|
|
1201
|
-
}
|
|
1202
|
-
}
|
|
1203
1191
|
const filterContent = (
|
|
1204
1192
|
<div className="action-container">
|
|
1205
1193
|
<CapInput
|
|
@@ -1242,26 +1230,8 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1242
1230
|
}
|
|
1243
1231
|
});
|
|
1244
1232
|
}
|
|
1245
|
-
let templateText = this.state.channel.toUpperCase() === 'WECHAT' ? this.props.intl.formatMessage(messages.selectWechatHeader) : this.props.intl.formatMessage(messages.selectSmsHeader);
|
|
1246
|
-
|
|
1247
|
-
let titleText = this.state.channel.toUpperCase() === 'SMS' ? this.props.intl.formatMessage(messages.smsChannelTemplatesHeader) : this.props.intl.formatMessage(messages.wechatChannelTemplatesHeader);
|
|
1248
|
-
if (this.state.channel.toUpperCase() === "MOBILEPUSH") {
|
|
1249
|
-
templateText = "Select Mobile Push Template";
|
|
1250
|
-
titleText = "Mobile push";
|
|
1251
|
-
} else if (this.state.channel.toUpperCase() === "EMAIL") {
|
|
1252
|
-
templateText = "Select Email Template";
|
|
1253
|
-
titleText = "Email";
|
|
1254
|
-
} else if (this.state.channel.toUpperCase() === "EBILL") {
|
|
1255
|
-
templateText = "Select Ebill Template";
|
|
1256
|
-
titleText = "Ebill";
|
|
1257
|
-
} else if (this.state.channel.toUpperCase() === "LINE") {
|
|
1258
|
-
templateText = "Select Line Template";
|
|
1259
|
-
titleText = "Line";
|
|
1260
|
-
}
|
|
1261
1233
|
const pageHeader = (
|
|
1262
1234
|
<div>
|
|
1263
|
-
{(this.props.location.query.type !== 'embedded') && `${pageHeaderText}`}
|
|
1264
|
-
{this.props.isFullMode && templateText}
|
|
1265
1235
|
{(this.isEnabledInLibraryModule("showAccountSelection") || (((this.state.channel.toUpperCase() === 'WECHAT' || this.state.channel.toUpperCase() === "MOBILEPUSH") && (this.props.location.query.type !== 'embedded') && !_.isEmpty(this.props.Templates.weCrmAccounts)))) &&
|
|
1266
1236
|
<CapSelect className="selectAccount" onSelect={this.onAccountSelect} value={this.props.Templates.selectedWeChatAccount ? this.props.Templates.selectedWeChatAccount.name : undefined} placeholder={this.props.intl.formatMessage(messages.selectAccount)}>
|
|
1267
1237
|
{accountOptions}
|
|
@@ -1270,7 +1240,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1270
1240
|
);
|
|
1271
1241
|
const pageHeaderDvs = (
|
|
1272
1242
|
<div>
|
|
1273
|
-
{(this.props.location.query.type === 'embedded' && moduleName === 'dvs') ? `${templateText}` : pageHeaderText}
|
|
1274
1243
|
{((this.state.channel.toUpperCase() === 'WECHAT' || this.state.channel.toUpperCase() === "MOBILEPUSH") && (this.props.location.query.type === 'embedded') && !_.isEmpty(this.props.Templates.weCrmAccounts)) &&
|
|
1275
1244
|
<CapSelect className="selectAccount" onSelect={this.onAccountSelect} value={this.props.Templates.selectedWeChatAccount ? this.props.Templates.selectedWeChatAccount.name : undefined} placeholder={this.props.intl.formatMessage(messages.selectAccount)}>
|
|
1276
1245
|
{accountOptions}
|
|
@@ -1409,30 +1378,14 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1409
1378
|
spinning={isLoading}
|
|
1410
1379
|
>
|
|
1411
1380
|
<input type="file" id="filename" style={{ display: 'none'}} accept=".zip, .html, .htm" onChange={(event) => this.handleFileUpload(event, {files: event.target.files})} />
|
|
1412
|
-
|
|
1413
|
-
<Col>
|
|
1414
|
-
{(this.props.isFullMode || this.props.location.query.type !== "embedded") &&
|
|
1415
|
-
<Breadcrumb>
|
|
1416
|
-
<BreadcrumbItem>{this.props.intl.formatMessage(messages.campaigns)}</BreadcrumbItem>
|
|
1417
|
-
<BreadcrumbItem>{this.props.intl.formatMessage(messages.creatives)}</BreadcrumbItem>
|
|
1418
|
-
<BreadcrumbItem>{ this.state.channel }</BreadcrumbItem>
|
|
1419
|
-
</Breadcrumb>
|
|
1420
|
-
}
|
|
1421
|
-
</Col>
|
|
1422
|
-
</Row>
|
|
1381
|
+
|
|
1423
1382
|
<Row className="template-header-container">
|
|
1424
|
-
<div className="template-header">{(this.props.location.query.type === 'embedded'
|
|
1383
|
+
<div className="template-header">{(this.props.location.query.type === 'embedded' ) ? pageHeaderDvs : pageHeader}</div>
|
|
1425
1384
|
</Row>
|
|
1426
1385
|
<Row>
|
|
1427
|
-
<Helmet
|
|
1428
|
-
title={titleText}
|
|
1429
|
-
meta={[
|
|
1430
|
-
{ name: 'description', content: 'Description of Templates' },
|
|
1431
|
-
]}
|
|
1432
|
-
/>
|
|
1433
1386
|
{this.props.renderNewCardGrid && templateList && templateList.length > 0 &&
|
|
1434
1387
|
<Pagination onPageChange={this.onPaginationChange} paginationSelector="pagination-container">
|
|
1435
|
-
{this.props.renderNewCardGrid({templates: this.props.TemplatesList, filterContent, handlers: {handlePreviewClick: this.handlePreviewClick, handleEditClick: this.handleEditClick}})}
|
|
1388
|
+
{this.props.renderNewCardGrid({channel: this.state.channel, templates: this.props.TemplatesList, filterContent, handlers: {handlePreviewClick: this.handlePreviewClick, handleEditClick: this.handleEditClick}})}
|
|
1436
1389
|
</Pagination>
|
|
1437
1390
|
}
|
|
1438
1391
|
{!this.props.renderNewCardGrid && ((templateList && templateList.length > 0) || isSearch) &&
|
|
@@ -1511,7 +1464,6 @@ Templates.propTypes = {
|
|
|
1511
1464
|
TemplatesList: PropTypes.array,
|
|
1512
1465
|
Templates: PropTypes.object,
|
|
1513
1466
|
route: PropTypes.object,
|
|
1514
|
-
router: PropTypes.object,
|
|
1515
1467
|
Create: PropTypes.object,
|
|
1516
1468
|
location: PropTypes.object,
|
|
1517
1469
|
globalActions: PropTypes.object,
|
|
@@ -77,6 +77,7 @@ function templatesReducer(state = initialState, action) {
|
|
|
77
77
|
case types.RESET_TEMPLATE:
|
|
78
78
|
return state
|
|
79
79
|
.set('weCRMtemplates', fromJS([]))
|
|
80
|
+
.set('weChatDefaultTemplate', fromJS([]))
|
|
80
81
|
.set('templates', fromJS([]));
|
|
81
82
|
case types.SET_SELECTED_LAYOUT:
|
|
82
83
|
return state
|