@capillarytech/creatives-library 3.0.31 → 3.0.32

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.
Files changed (171) hide show
  1. package/app.js +1 -1
  2. package/components/BreadCrumbs/messages.js +1 -1
  3. package/components/CapTagList/index.js +3 -3
  4. package/components/CapTagList/messages.js +16 -4
  5. package/components/Ckeditor/messages.js +1 -1
  6. package/components/CustomPopOver/index.js +3 -4
  7. package/components/CustomPopOver/messages.js +5 -1
  8. package/components/DateFilter/index.js +12 -12
  9. package/components/DateFilter/messages.js +40 -0
  10. package/components/DateRange/index.js +5 -4
  11. package/components/DateRange/messages.js +13 -1
  12. package/components/Edmeditor/messages.js +1 -1
  13. package/components/EmailPreview/index.js +4 -4
  14. package/components/EmailPreview/messages.js +18 -2
  15. package/components/Footer/messages.js +1 -1
  16. package/components/FormBuilder/index.js +13 -17
  17. package/components/FormBuilder/messages.js +33 -1
  18. package/components/Header/messages.js +4 -4
  19. package/components/ImagePreview/index.js +1 -1
  20. package/components/ImagePreview/messages.js +5 -1
  21. package/components/PageHeader/messages.js +1 -1
  22. package/components/PreviewSideBar/index.js +2 -2
  23. package/components/PreviewSideBar/messages.js +14 -6
  24. package/components/Sidebar/messages.js +3 -3
  25. package/components/SmsTest/index.js +6 -4
  26. package/components/SmsTest/messages.js +9 -1
  27. package/components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +3 -3
  28. package/components/TemplatePreview/index.js +12 -7
  29. package/components/TemplatePreview/messages.js +28 -5
  30. package/components/Toastr/messages.js +1 -1
  31. package/components/ToastrMessage/index.js +4 -1
  32. package/components/ToastrMessage/messages.js +5 -1
  33. package/components/TopBar/messages.js +1 -1
  34. package/config/app.js +4 -0
  35. package/containers/Assets/Gallery/messages.js +20 -20
  36. package/containers/Cap/index.js +6 -5
  37. package/containers/Cap/messages.js +75 -0
  38. package/containers/Dashboard/index.js +2 -2
  39. package/containers/Dashboard/messages.js +1 -1
  40. package/containers/Ebill/index.js +1 -1
  41. package/containers/Ebill/messages.js +20 -16
  42. package/containers/Email/index.js +24 -24
  43. package/containers/Email/messages.js +107 -59
  44. package/containers/Line/Create/index.js +5 -5
  45. package/containers/Line/Create/messages.js +58 -42
  46. package/containers/Line/Edit/index.js +12 -12
  47. package/containers/Line/Edit/messages.js +58 -38
  48. package/containers/Login/components/LoginForm/index.js +10 -7
  49. package/containers/Login/components/LoginForm/messages.js +15 -3
  50. package/containers/Login/index.js +1 -1
  51. package/containers/Login/messages.js +7 -3
  52. package/containers/MobilePush/Create/index.js +43 -43
  53. package/containers/MobilePush/Create/messages.js +111 -75
  54. package/containers/MobilePush/Edit/index.js +43 -43
  55. package/containers/MobilePush/Edit/messages.js +100 -83
  56. package/containers/NotFoundPage/messages.js +1 -1
  57. package/containers/Sms/Create/index.js +7 -8
  58. package/containers/Sms/Create/messages.js +43 -19
  59. package/containers/Sms/Edit/index.js +4 -4
  60. package/containers/Sms/Edit/messages.js +36 -20
  61. package/containers/TagList/messages.js +1 -1
  62. package/containers/Templates/index.js +20 -19
  63. package/containers/Templates/messages.js +136 -64
  64. package/containers/TestPage/messages.js +1 -1
  65. package/containers/Testv2/index.js +2 -2
  66. package/containers/Testv2/messages.js +9 -1
  67. package/containers/WeChat/MapTemplates/index.js +10 -10
  68. package/containers/WeChat/MapTemplates/messages.js +49 -17
  69. package/containers/WeChat/RichmediaTemplates/Create/messages.js +33 -33
  70. package/containers/WeChat/RichmediaTemplates/Edit/messages.js +1 -1
  71. package/containers/WeChat/RichmediaTemplates/View/index.js +2 -2
  72. package/containers/WeChat/RichmediaTemplates/View/messages.js +9 -1
  73. package/hoc/withStyles.js +12 -0
  74. package/index.js +8 -1
  75. package/package.json +1 -4
  76. package/reducers.js +1 -1
  77. package/routes.js +4 -1
  78. package/services/api.js +25 -2
  79. package/translations/en.json +1396 -360
  80. package/translations/zh.json +1417 -381
  81. package/utils/smsCharCountV2.js +28 -6
  82. package/v2Components/BreadCrumbs/messages.js +1 -1
  83. package/v2Components/CallTaskPreview/messages.js +1 -1
  84. package/v2Components/CapTagList/index.js +6 -5
  85. package/v2Components/CapTagList/messages.js +24 -4
  86. package/v2Components/Ckeditor/messages.js +1 -1
  87. package/v2Components/CmsTemplatesComponent/messages.js +2 -2
  88. package/v2Components/CustomPopOver/index.js +4 -2
  89. package/v2Components/CustomPopOver/messages.js +5 -1
  90. package/v2Components/Edmeditor/messages.js +1 -1
  91. package/v2Components/EmailPreview/index.js +2 -2
  92. package/v2Components/EmailPreview/messages.js +11 -3
  93. package/v2Components/EmailPreviewV2/index.js +1 -1
  94. package/v2Components/EmailPreviewV2/messages.js +13 -9
  95. package/v2Components/Footer/messages.js +1 -1
  96. package/v2Components/FormBuilder/index.js +17 -14
  97. package/v2Components/FormBuilder/messages.js +49 -1
  98. package/v2Components/Header/messages.js +4 -4
  99. package/v2Components/ImagePreview/index.js +3 -2
  100. package/v2Components/ImagePreview/messages.js +5 -1
  101. package/v2Components/MobilePushPreviewV2/index.js +2 -5
  102. package/v2Components/MobilePushPreviewV2/messages.js +9 -1
  103. package/v2Components/NavigationBar/messages.js +1 -1
  104. package/v2Components/NewCallTask/messages.js +5 -5
  105. package/v2Components/PreviewSideBar/messages.js +6 -6
  106. package/v2Components/SmsTest/index.js +6 -4
  107. package/v2Components/SmsTest/messages.js +9 -1
  108. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +3 -3
  109. package/v2Components/TemplatePreview/_templatePreview.scss +8 -0
  110. package/v2Components/TemplatePreview/index.js +35 -16
  111. package/v2Components/TemplatePreview/messages.js +23 -7
  112. package/v2Components/Toastr/messages.js +1 -1
  113. package/v2Components/ToastrMessage/index.js +3 -2
  114. package/v2Components/ToastrMessage/messages.js +5 -1
  115. package/v2Components/TopBar/messages.js +7 -7
  116. package/v2Containers/App/constants.js +11 -0
  117. package/v2Containers/Assets/Gallery/messages.js +24 -24
  118. package/v2Containers/CallTask/messages.js +6 -6
  119. package/v2Containers/Cap/index.js +5 -4
  120. package/v2Containers/Cap/messages.js +75 -0
  121. package/v2Containers/Cap/messsages.js +19 -15
  122. package/v2Containers/Cap/sagas.js +1 -8
  123. package/v2Containers/ChannelTemplates/messages.js +1 -1
  124. package/v2Containers/CreativesContainer/messages.js +16 -8
  125. package/v2Containers/Dashboard/index.js +2 -1
  126. package/v2Containers/Dashboard/messages.js +1 -1
  127. package/v2Containers/Ebill/index.js +1 -1
  128. package/v2Containers/Ebill/messages.js +20 -16
  129. package/v2Containers/Email/index.js +20 -20
  130. package/v2Containers/Email/messages.js +97 -61
  131. package/v2Containers/EmailWrapper/index.js +64 -44
  132. package/v2Containers/EmailWrapper/messages.js +12 -12
  133. package/v2Containers/LanguageProvider/actions.js +9 -4
  134. package/v2Containers/LanguageProvider/constants.js +7 -0
  135. package/v2Containers/LanguageProvider/index.js +32 -10
  136. package/v2Containers/LanguageProvider/reducer.js +12 -4
  137. package/v2Containers/LanguageProvider/sagas.js +39 -0
  138. package/v2Containers/LanguageProvider/selectors.js +1 -1
  139. package/v2Containers/Line/Create/index.js +3 -3
  140. package/v2Containers/Line/Create/messages.js +53 -41
  141. package/v2Containers/Line/Edit/index.js +10 -10
  142. package/v2Containers/Line/Edit/messages.js +55 -39
  143. package/v2Containers/Login/components/LoginForm/index.js +9 -6
  144. package/v2Containers/Login/components/LoginForm/messages.js +15 -3
  145. package/v2Containers/Login/index.js +1 -1
  146. package/v2Containers/Login/messages.js +7 -3
  147. package/v2Containers/MobilePush/Create/index.js +33 -33
  148. package/v2Containers/MobilePush/Create/messages.js +109 -81
  149. package/v2Containers/MobilePush/Edit/index.js +22 -22
  150. package/v2Containers/MobilePush/Edit/messages.js +95 -79
  151. package/v2Containers/MobilepushWrapper/messages.js +5 -5
  152. package/v2Containers/NotFoundPage/messages.js +1 -1
  153. package/v2Containers/Sms/Create/index.js +6 -6
  154. package/v2Containers/Sms/Create/messages.js +41 -21
  155. package/v2Containers/Sms/Edit/index.js +6 -6
  156. package/v2Containers/Sms/Edit/messages.js +36 -20
  157. package/v2Containers/TagList/messages.js +1 -1
  158. package/v2Containers/Templates/messages.js +27 -3
  159. package/v2Containers/TemplatesV2/TemplatesV2.style.js +29 -0
  160. package/v2Containers/TemplatesV2/index.js +29 -51
  161. package/v2Containers/TemplatesV2/messages.js +29 -5
  162. package/v2Containers/TestPage/messages.js +1 -1
  163. package/v2Containers/Testv2/index.js +2 -2
  164. package/v2Containers/Testv2/messages.js +9 -1
  165. package/v2Containers/WeChat/MapTemplates/index.js +8 -8
  166. package/v2Containers/WeChat/MapTemplates/messages.js +49 -17
  167. package/v2Containers/WeChat/RichmediaTemplates/Create/index.js +6 -6
  168. package/v2Containers/WeChat/RichmediaTemplates/Create/messages.js +95 -43
  169. package/v2Containers/WeChat/RichmediaTemplates/Edit/messages.js +1 -1
  170. package/v2Containers/WeChat/RichmediaTemplates/View/messages.js +9 -1
  171. package/v2Containers/TemplatesV2/_templatesV2.scss +0 -5
