@capillarytech/creatives-library 0.0.8 → 0.1.0

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.
@@ -24,7 +24,7 @@
24
24
 
25
25
  .footer-wrapper {
26
26
  width: 100%;
27
- height: 64px;
27
+ // height: 64px;
28
28
  }
29
29
 
30
30
  .seperator-line{
@@ -30,8 +30,9 @@ class CustomCard extends React.Component { // eslint-disable-line react/prefer-s
30
30
  };
31
31
  }
32
32
 
33
- handleMouseHover() {
34
- this.setState(this.toggleHoverState);
33
+ handleMouseHover(data) {
34
+ console.log('hover mouse data', data);
35
+ this.setState({isHovering: data});
35
36
  this.props.onHover(!this.state.isHovering, this.props.id);
36
37
  }
37
38
 
@@ -48,13 +49,13 @@ class CustomCard extends React.Component { // eslint-disable-line react/prefer-s
48
49
  id={this.props.id}
49
50
  title={this.props.title}
50
51
  style={{ width: this.props.width, height: this.props.height }}
51
- onMouseEnter={this.handleMouseHover}
52
+ onMouseEnter={() => this.handleMouseHover(true)}
52
53
  onClick={this.handleMouseClick}
53
- onMouseLeave={this.handleMouseHover}>
54
+ onMouseLeave={() => this.handleMouseHover(false)}>
54
55
  <div>
55
56
  <div className="content-wrapper">{this.props.content}</div>
56
- {<hr className="seperator-line" />}
57
- <div className="footer-wrapper">{this.props.footer}</div>
57
+ {this.props.footer ? <hr className="seperator-line" /> : ''}
58
+ {this.props.footer ? <div className="footer-wrapper">{this.props.footer}</div> : ''}
58
59
  </div>
59
60
  </Card>
60
61
  );
@@ -39,7 +39,7 @@ class CardGrid extends React.Component { // eslint-disable-line react/prefer-sta
39
39
  <Row gutter={this.props.gutterSize}>
40
40
  { this.props.listItem ? this.props.listItem.map( (item) => (
41
41
  <Col style={{ width: `${100 / this.props.colNumber}%`, paddingBottom: '16px'}} key={item.id} span={parseInt(24 / this.props.colNumber, 10)}>
42
- <CustomCard id={item.id} onHover={this.handleOnItemHover} onClick={this.handleOnItemClick} content={item.content} footer={item.footer} height="312px"></CustomCard>
42
+ <CustomCard id={item.id} onHover={this.handleOnItemHover} onClick={this.handleOnItemClick} content={item.content} footer={item.footer} height={item.footer ? "312px" : "258px"}></CustomCard>
43
43
  </Col>
44
44
  )) : ''}
45
45
  </Row>
@@ -35,8 +35,8 @@ const CKEditorConfig = {
35
35
  toolbarCanCollapse: true,
36
36
  toolbarStartupExpanded: true,
37
37
  uiColor: '#e3e3e3',
38
- width: '100%',
39
- height: '300',
38
+ width: 'calc(100% - 2px)',
39
+ height: 'calc(100vh - 290px)',
40
40
  fullPage: true,
41
41
  htmlEncodeOutput: true,
42
42
  startupFocus: true,
@@ -118,6 +118,9 @@ class Ckeditor extends React.Component { // eslint-disable-line react/prefer-sta
118
118
  this.unmounting = true;
119
119
  if (this.editorInstance) {
120
120
  this.editorInstance.destroy();
121
+ if (window.CKEDITOR && !_.isEmpty(window.CKEDITOR.instances)) {
122
+ window.CKEDITOR.instances = {};
123
+ }
121
124
  }
122
125
  }
123
126
 
@@ -49,7 +49,7 @@ class CustomPopOver extends React.Component { // eslint-disable-line react/prefe
49
49
  this.renderPopoverContent()
50
50
  }
51
51
  >
52
- <p style={{fontFamily: "open-sans", fontWeight: '600', paddingTop: '12px', display: `${this.props.popOverList.length === this.props.excludeList.length ? 'none' : ''}`}}>+ Languages</p>
52
+ <p style={{fontFamily: "open-sans", fontWeight: '600', display: `${this.props.popOverList.length === this.props.excludeList.length ? 'none' : ''}`}}>+ Languages</p>
53
53
  </CapPopover>
54
54
  </div>
55
55
  );
@@ -42,7 +42,7 @@ class Edmeditor extends React.Component { // eslint-disable-line react/prefer-st
42
42
  console.log('current language edm editor loading', this.props.id, this.props.edmSrc);
43
43
  return (
44
44
  this.props.edmSrc ?
45
- (<iframe id={this.props.id} className={this.props.activeClass} src={this.props.edmSrc} height="460" width="100%"></iframe>)
45
+ (<iframe id={this.props.id} className={this.props.activeClass} src={this.props.edmSrc} height="460" width="100%" style={{"height": "calc(100vh - 180px)"}}></iframe>)
46
46
  : 'aaasass'
47
47
  );
48
48
  }
@@ -11,6 +11,9 @@
11
11
  .form-tab-header{
12
12
  display: flex;
13
13
  align-items: center;
14
+ font-family: open-sans, sans-serif !important;
15
+ font-style: normal;
16
+ font-weight: 600;
14
17
  }
15
18
 
16
19
  .ant-tabs-tab{
@@ -414,11 +414,12 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
414
414
  }
415
415
  }
416
416
  console.log('Hello World ', formData, tabCount);
417
- if ((formData.base && formData.base.tabKey && formData.base.tabKey !== '' && !changeDefaultTab) || (this.props.isEdit && formData.base && this.state.tabKey !== formData.base.tabKey)) {
417
+ if ((formData.base && formData.base.tabKey && formData.base.tabKey !== '' && !changeDefaultTab) || (formData.base && this.state.tabKey !== formData.base.tabKey)) {
418
418
  console.log('setting tab key', formData.base.tabKey, this.state.tabKey);
419
419
  if (this.state.currentTab === 1 && !this.props.isNewVersionFlow) {
420
420
  this.setState({tabKey: formData.base.tabKey});
421
421
  } else if (this.props.isNewVersionFlow && this.state.tabKey !== formData[this.state.currentTab - 1].tabKey) {
422
+ console.log('outgoing changing tab key');
422
423
  this.setState({tabKey: formData[this.state.currentTab - 1].tabKey});
423
424
  }
424
425
  }
@@ -427,7 +428,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
427
428
  this.setState({tabKey: formData.base.tabKey});
428
429
  }
429
430
  console.log('form data before adding key', formData);
430
- console.log('outgoing reset final before set', formData);
431
+ console.log('outgoing reset final before set', formData, this.state.tabKey);
431
432
  if (changeDefaultTab) {
432
433
  this.setState({formData}, () => {
433
434
  console.log('outgoing reset set data', formData);
@@ -2759,7 +2760,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
2759
2760
  return result;
2760
2761
  });
2761
2762
  columns.push(
2762
- <Col style={val.colStyle ? val.colStyle : {}} span={val.width}>
2763
+ <Col style={val.colStyle ? val.colStyle : {}} span={val.width} offset={val.offset}>
2763
2764
  <CapPopover
2764
2765
  trigger={val.trigger}
2765
2766
  placement={val.placement}
@@ -2802,6 +2803,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
2802
2803
  width={val.width ? val.width : 1}
2803
2804
  onClick={(data) => this.callChildEvent(data, val, val.submitAction)}
2804
2805
  className={val.className ? val.className : ''}
2806
+ style={val.colStyle ? val.colStyle : {}}
2805
2807
  >
2806
2808
  <i style={val.style ? val.style : {}} className="material-icons">{val.value ? val.value : '&#xE313;'}</i>
2807
2809
  </Col>
@@ -61,9 +61,12 @@ class Sidebar extends React.Component { // eslint-disable-line react/prefer-stat
61
61
  return (<Accordion.Content key={keyValue}>{links}</Accordion.Content>);
62
62
  }
63
63
 
64
- getLinkElement(to, text, value) {
64
+ getLinkElement(to, text, value, isExternal) {
65
65
  const selectedItem = (value && value.trim().toLowerCase() === this.state.activeItem) ? 'selected' : '';
66
66
  if (text.toLowerCase().includes(this.state.searchText.toLowerCase())) {
67
+ if (isExternal) {
68
+ return ((text.toLowerCase().includes(this.state.searchText.toLowerCase())) ? <a key={to} className={`item menu-item ${selectedItem}`} href={to}>{text}</a> : '');
69
+ }
67
70
  return (
68
71
  (text.toLowerCase().includes(this.state.searchText.toLowerCase())) ?
69
72
  <Link to={to} className={`item menu-item ${selectedItem}`} onClick={this.handleItemClick} key={to} title={text}>{text}</Link>
@@ -114,7 +117,7 @@ class Sidebar extends React.Component { // eslint-disable-line react/prefer-stat
114
117
  const accordian = [];
115
118
  accordian.push(this.getAccordionTitle(title));
116
119
  const contentLink = contentItems.map((key) =>
117
- this.getLinkElement(key.link, key.text, key.value),
120
+ this.getLinkElement(key.link, key.text, key.value, key.external),
118
121
  );
119
122
  accordian.push(this.getAccordionContent(contentLink));
120
123
  return accordian;
@@ -227,7 +227,7 @@ export class Cap extends React.Component { // eslint-disable-line react/prefer-s
227
227
  group: this.props.intl.formatMessage(messages.campaignsDashboard),
228
228
  items: [
229
229
  {
230
- link: '../../campaign/index',
230
+ link: '/campaign/index',
231
231
  text: this.props.intl.formatMessage(messages.campaignsHome),
232
232
  value: 'Campaigns Home',
233
233
  external: true,
@@ -81,6 +81,10 @@
81
81
  height: 42px;
82
82
  }
83
83
 
84
+ .ant-tabs-nav.ant-tabs-nav-animated {
85
+ display: flex;
86
+ }
87
+
84
88
  #image-preview-content{
85
89
  .card-footer-wrapper{
86
90
  padding-left: 16px;
@@ -774,9 +774,6 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
774
774
  this.showSubject();
775
775
  }, 0);
776
776
  }
777
- if (nextProps.location.query.module === 'library' && nextProps.isGetFormData) {
778
- this.getFormData();
779
- }
780
777
  if (nextProps.Global.currentOrgDetails && nextProps.Global.currentOrgDetails.basic_details && !_.isEmpty(nextProps.Global.currentOrgDetails.basic_details) && _.isEmpty(this.state.formData)) {
781
778
  const formData = this.initFormData(nextProps);
782
779
  formData['template-version-options'] = [
@@ -845,9 +842,12 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
845
842
  this.setEditData(nextProps.Email.templateDetails);
846
843
  });
847
844
  }
848
- if (this.state.isEdit && nextProps.location.query.module === "library" && !_.isEmpty(nextProps.templateData) && !this.props.params.id) {
845
+ if (this.state.isEdit && nextProps.location.query.module === "library" && !_.isEmpty(nextProps.templateData) && !this.props.params.id && !nextProps.isGetFormData) {
849
846
  this.startTemplateCreation(nextProps.templateData);
850
847
  }
848
+ if (nextProps.location.query.module === 'library' && nextProps.isGetFormData) {
849
+ this.getFormData();
850
+ }
851
851
 
852
852
  if (!_.isEmpty(nextProps.Email.CmsSettings) && !_.isEqual(this.props.Email.CmsSettings, nextProps.Email.CmsSettings)) {
853
853
  const apiLangId = nextProps.Email.CmsSettings.langId;
@@ -945,7 +945,7 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
945
945
  }
946
946
  if (!nextProps.Email.fetchingCmsData && !_.isEqual(nextProps.Email.cmsData, this.props.Email.cmsData)) {
947
947
  const formData = _.cloneDeep(this.state.formData);
948
- if (nextProps.Email.langId) {
948
+ if (nextProps.Email.langId && nextProps.Email.langId !== 'undefined') {
949
949
  console.log('setting template content', nextProps.Email.cmsData, decodeURIComponent(nextProps.Email.cmsData));
950
950
  const langId = nextProps.Email.langId;
951
951
  formData[`${this.state.currentTab - 1}`][langId]['template-content'] = decodeURIComponent(nextProps.Email.cmsData);
@@ -1041,7 +1041,8 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
1041
1041
  }
1042
1042
  this.edmEvent = undefined;
1043
1043
  } else {
1044
- this.resetCkEditorInstance(this.state.currentTab, this.state.formData, true, nextProps.Email.uploadedAssetData, true);
1044
+ this.state.editorInstanse.insertHtml(`<img src='${nextProps.Email.uploadedAssetData.metaInfo.secure_file_path}' alt='Capillary Image'>`);
1045
+ //this.resetCkEditorInstance(this.state.currentTab, this.state.formData, true, nextProps.Email.uploadedAssetData, true);
1045
1046
  }
1046
1047
  this.setState({showImageSelectionBox: false});
1047
1048
  }
@@ -1078,21 +1079,21 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
1078
1079
  //this.resetCkEditorInstance(currentTab, formData);
1079
1080
  }
1080
1081
 
1081
- onChange = (evt, id) => {
1082
+ onChange = (evt) => {
1082
1083
  const formData = _.cloneDeep(this.state.formData);
1083
1084
  console.log('oncontentchange onChange ', evt, evt.editor.getData());
1084
1085
  //if (evt.editor.name.indexOf('editor') === -1) {
1085
- _.forEach(window.CKEDITOR.instances, (winInstance) => {
1086
- const temp = winInstance;
1087
- if (winInstance.name === evt.editor.name) {
1088
- console.log('setting instance name after loading', winInstance, name);
1089
- // setTimeout(() => {
1090
- // //temp.name = id;
1091
- // }, 1000);
1092
- temp.name = id;
1093
- console.log('setting instance name after loading 2', winInstance, name);
1094
- }
1095
- });
1086
+ // _.forEach(window.CKEDITOR.instances, (winInstance) => {
1087
+ // const temp = winInstance;
1088
+ // if (winInstance.name === evt.editor.name) {
1089
+ // console.log('setting instance name after loading', winInstance, name);
1090
+ // setTimeout(() => {
1091
+ // //temp.name = id;
1092
+ // }, 1000);
1093
+ // //temp.name = id;
1094
+ // console.log('setting instance name after loading 2', winInstance, name);
1095
+ // }
1096
+ // });
1096
1097
  //}
1097
1098
  if (!formData[this.state.currentTab - 1][formData[`${this.state.currentTab - 1}`].activeTab].is_drag_drop) {
1098
1099
  formData[`${this.state.currentTab - 1}`][formData[`${this.state.currentTab - 1}`].activeTab][`template-content`] = _.cloneDeep(evt.editor.getData());
@@ -1112,7 +1113,7 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
1112
1113
 
1113
1114
  onTabChange(data, formData) {
1114
1115
  console.log('inside parent ontabchange', data, this.state);
1115
- this.resetCkEditorInstance(data, formData);
1116
+ //this.resetCkEditorInstance(data, formData);
1116
1117
  const schema = _.cloneDeep(this.state.schema);
1117
1118
  const container = schema.containers[`${data - 1}`];
1118
1119
  if (formData[`${data - 1}`][formData[`${data - 1}`].activeTab].is_drag_drop) {
@@ -1150,7 +1151,9 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
1150
1151
  const win = document.getElementById(`edmeditor${(langIndex + 1) > 1 ? (langIndex + 1) : ''}`).contentWindow;
1151
1152
  win.postMessage(msgString, '*');
1152
1153
  } else {
1153
- this.resetCkEditorInstance(currentTab, formData, true, data);
1154
+ console.log('tag', this.state, this.state.editorInstanse);
1155
+ this.state.editorInstanse.insertHtml(`{{${data}}}`);
1156
+ //this.resetCkEditorInstance(currentTab, formData, true, data);
1154
1157
  }
1155
1158
  }
1156
1159
 
@@ -1412,6 +1415,12 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
1412
1415
 
1413
1416
  getEditorInstanse = (instance, id) => {
1414
1417
  console.log('Got editor Instance ', instance, id);
1418
+ window.CKEDITOR.on( 'instanceReady', ( event ) => {
1419
+ event.editor.on( 'focus', () => {
1420
+ console.log( 'focused', event.editor, this );
1421
+ this.setState({editorInstanse: event.editor});
1422
+ });
1423
+ });
1415
1424
  //this.setState({editorInstanse: instance});
1416
1425
  }
1417
1426
 
@@ -1720,7 +1729,7 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
1720
1729
  const schema = _.cloneDeep(this.state.schema);
1721
1730
  schema.containers[this.state.currentTab - 1].panes.splice(val, 1);
1722
1731
  schema.containers[this.state.currentTab - 1].tabBarExtraContent.sections[0].inputFields[0].cols[4].content.sections[0].inputFields[2].cols[0].style = {display: "none"};
1723
- this.resetCkEditorInstance(this.state.currentTab, formData);
1732
+ //this.resetCkEditorInstance(this.state.currentTab, formData);
1724
1733
  this.setState({schema, formData, showModal: false});
1725
1734
  console.log('Schema ', schema, formData, val);
1726
1735
  }
@@ -2024,7 +2033,8 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
2024
2033
  }
2025
2034
  this.edmEvent = undefined;
2026
2035
  } else {
2027
- this.resetCkEditorInstance(this.state.currentTab, this.state.formData, true, data, true);
2036
+ this.state.editorInstanse.insertHtml(`<img src='${data.metaInfo.secure_file_path}' alt='Capillary Image'>`);
2037
+ //this.resetCkEditorInstance(this.state.currentTab, this.state.formData, true, data, true);
2028
2038
  }
2029
2039
  }
2030
2040
  this.setState({ showImageSelectionBox: false });
@@ -2450,6 +2460,7 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
2450
2460
  }
2451
2461
 
2452
2462
  injectEvents = (schema) => {
2463
+ const type = this.props.location.query.type;
2453
2464
  console.log('now injecting events');
2454
2465
  const temp = schema;
2455
2466
  temp.standalone.sections = this.injectSections(temp.standalone.sections);
@@ -2459,43 +2470,49 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
2459
2470
  return tempContainer;
2460
2471
  });
2461
2472
  console.log("Lang Test ", this.props.location.query.isLanguageSupport, (this.props.location.query.isLanguageSupport === false));
2462
- if ( this.props.location.query.type === 'embedded' && ((this.props.location.query.isLanguageSupport === "false" || this.props.location.query.isLanguageSupport === undefined) || this.props.location.query.isLanguageSupport === "true")) {
2463
- const ifLangSupported = this.props.location.query.isLanguageSupport === "true";
2464
- _.forEach(temp.containers, (container) => {
2465
- if (container.isActive) {
2466
- let hideLang = false;
2467
- _.forEach(container.tabBarExtraContent.sections[0].inputFields[0].cols, (containerInputFieldCol) => {
2468
- if (hideLang && !ifLangSupported) {
2469
- const newContainerInputFieldCol = containerInputFieldCol;
2470
- hideLang = false;
2471
- newContainerInputFieldCol.offset = 18;
2472
- } else if (hideLang) {
2473
- const newContainerInputFieldCol = containerInputFieldCol;
2474
- hideLang = false;
2475
- newContainerInputFieldCol.offset = 14;
2476
- }
2477
- if (containerInputFieldCol.id === 'add-language-button' && !ifLangSupported) {
2478
- const newContainerInputFieldCol = containerInputFieldCol;
2479
- newContainerInputFieldCol.colStyle.display = "none";
2480
- hideLang = true;
2481
- } else if (containerInputFieldCol.id === 'add-language-button') {
2482
- hideLang = true;
2483
- }
2484
- if (containerInputFieldCol.id === "mark-final-version-label") {
2485
- const newContainerInputFieldCol = containerInputFieldCol;
2486
- newContainerInputFieldCol.colStyle.display = "none";
2487
- }
2488
- if (containerInputFieldCol.id === "tab-options-popover") {
2489
- const newContainerInputFieldCol = containerInputFieldCol;
2490
- newContainerInputFieldCol.colStyle.display = "none";
2491
- }
2492
- });
2493
- }
2494
- });
2495
- }
2473
+ // if (type !== "embedded" || (type === "embedded" && (this.props.location.query.isLanguageSupport === "false" || (this.props.location.query.isLanguageSupport === undefined || this.props.location.query.isLanguageSupport === "true")))) {
2474
+ const ifLangSupported = this.props.location.query.isLanguageSupport === "true" || type !== "embedded";
2475
+ _.forEach(temp.containers, (container) => {
2476
+ if (container.isActive) {
2477
+ let hideLang = false;
2478
+ _.forEach(container.tabBarExtraContent.sections[0].inputFields[0].cols, (containerInputFieldCol) => {
2479
+ if (hideLang && !ifLangSupported) {
2480
+ const newContainerInputFieldCol = containerInputFieldCol;
2481
+ hideLang = false;
2482
+ newContainerInputFieldCol.offset = 18;
2483
+ } else if (hideLang) {
2484
+ const newContainerInputFieldCol = containerInputFieldCol;
2485
+ hideLang = false;
2486
+ newContainerInputFieldCol.offset = 14;
2487
+ }
2488
+ if (containerInputFieldCol.id === 'add-language-button' && !ifLangSupported) {
2489
+ const newContainerInputFieldCol = containerInputFieldCol;
2490
+ newContainerInputFieldCol.colStyle.display = "none";
2491
+ hideLang = true;
2492
+ } else if (containerInputFieldCol.id === 'add-language-button') {
2493
+ hideLang = true;
2494
+ }
2495
+ if (containerInputFieldCol.id === "mark-final-version-label") {
2496
+ const newContainerInputFieldCol = containerInputFieldCol;
2497
+ newContainerInputFieldCol.colStyle.display = "none";
2498
+ }
2499
+ // if (containerInputFieldCol.id === "tab-options-popover") {
2500
+ // const newContainerInputFieldCol = containerInputFieldCol;
2501
+ // newContainerInputFieldCol.colStyle.display = "none";
2502
+ // }
2503
+ });
2504
+ }
2505
+ });
2506
+ _.forEach(temp.standalone.sections[1].inputFields[0].cols, (inputField) => {
2507
+ if (inputField.id === "template-version") {
2508
+ const iF = inputField;
2509
+ iF.colStyle = {};
2510
+ iF.colStyle.display = "none";
2511
+ }
2512
+ });
2513
+ //}
2496
2514
  console.log('final injected schema', schema);
2497
2515
  this.setState({schema, isSchemaChanged: true}, () => {
2498
- const type = this.props.location.query.type;
2499
2516
  if (type === 'embedded') {
2500
2517
  this.removeStandAlone();
2501
2518
  }
@@ -106,6 +106,13 @@
106
106
  width: 33%;
107
107
  }
108
108
 
109
+ .select-button{
110
+ position: absolute;
111
+ top: 40.33%;
112
+ left: 33.625%;
113
+ width: 33%;
114
+ }
115
+
109
116
  .preview-button{
110
117
  position: absolute;
111
118
  top: 43%;
@@ -862,7 +862,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
862
862
  this.setState({showModal: false});
863
863
  }
864
864
 
865
- populateTemplatesList = (data, blankTemplateRequired) => {
865
+ populateTemplatesList = (data, blankTemplateRequired, layoutSelection) => {
866
866
  if (!data) {
867
867
  return [];
868
868
  }
@@ -953,8 +953,9 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
953
953
  <div className={`sms-text ${this.state.hoveredItem === template._id ? 'sms-text-blurred' : ''}`}>
954
954
 
955
955
  </div>
956
- {template._id === this.state.hoveredItem ? <CapButton onClick={(e) => this.handleEditClick(e, template._id)} className="edit-button" type="secondary">{type === 'embedded' ? this.props.intl.formatMessage(messages.selectButton) : this.props.intl.formatMessage(messages.editButton)}</CapButton> : ''}
957
- {template._id === this.state.hoveredItem ? <CapButton onClick={() => this.handlePreviewClick(template)} className="preview-button" type="cancel">{this.props.intl.formatMessage(messages.previewButton)}</CapButton> : ''}
956
+ {!layoutSelection && template._id === this.state.hoveredItem ? <CapButton onClick={(e) => this.handleEditClick(e, template._id)} className="edit-button" type="secondary">{type === 'embedded' ? this.props.intl.formatMessage(messages.selectButton) : this.props.intl.formatMessage(messages.editButton)}</CapButton> : ''}
957
+ {layoutSelection && template._id === this.state.hoveredItem ? <CapButton onClick={() => this.handleEdmDefaultTemplateSelection(true, template._id)} className="select-button" type="secondary">{type === 'embedded' ? this.props.intl.formatMessage(messages.selectDefaultButton) : this.props.intl.formatMessage(messages.selectDefaultButton)}</CapButton> : ''}
958
+ {!layoutSelection && template._id === this.state.hoveredItem ? <CapButton onClick={() => this.handlePreviewClick(template)} className="preview-button" type="cancel">{this.props.intl.formatMessage(messages.previewButton)}</CapButton> : ''}
958
959
  </div>);
959
960
  } else if (this.state.channel.toLowerCase() === 'mobilepush') {
960
961
  content = this.prepareMobilePushPreviewData(template.versions.base);
@@ -988,37 +989,39 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
988
989
  } else if (template.versions && template.versions.base && template.versions.base.IOS) {
989
990
  availableTemplates = 'iOS';
990
991
  }
991
- temp.footer = (
992
- <div className="footer-container">
993
- <div className="card-title">
994
- <span className="template-name" style={{ fontWeight: `${this.state.channel.toLowerCase() === 'wechat' ? '400' : '600'}` }}>
995
- { template && template.versions && template.versions.history && template.versions.history.length > 1 && this.state.channel.toLowerCase() !== 'mobilepush' && <i style={{fontSize: '16px', margin: '0 8px 0 0', verticalAlign: 'middle'}} className="material-icons">filter_none</i>}
996
- {template.name}
997
- </span>
998
- {this.props.location.query.type !== 'embedded' && <CapPopover
999
- trigger="click"
1000
- content={
1001
- <div className="popover-content">
1002
- {this.state.channel !== 'wechat' && <div className="popover-action-container">
1003
- <span onClick={() => this.duplicateTemplate(template)} className="popover-action" style={{cursor: 'pointer', padding: '8px 0px'}}>{this.props.intl.formatMessage(messages.duplicateButton)}</span>
1004
- </div>}
1005
- <div className="popover-action-container">
1006
- <span onClick={() => this.toggleDeleteTemplateModal(template)} className="popover-action" style={{cursor: 'pointer', padding: '8px 0px'}}>{this.state.channel !== 'wechat' ? this.props.intl.formatMessage(messages.deleteButton) : this.props.intl.formatMessage(messages.unMapButton)}</span>
992
+ if (!layoutSelection) {
993
+ temp.footer = (
994
+ <div className="footer-container">
995
+ <div className="card-title">
996
+ <span className="template-name" style={{ fontWeight: `${this.state.channel.toLowerCase() === 'wechat' ? '400' : '600'}` }}>
997
+ { template && template.versions && template.versions.history && template.versions.history.length > 1 && this.state.channel.toLowerCase() !== 'mobilepush' && <i style={{fontSize: '16px', margin: '0 8px 0 0', verticalAlign: 'middle'}} className="material-icons">filter_none</i>}
998
+ {template.name}
999
+ </span>
1000
+ {this.props.location.query.type !== 'embedded' && <CapPopover
1001
+ trigger="click"
1002
+ content={
1003
+ <div className="popover-content">
1004
+ {this.state.channel !== 'wechat' && <div className="popover-action-container">
1005
+ <span onClick={() => this.duplicateTemplate(template)} className="popover-action" style={{cursor: 'pointer', padding: '8px 0px'}}>{this.props.intl.formatMessage(messages.duplicateButton)}</span>
1006
+ </div>}
1007
+ <div className="popover-action-container">
1008
+ <span onClick={() => this.toggleDeleteTemplateModal(template)} className="popover-action" style={{cursor: 'pointer', padding: '8px 0px'}}>{this.state.channel !== 'wechat' ? this.props.intl.formatMessage(messages.deleteButton) : this.props.intl.formatMessage(messages.unMapButton)}</span>
1009
+ </div>
1007
1010
  </div>
1008
- </div>
1009
- }
1010
- placement="bottomRight"
1011
- >
1012
- <i className="material-icons options-icon">&#xE5D4;</i>
1013
- </CapPopover>}
1011
+ }
1012
+ placement="bottomRight"
1013
+ >
1014
+ <i className="material-icons options-icon">&#xE5D4;</i>
1015
+ </CapPopover>}
1016
+ </div>
1017
+ {this.state.channel.toLowerCase() === "mobilepush" ?
1018
+ <p className="card-detail">{availableTemplates}</p>
1019
+ :
1020
+ <p className="card-detail">{this.props.intl.formatMessage(messages.uploadedAt)}: {updateDateTime}</p>
1021
+ }
1014
1022
  </div>
1015
- {this.state.channel.toLowerCase() === "mobilepush" ?
1016
- <p className="card-detail">{availableTemplates}</p>
1017
- :
1018
- <p className="card-detail">{this.props.intl.formatMessage(messages.uploadedAt)}: {updateDateTime}</p>
1019
- }
1020
- </div>
1021
- );
1023
+ );
1024
+ }
1022
1025
  items.push(temp);
1023
1026
  return true;
1024
1027
  });
@@ -1261,7 +1264,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1261
1264
  const cmsTemplateSelectionContent = (
1262
1265
  <CardGrid
1263
1266
  className={""}
1264
- listItem={this.populateTemplatesList(this.props.Templates.cmsTemplates, false)}
1267
+ listItem={this.populateTemplatesList(this.props.Templates.cmsTemplates, false, true)}
1265
1268
  // filterContent={filterContent}
1266
1269
  onHoverItem={this.handleOnHoverItem}
1267
1270
  onItemClick={this.handleEdmDefaultTemplateSelection}
@@ -1346,7 +1349,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1346
1349
  updatedByName={commonUtil.getUserNameById(parseInt(this.state.previewTemplate.updatedBy, 10), commonUtil.getMergedUserList(this.props.Templates.userList))}
1347
1350
  />}
1348
1351
  <SlideBox
1349
- header={(<h3>{this.props.intl.formatMessage(messages.templateSelection)}</h3>)}
1352
+ header={(<h3>{this.props.intl.formatMessage(messages.layoutSelection)}</h3>)}
1350
1353
  width={60}
1351
1354
  content={cmsTemplateSelectionContent}
1352
1355
  show={this.state.showEdmEmailTemplates}
@@ -206,6 +206,10 @@ export default defineMessages({
206
206
  id: 'app.containers.Templates.templateSelection',
207
207
  defaultMessage: 'Template Selection',
208
208
  },
209
+ layoutSelection: {
210
+ id: 'app.containers.Templates.layoutSelection',
211
+ defaultMessage: 'Select Layout',
212
+ },
209
213
  textTemplate: {
210
214
  id: 'app.containers.Templates.textTemplate',
211
215
  defaultMessage: 'Text',
@@ -214,4 +218,8 @@ export default defineMessages({
214
218
  id: 'app.containers.Templates.imageTemplate',
215
219
  defaultMessage: 'Image',
216
220
  },
221
+ selectDefaultButton: {
222
+ id: 'app.containers.Templates.selectDefaultButton',
223
+ defaultMessage: 'Select',
224
+ },
217
225
  });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@capillarytech/creatives-library",
3
3
  "author": "meharaj",
4
- "version": "0.0.8",
4
+ "version": "0.1.0",
5
5
  "description": "Capillary creatives ui",
6
6
  "main": "./index.js",
7
7
  "module": "./index.es.js",
@@ -303,6 +303,7 @@
303
303
  "app.containers.Templates.header": "This is Templates container !",
304
304
  "app.containers.Templates.imageTemplate": "Image",
305
305
  "app.containers.Templates.invalidUploadFileError": "File cannot be uploaded. Please select another file with valid file format.",
306
+ "app.containers.Templates.layoutSelection": "Select Layout",
306
307
  "app.containers.Templates.mapTemplate": "Map Template",
307
308
  "app.containers.Templates.mobilepushHeader": "Mobile Push",
308
309
  "app.containers.Templates.mostRecentOption": "Most Recent",
@@ -314,6 +315,7 @@
314
315
  "app.containers.Templates.searchText": "Search",
315
316
  "app.containers.Templates.selectAccount": "Select Account",
316
317
  "app.containers.Templates.selectButton": "Select",
318
+ "app.containers.Templates.selectDefaultButton": "Select",
317
319
  "app.containers.Templates.selectSmsHeader": "Select SMS Template",
318
320
  "app.containers.Templates.selectWechatHeader": "Select WECHAT Template",
319
321
  "app.containers.Templates.smsChannelTemplatesHeader": "SMS Templates",
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "app.components.BreadCrumbs.header": "",
3
3
  "app.components.CapTagList.Cancel": "取消",
4
- "app.components.CapTagList.Ok": "",
5
- "app.components.CapTagList.dynamic_days_before_expiry": "",
6
- "app.components.CapTagList.numberOfDaysBeforeExpiry": "",
4
+ "app.components.CapTagList.Ok": "OK",
5
+ "app.components.CapTagList.dynamic_days_before_expiry": "到期前(动态)天数",
6
+ "app.components.CapTagList.numberOfDaysBeforeExpiry": "到期前......天",
7
7
  "app.components.Ckeditor.header": "",
8
8
  "app.components.CustomPopOver.header": "",
9
9
  "app.components.DateRange.header": "",
@@ -12,14 +12,14 @@
12
12
  "app.components.EmailPreview.uploadedBy": "",
13
13
  "app.components.Footer.header": "",
14
14
  "app.components.FormBuilder.header": "",
15
- "app.components.ImagePreview.loadingImage": "",
15
+ "app.components.ImagePreview.loadingImage": "加载图片",
16
16
  "app.components.NotFoundPage.header": "",
17
17
  "app.components.PageHeader.header": "",
18
18
  "app.components.PreviewSideBar.duplicate": "重复",
19
19
  "app.components.PreviewSideBar.edit": "编辑",
20
20
  "app.components.PreviewSideBar.header": "",
21
21
  "app.components.PreviewSideBar.lastModified": "最后修改于",
22
- "app.components.PreviewSideBar.select": "",
22
+ "app.components.PreviewSideBar.select": "选择",
23
23
  "app.components.PreviewSideBar.uploadedBy": "最后修改人",
24
24
  "app.components.Sidebar.creatives": "广告创意",
25
25
  "app.components.Sidebar.input.placeholder": "搜索",
@@ -31,12 +31,12 @@
31
31
  "app.components.TestPage.header": "",
32
32
  "app.components.Toastr.header": "",
33
33
  "app.components.ToastrMessage.header": "",
34
- "app.components.TopBar.brand.dropdown": "你好 ",
34
+ "app.components.TopBar.brand.dropdown": "你好",
35
35
  "app.containers.Assets.Gallery.alphabetically": "字母排序",
36
- "app.containers.Assets.Gallery.assetDeleteFailed": "资源删除失败",
37
- "app.containers.Assets.Gallery.assetDeleteSuccess": "资源删除成功",
38
- "app.containers.Assets.Gallery.assetUploadFailed": "资源上传失败",
39
- "app.containers.Assets.Gallery.assetUploadSuccess": "资源上传成功",
36
+ "app.containers.Assets.Gallery.assetDeleteFailed": "图片删除失败",
37
+ "app.containers.Assets.Gallery.assetDeleteSuccess": "图片删除成功",
38
+ "app.containers.Assets.Gallery.assetUploadFailed": "图片上传失败",
39
+ "app.containers.Assets.Gallery.assetUploadSuccess": "图片上传成功",
40
40
  "app.containers.Assets.Gallery.backToGallery": "返回画廊",
41
41
  "app.containers.Assets.Gallery.delete": "删除",
42
42
  "app.containers.Assets.Gallery.dimensions": "像素",
@@ -56,43 +56,43 @@
56
56
  "app.containers.Create.deleteLabel": "删除",
57
57
  "app.containers.Create.discardChangesButton": "取消修改",
58
58
  "app.containers.Create.duplicateLabel": "重复",
59
- "app.containers.Create.emptyTemplateErrorMessage": "模板名称不能为空",
59
+ "app.containers.Create.emptyTemplateErrorMessage": "请提供模板名称",
60
60
  "app.containers.Create.markFinalVersionLabel": "标记为最终版本",
61
61
  "app.containers.Create.messageLabel": "信息",
62
62
  "app.containers.Create.newVersionLabel": "新版本",
63
63
  "app.containers.Create.renameLabel": "重新命名",
64
64
  "app.containers.Create.saveButton": "保存",
65
65
  "app.containers.Create.saveTemplateLoader": "报错模板",
66
- "app.containers.Create.smsEditorPlaceholder": "导入SMS模板内容",
66
+ "app.containers.Create.smsEditorPlaceholder": "请输入消息内容",
67
67
  "app.containers.Create.somethingWentWrong": "",
68
- "app.containers.Create.tagsErrorMessage": "模板内容中有不支持的或不存在的标签",
68
+ "app.containers.Create.tagsErrorMessage": "请检查缺失/不支持的标签内容",
69
69
  "app.containers.Create.tagsLabel": "标签",
70
70
  "app.containers.Create.templateNamePlaceHolder": "输入模板名称",
71
- "app.containers.Create.unicodeErrorMessage": "请检查你确定要使用Unicode字符",
71
+ "app.containers.Create.unicodeErrorMessage": "请确认是否使用Unicode字符",
72
72
  "app.containers.Create.unicodeLabel": "允许unicode字符",
73
73
  "app.containers.Create.versionLabel": "版本",
74
74
  "app.containers.Dashboard.header": "仪表板",
75
- "app.containers.Ebill.Cancel": "",
76
- "app.containers.Ebill.Preview": "",
77
- "app.containers.Ebill.Save": "",
78
- "app.containers.Ebill.campaigns": "",
79
- "app.containers.Ebill.creatives": "",
80
- "app.containers.Ebill.ebill": "",
81
- "app.containers.Ebill.ebillCreateSuccess": "",
82
- "app.containers.Ebill.ebillEditSuccess": "",
83
- "app.containers.Ebill.ebillPreview": "",
84
- "app.containers.Ebill.emptyTemplateErrorMessage": "",
85
- "app.containers.Ebill.enterTemplateName": "",
86
- "app.containers.Ebill.loading": "",
87
- "app.containers.Ebill.newVersionLabel": "",
88
- "app.containers.Ebill.somethingWentWrong": "",
89
- "app.containers.Ebill.tagsErrorMessage": "",
90
- "app.containers.Ebill.tagsLabel": "",
75
+ "app.containers.Ebill.Cancel": "取消",
76
+ "app.containers.Ebill.Preview": "预览",
77
+ "app.containers.Ebill.Save": "保存",
78
+ "app.containers.Ebill.campaigns": "活动",
79
+ "app.containers.Ebill.creatives": "活动模板",
80
+ "app.containers.Ebill.ebill": "电子账单",
81
+ "app.containers.Ebill.ebillCreateSuccess": "电子账单模板创建成功",
82
+ "app.containers.Ebill.ebillEditSuccess": "电子账单模板编辑成功",
83
+ "app.containers.Ebill.ebillPreview": "电子账单预览",
84
+ "app.containers.Ebill.emptyTemplateErrorMessage": "请提供模板名称",
85
+ "app.containers.Ebill.enterTemplateName": "输入模板名称",
86
+ "app.containers.Ebill.loading": "加载中...",
87
+ "app.containers.Ebill.newVersionLabel": "新模板",
88
+ "app.containers.Ebill.somethingWentWrong": "系统报错",
89
+ "app.containers.Ebill.tagsErrorMessage": "请检查缺失/不支持的标签内容",
90
+ "app.containers.Ebill.tagsLabel": "标签",
91
91
  "app.containers.Edit.cancelButton": "取消",
92
92
  "app.containers.Edit.deleteLabel": "删除",
93
93
  "app.containers.Edit.discardChangesButton": "取消修改",
94
94
  "app.containers.Edit.duplicateLabel": "重复",
95
- "app.containers.Edit.emptyTemplateErrorMessage": "模板名称不能为空",
95
+ "app.containers.Edit.emptyTemplateErrorMessage": "请提供模板名称",
96
96
  "app.containers.Edit.getTemplateDetailsLoader": "获取模板详情",
97
97
  "app.containers.Edit.markFinalVersionLabel": "标记为最终版本",
98
98
  "app.containers.Edit.messageLabel": "信息",
@@ -100,213 +100,214 @@
100
100
  "app.containers.Edit.renameLabel": "重新命名",
101
101
  "app.containers.Edit.saveButton": "保存",
102
102
  "app.containers.Edit.saveTemplateLoader": "报错模板",
103
- "app.containers.Edit.smsEditorPlaceholder": "导入SMS模板内容",
103
+ "app.containers.Edit.smsEditorPlaceholder": "请输入消息内容",
104
104
  "app.containers.Edit.somethingWentWrong": "",
105
- "app.containers.Edit.tagsErrorMessage": "模板内容中有不支持的或不存在的标签",
105
+ "app.containers.Edit.tagsErrorMessage": "请检查缺失/不支持的标签内容",
106
106
  "app.containers.Edit.tagsLabel": "标签",
107
107
  "app.containers.Edit.templateNamePlaceHolder": "输入模板名称",
108
108
  "app.containers.Edit.unicodeErrorMessage": "请检查你确定要使用Unicode字符",
109
109
  "app.containers.Edit.unicodeLabel": "允许unicode字符",
110
110
  "app.containers.Edit.versionLabel": "版本",
111
- "app.containers.Email.Campaigns": "",
112
- "app.containers.Email.Cancel": "",
113
- "app.containers.Email.Creatives": "",
114
- "app.containers.Email.Preview": "",
115
- "app.containers.Email.Save": "",
116
- "app.containers.Email.Subject": "",
117
- "app.containers.Email.Tags": "",
118
- "app.containers.Email.alphabetically": "",
119
- "app.containers.Email.alphabeticallyOption": "",
120
- "app.containers.Email.assetUploadFailed": "",
121
- "app.containers.Email.blankTemplate": "",
122
- "app.containers.Email.cancel": "",
123
- "app.containers.Email.createHeading": "",
124
- "app.containers.Email.delete": "",
125
- "app.containers.Email.deleteLanguage": "",
126
- "app.containers.Email.deleteLanguageConfirmation": "",
127
- "app.containers.Email.deleteVersion": "",
128
- "app.containers.Email.deleteVersionConfirm": "",
129
- "app.containers.Email.dupicateVersion": "",
130
- "app.containers.Email.editButton": "",
131
- "app.containers.Email.editHeading": "",
132
- "app.containers.Email.edmSwitchAcceptText": "",
133
- "app.containers.Email.edmSwtichMessage": "",
134
- "app.containers.Email.emailCreateSuccess": "",
135
- "app.containers.Email.emailEditSuccess": "",
136
- "app.containers.Email.emailPreview": "",
137
- "app.containers.Email.emailSubject": "",
138
- "app.containers.Email.emailSubjectNotEmplty": "",
139
- "app.containers.Email.emailText": "",
140
- "app.containers.Email.imageSelection": "",
141
- "app.containers.Email.insertImage": "",
142
- "app.containers.Email.markAsFinal": "",
143
- "app.containers.Email.moreThanFiveVersionNotAllowed": "",
144
- "app.containers.Email.mostRecent": "",
145
- "app.containers.Email.mostRecentOption": "",
146
- "app.containers.Email.preview": "",
147
- "app.containers.Email.previewButton": "",
148
- "app.containers.Email.saveTemplateLoader": "",
149
- "app.containers.Email.searchText": "",
150
- "app.containers.Email.select": "",
151
- "app.containers.Email.selectButton": "",
152
- "app.containers.Email.somethingWentWrong": "",
153
- "app.containers.Email.sortBy": "",
154
- "app.containers.Email.sortby": "",
155
- "app.containers.Email.switchEditor": "",
156
- "app.containers.Email.templateLoader": "",
157
- "app.containers.Email.templateMarkedFinalSuccess": "",
158
- "app.containers.Email.templateNameNotEmpty": "",
159
- "app.containers.Email.templateNamePlaceholder": "",
160
- "app.containers.Email.upload": "",
161
- "app.containers.Email.uploadSizeError": "",
162
- "app.containers.Email.uploadedAt": "",
163
- "app.containers.Email.uploadedBy": "",
164
- "app.containers.Email.uploadingImage": "",
165
- "app.containers.Email.yes": "",
111
+ "app.containers.Email.Campaigns": "活动",
112
+ "app.containers.Email.Cancel": "取消",
113
+ "app.containers.Email.Creatives": "活动模板",
114
+ "app.containers.Email.Preview": "预览",
115
+ "app.containers.Email.Save": "保存",
116
+ "app.containers.Email.Subject": "活动主题",
117
+ "app.containers.Email.Tags": "标签",
118
+ "app.containers.Email.alphabetically": "按字母顺序排列",
119
+ "app.containers.Email.alphabeticallyOption": "按字母顺序排列",
120
+ "app.containers.Email.assetUploadFailed": "图片上传失败",
121
+ "app.containers.Email.blankTemplate": "空白模板",
122
+ "app.containers.Email.cancel": "取消",
123
+ "app.containers.Email.createHeading": "创建邮箱模板",
124
+ "app.containers.Email.delete": "删除",
125
+ "app.containers.Email.deleteLanguage": "删除语言",
126
+ "app.containers.Email.deleteLanguageConfirmation": "你是否想删除此语言?",
127
+ "app.containers.Email.deleteVersion": "删除模板",
128
+ "app.containers.Email.deleteVersionConfirm": "你是否想删除此模板?",
129
+ "app.containers.Email.dupicateVersion": "复制模板",
130
+ "app.containers.Email.editButton": "编辑",
131
+ "app.containers.Email.editHeading": "编辑邮箱模板",
132
+ "app.containers.Email.edmSwitchAcceptText": "已理解此操作无法恢复",
133
+ "app.containers.Email.edmSwtichMessage": "当选择使用HTML语言编辑时,邮箱模板设计快捷操作,如:拖拉操作将不再适用此模板",
134
+ "app.containers.Email.emailCreateSuccess": "邮箱模板创建成功",
135
+ "app.containers.Email.emailEditSuccess": "邮箱模板编辑成功",
136
+ "app.containers.Email.emailPreview": "邮件预览",
137
+ "app.containers.Email.emailSubject": "输入邮件主题",
138
+ "app.containers.Email.emailSubjectNotEmplty": "电子邮件主题不能为空值",
139
+ "app.containers.Email.emailText": "电子邮件",
140
+ "app.containers.Email.imageSelection": "选择图片",
141
+ "app.containers.Email.insertImage": "插入图片",
142
+ "app.containers.Email.markAsFinal": "标为终版",
143
+ "app.containers.Email.moreThanFiveVersionNotAllowed": "最多创建5个模板",
144
+ "app.containers.Email.mostRecent": "最近一次",
145
+ "app.containers.Email.mostRecentOption": "最近一次",
146
+ "app.containers.Email.preview": "预览",
147
+ "app.containers.Email.previewButton": "预览",
148
+ "app.containers.Email.saveTemplateLoader": "保存模板",
149
+ "app.containers.Email.searchText": "查找",
150
+ "app.containers.Email.select": "选择",
151
+ "app.containers.Email.selectButton": "选择",
152
+ "app.containers.Email.somethingWentWrong": "系统报错",
153
+ "app.containers.Email.sortBy": "排序方式",
154
+ "app.containers.Email.sortby": "排序方式",
155
+ "app.containers.Email.switchEditor": "切换编辑器",
156
+ "app.containers.Email.templateLoader": "加载模板...",
157
+ "app.containers.Email.templateMarkedFinalSuccess": "成功将模板标记为终版",
158
+ "app.containers.Email.templateNameNotEmpty": "请提供模板名称",
159
+ "app.containers.Email.templateNamePlaceholder": "输入模板名称",
160
+ "app.containers.Email.upload": "上传图片",
161
+ "app.containers.Email.uploadSizeError": "文档太大无法上传.请上传不超过5MB的文档",
162
+ "app.containers.Email.uploadedAt": "已修改",
163
+ "app.containers.Email.uploadedBy": "上传人",
164
+ "app.containers.Email.uploadingImage": "上传图片...",
165
+ "app.containers.Email.yes": "",
166
166
  "app.containers.Login.header": "",
167
167
  "app.containers.Login.invalidCredential": "无效的用户名或密码",
168
168
  "app.containers.Login.pageTitle": "登录",
169
- "app.containers.MobilePush.Create.Android": "",
170
- "app.containers.MobilePush.Create.Campaigns": "",
171
- "app.containers.MobilePush.Create.Creatives": "",
172
- "app.containers.MobilePush.Create.Image": "",
173
- "app.containers.MobilePush.Create.ImageUploadLabel": "",
174
- "app.containers.MobilePush.Create.Tags": "",
175
- "app.containers.MobilePush.Create.accountId": "",
176
- "app.containers.MobilePush.Create.addAnotherCTA": "",
177
- "app.containers.MobilePush.Create.addPrimaryCTA": "",
178
- "app.containers.MobilePush.Create.addSecondaryCTA": "",
179
- "app.containers.MobilePush.Create.button1": "",
180
- "app.containers.MobilePush.Create.button2": "",
181
- "app.containers.MobilePush.Create.cancel": "",
182
- "app.containers.MobilePush.Create.copyFromAndroid": "",
183
- "app.containers.MobilePush.Create.copyFromIos": "",
184
- "app.containers.MobilePush.Create.ctaLabelCantEmpty": "",
185
- "app.containers.MobilePush.Create.deleteSecondCTAFirst": "",
186
- "app.containers.MobilePush.Create.discardChanges": "",
187
- "app.containers.MobilePush.Create.enterCTALabel": "",
188
- "app.containers.MobilePush.Create.enterTemplateName": "",
189
- "app.containers.MobilePush.Create.enterTemplateNameImportant": "",
190
- "app.containers.MobilePush.Create.externalLink": "",
191
- "app.containers.MobilePush.Create.externalLinkCantEmpty": "",
192
- "app.containers.MobilePush.Create.goBackConfirmation": "",
193
- "app.containers.MobilePush.Create.iOS": "",
194
- "app.containers.MobilePush.Create.inputMobilePushTemplateContent": "",
195
- "app.containers.MobilePush.Create.maxUploadFileSize": "",
196
- "app.containers.MobilePush.Create.message": "",
197
- "app.containers.MobilePush.Create.messageHasUnsupportedTag": "",
198
- "app.containers.MobilePush.Create.messageLabel": "",
199
- "app.containers.MobilePush.Create.messageTitleWithUnsupportedTag": "",
200
- "app.containers.MobilePush.Create.mobilePush": "",
201
- "app.containers.MobilePush.Create.nameAndDescription": "",
202
- "app.containers.MobilePush.Create.pleaseUploadImage": "",
203
- "app.containers.MobilePush.Create.primaryCTA": "",
204
- "app.containers.MobilePush.Create.save": "",
205
- "app.containers.MobilePush.Create.secondaryCTA": "",
206
- "app.containers.MobilePush.Create.selectADeeplink": "",
207
- "app.containers.MobilePush.Create.selectDeepLink": "",
208
- "app.containers.MobilePush.Create.selectDeeplink": "",
209
- "app.containers.MobilePush.Create.selectLinkType": "",
210
- "app.containers.MobilePush.Create.selectMobilePushAccount": "",
211
- "app.containers.MobilePush.Create.selectMobilePushTemplate": "",
212
- "app.containers.MobilePush.Create.somethingWentWrong": "",
213
- "app.containers.MobilePush.Create.template": "",
214
- "app.containers.MobilePush.Create.templateCantEmpty": "",
215
- "app.containers.MobilePush.Create.templateCreatedSuccessfully": "",
216
- "app.containers.MobilePush.Create.templateNameNotEmpty": "",
217
- "app.containers.MobilePush.Create.title": "",
218
- "app.containers.MobilePush.Create.titleHasUnsupportedTag": "",
219
- "app.containers.MobilePush.Create.titleLabel": "",
220
- "app.containers.MobilePush.Create.titleNameInvalid": "",
221
- "app.containers.MobilePush.Create.uploadFileSizeError": "",
222
- "app.containers.MobilePush.Create.uploadImage": "",
223
- "app.containers.MobilePush.Create.uploadingImage": "",
224
- "app.containers.MobilePush.Create.valueCantEmpty": "",
225
- "app.containers.MobilePush.Edit.Android": "",
226
- "app.containers.MobilePush.Edit.Campaigns": "",
227
- "app.containers.MobilePush.Edit.Creatives": "",
228
- "app.containers.MobilePush.Edit.Image": "",
229
- "app.containers.MobilePush.Edit.ImageUploadLabel": "",
230
- "app.containers.MobilePush.Edit.Tags": "",
231
- "app.containers.MobilePush.Edit.accountId": "",
232
- "app.containers.MobilePush.Edit.addAnotherCTA": "",
233
- "app.containers.MobilePush.Edit.addPrimaryCTA": "",
234
- "app.containers.MobilePush.Edit.addSecondaryCTA": "",
235
- "app.containers.MobilePush.Edit.androidTemplateNotConfigured": "",
236
- "app.containers.MobilePush.Edit.button1": "",
237
- "app.containers.MobilePush.Edit.button2": "",
238
- "app.containers.MobilePush.Edit.cancel": "",
239
- "app.containers.MobilePush.Edit.copyFromAndroid": "",
240
- "app.containers.MobilePush.Edit.copyFromIos": "",
241
- "app.containers.MobilePush.Edit.ctaLabelCantEmpty": "",
242
- "app.containers.MobilePush.Edit.deleteSecondCTAFirst": "",
243
- "app.containers.MobilePush.Edit.discardChanges": "",
244
- "app.containers.MobilePush.Edit.enterCTALabel": "",
245
- "app.containers.MobilePush.Edit.enterTemplateName": "",
246
- "app.containers.MobilePush.Edit.enterTemplateNameImportant": "",
247
- "app.containers.MobilePush.Edit.externalLink": "",
248
- "app.containers.MobilePush.Edit.externalLinkCantEmpty": "",
249
- "app.containers.MobilePush.Edit.externalLinkCantEmpty1": "",
250
- "app.containers.MobilePush.Edit.goBackConfirmation": "",
251
- "app.containers.MobilePush.Edit.iOS": "",
252
- "app.containers.MobilePush.Edit.inputMobilePushTemplateContent": "",
253
- "app.containers.MobilePush.Edit.iosTemplateNotConfigured": "",
254
- "app.containers.MobilePush.Edit.maxUploadFileSize": "",
255
- "app.containers.MobilePush.Edit.message": "",
256
- "app.containers.MobilePush.Edit.messageHasUnsupportedTag": "",
257
- "app.containers.MobilePush.Edit.messageLabel": "",
258
- "app.containers.MobilePush.Edit.messageTitleWithUnsupportedTag": "",
259
- "app.containers.MobilePush.Edit.mobilePush": "",
260
- "app.containers.MobilePush.Edit.nameAndDescription": "",
261
- "app.containers.MobilePush.Edit.pleaseUploadImage": "",
262
- "app.containers.MobilePush.Edit.primaryCTA": "",
263
- "app.containers.MobilePush.Edit.save": "",
264
- "app.containers.MobilePush.Edit.secondaryCTA": "",
265
- "app.containers.MobilePush.Edit.selectADeeplink": "",
266
- "app.containers.MobilePush.Edit.selectDeepLink": "",
267
- "app.containers.MobilePush.Edit.selectDeeplink": "",
268
- "app.containers.MobilePush.Edit.selectLinkType": "",
269
- "app.containers.MobilePush.Edit.selectMobilePushAccount": "",
270
- "app.containers.MobilePush.Edit.selectMobilePushTemplate": "",
271
- "app.containers.MobilePush.Edit.somethingWentWrong": "",
272
- "app.containers.MobilePush.Edit.template": "",
273
- "app.containers.MobilePush.Edit.templateCantEmpty": "",
274
- "app.containers.MobilePush.Edit.templateEditedSuccessfully": "",
275
- "app.containers.MobilePush.Edit.templateNameNotEmpty": "",
276
- "app.containers.MobilePush.Edit.templateNotConfigured": "",
277
- "app.containers.MobilePush.Edit.title": "",
278
- "app.containers.MobilePush.Edit.titleHasUnsupportedTag": "",
279
- "app.containers.MobilePush.Edit.titleLabel": "",
280
- "app.containers.MobilePush.Edit.titleNameInvalid": "",
281
- "app.containers.MobilePush.Edit.uploadFileSizeError": "",
282
- "app.containers.MobilePush.Edit.uploadImage": "",
283
- "app.containers.MobilePush.Edit.uploadingImage": "",
284
- "app.containers.MobilePush.Edit.valueCantEmpty": "",
169
+ "app.containers.MobilePush.Create.Android": "Android",
170
+ "app.containers.MobilePush.Create.Campaigns": "活动",
171
+ "app.containers.MobilePush.Create.Creatives": "活动模板",
172
+ "app.containers.MobilePush.Create.Image": "图片",
173
+ "app.containers.MobilePush.Create.ImageUploadLabel": "上传图片",
174
+ "app.containers.MobilePush.Create.Tags": "标签",
175
+ "app.containers.MobilePush.Create.accountId": "客户名称",
176
+ "app.containers.MobilePush.Create.addAnotherCTA": "添加其它CTA",
177
+ "app.containers.MobilePush.Create.addPrimaryCTA": "添加一级CTA",
178
+ "app.containers.MobilePush.Create.addSecondaryCTA": "添加二级CTA",
179
+ "app.containers.MobilePush.Create.button1": "按钮1",
180
+ "app.containers.MobilePush.Create.button2": "按钮2",
181
+ "app.containers.MobilePush.Create.cancel": "取消",
182
+ "app.containers.MobilePush.Create.copyFromAndroid": "从Android系统中复制标题和内容",
183
+ "app.containers.MobilePush.Create.copyFromIos": "从IOS系统中复制标题和内容",
184
+ "app.containers.MobilePush.Create.ctaLabelCantEmpty": "CTA值不能为空",
185
+ "app.containers.MobilePush.Create.deleteSecondCTAFirst": "请先删除二级CTA",
186
+ "app.containers.MobilePush.Create.discardChanges": "放弃修改",
187
+ "app.containers.MobilePush.Create.enterCTALabel": "此处输入CTA值",
188
+ "app.containers.MobilePush.Create.enterTemplateName": "输入模板名称",
189
+ "app.containers.MobilePush.Create.enterTemplateNameImportant": "输入模板名称*",
190
+ "app.containers.MobilePush.Create.externalLink": "External Link",
191
+ "app.containers.MobilePush.Create.externalLinkCantEmpty": "External Link不能为空",
192
+ "app.containers.MobilePush.Create.goBackConfirmation": "返回上一步将放弃当前的所有修改,是否继续?",
193
+ "app.containers.MobilePush.Create.iOS": "iOS",
194
+ "app.containers.MobilePush.Create.inputMobilePushTemplateContent": "请输入消息内容",
195
+ "app.containers.MobilePush.Create.maxUploadFileSize": "可上传的最大文件大小是5MB",
196
+ "app.containers.MobilePush.Create.message": "消息",
197
+ "app.containers.MobilePush.Create.messageHasUnsupportedTag": "请检查缺失/不支持的标签内容",
198
+ "app.containers.MobilePush.Create.messageLabel": "消息*",
199
+ "app.containers.MobilePush.Create.messageTitleWithUnsupportedTag": "请检查缺失/不支持的标签内容",
200
+ "app.containers.MobilePush.Create.mobilePush": "Mobile Push",
201
+ "app.containers.MobilePush.Create.nameAndDescription": "名称和描述",
202
+ "app.containers.MobilePush.Create.pleaseUploadImage": "请上传图片",
203
+ "app.containers.MobilePush.Create.primaryCTA": "一级CTA",
204
+ "app.containers.MobilePush.Create.save": "保存",
205
+ "app.containers.MobilePush.Create.secondaryCTA": "二级CTA",
206
+ "app.containers.MobilePush.Create.selectADeeplink": "选择Deep link",
207
+ "app.containers.MobilePush.Create.selectDeepLink": "选择Deep link",
208
+ "app.containers.MobilePush.Create.selectDeeplink": "选择Deep link",
209
+ "app.containers.MobilePush.Create.selectLinkType": "请选择链接类型",
210
+ "app.containers.MobilePush.Create.selectMobilePushAccount": "请选择Mobile push的账户",
211
+ "app.containers.MobilePush.Create.selectMobilePushTemplate": "请选择Mobile push的模板",
212
+ "app.containers.MobilePush.Create.somethingWentWrong": "系统报错",
213
+ "app.containers.MobilePush.Create.template": "模板",
214
+ "app.containers.MobilePush.Create.templateCantEmpty": "请填写模板名称",
215
+ "app.containers.MobilePush.Create.templateCreatedSuccessfully": "Mobile push模板创建成功",
216
+ "app.containers.MobilePush.Create.templateNameNotEmpty": "请提供模板名称",
217
+ "app.containers.MobilePush.Create.title": "标题",
218
+ "app.containers.MobilePush.Create.titleHasUnsupportedTag": "请检查缺失/不支持的标签内容",
219
+ "app.containers.MobilePush.Create.titleLabel": "标题*",
220
+ "app.containers.MobilePush.Create.titleNameInvalid": "请输入消息标题",
221
+ "app.containers.MobilePush.Create.uploadFileSizeError": "文件大小不能超过5MB",
222
+ "app.containers.MobilePush.Create.uploadImage": "上传图片",
223
+ "app.containers.MobilePush.Create.uploadingImage": "加载图片",
224
+ "app.containers.MobilePush.Create.valueCantEmpty": "值不能为空",
225
+ "app.containers.MobilePush.Edit.Android": "Android",
226
+ "app.containers.MobilePush.Edit.Campaigns": "活动",
227
+ "app.containers.MobilePush.Edit.Creatives": "活动模板",
228
+ "app.containers.MobilePush.Edit.Image": "图片",
229
+ "app.containers.MobilePush.Edit.ImageUploadLabel": "上传图片",
230
+ "app.containers.MobilePush.Edit.Tags": "标签",
231
+ "app.containers.MobilePush.Edit.accountId": "Account Id",
232
+ "app.containers.MobilePush.Edit.addAnotherCTA": "添加其它CTA",
233
+ "app.containers.MobilePush.Edit.addPrimaryCTA": "添加一级CTA",
234
+ "app.containers.MobilePush.Edit.addSecondaryCTA": "添加二级CTA",
235
+ "app.containers.MobilePush.Edit.androidTemplateNotConfigured": "Android 模板没有配置,是否保存?",
236
+ "app.containers.MobilePush.Edit.button1": "按钮1",
237
+ "app.containers.MobilePush.Edit.button2": "按钮2",
238
+ "app.containers.MobilePush.Edit.cancel": "取消",
239
+ "app.containers.MobilePush.Edit.copyFromAndroid": "从Android复制标题和内容",
240
+ "app.containers.MobilePush.Edit.copyFromIos": "从IOS复制标题和内容 ",
241
+ "app.containers.MobilePush.Edit.ctaLabelCantEmpty": "CTA值不能为空",
242
+ "app.containers.MobilePush.Edit.deleteSecondCTAFirst": "请先删除二级CTA",
243
+ "app.containers.MobilePush.Edit.discardChanges": "放弃修改",
244
+ "app.containers.MobilePush.Edit.enterCTALabel": "此处输入CTA值",
245
+ "app.containers.MobilePush.Edit.enterTemplateName": "输入模板名称",
246
+ "app.containers.MobilePush.Edit.enterTemplateNameImportant": "输入模板名称*",
247
+ "app.containers.MobilePush.Edit.externalLink": "External Link",
248
+ "app.containers.MobilePush.Edit.externalLinkCantEmpty": "External Link不能为空值",
249
+ "app.containers.MobilePush.Edit.externalLinkCantEmpty1": "External Link不能为空值",
250
+ "app.containers.MobilePush.Edit.goBackConfirmation": "你是否想退回上一步操作?所有修改将会丢失!",
251
+ "app.containers.MobilePush.Edit.iOS": "iOS",
252
+ "app.containers.MobilePush.Edit.inputMobilePushTemplateContent": "请输入消息内容",
253
+ "app.containers.MobilePush.Edit.iosTemplateNotConfigured": "IOS模板没有配置,是否保存?",
254
+ "app.containers.MobilePush.Edit.maxUploadFileSize": "文件大小不能超过5MB",
255
+ "app.containers.MobilePush.Edit.message": "消息",
256
+ "app.containers.MobilePush.Edit.messageHasUnsupportedTag": "请检查缺失/不支持的标签内容",
257
+ "app.containers.MobilePush.Edit.messageLabel": "消息*",
258
+ "app.containers.MobilePush.Edit.messageTitleWithUnsupportedTag": "请检查缺失/不支持的标签内容",
259
+ "app.containers.MobilePush.Edit.mobilePush": "Mobile push",
260
+ "app.containers.MobilePush.Edit.nameAndDescription": "姓名和描述",
261
+ "app.containers.MobilePush.Edit.pleaseUploadImage": "请上传图片",
262
+ "app.containers.MobilePush.Edit.primaryCTA": "一级CTA",
263
+ "app.containers.MobilePush.Edit.save": "保存",
264
+ "app.containers.MobilePush.Edit.secondaryCTA": "二级CTA",
265
+ "app.containers.MobilePush.Edit.selectADeeplink": "选择Deep link",
266
+ "app.containers.MobilePush.Edit.selectDeepLink": "选择Deep link",
267
+ "app.containers.MobilePush.Edit.selectDeeplink": "选择Deep link",
268
+ "app.containers.MobilePush.Edit.selectLinkType": "请选择链接类型",
269
+ "app.containers.MobilePush.Edit.selectMobilePushAccount": "请选择Mobile push的账户",
270
+ "app.containers.MobilePush.Edit.selectMobilePushTemplate": "请选择Mobile push的模板",
271
+ "app.containers.MobilePush.Edit.somethingWentWrong": "系统报错",
272
+ "app.containers.MobilePush.Edit.template": "模板",
273
+ "app.containers.MobilePush.Edit.templateCantEmpty": "请填写模板名称",
274
+ "app.containers.MobilePush.Edit.templateEditedSuccessfully": "Mobile Push模板编辑成功",
275
+ "app.containers.MobilePush.Edit.templateNameNotEmpty": "请提供模板名称",
276
+ "app.containers.MobilePush.Edit.templateNotConfigured": "模板不能配置",
277
+ "app.containers.MobilePush.Edit.title": "标题",
278
+ "app.containers.MobilePush.Edit.titleHasUnsupportedTag": "请检查缺失/不支持的标签内容",
279
+ "app.containers.MobilePush.Edit.titleLabel": "标题*",
280
+ "app.containers.MobilePush.Edit.titleNameInvalid": "请输入消息内容",
281
+ "app.containers.MobilePush.Edit.uploadFileSizeError": "文件大小不能超过5MB",
282
+ "app.containers.MobilePush.Edit.uploadImage": "上传图片",
283
+ "app.containers.MobilePush.Edit.uploadingImage": "上传图片...",
284
+ "app.containers.MobilePush.Edit.valueCantEmpty": "值不能为空",
285
285
  "app.containers.TagList.header": "",
286
286
  "app.containers.Templates.alphabeticallyOption": "字母排序",
287
287
  "app.containers.Templates.blankTemplate": "空白模板",
288
- "app.containers.Templates.campaigns": "",
288
+ "app.containers.Templates.campaigns": "活动",
289
289
  "app.containers.Templates.cancelText": "",
290
- "app.containers.Templates.createEmailActionButton": "",
290
+ "app.containers.Templates.createEmailActionButton": "创建邮件",
291
291
  "app.containers.Templates.createSmsActionButton": "创建短信",
292
- "app.containers.Templates.creatives": "",
292
+ "app.containers.Templates.creatives": "活动模板",
293
293
  "app.containers.Templates.deleteButton": "删除",
294
294
  "app.containers.Templates.deletedSuccssfully": "",
295
295
  "app.containers.Templates.deletionFailed": "",
296
296
  "app.containers.Templates.duplicateButton": "重复",
297
- "app.containers.Templates.ebillHeader": "",
298
- "app.containers.Templates.ebillPreview": "",
297
+ "app.containers.Templates.ebillHeader": "电子账单",
298
+ "app.containers.Templates.ebillPreview": "电子账单预览",
299
299
  "app.containers.Templates.editButton": "编辑",
300
- "app.containers.Templates.emailHeader": "",
301
- "app.containers.Templates.emailPreview": "",
300
+ "app.containers.Templates.emailHeader": "邮箱",
301
+ "app.containers.Templates.emailPreview": "邮箱预览",
302
302
  "app.containers.Templates.gettingAllTemplates": "获取所有模板",
303
303
  "app.containers.Templates.header": "",
304
- "app.containers.Templates.imageTemplate": "",
305
- "app.containers.Templates.invalidUploadFileError": "",
304
+ "app.containers.Templates.imageTemplate": "图片",
305
+ "app.containers.Templates.invalidUploadFileError": "文档无法上传.请选择正确的文档格式。",
306
+ "app.containers.Templates.layoutSelection": "",
306
307
  "app.containers.Templates.mapTemplate": "创建模板",
307
- "app.containers.Templates.mobilepushHeader": "",
308
+ "app.containers.Templates.mobilepushHeader": "Mobile push",
308
309
  "app.containers.Templates.mostRecentOption": "最近",
309
- "app.containers.Templates.newTemplate": "",
310
+ "app.containers.Templates.newTemplate": "新模板",
310
311
  "app.containers.Templates.noAccountMessage": "请选择需要处理的公众号",
311
312
  "app.containers.Templates.noTemplatesMessage": "没有可用的模板",
312
313
  "app.containers.Templates.preview": "",
@@ -314,27 +315,28 @@
314
315
  "app.containers.Templates.searchText": "搜索",
315
316
  "app.containers.Templates.selectAccount": "选择公众号",
316
317
  "app.containers.Templates.selectButton": "选择",
318
+ "app.containers.Templates.selectDefaultButton": "",
317
319
  "app.containers.Templates.selectSmsHeader": "选择短信模板",
318
320
  "app.containers.Templates.selectWechatHeader": "选择微信模板",
319
321
  "app.containers.Templates.smsChannelTemplatesHeader": "短信模板",
320
322
  "app.containers.Templates.smsHeader": "短信",
321
323
  "app.containers.Templates.somethingWentWrong": "出现问题!!",
322
324
  "app.containers.Templates.sortBy": "排序",
323
- "app.containers.Templates.templateDeleteConfirm": "",
325
+ "app.containers.Templates.templateDeleteConfirm": "你确认要删除此模板吗?",
324
326
  "app.containers.Templates.templateDeleteSuccess": "短信模板复制成功",
325
- "app.containers.Templates.templateDuplicateSuccess": "短信模板删除成功",
326
- "app.containers.Templates.templateSelection": "",
327
- "app.containers.Templates.textTemplate": "",
327
+ "app.containers.Templates.templateDuplicateSuccess": "模板复制成功",
328
+ "app.containers.Templates.templateSelection": "选择模板",
329
+ "app.containers.Templates.textTemplate": "文本",
328
330
  "app.containers.Templates.unMapButton": "取消模板",
329
- "app.containers.Templates.uploadFile": "",
331
+ "app.containers.Templates.uploadFile": "上传文件",
330
332
  "app.containers.Templates.uploadedAt": "最后修改于",
331
333
  "app.containers.Templates.uploadedBy": "被上传",
332
- "app.containers.Templates.uploadingFile": "",
333
- "app.containers.Templates.useEditor": "",
334
+ "app.containers.Templates.uploadingFile": "上传文件中",
335
+ "app.containers.Templates.useEditor": "使用编辑器",
334
336
  "app.containers.Templates.wechatChannelTemplatesHeader": "微信模板",
335
337
  "app.containers.Templates.wechatHeader": "微信",
336
338
  "app.containers.Templates.yesText": "",
337
- "app.containers.Templates.zipUploadFailed": "",
339
+ "app.containers.Templates.zipUploadFailed": "不能上传zip文件",
338
340
  "app.containers.Testv2.header": "",
339
341
  "app.containers.WeChat.accountId": "账户ID",
340
342
  "app.containers.WeChat.cancel": "取消",
@@ -350,31 +352,31 @@
350
352
  "app.containers.WeChat.tagsLabel": "标签",
351
353
  "app.containers.WeChat.template": "模板",
352
354
  "app.containers.WeChat.templateMapping": "模板对应",
353
- "app.containers.WeChat.wechatCreateSuccess": "成功创建微信模板",
354
- "app.containers.WeChat.wechatEditSuccess": "成功修改微信模板",
355
+ "app.containers.WeChat.wechatCreateSuccess": "微信模板映射成功",
356
+ "app.containers.WeChat.wechatEditSuccess": "微信模板取消映射成功",
355
357
  "customdatepicker.cancel": "取消",
356
- "customdatepicker.done": "",
357
- "reon.components.Cap.Workbench": "",
358
- "reon.components.Cap.campaigns": "",
359
- "reon.components.Cap.creatives": "",
360
- "reon.components.Cap.creativesDashboard": "",
361
- "reon.components.Cap.ebill": "",
362
- "reon.components.Cap.email": "",
363
- "reon.components.Cap.gallery": "",
364
- "reon.components.Cap.loyalty": "",
365
- "reon.components.Cap.memberCare": "",
366
- "reon.components.Cap.sms": "",
367
- "reon.components.Cap.storeCare": "",
368
- "reon.components.Cap.storePerformance": "",
369
- "reon.components.Cap.wechat": "",
358
+ "customdatepicker.done": "完成",
359
+ "reon.components.Cap.Workbench": "工作台",
360
+ "reon.components.Cap.campaigns": "活动",
361
+ "reon.components.Cap.creatives": "活动模板",
362
+ "reon.components.Cap.creativesDashboard": "活动模板",
363
+ "reon.components.Cap.ebill": "电子账单",
364
+ "reon.components.Cap.email": "邮件",
365
+ "reon.components.Cap.gallery": "图片库",
366
+ "reon.components.Cap.loyalty": "忠诚度引擎",
367
+ "reon.components.Cap.memberCare": "会员中心",
368
+ "reon.components.Cap.sms": "短信",
369
+ "reon.components.Cap.storeCare": "门店",
370
+ "reon.components.Cap.storePerformance": "门店绩效",
371
+ "reon.components.Cap.wechat": "微信",
370
372
  "reon.components.DateFilter.editText": "编辑",
371
- "reon.components.DateFilter.loaderMessage": "",
372
- "reon.components.TopBar.brand.dropdown": "",
373
+ "reon.components.DateFilter.loaderMessage": "获取数据",
374
+ "reon.components.TopBar.brand.dropdown": "选择品牌",
373
375
  "reon.components.TopBar.logout": "登出",
374
376
  "reon.components.TopBar.profile": "简况",
375
377
  "reon.components.TopBar.settings": "设置",
376
- "reon.components.campaignsDashboard": "",
377
- "reon.components.campaignsHome": "",
378
+ "reon.components.campaignsDashboard": "活动",
379
+ "reon.components.campaignsHome": "活动中心",
378
380
  "reon.modules.Login.components.LoginForm.input.loginButton": "登录",
379
381
  "reon.modules.Login.components.LoginForm.input.password": "密码",
380
382
  "reon.modules.Login.components.LoginForm.input.username": "用户名或密码"