@@ -7,23 +7,23 @@ import { defineMessages } from 'react-intl';
7
7
 
8
8
  export default defineMessages({
9
9
  callTaskTitle: {
10
- id: 'app.components.NewCallTask.callTaskTitle',
10
+ id: 'creatives.componentsV2.NewCallTask.callTaskTitle',
11
11
  defaultMessage: 'Call Task title',
12
12
  },
13
13
  messageHeader: {
14
- id: 'app.components.NewCallTask.messageHeader',
14
+ id: 'creatives.componentsV2.NewCallTask.messageHeader',
15
15
  defaultMessage: 'Message',
16
16
  },
17
17
  description: {
18
- id: 'app.components.NewCallTask.description',
18
+ id: 'creatives.componentsV2.NewCallTask.description',
19
19
  defaultMessage: 'Description',
20
20
  },
21
21
  done: {
22
- id: 'app.components.NewCallTask.done',
22
+ id: 'creatives.componentsV2.NewCallTask.done',
23
23
  defaultMessage: 'Done',
24
24
  },
25
25
  personalisationTags: {
26
- id: 'app.components.NewCallTask.personalisationTags',
26
+ id: 'creatives.componentsV2.NewCallTask.personalisationTags',
27
27
  defaultMessage: 'Add Labels',
28
28
  },
29
29
  });
@@ -7,27 +7,27 @@ import { defineMessages } from 'react-intl';
7
7
 
8
8
  export default defineMessages({
9
9
  header: {
10
- id: 'app.components.PreviewSideBar.header',
10
+ id: 'creatives.componentsV2.PreviewSideBar.header',
11
11
  defaultMessage: 'This is the PreviewSideBar component !',
12
12
  },
13
13
  lastModified: {
14
- id: 'app.components.PreviewSideBar.lastModified',
14
+ id: 'creatives.componentsV2.PreviewSideBar.lastModified',
15
15
  defaultMessage: 'Last modified on',
16
16
  },
17
17
  uploadedBy: {
18
- id: 'app.components.PreviewSideBar.uploadedBy',
18
+ id: 'creatives.componentsV2.PreviewSideBar.uploadedBy',
19
19
  defaultMessage: 'Last modified by',
20
20
  },
21
21
  edit: {
22
- id: 'app.components.PreviewSideBar.edit',
22
+ id: 'creatives.componentsV2.PreviewSideBar.edit',
23
23
  defaultMessage: 'Edit',
24
24
  },
25
25
  select: {
26
- id: 'app.components.PreviewSideBar.select',
26
+ id: 'creatives.componentsV2.PreviewSideBar.select',
27
27
  defaultMessage: 'Select',
28
28
  },
29
29
  duplicate: {
30
- id: 'app.components.PreviewSideBar.duplicate',
30
+ id: 'creatives.componentsV2.PreviewSideBar.duplicate',
31
31
  defaultMessage: 'Duplicate',
32
32
  },
33
33
  });
@@ -9,6 +9,8 @@ import React from 'react';
9
9
 
10
10
  // import { FormattedMessage } from 'react-intl';
11
11
  // import messages from './messages';
12
+ import { injectIntl, intlShape } from 'react-intl';
13
+ import messages from './messages';
12
14
  import FormBuilder from '../FormBuilder';
13
15
 
14
16
  class SmsTest extends React.Component { // eslint-disable-line react/prefer-stateless-function
@@ -46,7 +48,7 @@ class SmsTest extends React.Component { // eslint-disable-line react/prefer-stat
46
48
  metaType: "text",
47
49
  datatype: "string",
48
50
  required: true,
49
- placeholder: "Please input template name.",
51
+ placeholder: this.props.intl.formatMessage(messages.inputTemplateName),
50
52
  fluid: true,
51
53
  styling: "semantic",
52
54
  order: 1,
@@ -62,7 +64,7 @@ class SmsTest extends React.Component { // eslint-disable-line react/prefer-stat
62
64
  metaType: "text",
63
65
  datatype: "string",
64
66
  required: true,
65
- placeholder: "Please input sms template content.",
67
+ placeholder: this.props.intl.formatMessage(messages.inputSmsTemplate),
66
68
  fluid: false,
67
69
  styling: "custom",
68
70
  order: 2,
@@ -109,7 +111,7 @@ class SmsTest extends React.Component { // eslint-disable-line react/prefer-stat
109
111
  }
110
112
 
111
113
  SmsTest.propTypes = {
112
-
114
+ intl: intlShape.isRequired,
113
115
  };
114
116
 
115
- export default SmsTest;
117
+ export default injectIntl(SmsTest);
@@ -7,7 +7,15 @@ import { defineMessages } from 'react-intl';
7
7
 
8
8
  export default defineMessages({
9
9
  header: {
10
- id: 'app.components.SmsTest.header',
10
+ id: 'creatives.componentsV2.SmsTest.header',
11
11
  defaultMessage: 'This is the SmsTest component !',
12
12
  },
13
+ inputTemplateName: {
14
+ id: 'creatives.componentsV2.SmsTest.inputTemplateName',
15
+ defaultMessage: 'Please input template name.',
16
+ },
17
+ inputSmsTemplate: {
18
+ id: 'creatives.componentsV2.SmsTest.inputSmsTemplate',
19
+ defaultMessage: 'Please input sms template content.',
20
+ },
13
21
  });
@@ -7,15 +7,15 @@ import { defineMessages } from 'react-intl';
7
7
 
8
8
  export default defineMessages({
9
9
  header: {
10
- id: 'app.components.WechatRichmediaTemplatePreview.header',
10
+ id: 'creatives.components.WechatRichmediaTemplatePreview.header',
11
11
  defaultMessage: 'This is the WechatRichmediaTemplatePreview component !',
12
12
  },
13
13
  select: {
14
- id: 'app.components.WechatRichmediaTemplatePreview.select',
14
+ id: 'creatives.components.WechatRichmediaTemplatePreview.select',
15
15
  defaultMessage: 'Select',
16
16
  },
17
17
  edit: {
18
- id: 'app.components.WechatRichmediaTemplatePreview.edit',
18
+ id: 'creatives.components.WechatRichmediaTemplatePreview.edit',
19
19
  defaultMessage: 'Edit',
20
20
  },
21
21
  });
@@ -350,3 +350,11 @@
350
350
  background-color: #333333;
351
351
  margin-right: 4px;
352
352
  }
353
+
354
+ .character-count-col{
355
+ margin-top: 8px;
356
+ margin-left: 40px;
357
+ .optout-tag-heading{
358
+ font-size: 12px;
359
+ }
360
+ }
@@ -8,7 +8,7 @@ import PropTypes from 'prop-types';
8
8
 
9
9
  import React from 'react';
10
10
  import _ from 'lodash';
11
- import { injectIntl, FormattedMessage} from 'react-intl';
11
+ import { injectIntl, FormattedMessage, intlShape } from 'react-intl';
12
12
  // import styled from 'styled-components';
13
13
  import {CapColumn, CapRow, CapHeading} from '@capillarytech/cap-ui-library';
14
14
  import './_templatePreview.scss';
@@ -59,29 +59,47 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
59
59
  <FormattedMessage {...messages.smsFormatType}/>
60
60
  }
61
61
  </CapHeading>}
62
+ {smsDetails.optoutUrlPresent && <CapHeading type="h6">
63
+ <FormattedMessage {...messages.optoutCharactersTotal} values={{optoutUrlLength: smsDetails.optouturlLength}} />
64
+ </CapHeading>}
62
65
  </CapColumn>}
63
66
  <CapColumn span={this.props.showCount ? 8 : 24}>
64
67
  <div className={`preview-container ${type === 'embedded' ? 'embedded-preview' : ''}`}>
65
68
  { channel && channel.toLowerCase() === 'sms' &&
66
- <div className="shell align-center" id="sms-preview">
67
- <img className="preview-image sms" src={smsBody} alt="Preview is being generated"/>
68
- <div className="msgContainer sms">
69
- <img className="sms-icon" src={smsIcon} alt="Sms icon" />
70
- <div className={"message-pop sms"}>
71
- {content && content.length && content.map((msg, index) =>
72
- <CapColumn key={`"message-pop-content-${index}`} className="message-pop-item align-left" style={{ background: '#3F51B5', color: '#ffffff'}}>
73
- {msg}
74
- </CapColumn>)
75
- }
69
+ <div>
70
+ <div className="shell align-center" id="sms-preview">
71
+ <img className="preview-image sms" src={smsBody} alt="Preview is being generated"/>
72
+ <div className="msgContainer sms">
73
+ <img className="sms-icon" src={smsIcon} alt="Sms icon" />
74
+ <div className={"message-pop sms"}>
75
+ {content && content.length && content.map((msg, index) =>
76
+ <CapColumn key={`"message-pop-content-${index}`} className="message-pop-item align-left" style={{ background: '#3F51B5', color: '#ffffff'}}>
77
+ {msg}
78
+ </CapColumn>)
79
+ }
80
+ </div>
76
81
  </div>
77
82
  </div>
83
+ {!this.props.showCount && <div>
84
+ <CapColumn className="character-count-col" span={20}>
85
+ {channel && channel.toLowerCase() === 'sms' && <CapHeading type="h3">
86
+ <FormattedMessage {...messages.charactersTotal} values={{smsCount: smsDetails.parts, charCount: smsDetails.chars_used}}/>
87
+ {smsDetails.unicode &&
88
+ <FormattedMessage {...messages.smsFormatType}/>
89
+ }
90
+ </CapHeading>}
91
+ {smsDetails.optoutUrlPresent && <CapHeading type="h6" className="optout-tag-heading">
92
+ <FormattedMessage {...messages.optoutCharactersTotal} values={{optoutUrlLength: smsDetails.optouturlLength}} />
93
+ </CapHeading>}
94
+ </CapColumn>
95
+ </div>}
78
96
  </div>
79
- }
97
+ }
80
98
  {channel && channel.toLowerCase() === 'wechat' ?
81
99
  ( <div className="shell align-center" id="sms-preview">
82
100
  <img className="preview-image" src={channel.toLowerCase() === 'wechat' ? wechatBody : smsBody} alt="Preview is being generated"/>
83
101
  <div className="msgContainer">
84
- {this.props.channel.toLowerCase() === 'wechat' ? <div className="sms-icon" style={{ width: '25px', height: '25px', background: '#2E89DF' }}></div> : <img className="sms-icon" src={smsIcon} alt="Sms icon" />}
102
+ {this.props.channel.toLowerCase() === 'wechat' ? <div className="sms-icon" style={{ width: '25px', height: '25px', background: '#2E89DF' }}></div> : <img className="sms-icon" src={smsIcon} alt={this.props.intl.formatMessage(messages.smsIcon)} />}
85
103
  <div className="message-pop align-left" style={{ background: `${this.props.channel.toLowerCase() === 'wechat' ? '#ffffff' : '#3F51B5'}`, color: `${this.props.channel.toLowerCase() === 'wechat' ? '#333333' : '#ffffff'}`}}>{content}
86
104
  </div>
87
105
  </div>
@@ -90,7 +108,7 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
90
108
  }
91
109
  { channel && (channel.toLowerCase() === 'mobilepush') &&
92
110
  (<div className="shell align-center" id="mobilepush-preview">
93
- <img className="preview-image" src={this.props.device === "android" ? androidPushMessagePhone : iPhonePushMessagePhone} alt="Preview is being generated"/>
111
+ <img className="preview-image" src={this.props.device === "android" ? androidPushMessagePhone : iPhonePushMessagePhone} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
94
112
  {(!!content.header || !!content.bodyText || !!content.bodyImage) &&
95
113
  <div className={`${this.props.device}-push-message-Container`}>
96
114
  {this.props.device === "android" ?
@@ -117,7 +135,7 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
117
135
  :
118
136
  <div className="message-pop align-left">
119
137
  <div className="app-name">
120
- <span className="app-icon"></span>{content.appName ? content.appName : "App name"} <i className="material-icons">close</i>
138
+ <span className="app-icon"></span>{content.appName ? content.appName : "App name"} <i className="material-icons">{this.props.intl.formatMessage(messages.close)}</i>
121
139
  </div>
122
140
  {content.bodyImage && <div className="body-image">
123
141
  <img src={content.bodyImage} alt=""/>
@@ -139,7 +157,7 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
139
157
  {
140
158
  channel && channel.toLowerCase() === 'line' ? (
141
159
  <div className="shell align-center" id="sms-preview">
142
- <img className="preview-image" src={wechatBody} alt="Preview is being generated"/>
160
+ <img className="preview-image" src={wechatBody} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
143
161
  <div className="msgContainer">
144
162
  <div className="sms-icon" style={{ width: '25px', height: '25px', background: '#2E89DF' }}></div>
145
163
  <div className="message-pop align-left" style={{ background: '#ffffff', color: '#333333' }}>
@@ -170,6 +188,7 @@ TemplatePreview.propTypes = {
170
188
  device: PropTypes.string,
171
189
  unicodeEnabled: PropTypes.bool,
172
190
  showCount: PropTypes.bool,
191
+ intl: intlShape.isRequired,
173
192
  };
174
193
 
175
194
  export default (injectIntl(TemplatePreview));
@@ -7,31 +7,47 @@ import { defineMessages } from 'react-intl';
7
7
 
8
8
  export default defineMessages({
9
9
  previewGenerationMessage: {
10
- id: 'app.components.TemplatePreview.previewGenerationMessage',
10
+ id: 'creatives.componentsV2.TemplatePreview.previewGenerationMessage',
11
11
  defaultMessage: "Preview is being generated",
12
12
  },
13
13
  sms: {
14
- id: 'app.components.TemplatePreview.sms',
14
+ id: 'creatives.componentsV2.TemplatePreview.sms',
15
15
  defaultMessage: "SMS",
16
16
  },
17
17
  charactersPerSms: {
18
- id: 'app.components.TemplatePreview.charactersPerSms',
18
+ id: 'creatives.componentsV2.TemplatePreview.charactersPerSms',
19
19
  defaultMessage: "SMS chars",
20
20
  },
21
21
  charactersTotal: {
22
- id: 'app.components.TemplatePreview.charactersTotal',
22
+ id: 'creatives.componentsV2.TemplatePreview.charactersTotal',
23
23
  defaultMessage: "{smsCount} SMS ({charCount} characters)",
24
24
  },
25
+ optoutCharactersTotal: {
26
+ id: 'app.components.TemplatePreview.optoutCharactersTotal',
27
+ defaultMessage: "Includes Optout tag ({optoutUrlLength} characters)",
28
+ },
25
29
  smsFormatType: {
26
- id: 'app.components.TemplatePreview.smsFormatType',
30
+ id: 'creatives.componentsV2.TemplatePreview.smsFormatType',
27
31
  defaultMessage: 'Message has unicode characters',
28
32
  },
29
33
  lastModified: {
30
- id: 'app.components.PreviewSideBar.lastModified',
34
+ id: 'creatives.componentsV2.PreviewSideBar.lastModified',
31
35
  defaultMessage: 'Last modified on',
32
36
  },
33
37
  uploadedBy: {
34
- id: 'app.components.PreviewSideBar.uploadedBy',
38
+ id: 'creatives.componentsV2.PreviewSideBar.uploadedBy',
35
39
  defaultMessage: 'Last modified by',
36
40
  },
41
+ previewGenerated: {
42
+ id: 'creatives.componentsV2.TemplatePreview.previewGenerated',
43
+ defaultMessage: 'Preview is being generated',
44
+ },
45
+ close: {
46
+ id: 'creatives.componentsV2.TemplatePreview.close',
47
+ defaultMessage: 'close',
48
+ },
49
+ smsIcon: {
50
+ id: 'creatives.componentsV2.TemplatePreview.smsIcon',
51
+ defaultMessage: 'Sms Icon',
52
+ },
37
53
  });
@@ -7,7 +7,7 @@ import { defineMessages } from 'react-intl';
7
7
 
8
8
  export default defineMessages({
9
9
  header: {
10
- id: 'app.components.Toastr.header',
10
+ id: 'creatives.componentsV2.Toastr.header',
11
11
  defaultMessage: 'This is the Toastr component !',
12
12
  },
13
13
  });
@@ -7,8 +7,10 @@
7
7
  import PropTypes from 'prop-types';
8
8
 
9
9
  import React from 'react';
10
+ import { FormattedMessage } from 'react-intl';
10
11
  import styled from 'styled-components';
11
12
  import { messageTypeConfig } from '../../config/toastr';
13
+ import messages from './messages';
12
14
 
13
15
  const StyledMessageWrapper = styled.div`
14
16
  background: #f9f9fa;
@@ -84,7 +86,7 @@ class ToastrMessage extends React.Component { // eslint-disable-line react/prefe
84
86
  <div style={{ padding: `${16}px` }}>
85
87
  <MessageHeader>
86
88
  { this.props.title ? <span style={{ fontSize: `${20}px` }}>{this.props.title}</span> : '' }
87
- <StyleIcon className="material-icons" onClick={() => this.closeMessagePopup(this.props.messageId)}>close</StyleIcon>
89
+ <StyleIcon className="material-icons" onClick={() => this.closeMessagePopup(this.props.messageId)}><FormattedMessage {...messages.close} /></StyleIcon>
88
90
  </MessageHeader>
89
91
  <MessageContent>
90
92
  {this.props.text}
@@ -102,7 +104,6 @@ ToastrMessage.propTypes = {
102
104
  text: PropTypes.string,
103
105
  type: PropTypes.string,
104
106
  handleMessageClose: PropTypes.func,
105
- hideProgressBar: PropTypes.bool,
106
107
  };
107
108
 
108
109
  export default ToastrMessage;
@@ -7,7 +7,11 @@ import { defineMessages } from 'react-intl';
7
7
 
8
8
  export default defineMessages({
9
9
  header: {
10
- id: 'app.components.ToastrMessage.header',
10
+ id: 'creatives.componentsV2.ToastrMessage.header',
11
+ defaultMessage: 'This is the ToastrMessage component !',
12
+ },
13
+ close: {
14
+ id: 'creatives.componentsV2.ToastrMessage.close',
11
15
  defaultMessage: 'This is the ToastrMessage component !',
12
16
  },
13
17
  });
@@ -7,31 +7,31 @@ import { defineMessages } from 'react-intl';
7
7
 
8
8
  export default defineMessages({
9
9
  profile: {
10
- id: 'reon.components.TopBar.profile',
10
+ id: 'creatives.componentsV2.TopBar.profile',
11
11
  defaultMessage: 'Profile',
12
12
  },
13
13
  settings: {
14
- id: 'reon.components.TopBar.settings',
14
+ id: 'creatives.componentsV2.TopBar.settings',
15
15
  defaultMessage: 'Settings',
16
16
  },
17
17
  logout: {
18
- id: 'reon.components.TopBar.logout',
18
+ id: 'creatives.componentsV2.TopBar.logout',
19
19
  defaultMessage: 'Logout',
20
20
  },
21
21
  dropdownMessage: {
22
- id: 'reon.components.TopBar.brand.dropdown',
22
+ id: 'creatives.componentsV2.TopBar.brand.dropdown',
23
23
  defaultMessage: 'Select brand',
24
24
  },
25
25
  hi: {
26
- id: 'app.components.TopBar.brand.dropdown',
26
+ id: 'creatives.componentsV2.TopBar.brand.hi',
27
27
  defaultMessage: 'Hi',
28
28
  },
29
29
  selectOrganization: {
30
- id: 'app.components.TopBar.brand.selectOrganization',
30
+ id: 'creatives.componentsV2.TopBar.brand.selectOrganization',
31
31
  defaultMessage: 'Select organization',
32
32
  },
33
33
  selectProduct: {
34
- id: 'app.components.TopBar.brand.selectProduct',
34
+ id: 'creatives.componentsV2.TopBar.brand.selectProduct',
35
35
  defaultMessage: 'Select product',
36
36
  },
37
37
  });
@@ -1,3 +1,14 @@
1
+ import React from 'react';
2
+ import { FormattedMessage } from 'react-intl';
3
+ import globalMessages from '../Cap/messages';
4
+
1
5
  export const GET_SIDEBAR_REQUEST = 'app/App/GET_SIDEBAR_REQUEST';
2
6
  export const GET_SIDEBAR_SUCCESS = 'app/App/GET_SIDEBAR_SUCCESS';
3
7
  export const GET_SIDEBAR_FAILURE = 'app/App/GET_SIDEBAR_FAILURE';
8
+
9
+ export const getTopbarMenuDataValue = () => ([
10
+ { label: <FormattedMessage {...globalMessages.campaigns} />, link: '/campaigns/ui/list', key: 'campaigns' },
11
+ { label: <FormattedMessage {...globalMessages.audience} />, link: '/audience-manager/list', key: 'audience' },
12
+ { label: <FormattedMessage {...globalMessages.incentive} />, link: '/coupons/ui/', key: 'incentive' },
13
+ { label: <FormattedMessage {...globalMessages.creatives} />, link: '/creatives/ui/v2', key: 'creatives' },
14
+ ]);
@@ -7,99 +7,99 @@ import { defineMessages } from 'react-intl';
7
7
 
8
8
  export default defineMessages({
9
9
  uploadedAt: {
10
- id: 'app.containers.Assets.Gallery.uploadedAt',
10
+ id: 'creatives.containersV2.Assets.Gallery.uploadedAt',
11
11
  defaultMessage: 'Uploaded at ',
12
12
  },
13
13
  uploadedOn: {
14
- id: 'app.containers.Assets.Gallery.uploadedOn',
14
+ id: 'creatives.containersV2.Assets.Gallery.uploadedOn',
15
15
  defaultMessage: 'Uploaded on ',
16
16
  },
17
17
  uploadedBy: {
18
- id: 'app.containers.Assets.Gallery.uploadedBy',
18
+ id: 'creatives.containersV2.Assets.Gallery.uploadedBy',
19
19
  defaultMessage: 'Uploaded by ',
20
20
  },
21
21
  upload: {
22
- id: 'app.containers.Assets.Gallery.upload',
22
+ id: 'creatives.containersV2.Assets.Gallery.upload',
23
23
  defaultMessage: 'Upload image',
24
24
  },
25
25
  addImages: {
26
- id: `app.containers.Assets.Gallery.addImages`,
26
+ id: `creatives.containersV2.Assets.Gallery.addImages`,
27
27
  defaultMessage: 'Add images',
28
28
  },
29
29
  imagePreview: {
30
- id: 'app.containers.Assets.Gallery.imagePreview',
30
+ id: 'creatives.containersV2.Assets.Gallery.imagePreview',
31
31
  defaultMessage: 'Image preview',
32
32
  },
33
33
  size: {
34
- id: 'app.containers.Assets.Gallery.size',
34
+ id: 'creatives.containersV2.Assets.Gallery.size',
35
35
  defaultMessage: 'Size',
36
36
  },
37
37
  dimensions: {
38
- id: 'app.containers.Assets.Gallery.dimensions',
38
+ id: 'creatives.containersV2.Assets.Gallery.dimensions',
39
39
  defaultMessage: 'Dimensions',
40
40
  },
41
41
  gallery: {
42
- id: 'app.containers.Assets.Gallery.gallery',
42
+ id: 'creatives.containersV2.Assets.Gallery.gallery',
43
43
  defaultMessage: 'Gallery',
44
44
  },
45
45
  backToGallery: {
46
- id: 'app.containers.Assets.Gallery.backToGallery',
46
+ id: 'creatives.containersV2.Assets.Gallery.backToGallery',
47
47
  defaultMessage: 'Back to image gallery',
48
48
  },
49
49
  mostRecent: {
50
- id: 'app.containers.Assets.Gallery.mostRecent',
50
+ id: 'creatives.containersV2.Assets.Gallery.mostRecent',
51
51
  defaultMessage: 'Most recent',
52
52
  },
53
53
  alphabetically: {
54
- id: 'app.containers.Assets.Gallery.alphabetically',
54
+ id: 'creatives.containersV2.Assets.Gallery.alphabetically',
55
55
  defaultMessage: 'Alphabetically',
56
56
  },
57
57
  sortby: {
58
- id: 'app.containers.Assets.Gallery.sortby',
58
+ id: 'creatives.containersV2.Assets.Gallery.sortby',
59
59
  defaultMessage: 'Sort by',
60
60
  },
61
61
  delete: {
62
- id: 'app.containers.Assets.Gallery.delete',
62
+ id: 'creatives.containersV2.Assets.Gallery.delete',
63
63
  defaultMessage: 'Delete',
64
64
  },
65
65
  search: {
66
- id: 'app.containers.Assets.Gallery.search',
66
+ id: 'creatives.containersV2.Assets.Gallery.search',
67
67
  defaultMessage: 'Search',
68
68
  },
69
69
  select: {
70
- id: 'app.containers.Assets.Gallery.select',
70
+ id: 'creatives.containersV2.Assets.Gallery.select',
71
71
  defaultMessage: 'Select',
72
72
  },
73
73
  preview: {
74
- id: 'app.containers.Assets.Gallery.preview',
74
+ id: 'creatives.containersV2.Assets.Gallery.preview',
75
75
  defaultMessage: 'Preview',
76
76
  },
77
77
  assetUploadSuccess: {
78
- id: 'app.containers.Assets.Gallery.assetUploadSuccess',
78
+ id: 'creatives.containersV2.Assets.Gallery.assetUploadSuccess',
79
79
  defaultMessage: 'Image uploaded successfully',
80
80
  },
81
81
  assetUploadFailed: {
82
- id: 'app.containers.Assets.Gallery.assetUploadFailed',
82
+ id: 'creatives.containersV2.Assets.Gallery.assetUploadFailed',
83
83
  defaultMessage: 'Image uploaded failed',
84
84
  },
85
85
  assetDeleteSuccess: {
86
- id: 'app.containers.Assets.Gallery.assetDeleteSuccess',
86
+ id: 'creatives.containersV2.Assets.Gallery.assetDeleteSuccess',
87
87
  defaultMessage: 'Image deleted successfully.',
88
88
  },
89
89
  assetDeleteFailed: {
90
- id: 'app.containers.Assets.Gallery.assetDeleteFailed',
90
+ id: 'creatives.containersV2.Assets.Gallery.assetDeleteFailed',
91
91
  defaultMessage: 'Image deletion failed.',
92
92
  },
93
93
  noAssetMessage: {
94
- id: 'app.containers.Assets.Gallery.noAssetMessage',
94
+ id: 'creatives.containersV2.Assets.Gallery.noAssetMessage',
95
95
  defaultMessage: 'No image is uploaded',
96
96
  },
97
97
  lastUpdated: {
98
- id: 'app.containers.Assets.Gallery.lastUpdated',
98
+ id: 'creatives.containersV2.Assets.Gallery.lastUpdated',
99
99
  defaultMessage: 'Last update {on} by {by}',
100
100
  },
101
101
  noTemplatesFound: {
102
- id: `app.containers.Assets.Gallery.noTemplatesFound`,
102
+ id: `creatives.containersV2.Assets.Gallery.noTemplatesFound`,
103
103
  defaultMessage: 'No templates found',
104
104
  },
105
105
  });
@@ -7,27 +7,27 @@ import { defineMessages } from 'react-intl';
7
7
 
8
8
  export default defineMessages({
9
9
  addNewCallTask: {
10
- id: 'app.containers.CallTask.addNewCallTask',
10
+ id: 'creatives.containersV2.CallTask.addNewCallTask',
11
11
  defaultMessage: 'Add new call task',
12
12
  },
13
13
  newMessage: {
14
- id: 'app.containers.CallTask.newMessage',
14
+ id: 'creatives.containersV2.CallTask.newMessage',
15
15
  defaultMessage: 'New message',
16
16
  },
17
17
  callTaskInfo: {
18
- id: 'app.containers.CallTask.callTaskInfo',
18
+ id: 'creatives.containersV2.CallTask.callTaskInfo',
19
19
  defaultMessage: 'Call Tasks are message sent to store staff. The messages are displayed on the Point of Sale (POS) machines for store staff to take action.',
20
20
  },
21
21
  callTaskTitleIllustartion: {
22
- id: `app.containers.CallTask.callTaskTitleIllustartion`,
22
+ id: `creatives.containersV2.CallTask.callTaskTitleIllustartion`,
23
23
  defaultMessage: 'Create a Call Task {templateText}',
24
24
  },
25
25
  newCallTaskTemplate: {
26
- id: `app.containers.CallTask.newCallTaskTemplate`,
26
+ id: `creatives.containersV2.CallTask.newCallTaskTemplate`,
27
27
  defaultMessage: 'New Call Task {templateText}',
28
28
  },
29
29
  template: {
30
- id: `app.containers.CallTask.template`,
30
+ id: `creatives.containersV2.CallTask.template`,
31
31
  defaultMessage: 'template',
32
32
  },
33
33
  });
@@ -2,14 +2,15 @@ import PropTypes from 'prop-types';
2
2
  import React from 'react';
3
3
  import Helmet from 'react-helmet';
4
4
  import { connect } from 'react-redux';
5
+ import {CapNotification} from '@capillarytech/cap-ui-library';
5
6
  import { bindActionCreators } from 'redux';
6
7
  import styled from 'styled-components';
7
8
  import { createStructuredSelector } from 'reselect';
8
9
  import _ from 'lodash';
9
10
  import moment from 'moment';
10
11
  // import 'moment/locale/zh-cn';
11
- import { injectIntl } from 'react-intl';
12
- import {CapNotification} from '@capillarytech/cap-ui-library';
12
+ import { injectIntl, FormattedMessage } from 'react-intl';
13
+ import messages from './messages';
13
14
  import { makeSelectAuthenticated, makeSelectUser } from './selectors';
14
15
  import * as actions from './actions';
15
16
  import * as locationActions from '../LanguageProvider/actions';
@@ -164,9 +165,9 @@ export class Cap extends React.Component { // eslint-disable-line react/prefer-s
164
165
  <CapWrapper>
165
166
  <Helmet
166
167
  titleTemplate="Capillary - %s"
167
- defaultTitle="App Name"
168
+ defaultTitle={<FormattedMessage {...messages.appName} />}
168
169
  meta={[
169
- { name: 'description', content: 'App Name' },
170
+ { name: 'description', content: <FormattedMessage {...messages.appName} /> },
170
171
  ]}
171
172
  />
172
173
  <div className="wrapper">