@capillarytech/creatives-library 3.0.35 → 3.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.
- package/assets/noImage.png +0 -0
- package/components/BreadCrumbs/messages.js +1 -1
- package/components/CapTagList/index.js +3 -3
- package/components/CapTagList/messages.js +4 -16
- package/components/Ckeditor/messages.js +1 -1
- package/components/CustomPopOver/index.js +4 -3
- package/components/CustomPopOver/messages.js +1 -5
- package/components/DateFilter/index.js +12 -12
- package/components/DateFilter/messages.js +0 -40
- package/components/DateRange/index.js +4 -5
- package/components/DateRange/messages.js +1 -13
- package/components/Edmeditor/messages.js +1 -1
- package/components/EmailPreview/index.js +4 -4
- package/components/EmailPreview/messages.js +2 -18
- package/components/Footer/messages.js +1 -1
- package/components/FormBuilder/index.js +19 -15
- package/components/FormBuilder/messages.js +1 -33
- package/components/Header/messages.js +4 -4
- package/components/ImagePreview/index.js +1 -1
- package/components/ImagePreview/messages.js +1 -5
- package/components/PageHeader/messages.js +1 -1
- package/components/PreviewSideBar/index.js +2 -2
- package/components/PreviewSideBar/messages.js +6 -14
- package/components/Sidebar/messages.js +3 -3
- package/components/SmsTest/index.js +4 -6
- package/components/SmsTest/messages.js +1 -9
- package/components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +3 -3
- package/components/TemplatePreview/index.js +10 -11
- package/components/TemplatePreview/messages.js +7 -23
- package/components/Toastr/messages.js +1 -1
- package/components/ToastrMessage/index.js +1 -4
- package/components/ToastrMessage/messages.js +1 -5
- package/components/TopBar/messages.js +1 -1
- package/config/app.js +0 -2
- package/containers/Assets/Gallery/messages.js +20 -20
- package/containers/Cap/index.js +5 -5
- package/containers/Dashboard/index.js +2 -2
- package/containers/Dashboard/messages.js +1 -1
- package/containers/Ebill/index.js +1 -1
- package/containers/Ebill/messages.js +16 -20
- package/containers/Email/index.js +24 -24
- package/containers/Email/messages.js +59 -107
- package/containers/Line/Create/index.js +7 -7
- package/containers/Line/Create/messages.js +42 -58
- package/containers/Line/Edit/index.js +14 -14
- package/containers/Line/Edit/messages.js +38 -58
- package/containers/Login/components/LoginForm/index.js +7 -10
- package/containers/Login/components/LoginForm/messages.js +3 -15
- package/containers/Login/index.js +1 -1
- package/containers/Login/messages.js +3 -7
- package/containers/MobilePush/Create/index.js +45 -45
- package/containers/MobilePush/Create/messages.js +75 -111
- package/containers/MobilePush/Edit/index.js +45 -45
- package/containers/MobilePush/Edit/messages.js +83 -100
- package/containers/NotFoundPage/messages.js +1 -1
- package/containers/Sms/Create/index.js +8 -7
- package/containers/Sms/Create/messages.js +19 -43
- package/containers/Sms/Edit/index.js +4 -4
- package/containers/Sms/Edit/messages.js +20 -36
- package/containers/TagList/messages.js +1 -1
- package/containers/Templates/index.js +19 -20
- package/containers/Templates/messages.js +64 -136
- package/containers/TestPage/messages.js +1 -1
- package/containers/Testv2/index.js +2 -2
- package/containers/Testv2/messages.js +1 -9
- package/containers/WeChat/MapTemplates/index.js +10 -10
- package/containers/WeChat/MapTemplates/messages.js +17 -49
- package/containers/WeChat/RichmediaTemplates/Create/messages.js +33 -33
- package/containers/WeChat/RichmediaTemplates/Edit/messages.js +1 -1
- package/containers/WeChat/RichmediaTemplates/View/index.js +2 -2
- package/containers/WeChat/RichmediaTemplates/View/messages.js +1 -9
- package/index.js +20 -8
- package/package.json +4 -1
- package/routes.js +16 -2
- package/services/api.js +2 -17
- package/services/getSchema.js +4 -1
- package/translations/en.json +360 -1396
- package/translations/zh.json +381 -1417
- package/utils/smsCharCountV2.js +10 -26
- package/v2Components/BreadCrumbs/messages.js +1 -1
- package/v2Components/CallTaskPreview/messages.js +1 -1
- package/v2Components/CapTagList/index.js +5 -6
- package/v2Components/CapTagList/messages.js +4 -24
- package/v2Components/Ckeditor/index.js +0 -1
- package/v2Components/Ckeditor/messages.js +1 -1
- package/v2Components/CmsTemplatesComponent/messages.js +2 -2
- package/v2Components/CustomPopOver/index.js +2 -4
- package/v2Components/CustomPopOver/messages.js +1 -5
- package/v2Components/DateFilter/index.js +349 -0
- package/v2Components/DateFilter/messages.js +17 -0
- package/v2Components/DateFilter/tests/index.test.js +15 -0
- package/v2Components/DateRange/index.js +113 -0
- package/v2Components/DateRange/messages.js +13 -0
- package/v2Components/DateRange/tests/index.test.js +10 -0
- package/v2Components/Edmeditor/messages.js +1 -1
- package/v2Components/EmailPreview/index.js +2 -2
- package/v2Components/EmailPreview/messages.js +3 -11
- package/v2Components/EmailPreviewV2/index.js +1 -1
- package/v2Components/EmailPreviewV2/messages.js +9 -13
- package/v2Components/Footer/messages.js +1 -1
- package/v2Components/FormBuilder/_formBuilder.scss +19 -0
- package/v2Components/FormBuilder/index.js +58 -27
- package/v2Components/FormBuilder/messages.js +1 -49
- package/v2Components/Header/index.js +2 -2
- package/v2Components/Header/messages.js +4 -4
- package/v2Components/ImagePreview/index.js +2 -3
- package/v2Components/ImagePreview/messages.js +1 -5
- package/v2Components/MobilePushPreviewV2/index.js +5 -2
- package/v2Components/MobilePushPreviewV2/messages.js +1 -9
- package/v2Components/NavigationBar/messages.js +1 -1
- package/v2Components/NewCallTask/messages.js +5 -5
- package/v2Components/PageHeader/_pageHeader.scss +22 -0
- package/v2Components/PageHeader/index.js +37 -0
- package/v2Components/PageHeader/messages.js +13 -0
- package/v2Components/PageHeader/tests/index.test.js +10 -0
- package/v2Components/PreviewSideBar/messages.js +6 -6
- package/v2Components/Sidebar/_sidebar.scss +115 -0
- package/v2Components/Sidebar/index.js +208 -0
- package/v2Components/Sidebar/messages.js +21 -0
- package/v2Components/Sidebar/tests/index.test.js +10 -0
- package/v2Components/SmsEditor/index.js +55 -0
- package/v2Components/SmsEditor/tests/index.test.js +10 -0
- package/v2Components/SmsTest/index.js +4 -6
- package/v2Components/SmsTest/messages.js +1 -9
- package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/_wechatRichmediaTemplatePrev.scss +2 -0
- package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +18 -28
- package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +3 -3
- package/v2Components/TemplatePreview/_templatePreview.scss +0 -9
- package/v2Components/TemplatePreview/index.js +16 -35
- package/v2Components/TemplatePreview/messages.js +7 -23
- package/v2Components/Toastr/messages.js +1 -1
- package/v2Components/ToastrMessage/index.js +2 -3
- package/v2Components/ToastrMessage/messages.js +1 -5
- package/v2Components/TopBar/_topbar.scss +46 -0
- package/v2Components/TopBar/messages.js +7 -7
- package/v2Containers/App/constants.js +0 -11
- package/v2Containers/Assets/Gallery/messages.js +24 -24
- package/v2Containers/CallTask/messages.js +6 -6
- package/v2Containers/Cap/actions.js +0 -1
- package/v2Containers/Cap/index.js +9 -6
- package/v2Containers/Cap/messsages.js +15 -19
- package/v2Containers/Cap/sagas.js +8 -1
- package/v2Containers/ChannelTemplates/messages.js +1 -1
- package/v2Containers/CreativesContainer/SlideBoxContent.js +39 -1
- package/v2Containers/CreativesContainer/SlideBoxFooter.js +7 -1
- package/v2Containers/CreativesContainer/SlideBoxHeader.js +21 -3
- package/v2Containers/CreativesContainer/index.js +95 -50
- package/v2Containers/CreativesContainer/index.scss +15 -0
- package/v2Containers/CreativesContainer/messages.js +12 -16
- package/v2Containers/Dashboard/index.js +1 -2
- package/v2Containers/Dashboard/messages.js +1 -1
- package/v2Containers/Ebill/index.js +1 -1
- package/v2Containers/Ebill/messages.js +16 -20
- package/v2Containers/Email/index.js +20 -20
- package/v2Containers/Email/messages.js +61 -101
- package/v2Containers/EmailWrapper/index.js +44 -64
- package/v2Containers/EmailWrapper/messages.js +12 -12
- package/v2Containers/Line/Create/index.js +3 -3
- package/v2Containers/Line/Create/messages.js +41 -53
- package/v2Containers/Line/Edit/index.js +10 -10
- package/v2Containers/Line/Edit/messages.js +39 -55
- package/v2Containers/Login/components/LoginForm/index.js +6 -9
- package/v2Containers/Login/components/LoginForm/messages.js +3 -15
- package/v2Containers/Login/index.js +1 -1
- package/v2Containers/Login/messages.js +3 -7
- package/v2Containers/MobilePush/Create/_mobilePushCreate.scss +3 -0
- package/v2Containers/MobilePush/Create/index.js +33 -33
- package/v2Containers/MobilePush/Create/messages.js +81 -109
- package/v2Containers/MobilePush/Edit/_mobilePushCreate.scss +3 -0
- package/v2Containers/MobilePush/Edit/index.js +22 -22
- package/v2Containers/MobilePush/Edit/messages.js +79 -95
- package/v2Containers/MobilePush/initialSchema.js +1 -2
- package/v2Containers/MobilepushWrapper/messages.js +5 -5
- package/v2Containers/NotFoundPage/messages.js +1 -1
- package/v2Containers/Sms/Create/index.js +6 -6
- package/v2Containers/Sms/Create/messages.js +21 -41
- package/v2Containers/Sms/Edit/index.js +6 -6
- package/v2Containers/Sms/Edit/messages.js +20 -36
- package/v2Containers/TagList/messages.js +1 -1
- package/v2Containers/Templates/_templates.scss +31 -5
- package/v2Containers/Templates/index.js +243 -248
- package/v2Containers/Templates/messages.js +7 -15
- package/v2Containers/Templates/sagas.js +0 -1
- package/v2Containers/TemplatesV2/_templatesV2.scss +5 -0
- package/v2Containers/TemplatesV2/index.js +4 -1
- package/v2Containers/TemplatesV2/messages.js +5 -29
- package/v2Containers/TestPage/messages.js +1 -1
- package/v2Containers/Testv2/index.js +2 -2
- package/v2Containers/Testv2/messages.js +1 -9
- package/v2Containers/WeChat/MapTemplates/_mapTemplates.scss +16 -0
- package/v2Containers/WeChat/MapTemplates/actions.js +4 -2
- package/v2Containers/WeChat/MapTemplates/index.js +800 -872
- package/v2Containers/WeChat/MapTemplates/initialSchema.js +184 -0
- package/v2Containers/WeChat/MapTemplates/messages.js +19 -43
- package/v2Containers/WeChat/MapTemplates/sagas.js +6 -2
- package/v2Containers/WeChat/MapTemplates/selectors.js +1 -1
- package/v2Containers/WeChat/RichmediaTemplates/Create/_createRichmedia.scss +118 -28
- package/v2Containers/WeChat/RichmediaTemplates/Create/actions.js +3 -1
- package/v2Containers/WeChat/RichmediaTemplates/Create/index.js +262 -306
- package/v2Containers/WeChat/RichmediaTemplates/Create/messages.js +43 -95
- package/v2Containers/WeChat/RichmediaTemplates/Create/reducer.js +2 -1
- package/v2Containers/WeChat/RichmediaTemplates/Create/richmediaschema.js +113 -246
- package/v2Containers/WeChat/RichmediaTemplates/Create/sagas.js +5 -2
- package/v2Containers/WeChat/RichmediaTemplates/Create/selectors.js +1 -1
- package/v2Containers/WeChat/RichmediaTemplates/Edit/actions.js +2 -2
- package/v2Containers/WeChat/RichmediaTemplates/Edit/index.js +11 -10
- package/v2Containers/WeChat/RichmediaTemplates/Edit/messages.js +1 -1
- package/v2Containers/WeChat/RichmediaTemplates/Edit/reducer.js +1 -0
- package/v2Containers/WeChat/RichmediaTemplates/Edit/sagas.js +4 -2
- package/v2Containers/WeChat/RichmediaTemplates/Edit/selectors.js +1 -1
- package/v2Containers/WeChat/RichmediaTemplates/View/messages.js +1 -9
- package/v2Containers/WeChat/Wrapper/_wrapper.scss +0 -0
- package/v2Containers/WeChat/Wrapper/constants.js +5 -0
- package/v2Containers/WeChat/Wrapper/index.js +194 -0
- package/v2Containers/WeChat/Wrapper/messages.js +21 -0
- package/v2Containers/WeChat/helper.js +12 -0
- package/containers/Cap/messages.js +0 -75
- package/v2Containers/Cap/messages.js +0 -75
|
@@ -12,10 +12,17 @@ import styled from 'styled-components';
|
|
|
12
12
|
import {injectIntl, intlShape, FormattedMessage } from 'react-intl';
|
|
13
13
|
import { createStructuredSelector } from 'reselect';
|
|
14
14
|
import moment from "moment";
|
|
15
|
-
import
|
|
15
|
+
import get from 'lodash/get';
|
|
16
|
+
import isEmpty from 'lodash/isEmpty';
|
|
17
|
+
import isEqual from 'lodash/isEqual';
|
|
18
|
+
import forEach from 'lodash/forEach';
|
|
19
|
+
import findIndex from 'lodash/findIndex';
|
|
20
|
+
import cloneDeep from 'lodash/cloneDeep';
|
|
21
|
+
import find from 'lodash/find';
|
|
22
|
+
import map from 'lodash/map';
|
|
16
23
|
import { bindActionCreators } from 'redux';
|
|
17
|
-
import { Modal} from 'antd';
|
|
18
|
-
import {CapMenu, CapDropdown, CapButton, CapInput, CapIcon,
|
|
24
|
+
import { Modal, Form} from 'antd';
|
|
25
|
+
import {CapMenu, CapDropdown, CapButton, CapInput, CapIcon, CapRadioCard, CapPopover, CapSpin, CapCustomCard, CapRow, CapSlideBox, CapLink, CapHeading, CapNotification, CapIllustration, CapHeader, CapLabel, CapRadio} from '@capillarytech/cap-ui-library';
|
|
19
26
|
import { makeSelectTemplates, makeSelectTemplatesResponse } from './selectors';
|
|
20
27
|
import { makeSelectCreate as makeSelectCreateSms} from '../Sms/Create/selectors';
|
|
21
28
|
import { makeSelectCreate as makeSelectCreateMobilePush } from '../MobilePush/Create/selectors';
|
|
@@ -59,6 +66,13 @@ const InlineDiv = styled.div`
|
|
|
59
66
|
}
|
|
60
67
|
}
|
|
61
68
|
`;
|
|
69
|
+
const ACCOUNT_SELECTION_MODE = "accountSelectionMode";
|
|
70
|
+
const TEMPLATES_MODE = "templatesMode";
|
|
71
|
+
const WECHAT_FILTERS = {
|
|
72
|
+
ALL: 'all',
|
|
73
|
+
RICHMEDIA: 'richmedia',
|
|
74
|
+
MAPTEMPLATES: 'maptemplate',
|
|
75
|
+
};
|
|
62
76
|
export class Templates extends React.Component { // eslint-disable-line react/prefer-stateless-function
|
|
63
77
|
constructor(props) {
|
|
64
78
|
super(props);
|
|
@@ -83,6 +97,8 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
83
97
|
defaultAccount: true,
|
|
84
98
|
modeType: null,
|
|
85
99
|
routeParams: null,
|
|
100
|
+
activeMode: TEMPLATES_MODE,
|
|
101
|
+
wechatFilter: WECHAT_FILTERS.ALL,
|
|
86
102
|
};
|
|
87
103
|
|
|
88
104
|
this.handleOnHoverItem = this.handleOnHoverItem.bind(this);
|
|
@@ -109,6 +125,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
109
125
|
componentWillMount() {
|
|
110
126
|
if (this.state.channel === '') {
|
|
111
127
|
let channel = '';
|
|
128
|
+
let activeMode = TEMPLATES_MODE;
|
|
112
129
|
|
|
113
130
|
switch (this.props.route.name.toUpperCase()) {
|
|
114
131
|
case SMS:
|
|
@@ -116,10 +133,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
116
133
|
break;
|
|
117
134
|
case MOBILE_PUSH:
|
|
118
135
|
channel = "MobilePush";
|
|
136
|
+
activeMode = ACCOUNT_SELECTION_MODE;
|
|
119
137
|
this.props.actions.getWeCrmAccounts(channel);
|
|
120
138
|
break;
|
|
121
139
|
case WECHAT:
|
|
122
140
|
channel = 'wechat';
|
|
141
|
+
activeMode = ACCOUNT_SELECTION_MODE;
|
|
123
142
|
this.props.actions.getWeCrmAccounts();
|
|
124
143
|
break;
|
|
125
144
|
case EMAIL:
|
|
@@ -134,8 +153,8 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
134
153
|
default:
|
|
135
154
|
channel = '';
|
|
136
155
|
}
|
|
137
|
-
this.setState({ channel });
|
|
138
|
-
if (
|
|
156
|
+
this.setState({ channel, activeMode });
|
|
157
|
+
if (isEmpty(this.props.Templates.userList)) {
|
|
139
158
|
this.props.actions.getUserList();
|
|
140
159
|
}
|
|
141
160
|
}
|
|
@@ -145,21 +164,21 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
145
164
|
if (this.props.location.query.type === 'embedded' && this.isEnabledInLibraryModule("setLocale")) {
|
|
146
165
|
this.setLocale();
|
|
147
166
|
}
|
|
148
|
-
if (this.state.channel.toLowerCase() === 'line' || this.state.channel.toLowerCase() === 'sms' || this.state.channel.toLowerCase() === 'email' || this.state.channel.toLowerCase() === 'ebill' || ((this.state.channel.toLowerCase() === 'wechat' || this.state.channel.toLowerCase() === 'mobilepush') && !
|
|
167
|
+
if (this.state.channel.toLowerCase() === 'line' || this.state.channel.toLowerCase() === 'sms' || this.state.channel.toLowerCase() === 'email' || this.state.channel.toLowerCase() === 'ebill' || ((this.state.channel.toLowerCase() === 'wechat' || this.state.channel.toLowerCase() === 'mobilepush') && !isEmpty(this.props.Templates.selectedWeChatAccount))) {
|
|
149
168
|
const queryParams = {
|
|
150
169
|
// name: this.state.searchText,
|
|
151
170
|
// sortBy: this.state.sortBy,
|
|
152
171
|
};
|
|
153
|
-
if (this.state.channel.toLowerCase() === 'wechat' &&
|
|
172
|
+
if (this.state.channel.toLowerCase() === 'wechat' && get(this.props, 'Templates.selectedWeChatAccount.configs', false)) {
|
|
154
173
|
queryParams.wecrmId = this.props.Templates.selectedWeChatAccount.configs.wecrm_app_id;
|
|
155
174
|
queryParams.wecrmToken = this.props.Templates.selectedWeChatAccount.configs.wecrm_token;
|
|
156
175
|
queryParams.originalId = this.props.Templates.selectedWeChatAccount.sourceAccountIdentifier;
|
|
157
176
|
}
|
|
158
|
-
if (this.state.channel.toLowerCase() === "mobilepush" && !
|
|
177
|
+
if (this.state.channel.toLowerCase() === "mobilepush" && !isEmpty(this.props.Templates.selectedWeChatAccount)) {
|
|
159
178
|
const account = this.props.Templates.selectedWeChatAccount;
|
|
160
179
|
queryParams.accountId = account.id;
|
|
161
|
-
const isAndroidSupported =
|
|
162
|
-
const isIosSupported =
|
|
180
|
+
const isAndroidSupported = get(account, "configs.android") === '1';
|
|
181
|
+
const isIosSupported = get(account, "configs.ios") === '1';
|
|
163
182
|
if (!(isAndroidSupported || isIosSupported)) {
|
|
164
183
|
this.props.actions.resetAccount();
|
|
165
184
|
return;
|
|
@@ -182,10 +201,10 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
182
201
|
name: this.state.searchText,
|
|
183
202
|
sortBy: this.state.sortBy,
|
|
184
203
|
};
|
|
185
|
-
if (!
|
|
204
|
+
if (!isEmpty(this.props.TemplatesList) && !this.props.Templates.getAllTemplatesInProgress && this.props.TemplatesList[0] && this.props.TemplatesList[0].totalCount && this.state.templatesCount === 0) {
|
|
186
205
|
this.setState({templatesCount: this.props.TemplatesList[0].totalCount});
|
|
187
206
|
}
|
|
188
|
-
if (!
|
|
207
|
+
if (!isEqual(nextProps.route.name, this.props.route.name)) {
|
|
189
208
|
let channel = '';
|
|
190
209
|
this.props.actions.resetTemplate();
|
|
191
210
|
this.props.actions.resetAccount();
|
|
@@ -208,13 +227,13 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
208
227
|
channel = 'Line';
|
|
209
228
|
}
|
|
210
229
|
this.setState({ channel }, () => {
|
|
211
|
-
if (this.state.channel.toLowerCase() === 'line' || this.state.channel.toLowerCase() === 'sms' || this.state.channel.toLowerCase() === 'email' || this.state.channel.toLowerCase() === 'ebill' || (this.state.channel.toLowerCase() === 'wechat' && !
|
|
212
|
-
if (this.state.channel.toLowerCase() === 'wechat' && !
|
|
230
|
+
if (this.state.channel.toLowerCase() === 'line' || this.state.channel.toLowerCase() === 'sms' || this.state.channel.toLowerCase() === 'email' || this.state.channel.toLowerCase() === 'ebill' || (this.state.channel.toLowerCase() === 'wechat' && !isEmpty(nextProps.Templates.selectedWeChatAccount))) {
|
|
231
|
+
if (this.state.channel.toLowerCase() === 'wechat' && !isEmpty(nextProps.Templates.selectedWeChatAccount)) {
|
|
213
232
|
params.wecrmId = nextProps.Templates.selectedWeChatAccount.configs.wecrm_app_id;
|
|
214
233
|
params.wecrmToken = nextProps.Templates.selectedWeChatAccount.configs.wecrm_token;
|
|
215
234
|
params.originalId = nextProps.Templates.selectedWeChatAccount.sourceAccountIdentifier;
|
|
216
235
|
}
|
|
217
|
-
if (this.state.channel.toLowerCase() === "mobilepush" && !
|
|
236
|
+
if (this.state.channel.toLowerCase() === "mobilepush" && !isEmpty(nextProps.Templates.selectedWeChatAccount)) {
|
|
218
237
|
params.accountId = nextProps.Templates.selectedWeChatAccount.id;
|
|
219
238
|
}
|
|
220
239
|
this.getAllTemplates({params}, true);
|
|
@@ -229,13 +248,13 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
229
248
|
if (this.state.channel.toLowerCase() === "mobilepush" && nextProps.Templates.selectedWeChatAccount) {
|
|
230
249
|
params.accountId = nextProps.Templates.selectedWeChatAccount.id;
|
|
231
250
|
}
|
|
232
|
-
if ((this.state.channel.toLowerCase() === 'wechat' || this.state.channel.toLowerCase() === 'mobilepush') &&
|
|
251
|
+
if ((this.state.channel.toLowerCase() === 'wechat' || this.state.channel.toLowerCase() === 'mobilepush') && isEmpty(nextProps.Templates.selectedWeChatAccount) && (this.props.location.query.type === 'embedded') && !this.isEnabledInLibraryModule("showAccountSelection")) {
|
|
233
252
|
let selectedAccount = '';
|
|
234
|
-
if (
|
|
253
|
+
if (isEmpty(nextProps.Templates.weCrmAccounts)) {
|
|
235
254
|
return;
|
|
236
255
|
}
|
|
237
256
|
if (this.state.channel.toLowerCase() === 'wechat') {
|
|
238
|
-
|
|
257
|
+
forEach(nextProps.Templates.weCrmAccounts, (account) => {
|
|
239
258
|
if (account.configs && account.configs.is_wecrm_enabled) {
|
|
240
259
|
if (nextProps.location.query.source_account_id && account.sourceAccountIdentifier === nextProps.location.query.source_account_id) {
|
|
241
260
|
selectedAccount = account;
|
|
@@ -250,7 +269,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
250
269
|
this.getAllTemplates({params});
|
|
251
270
|
});
|
|
252
271
|
} else if (this.state.channel.toLowerCase() === 'mobilepush' && (nextProps.location.query.account_id || nextProps.location.query.source_account_id)) {
|
|
253
|
-
|
|
272
|
+
forEach(nextProps.Templates.weCrmAccounts, (account) => {
|
|
254
273
|
if ((nextProps.location.query.account_id && account.id === Number(nextProps.location.query.account_id)) || (nextProps.location.query.source_account_id && account.sourceAccountIdentifier && account.sourceAccountIdentifier === nextProps.location.query.source_account_id)) {
|
|
255
274
|
selectedAccount = account;
|
|
256
275
|
}
|
|
@@ -285,7 +304,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
285
304
|
this.props.lineActions.clearCreateResponse();
|
|
286
305
|
}
|
|
287
306
|
|
|
288
|
-
if (nextProps.Create && this.props.Create && nextProps.Create.createTemplateError && !
|
|
307
|
+
if (nextProps.Create && this.props.Create && nextProps.Create.createTemplateError && !isEqual(nextProps.Create.createTemplateError, this.props.Create.createTemplateError)) {
|
|
289
308
|
const message = this.props.intl.formatMessage(messages.somethingWentWrong);
|
|
290
309
|
CapNotification.error({key: 'somethingWrong', message});
|
|
291
310
|
if (this.state.channel.toLowerCase() === "sms") {
|
|
@@ -302,14 +321,14 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
302
321
|
if (nextProps.Edit && nextProps.Edit.editResponse && nextProps.Edit.editResponse.templateId && nextProps.Edit.editResponse.templateId !== '') {
|
|
303
322
|
this.props.smsEditActions.clearEditResponse();
|
|
304
323
|
}
|
|
305
|
-
if (!nextProps.Templates.deleteTemplateInProgress && !
|
|
324
|
+
if (!nextProps.Templates.deleteTemplateInProgress && !isEqual(nextProps.Templates.deleteTemplateInProgress, this.props.Templates.deleteTemplateInProgress) &&
|
|
306
325
|
nextProps.Templates.deleteResponse) {
|
|
307
326
|
const message = `${this.state.channel.toUpperCase()} ${this.props.intl.formatMessage(messages['Template deleted successfully'])}`;
|
|
308
327
|
CapNotification.success({key: 'deleteSucess', message});
|
|
309
328
|
this.getAllTemplates({params, resetPage: true});
|
|
310
329
|
}
|
|
311
330
|
|
|
312
|
-
if (!nextProps.Templates.sendingFile && !
|
|
331
|
+
if (!nextProps.Templates.sendingFile && !isEqual(this.props.Templates.sendingFile, nextProps.Templates.sendingFile) && !nextProps.Templates.errorSendingFile) {
|
|
313
332
|
const module = this.props.location.query.module ? this.props.location.query.module : 'default';
|
|
314
333
|
const isLanguageSupport = (this.props.location.query.isLanguageSupport) ? this.props.location.query.isLanguageSupport : true;
|
|
315
334
|
const isEdmSupport = (this.props.location.query.isEdmSupport !== "false") || false;
|
|
@@ -324,7 +343,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
324
343
|
}});
|
|
325
344
|
}
|
|
326
345
|
|
|
327
|
-
if (!nextProps.Templates.sendingFile && !
|
|
346
|
+
if (!nextProps.Templates.sendingFile && !isEqual(this.props.Templates.sendingFile, nextProps.Templates.sendingFile) && nextProps.Templates.errorSendingFile) {
|
|
328
347
|
let errorMessage = this.props.intl.formatMessage(messages.zipUploadFailed);
|
|
329
348
|
if (nextProps.Templates.errorMessage && nextProps.Templates.errorMessage !== "") {
|
|
330
349
|
errorMessage = nextProps.Templates.errorMessage;
|
|
@@ -332,7 +351,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
332
351
|
CapNotification.error({key: 'uploadError', message: errorMessage});
|
|
333
352
|
}
|
|
334
353
|
|
|
335
|
-
if (!
|
|
354
|
+
if (!isEmpty(nextProps.Templates.templateDetails) && !isEqual(nextProps.Templates.templateDetails, this.props.Templates.templateDetails)) {
|
|
336
355
|
this.setState({previewTemplate: nextProps.Templates.templateDetails});
|
|
337
356
|
}
|
|
338
357
|
|
|
@@ -350,7 +369,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
350
369
|
nextProps.actions.setWeChatAccount(nextProps.Templates.weCrmAccounts[0]);
|
|
351
370
|
paramsDefault.accountId = nextProps.Templates.weCrmAccounts[0].id;
|
|
352
371
|
}
|
|
353
|
-
this.setState({defaultAccount: false});
|
|
372
|
+
this.setState({defaultAccount: false, activeMode: TEMPLATES_MODE, selectedAccount: nextProps.Templates.weCrmAccounts[0].name });
|
|
354
373
|
this.getAllTemplates({params: paramsDefault}, true);
|
|
355
374
|
}
|
|
356
375
|
}
|
|
@@ -359,26 +378,29 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
359
378
|
window.removeEventListener("message", this.handleFrameTasks);
|
|
360
379
|
this.props.actions.resetTemplateStoreData();
|
|
361
380
|
this.props.globalActions.clearMetaEntities();
|
|
381
|
+
// this.props.actions.resetAccount();
|
|
362
382
|
// this.setState({defaultAccount: false});
|
|
363
383
|
}
|
|
364
384
|
|
|
365
|
-
onAccountSelect(
|
|
385
|
+
onAccountSelect(e) {
|
|
386
|
+
const value = e.target.value;
|
|
387
|
+
console.log("onAccountSelect", e, value);
|
|
366
388
|
this.setState({selectedAccount: value}, () => {
|
|
367
389
|
const params = {
|
|
368
390
|
name: this.state.searchText,
|
|
369
391
|
sortBy: this.state.sortBy,
|
|
370
392
|
};
|
|
371
393
|
if (this.state.channel.toLowerCase() === 'wechat') {
|
|
372
|
-
params.wecrmId = this.props.Templates.weCrmAccounts[
|
|
373
|
-
params.wecrmToken = this.props.Templates.weCrmAccounts[
|
|
374
|
-
this.props.actions.setWeChatAccount(this.props.Templates.weCrmAccounts[
|
|
375
|
-
params.originalId = this.props.Templates.weCrmAccounts[
|
|
394
|
+
params.wecrmId = this.props.Templates.weCrmAccounts[findIndex(this.props.Templates.weCrmAccounts, { name: value})].configs.wecrm_app_id;
|
|
395
|
+
params.wecrmToken = this.props.Templates.weCrmAccounts[findIndex(this.props.Templates.weCrmAccounts, { name: value})].configs.wecrm_token;
|
|
396
|
+
this.props.actions.setWeChatAccount(this.props.Templates.weCrmAccounts[findIndex(this.props.Templates.weCrmAccounts, { name: value})]);
|
|
397
|
+
params.originalId = this.props.Templates.weCrmAccounts[findIndex(this.props.Templates.weCrmAccounts, { name: value})].sourceAccountIdentifier;
|
|
376
398
|
} else if (this.state.channel.toLowerCase() === 'mobilepush') {
|
|
377
|
-
this.props.actions.setWeChatAccount(this.props.Templates.weCrmAccounts[
|
|
378
|
-
const account = this.props.Templates.weCrmAccounts[
|
|
399
|
+
this.props.actions.setWeChatAccount(this.props.Templates.weCrmAccounts[findIndex(this.props.Templates.weCrmAccounts, { name: value})]);
|
|
400
|
+
const account = this.props.Templates.weCrmAccounts[findIndex(this.props.Templates.weCrmAccounts, { name: value})];
|
|
379
401
|
params.accountId = account.id;
|
|
380
|
-
const isAndroidSupported =
|
|
381
|
-
const isIosSupported =
|
|
402
|
+
const isAndroidSupported = get(account, "configs.android") === '1';
|
|
403
|
+
const isIosSupported = get(account, "configs.ios") === '1';
|
|
382
404
|
if (!(isAndroidSupported || isIosSupported)) {
|
|
383
405
|
this.setState({selectedAccountError: true});
|
|
384
406
|
this.props.actions.resetTemplate();
|
|
@@ -387,7 +409,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
387
409
|
this.setState({selectedAccountError: false});
|
|
388
410
|
}
|
|
389
411
|
}
|
|
390
|
-
|
|
412
|
+
this.setState({activeMode: TEMPLATES_MODE});
|
|
391
413
|
console.log("getAllTemplates params: ", params);
|
|
392
414
|
this.getAllTemplates({params, resetPage: true});
|
|
393
415
|
});
|
|
@@ -411,12 +433,20 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
411
433
|
getCreativesParams = () => {
|
|
412
434
|
const routeParams = this.state.routeParams;
|
|
413
435
|
let creativesParams = {mode: ''};
|
|
414
|
-
if (!
|
|
415
|
-
|
|
436
|
+
if (!isEmpty(routeParams)) {
|
|
437
|
+
const { pathname } = routeParams;
|
|
438
|
+
if (pathname.includes('create')) {
|
|
416
439
|
creativesParams.mode = 'create';
|
|
417
|
-
} else if (
|
|
440
|
+
} else if (pathname.includes('edit')) {
|
|
418
441
|
creativesParams.mode = 'edit';
|
|
419
|
-
|
|
442
|
+
if (pathname.includes('richmedia')) {
|
|
443
|
+
creativesParams._id = pathname.split('/')[4];
|
|
444
|
+
creativesParams.definition = {
|
|
445
|
+
msgcontent: "RICH_MEDIA_WECHAT",
|
|
446
|
+
};
|
|
447
|
+
} else {
|
|
448
|
+
creativesParams._id = pathname.split('/')[3];
|
|
449
|
+
}
|
|
420
450
|
creativesParams.type = this.state.channel.toUpperCase();
|
|
421
451
|
}
|
|
422
452
|
}
|
|
@@ -452,6 +482,11 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
452
482
|
queryParams.sortBy = this.state.sortBy;
|
|
453
483
|
queryParams.page = this.state.page;
|
|
454
484
|
queryParams.perPage = this.state.perPageLimit;
|
|
485
|
+
if (this.state.channel.toLowerCase() === 'wechat' && !isEmpty(this.props.Templates.selectedWeChatAccount)) {
|
|
486
|
+
queryParams.wecrmId = this.props.Templates.selectedWeChatAccount.configs.wecrm_app_id;
|
|
487
|
+
queryParams.wecrmToken = this.props.Templates.selectedWeChatAccount.configs.wecrm_token;
|
|
488
|
+
queryParams.originalId = this.props.Templates.selectedWeChatAccount.sourceAccountIdentifier;
|
|
489
|
+
}
|
|
455
490
|
const channel = this.state.channel;
|
|
456
491
|
this.props.actions.getAllTemplates(channel, queryParams);
|
|
457
492
|
} else if ((resetPage || (page === 1 && this.state.templatesCount === 0) || page <= (this.state.templatesCount / this.state.perPageLimit))) {
|
|
@@ -463,17 +498,17 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
463
498
|
page = 1;
|
|
464
499
|
templatesCount = 0;
|
|
465
500
|
}
|
|
466
|
-
if (!params ||
|
|
501
|
+
if (!params || isEmpty(params)) {
|
|
467
502
|
queryParams = {
|
|
468
503
|
name: this.state.searchText,
|
|
469
504
|
sortBy: this.state.sortBy,
|
|
470
505
|
};
|
|
471
|
-
if (this.state.channel.toLowerCase() === 'wechat' && !
|
|
506
|
+
if (this.state.channel.toLowerCase() === 'wechat' && !isEmpty(this.props.Templates.selectedWeChatAccount)) {
|
|
472
507
|
queryParams.wecrmId = this.props.Templates.selectedWeChatAccount.configs.wecrm_app_id;
|
|
473
508
|
queryParams.wecrmToken = this.props.Templates.selectedWeChatAccount.configs.wecrm_token;
|
|
474
509
|
queryParams.originalId = this.props.Templates.selectedWeChatAccount.sourceAccountIdentifier;
|
|
475
510
|
}
|
|
476
|
-
if (this.state.channel.toLowerCase() === "mobilepush" && !
|
|
511
|
+
if (this.state.channel.toLowerCase() === "mobilepush" && !isEmpty(this.props.Templates.selectedWeChatAccount)) {
|
|
477
512
|
queryParams.accountId = this.props.Templates.selectedWeChatAccount.id;
|
|
478
513
|
if (this.state.mode) {
|
|
479
514
|
queryParams.mode = this.state.mode.toLowerCase();
|
|
@@ -488,9 +523,28 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
488
523
|
});
|
|
489
524
|
}
|
|
490
525
|
};
|
|
526
|
+
filterWechatTemplates = (templates) => {
|
|
527
|
+
const { wechatFilter } = this.state;
|
|
528
|
+
switch(wechatFilter) {
|
|
529
|
+
case WECHAT_FILTERS.RICHMEDIA:
|
|
530
|
+
return templates.filter(function (template) {
|
|
531
|
+
return template.definition && template.definition.msgcontent.toUpperCase() === "RICH_MEDIA_WECHAT";
|
|
532
|
+
});
|
|
533
|
+
case WECHAT_FILTERS.MAPTEMPLATES:
|
|
534
|
+
return templates.filter(function (template) {
|
|
535
|
+
return !template.definition;
|
|
536
|
+
});
|
|
537
|
+
default:
|
|
538
|
+
return templates;
|
|
539
|
+
};
|
|
540
|
+
}
|
|
491
541
|
getTemplateDataForGrid = ({templates, handlers, filterContent, channel, isLoading, loadingTip}) => {
|
|
492
542
|
const currentChannel = channel.toUpperCase();
|
|
493
|
-
|
|
543
|
+
let filteredTemplates = templates;
|
|
544
|
+
if (currentChannel === WECHAT) {
|
|
545
|
+
filteredTemplates = this.filterWechatTemplates(templates);
|
|
546
|
+
}
|
|
547
|
+
const cardDataList = filteredTemplates && filteredTemplates.length ? map(filteredTemplates, (template) => {
|
|
494
548
|
const templateData =
|
|
495
549
|
{
|
|
496
550
|
key: `${currentChannel}-card-${template.name}`,
|
|
@@ -502,19 +556,19 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
502
556
|
onClick={() => { if (this.props.isFullMode) { handlers.handlePreviewClick(template); } else { this.props.handlePeviewTemplate(template); } }}
|
|
503
557
|
/>,
|
|
504
558
|
],
|
|
505
|
-
hoverOption: <CapButton onClick={(e) => handlers.handleEditClick(e, template
|
|
559
|
+
hoverOption: <CapButton onClick={(e) => handlers.handleEditClick(e, template)}>{this.props.intl.formatMessage(this.props.isFullMode ? messages.creativesTemplatesEdit : messages.selectButton)}</CapButton>,
|
|
506
560
|
};
|
|
507
561
|
if (this.props.isFullMode) {
|
|
508
562
|
templateData.extra.push(<CapDropdown
|
|
509
563
|
overlay={
|
|
510
564
|
<CapMenu>
|
|
511
|
-
<CapMenu.Item onClick={() => this.duplicateTemplate(template)}>
|
|
565
|
+
{this.state.channel.toUpperCase() !== WECHAT && <CapMenu.Item onClick={() => this.duplicateTemplate(template)}>
|
|
512
566
|
<FormattedMessage {...messages.duplicateButton} />
|
|
513
|
-
</CapMenu.Item>
|
|
567
|
+
</CapMenu.Item>}
|
|
514
568
|
<CapMenu.Item
|
|
515
569
|
onClick={() => this.deleteTemplate(template)}
|
|
516
570
|
>
|
|
517
|
-
<FormattedMessage {...messages.deleteButton} />
|
|
571
|
+
{this.state.channel.toUpperCase() === WECHAT && !template.definition ? <FormattedMessage {...messages.unMapButton} /> : <FormattedMessage {...messages.deleteButton} />}
|
|
518
572
|
</CapMenu.Item>
|
|
519
573
|
</CapMenu>
|
|
520
574
|
}
|
|
@@ -522,40 +576,51 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
522
576
|
<CapIcon type="more" />
|
|
523
577
|
</CapDropdown>);
|
|
524
578
|
}
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
579
|
+
switch (currentChannel) {
|
|
580
|
+
case SMS:
|
|
581
|
+
templateData.content = template.versions.base['sms-editor'];
|
|
582
|
+
break;
|
|
583
|
+
case EMAIL: {
|
|
584
|
+
const url = template.versions.base.preview_http_url;
|
|
585
|
+
if (url) {
|
|
586
|
+
templateData.url = url;
|
|
587
|
+
} else {
|
|
588
|
+
templateData.content = template.versions.base.subject;
|
|
589
|
+
}
|
|
590
|
+
break;
|
|
533
591
|
}
|
|
534
|
-
|
|
535
|
-
|
|
592
|
+
case MOBILE_PUSH:
|
|
593
|
+
templateData.content = template;
|
|
594
|
+
break;
|
|
595
|
+
case WECHAT:
|
|
596
|
+
templateData.content = this.prepareWeChatPreviewData(template);
|
|
597
|
+
break;
|
|
598
|
+
default:
|
|
599
|
+
templateData.content = "";
|
|
536
600
|
}
|
|
537
601
|
return templateData;
|
|
538
602
|
}) : [];
|
|
539
|
-
const accountId =
|
|
540
|
-
const accounts =
|
|
603
|
+
const accountId = get(this.props, 'Templates.selectedWeChatAccount.uuid');
|
|
604
|
+
const accounts = get(this.props, 'Templates.weCrmAccounts');
|
|
541
605
|
return (<div>
|
|
606
|
+
{ [WECHAT, MOBILE_PUSH].includes(currentChannel) && this.showAccountName() }
|
|
542
607
|
{filterContent}
|
|
543
608
|
<CapSpin spinning={isLoading} tip={loadingTip} style={{width: '100%'}}>
|
|
544
609
|
{!isLoading && <div>
|
|
545
|
-
{!
|
|
546
|
-
<div className={!
|
|
547
|
-
<CapCustomCardList key={`${currentChannel}-card-list`} cardList={cardDataList} type={currentChannel} />
|
|
610
|
+
{!isEmpty(filteredTemplates) || !isEmpty(this.state.searchText) || !isEmpty(this.props.Templates.templateError) ? (
|
|
611
|
+
<div className={!isEmpty(this.state.searchText) && isEmpty(cardDataList) ? '' : "pagination-container"}>
|
|
612
|
+
<CapCustomCardList key={`${currentChannel}-card-list`} cardList={cardDataList} type={currentChannel} style={{marginLeft: '16px'}}/>
|
|
548
613
|
</div>)
|
|
549
614
|
: ['sms', "email"].includes(this.state.channel.toLowerCase()) && <CapIllustration {...this.getChannelTypeIllustrationInfo(currentChannel)} />
|
|
550
615
|
}
|
|
551
616
|
|
|
552
|
-
{(this.state.selectedAccount === '' &&
|
|
617
|
+
{(this.state.selectedAccount === '' && isEmpty(this.props.Templates.selectedWeChatAccount)) && (this.state.channel.toLowerCase() === 'wechat' || this.state.channel.toLowerCase() === "mobilepush") &&
|
|
553
618
|
<div style={{ height: '65vh', textAlign: 'center', lineHeight: '65vh'}}>
|
|
554
619
|
<CapHeading type="h6">{accounts ? this.props.intl.formatMessage(messages.noAccountMessage) : this.props.intl.formatMessage(messages.noAccountsPresent)}</CapHeading>
|
|
555
620
|
</div>
|
|
556
621
|
}
|
|
557
622
|
|
|
558
|
-
{ !
|
|
623
|
+
{ !isEmpty(this.props.Templates.selectedWeChatAccount) && this.state.channel.toLowerCase() === "mobilepush" && this.state.selectedAccountError ?
|
|
559
624
|
<div style={{ height: '65vh', textAlign: 'center', lineHeight: '65vh'}}>
|
|
560
625
|
<CapHeading type="h6" >
|
|
561
626
|
{this.props.intl.formatMessage(messages.accountConfigError)}
|
|
@@ -565,8 +630,8 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
565
630
|
</CapHeading>
|
|
566
631
|
</div> : (
|
|
567
632
|
["mobilepush"].includes(this.state.channel.toLowerCase()) &&
|
|
568
|
-
|
|
569
|
-
|
|
633
|
+
isEmpty(filteredTemplates) &&
|
|
634
|
+
isEmpty(this.state.searchText) &&
|
|
570
635
|
<div style={this.isFullMode() ? { height: "calc(100vh - 325px)", overflow: 'auto'} : {}}>
|
|
571
636
|
<CapIllustration {...this.getChannelTypeIllustrationInfo(currentChannel)} />
|
|
572
637
|
</div>
|
|
@@ -689,8 +754,9 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
689
754
|
};
|
|
690
755
|
|
|
691
756
|
prepareWeChatPreviewData(template) {
|
|
692
|
-
if (template && template.versions && template.versions.base && !
|
|
757
|
+
if (template && template.versions && template.versions.base && !isEmpty(template.versions.base)) {
|
|
693
758
|
if (template.definition && template.definition.msgcontent && template.definition.msgcontent === "RICH_MEDIA_WECHAT") {
|
|
759
|
+
console.log("prepareWeChatPreviewData", template, JSON.stringify(template), template.versions.base.mediaList, JSON.stringify(template.versions.base.mediaList));
|
|
694
760
|
return template.versions.base.mediaList;
|
|
695
761
|
}
|
|
696
762
|
return this.prepareWeChatMappedPreviewData(template.versions.base.content, template.versions.base.Tag, template.versions.base.data);
|
|
@@ -699,8 +765,8 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
699
765
|
}
|
|
700
766
|
|
|
701
767
|
prepareWeChatMappedPreviewData(content, templateTags, tagData) {
|
|
702
|
-
let formattedContent =
|
|
703
|
-
|
|
768
|
+
let formattedContent = cloneDeep(content);
|
|
769
|
+
forEach(templateTags, (tag) => {
|
|
704
770
|
if (tagData[tag].value !== undefined) {
|
|
705
771
|
formattedContent = formattedContent.replace(`{{${tag}.DATA}}`, tagData[tag].value);
|
|
706
772
|
}
|
|
@@ -737,7 +803,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
737
803
|
</div>}
|
|
738
804
|
{(data.expandableDetails && data.expandableDetails.ctas && ((data.expandableDetails.ctas[0] && data.expandableDetails.ctas[0].actionText) || (data.expandableDetails.ctas[1] && data.expandableDetails.ctas[1].actionText))) ?
|
|
739
805
|
<div className="actions">
|
|
740
|
-
{
|
|
806
|
+
{map(data.expandableDetails.ctas, (action) => !!action.actionText &&
|
|
741
807
|
<span className="action">{action.actionText && action.actionText.toUpperCase()}</span>)}
|
|
742
808
|
</div>
|
|
743
809
|
:
|
|
@@ -889,7 +955,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
889
955
|
});
|
|
890
956
|
} else if (ev && ev.key && ev.key.toLowerCase() === "richmedia_template") {
|
|
891
957
|
type = this.props.location.query.type;
|
|
892
|
-
if (this.props.Templates && this.props.Templates.selectedWeChatAccount && this.props.Templates.selectedWeChatAccount.configs && (
|
|
958
|
+
if (this.props.Templates && this.props.Templates.selectedWeChatAccount && this.props.Templates.selectedWeChatAccount.configs && (isEmpty(this.props.Templates.selectedWeChatAccount.configs.wechat_app_id) || isEmpty(this.props.Templates.selectedWeChatAccount.configs.wechat_app_secret))) {
|
|
893
959
|
const errorMessage = this.props.intl.formatMessage(messages.wechatAccountNotConfigured);
|
|
894
960
|
CapNotification.error({key: 'wechatError', message: errorMessage});
|
|
895
961
|
} else {
|
|
@@ -980,7 +1046,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
980
1046
|
}
|
|
981
1047
|
|
|
982
1048
|
duplicateTemplate(template) {
|
|
983
|
-
const duplicateObj =
|
|
1049
|
+
const duplicateObj = cloneDeep(template);
|
|
984
1050
|
duplicateObj.name = `Copy of ${template.name} ${moment().format('MM-DD-YYYY hh:mma')}`;
|
|
985
1051
|
delete duplicateObj._id;
|
|
986
1052
|
const params = {
|
|
@@ -1028,7 +1094,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1028
1094
|
|
|
1029
1095
|
handleEdmDefaultTemplateSelection = (isSelected, id) => {
|
|
1030
1096
|
if (isSelected) {
|
|
1031
|
-
const data =
|
|
1097
|
+
const data = find(this.props.Templates.cmsTemplates, {_id: id});
|
|
1032
1098
|
const type = this.props.location.query.type;
|
|
1033
1099
|
const module = this.props.location.query.module ? this.props.location.query.module : 'default';
|
|
1034
1100
|
const isLanguageSupport = (this.props.location.query.isLanguageSupport) ? this.props.location.query.isLanguageSupport : true;
|
|
@@ -1052,10 +1118,11 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1052
1118
|
}
|
|
1053
1119
|
};
|
|
1054
1120
|
|
|
1055
|
-
handleEditClick(e,
|
|
1121
|
+
handleEditClick(e, template, modeType, path) {
|
|
1056
1122
|
if (modeType && modeType !== undefined) {
|
|
1057
1123
|
this.setState({modeType});
|
|
1058
1124
|
}
|
|
1125
|
+
const { _id: id } = template;
|
|
1059
1126
|
const type = this.props.location.query.type;
|
|
1060
1127
|
const module = this.props.location.query.module;
|
|
1061
1128
|
const isLanguageSupport = (this.props.location.query.isLanguageSupport) ? this.props.location.query.isLanguageSupport : false;
|
|
@@ -1085,6 +1152,13 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1085
1152
|
if (this.state.channel.toLowerCase() === 'line') {
|
|
1086
1153
|
pathName = `/line/edit/${modeType}/${id}`;
|
|
1087
1154
|
}
|
|
1155
|
+
if (this.state.channel.toUpperCase() === WECHAT) {
|
|
1156
|
+
if (get(template, 'definition.msgcontent', '') === "RICH_MEDIA_WECHAT") {
|
|
1157
|
+
pathName = `/wechat/richmedia/edit/${id}`;
|
|
1158
|
+
} else {
|
|
1159
|
+
pathName = `/wechat/edit/${id}`;
|
|
1160
|
+
}
|
|
1161
|
+
}
|
|
1088
1162
|
if (this.isEnabledInLibraryModule("callSelectFromProps")) {
|
|
1089
1163
|
this.props.onSelectTemplate(id);
|
|
1090
1164
|
} else {
|
|
@@ -1100,7 +1174,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1100
1174
|
|
|
1101
1175
|
handlePreviewClick(template, modeType) {
|
|
1102
1176
|
this.togglePreview();
|
|
1103
|
-
const templateInfo =
|
|
1177
|
+
const templateInfo = cloneDeep(template);
|
|
1104
1178
|
if (this.state.channel.toLowerCase() === 'line') {
|
|
1105
1179
|
templateInfo.modeType = modeType;
|
|
1106
1180
|
}
|
|
@@ -1194,7 +1268,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1194
1268
|
temp.id = template._id;
|
|
1195
1269
|
if (this.state.channel === 'wechat') {
|
|
1196
1270
|
let path = '';
|
|
1197
|
-
if (template && template.versions && template.versions.base && !
|
|
1271
|
+
if (template && template.versions && template.versions.base && !isEmpty(template.versions.base)) {
|
|
1198
1272
|
if (template.definition && template.definition.msgcontent && template.definition.msgcontent === "RICH_MEDIA_WECHAT") {
|
|
1199
1273
|
path = `/wechat/richmedia/edit/${template._id}`;
|
|
1200
1274
|
content = <WechatRichmediaTemplatePreview type={this.props.location && this.props.location.query.type ? this.props.location.query.type : ''} content={template.versions.base.mediaList}/>;
|
|
@@ -1208,7 +1282,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1208
1282
|
<div className={`sms-text ${this.state.hoveredItem === template._id ? 'sms-text-blurred' : ''}`}>
|
|
1209
1283
|
{content || ''}
|
|
1210
1284
|
</div>
|
|
1211
|
-
{template._id === this.state.hoveredItem ? <CapButton onClick={(e) => this.handleEditClick(e, template
|
|
1285
|
+
{template._id === this.state.hoveredItem ? <CapButton onClick={(e) => this.handleEditClick(e, template, null, path)} className="edit-button" type="secondary">{type === 'embedded' ? this.props.intl.formatMessage(messages.selectButton) : this.props.intl.formatMessage(messages.editButton)}</CapButton> : ''}
|
|
1212
1286
|
{template._id === this.state.hoveredItem ? <CapButton onClick={() => this.handlePreviewClick(template)} className="preview-button" type="cancel">{this.props.intl.formatMessage(messages.previewButton)}</CapButton> : ''}
|
|
1213
1287
|
</div>
|
|
1214
1288
|
);
|
|
@@ -1226,7 +1300,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1226
1300
|
<div className={`sms-text ${this.state.hoveredItem === template._id ? 'sms-text-blurred' : ''}`}>
|
|
1227
1301
|
{content}
|
|
1228
1302
|
</div>
|
|
1229
|
-
{!layoutSelection && template._id === this.state.hoveredItem ? <CapButton onClick={(e) => this.handleEditClick(e, template
|
|
1303
|
+
{!layoutSelection && template._id === this.state.hoveredItem ? <CapButton onClick={(e) => this.handleEditClick(e, template)} className="edit-button" type="secondary">{type === 'embedded' ? this.props.intl.formatMessage(messages.selectButton) : this.props.intl.formatMessage(messages.editButton)}</CapButton> : ''}
|
|
1230
1304
|
{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> : ''}
|
|
1231
1305
|
{!layoutSelection && template._id === this.state.hoveredItem ? <CapButton onClick={() => this.handlePreviewClick(template)} className="preview-button" type="cancel">{this.props.intl.formatMessage(messages.previewButton)}</CapButton> : ''}
|
|
1232
1306
|
</div>);
|
|
@@ -1237,7 +1311,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1237
1311
|
<div className={`mobilepush-message ${this.state.hoveredItem === template._id ? 'sms-text-blurred' : ''}`}>
|
|
1238
1312
|
{content || ''}
|
|
1239
1313
|
</div>
|
|
1240
|
-
{template._id === this.state.hoveredItem ? <CapButton onClick={(e) => this.handleEditClick(e, template
|
|
1314
|
+
{template._id === this.state.hoveredItem ? <CapButton onClick={(e) => this.handleEditClick(e, template)} className="edit-button" type="secondary">{type === 'embedded' ? this.props.intl.formatMessage(messages.selectButton) : this.props.intl.formatMessage(messages.editButton)}</CapButton> : ''}
|
|
1241
1315
|
{template._id === this.state.hoveredItem ? <CapButton onClick={() => this.handlePreviewClick(template)} className="preview-button" type="cancel">{this.props.intl.formatMessage(messages.previewButton)}</CapButton> : ''}
|
|
1242
1316
|
</div>);
|
|
1243
1317
|
} else if (this.state.channel.toLowerCase() === 'line') {
|
|
@@ -1252,7 +1326,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1252
1326
|
{content.bodyText ? <div className={`sms-text ${this.state.hoveredItem === template._id ? 'sms-text-blurred' : ''}`}>{content.bodyText || ''}</div> : ''}
|
|
1253
1327
|
{content.bodyImage ? <div className={`sms-text ${this.state.hoveredItem === template._id ? 'sms-text-blurred' : ''}`}>
|
|
1254
1328
|
<img src={content.bodyImage} role={"presentation"} style={{maxWidth: '100%', objectFit: 'cover', height: '100%'}}/></div> : ''}
|
|
1255
|
-
{template._id === this.state.hoveredItem ? <CapButton onClick={(e) => this.handleEditClick(e, template
|
|
1329
|
+
{template._id === this.state.hoveredItem ? <CapButton onClick={(e) => this.handleEditClick(e, template, modeType)} className="edit-button" type="secondary">{type === 'embedded' ? this.props.intl.formatMessage(messages.selectButton) : this.props.intl.formatMessage(messages.editButton)}</CapButton> : ''}
|
|
1256
1330
|
{template._id === this.state.hoveredItem ? <CapButton onClick={() => this.handlePreviewClick(template, modeType)} className="preview-button" type="cancel">{this.props.intl.formatMessage(messages.previewButton)}</CapButton> : ''}
|
|
1257
1331
|
</div>
|
|
1258
1332
|
);
|
|
@@ -1267,7 +1341,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1267
1341
|
<div
|
|
1268
1342
|
className="sms-template-content">
|
|
1269
1343
|
<div className={`sms-text ${this.state.hoveredItem === template._id ? 'sms-text-blurred' : ''}`}>{content || ''}</div>
|
|
1270
|
-
{template._id === this.state.hoveredItem ? <CapButton onClick={(e) => this.handleEditClick(e, template
|
|
1344
|
+
{template._id === this.state.hoveredItem ? <CapButton onClick={(e) => this.handleEditClick(e, template)} className="edit-button" type="secondary">{type === 'embedded' ? this.props.intl.formatMessage(messages.selectButton) : this.props.intl.formatMessage(messages.editButton)}</CapButton> : ''}
|
|
1271
1345
|
{template._id === this.state.hoveredItem ? <CapButton onClick={() => this.handlePreviewClick(template)} className="preview-button" type="cancel">{this.props.intl.formatMessage(messages.previewButton)}</CapButton> : ''}
|
|
1272
1346
|
</div>
|
|
1273
1347
|
);
|
|
@@ -1356,7 +1430,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1356
1430
|
let isDisabled = this.isLoading();
|
|
1357
1431
|
const channel = this.state.channel.toUpperCase();
|
|
1358
1432
|
if (channel === MOBILE_PUSH || channel === WECHAT) {
|
|
1359
|
-
isDisabled = isDisabled ||
|
|
1433
|
+
isDisabled = isDisabled || isEmpty(this.props.Templates.selectedWeChatAccount);
|
|
1360
1434
|
}
|
|
1361
1435
|
if (channel === MOBILE_PUSH) {
|
|
1362
1436
|
isDisabled = this.checkSearchDisabled();
|
|
@@ -1447,160 +1521,100 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1447
1521
|
return modal;
|
|
1448
1522
|
};
|
|
1449
1523
|
|
|
1450
|
-
|
|
1524
|
+
renderAccountSelection = () => {
|
|
1451
1525
|
const accountOptions = [];
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1526
|
+
let { channel = '' } = this.state;
|
|
1527
|
+
channel = channel.toUpperCase();
|
|
1528
|
+
const { Templates: templates = {}, location = {} } = this.props;
|
|
1529
|
+
const { query = {} } = location;
|
|
1530
|
+
const { weCrmAccounts = [], fetchingWeCrmAccounts = false } = templates;
|
|
1531
|
+
const isWechatChannel = channel === WECHAT;
|
|
1532
|
+
const isMobilePushChannel = channel === MOBILE_PUSH;
|
|
1533
|
+
|
|
1534
|
+
if ((isWechatChannel || isMobilePushChannel) && !isEmpty(weCrmAccounts)) {
|
|
1535
|
+
forEach(weCrmAccounts, (account) => {
|
|
1536
|
+
if ((isWechatChannel && account.configs && account.configs.is_wecrm_enabled) || isMobilePushChannel) {
|
|
1537
|
+
if (query.type === 'embedded' && (!query.module || (query.module && query.module !== 'library'))) {
|
|
1538
|
+
if (query.source_account_id && account.sourceAccountIdentifier === query.source_account_id) {
|
|
1458
1539
|
accountOptions.push(
|
|
1459
|
-
{ key:
|
|
1460
|
-
|
|
1540
|
+
{ key: isMobilePushChannel ? account.id : account.uuid,
|
|
1541
|
+
title: account.name,
|
|
1461
1542
|
value: account.name,
|
|
1543
|
+
icon: <CapIcon.CapIconAvatar text={account.name[0]} width="2rem" height="2rem"/>,
|
|
1462
1544
|
}
|
|
1463
1545
|
);
|
|
1464
|
-
} else if (
|
|
1546
|
+
} else if (query.module && (isWechatChannel || isMobilePushChannel)) {
|
|
1465
1547
|
accountOptions.push(
|
|
1466
1548
|
{
|
|
1467
|
-
key:
|
|
1549
|
+
key: isMobilePushChannel ? account.id : account.uuid,
|
|
1468
1550
|
value: account.name,
|
|
1469
|
-
|
|
1551
|
+
title: account.name,
|
|
1552
|
+
icon: <CapIcon.CapIconAvatar text={account.name[0]} width="2rem" height="2rem"/>,
|
|
1470
1553
|
}
|
|
1471
1554
|
);
|
|
1472
1555
|
}
|
|
1473
1556
|
} else {
|
|
1474
1557
|
accountOptions.push(
|
|
1475
1558
|
{
|
|
1476
|
-
key:
|
|
1559
|
+
key: isMobilePushChannel ? account.id : account.uuid,
|
|
1477
1560
|
value: account.name,
|
|
1478
|
-
|
|
1561
|
+
title: account.name,
|
|
1562
|
+
icon: <CapIcon.CapIconAvatar text={account.name[0]} width="2rem" height="2rem"/>,
|
|
1479
1563
|
}
|
|
1480
1564
|
);
|
|
1481
1565
|
}
|
|
1482
1566
|
}
|
|
1483
1567
|
});
|
|
1484
1568
|
}
|
|
1485
|
-
|
|
1486
|
-
<
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
options={accountOptions}
|
|
1494
|
-
style={{width: '200px'}}
|
|
1569
|
+
return (<CapSpin spinning={fetchingWeCrmAccounts}>
|
|
1570
|
+
{isEmpty(weCrmAccounts) && !fetchingWeCrmAccounts ? <FormattedMessage {...messages.noAccountsPresentWeChat} /> :
|
|
1571
|
+
<div style={{overflowX: "auto"}}>
|
|
1572
|
+
<CapHeader
|
|
1573
|
+
title={isMobilePushChannel ? this.props.intl.formatMessage(messages.mobilepushAccount) : this.props.intl.formatMessage(messages.wechatAccount)}
|
|
1574
|
+
description={this.props.intl.formatMessage(messages.chooseAccount)}
|
|
1575
|
+
size="regular"
|
|
1576
|
+
className="select-account-header"
|
|
1495
1577
|
/>
|
|
1496
|
-
|
|
1578
|
+
<CapRadioCard
|
|
1579
|
+
className="select-account"
|
|
1580
|
+
onChange={this.onAccountSelect}
|
|
1581
|
+
value={this.props.Templates.selectedWeChatAccount ? this.props.Templates.selectedWeChatAccount.name : undefined}
|
|
1582
|
+
panes={accountOptions}
|
|
1583
|
+
cardHeight="48px"
|
|
1584
|
+
cardWidth="276px"
|
|
1585
|
+
size="small"
|
|
1586
|
+
/>
|
|
1497
1587
|
</div>
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
// <Menu onClick={this.menuOnClickEvent}>
|
|
1518
|
-
// <MenuItem key="map_template">
|
|
1519
|
-
// {this.props.intl.formatMessage(messages.mapTemplate)}
|
|
1520
|
-
// </MenuItem>
|
|
1521
|
-
// <MenuItem key="richmedia_template">
|
|
1522
|
-
// {this.props.intl.formatMessage(messages.weChatRichmediaTemplate)}
|
|
1523
|
-
// </MenuItem>
|
|
1524
|
-
// </Menu>
|
|
1525
|
-
// );
|
|
1526
|
-
// actionButton = (<Dropdown disabled={_.isEmpty(this.props.Templates.selectedWeChatAccount)} overlay={createPushMenu} trigger={['click']}>
|
|
1527
|
-
// <CapButton style={{paddingLeft: '24px', paddingRight: '4px'}}>
|
|
1528
|
-
// <div style={{display: 'inline-flex'}}>
|
|
1529
|
-
// <p style={{ lineHeight: '28px'}}>{this.props.intl.formatMessage(messages.newTemplate)}</p>
|
|
1530
|
-
// <p style={{ height: '28px'}}>
|
|
1531
|
-
// <i style={{ color: '#fff', paddingTop: '2px', margin: '0', paddingRight: '8px'}} className="material-icons">arrow_drop_down</i>
|
|
1532
|
-
// </p>
|
|
1533
|
-
// </div>
|
|
1534
|
-
// </CapButton>
|
|
1535
|
-
// </Dropdown>);
|
|
1536
|
-
// } else if (this.state.channel.toUpperCase() === 'EMAIL' || this.state.channel.toUpperCase() === 'EBILL') {
|
|
1537
|
-
// const menuItems = [];
|
|
1538
|
-
// menuItems.push(<MenuItem key={'uploadFile'}>{this.props.intl.formatMessage(messages.uploadFile)}</MenuItem>);
|
|
1539
|
-
// menuItems.push(<MenuItem key={'useEditor'}>{this.props.intl.formatMessage(messages.useEditor)}</MenuItem>);
|
|
1540
|
-
// const menu = (
|
|
1541
|
-
// <Menu onClick={this.handleMenuAction}>
|
|
1542
|
-
// {menuItems}
|
|
1543
|
-
// </Menu>
|
|
1544
|
-
// );
|
|
1545
|
-
// actionButton = (
|
|
1546
|
-
// <Dropdown overlay={menu} trigger={["click"]}>
|
|
1547
|
-
// <CapButton style={{paddingLeft: '24px', paddingRight: '4px'}}>
|
|
1548
|
-
// <div style={{display: 'inline-flex'}}>
|
|
1549
|
-
// <p style={{ lineHeight: '32px', paddingRight: '12px' }}>{this.props.intl.formatMessage(messages.newTemplate)}</p>
|
|
1550
|
-
// <p style={{ height: '32px' }}>
|
|
1551
|
-
// <i style={{ color: '#fff', lineHeight: '32px', margin: '0'}} className="material-icons">arrow_drop_down</i>
|
|
1552
|
-
// </p>
|
|
1553
|
-
// </div>
|
|
1554
|
-
// </CapButton>
|
|
1555
|
-
// </Dropdown>
|
|
1556
|
-
// );
|
|
1557
|
-
// } else if (this.props.route.name.toLowerCase() === "mobilepush") {
|
|
1558
|
-
// const createPushMenu = (
|
|
1559
|
-
// <Menu onClick={this.createTemplate}>
|
|
1560
|
-
// <MenuItem key="text">
|
|
1561
|
-
// {this.props.intl.formatMessage(messages.textTemplate)}
|
|
1562
|
-
// </MenuItem>
|
|
1563
|
-
// <MenuItem key="image">
|
|
1564
|
-
// {this.props.intl.formatMessage(messages.imageTemplate)}
|
|
1565
|
-
// </MenuItem>
|
|
1566
|
-
// </Menu>
|
|
1567
|
-
// );
|
|
1568
|
-
// actionButton = (<Dropdown disabled={_.isEmpty(this.props.Templates.selectedWeChatAccount)} overlay={createPushMenu} trigger={['click']}>
|
|
1569
|
-
// <CapButton style={{paddingLeft: '24px', paddingRight: '4px'}}>
|
|
1570
|
-
// <div style={{display: 'inline-flex'}}>
|
|
1571
|
-
// <p style={{ lineHeight: '28px'}}>New Template</p>
|
|
1572
|
-
// <p style={{ height: '28px'}}>
|
|
1573
|
-
// <i style={{ color: '#fff', paddingTop: '2px', margin: '0', paddingRight: '8px'}} className="material-icons">arrow_drop_down</i>
|
|
1574
|
-
// </p>
|
|
1575
|
-
// </div>
|
|
1576
|
-
// </CapButton>
|
|
1577
|
-
// </Dropdown>);
|
|
1578
|
-
// } else if (this.props.route.name.toLowerCase() === "line") {
|
|
1579
|
-
// const lineMenu = (
|
|
1580
|
-
// <Menu onClick={this.createTemplate}>
|
|
1581
|
-
// <MenuItem key="text">
|
|
1582
|
-
// {this.props.intl.formatMessage(messages.textTemplate)}
|
|
1583
|
-
// </MenuItem>
|
|
1584
|
-
// <MenuItem key="image">
|
|
1585
|
-
// {this.props.intl.formatMessage(messages.imageTemplate)}
|
|
1586
|
-
// </MenuItem>
|
|
1587
|
-
// </Menu>
|
|
1588
|
-
// );
|
|
1589
|
-
// actionButton = (<Dropdown overlay={lineMenu} trigger={['click']}>
|
|
1590
|
-
// <CapButton style={{paddingLeft: '24px', paddingRight: '4px'}}>
|
|
1591
|
-
// <div style={{display: 'inline-flex'}}>
|
|
1592
|
-
// <p style={{ lineHeight: '28px'}}>New Template</p>
|
|
1593
|
-
// <p style={{ height: '28px'}}>
|
|
1594
|
-
// <i style={{ color: '#fff', paddingTop: '2px', margin: '0', paddingRight: '8px'}} className="material-icons">arrow_drop_down</i>
|
|
1595
|
-
// </p>
|
|
1596
|
-
// </div>
|
|
1597
|
-
// </CapButton>
|
|
1598
|
-
// </Dropdown>);
|
|
1599
|
-
// } else {
|
|
1600
|
-
// actionButton = (<CapButton onClick={this.createTemplate}>{this.state.channel.toUpperCase() === 'SMS' ? this.props.intl.formatMessage(messages.createSmsActionButton) : 'Create SMS'}</CapButton>);
|
|
1601
|
-
// }
|
|
1602
|
-
// }
|
|
1588
|
+
}
|
|
1589
|
+
</CapSpin>);
|
|
1590
|
+
};
|
|
1591
|
+
|
|
1592
|
+
setAccountSelectionMode = () => {
|
|
1593
|
+
this.setState({activeMode: ACCOUNT_SELECTION_MODE});
|
|
1594
|
+
}
|
|
1595
|
+
|
|
1596
|
+
showAccountName = () => {
|
|
1597
|
+
const { selectedAccount, channel } = this.state;
|
|
1598
|
+
const { Templates: templates = {}} = this.props;
|
|
1599
|
+
const { weCrmAccounts = []} = templates;
|
|
1600
|
+
const isMobilePushChannel = channel === MOBILE_PUSH;
|
|
1601
|
+
return (<CapHeader
|
|
1602
|
+
title={<CapHeading type="h4">{isMobilePushChannel ? this.props.intl.formatMessage(messages.mobilepushAccount) : this.props.intl.formatMessage(messages.wechatAccount)}</CapHeading>}
|
|
1603
|
+
description={<><CapHeading type="h3">{selectedAccount} {weCrmAccounts.length > 1 && <CapLink onClick={this.setAccountSelectionMode} style={{display: 'inline-block', position: 'relative', top: '3px'}} fontWeight="regular" fontSize="14px" title="change"/>} </CapHeading></>}
|
|
1604
|
+
size="regular"
|
|
1605
|
+
/>);
|
|
1606
|
+
}
|
|
1603
1607
|
|
|
1608
|
+
setWechatFilter = (e) => this.setState({wechatFilter: e.target.value});
|
|
1609
|
+
|
|
1610
|
+
render() {
|
|
1611
|
+
const isFullMode = this.isFullMode();
|
|
1612
|
+
const { activeMode, channel, wechatFilter } = this.state;
|
|
1613
|
+
if (activeMode === ACCOUNT_SELECTION_MODE) {
|
|
1614
|
+
return this.renderAccountSelection();
|
|
1615
|
+
}
|
|
1616
|
+
const pageHeader = "";
|
|
1617
|
+
const pageHeaderDvs = "";
|
|
1604
1618
|
const isLoading = this.isLoading();
|
|
1605
1619
|
let previewHeader = this.props.intl.formatMessage(messages.preview);
|
|
1606
1620
|
// const previewHeader = (this.state.channel.toLowerCase() === 'email' ? <h3>{this.props.intl.formatMessage(messages.emailPreview)}</h3> : <h3>{this.props.intl.formatMessage(messages.ebillPreview)}</h3>);
|
|
@@ -1621,8 +1635,10 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1621
1635
|
>
|
|
1622
1636
|
</CardGrid>
|
|
1623
1637
|
);
|
|
1624
|
-
|
|
1625
|
-
const
|
|
1638
|
+
//TODO -> uncomment the following line
|
|
1639
|
+
// const isfilterContentVisisble = !isEmpty(this.props.TemplatesList) || !isEmpty(this.state.searchText) || !isEmpty(this.props.Templates.templateError);
|
|
1640
|
+
const isfilterContentVisisble = true;
|
|
1641
|
+
const filterContent = (( isfilterContentVisisble || [WECHAT, MOBILE_PUSH].includes(this.state.channel.toUpperCase())) && <div className="action-container">
|
|
1626
1642
|
{isfilterContentVisisble && <CapInput.Search
|
|
1627
1643
|
className="search-text"
|
|
1628
1644
|
style={{width: '210px'}}
|
|
@@ -1632,8 +1648,14 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1632
1648
|
disabled={this.checkSearchDisabled()}
|
|
1633
1649
|
onClear={() => this.searchTemplate('')}
|
|
1634
1650
|
/>}
|
|
1651
|
+
{
|
|
1652
|
+
channel.toUpperCase() === WECHAT && <CapRadio.CapRadioGroup className="wechat-filters" defaultValue={wechatFilter} onChange={this.setWechatFilter}>
|
|
1653
|
+
<CapRadio.Button value={WECHAT_FILTERS.ALL}><CapLabel type="label2">All</CapLabel></CapRadio.Button>
|
|
1654
|
+
<CapRadio.Button value={WECHAT_FILTERS.MAPTEMPLATES}><CapLabel type="label2">Map templates</CapLabel></CapRadio.Button>
|
|
1655
|
+
<CapRadio.Button value={WECHAT_FILTERS.RICHMEDIA}><CapLabel type="label2">Rich media templates</CapLabel></CapRadio.Button>
|
|
1656
|
+
</CapRadio.CapRadioGroup>
|
|
1657
|
+
}
|
|
1635
1658
|
<div style={{display: "flex", justifyContent: "space-between", alignItems: 'center'}}>
|
|
1636
|
-
{(this.props.location.query.type === 'embedded' ) ? pageHeaderDvs : pageHeader}
|
|
1637
1659
|
{isfilterContentVisisble && <CapButton
|
|
1638
1660
|
type={"primary"}
|
|
1639
1661
|
disabled={this.isCreateDisabled()}
|
|
@@ -1665,21 +1687,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1665
1687
|
<Pagination onPageChange={templates.length ? this.onPaginationChange : () => {}} paginationSelector="pagination-container">
|
|
1666
1688
|
{this.getTemplateDataForGrid({isLoading, loadingTip, channel: this.state.channel, templates: this.props.TemplatesList, filterContent, handlers: {handlePreviewClick: this.handlePreviewClick, handleEditClick: this.handleEditClick}})}
|
|
1667
1689
|
</Pagination>
|
|
1668
|
-
{
|
|
1669
|
-
<Pagination onPageChange={this.onPaginationChange} paginationSelector="pagination-container">
|
|
1670
|
-
<CardGrid
|
|
1671
|
-
className={this.state.channel.toLowerCase() === "mobilepush" ? "mobilepush-templates" : ""}
|
|
1672
|
-
listItem={templateList}
|
|
1673
|
-
filterContent={filterContent}
|
|
1674
|
-
onHoverItem={this.handleOnHoverItem}
|
|
1675
|
-
onItemClick={this.handleOnItemClick}
|
|
1676
|
-
enablePagination
|
|
1677
|
-
isLoading={isLoading}
|
|
1678
|
-
loadingTip={loadingTip}
|
|
1679
|
-
>
|
|
1680
|
-
</CardGrid>
|
|
1681
|
-
</Pagination>} */}
|
|
1682
|
-
{(((this.state.selectedAccount !== '' && !_.isEmpty(this.props.Templates.selectedWeChatAccount) && this.state.channel.toLowerCase() === 'wechat') || this.state.channel.toLowerCase() !== 'wechat') && _.isEmpty(this.props.TemplatesList)) && !this.props.Templates.getAllTemplatesInProgress && !_.isEmpty(this.state.searchText) &&
|
|
1690
|
+
{(((this.state.selectedAccount !== '' && !isEmpty(this.props.Templates.selectedWeChatAccount) && this.state.channel.toLowerCase() === 'wechat') || this.state.channel.toLowerCase() !== 'wechat') && isEmpty(this.props.TemplatesList)) && !this.props.Templates.getAllTemplatesInProgress && !isEmpty(this.state.searchText) &&
|
|
1683
1691
|
<div style={{ height: '65vh', textAlign: 'center', lineHeight: '65vh'}}>
|
|
1684
1692
|
<CapHeading type="h6">{this.props.intl.formatMessage(messages.noTemplatesFound)}</CapHeading>
|
|
1685
1693
|
</div>}
|
|
@@ -1687,7 +1695,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1687
1695
|
|
|
1688
1696
|
|
|
1689
1697
|
<CapRow>
|
|
1690
|
-
{!
|
|
1698
|
+
{!isEmpty(creativesParams.mode) && isFullMode && //creatives container for fullmode
|
|
1691
1699
|
<CreativesContainer
|
|
1692
1700
|
key={creativesParams.mode}
|
|
1693
1701
|
messageDetails={{type: "default"}}
|
|
@@ -1697,25 +1705,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1697
1705
|
templateData={creativesParams}
|
|
1698
1706
|
getCreativesData={() => { this.onCreateComplete(true); }}
|
|
1699
1707
|
channel={route.name.toUpperCase()}
|
|
1700
|
-
handleCloseCreatives={this.onCreateComplete}
|
|
1708
|
+
handleCloseCreatives={this.onCreateComplete}
|
|
1709
|
+
selectedWeChatAccount={get(this.props, 'Templates.selectedWeChatAccount', {})}
|
|
1710
|
+
/>
|
|
1701
1711
|
}
|
|
1702
1712
|
</CapRow>
|
|
1703
1713
|
<CapRow>
|
|
1704
|
-
{this.state.channel.toLowerCase() === 'wechat' && this.state.previewTemplate && this.state.previewTemplate.definition && this.state.previewTemplate.definition.msgcontent && this.state.previewTemplate.definition.msgcontent === 'RICH_MEDIA_WECHAT' &&
|
|
1705
|
-
<WechatRichmediaTemplatePreview
|
|
1706
|
-
show={this.state.previewOpen}
|
|
1707
|
-
closeSlideBox={this.togglePreview}
|
|
1708
|
-
header={this.state.previewTemplate.name}
|
|
1709
|
-
width={30}
|
|
1710
|
-
showSlidebox
|
|
1711
|
-
const type={this.props.location && this.props.location.query.type ? this.props.location.query.type : ''}
|
|
1712
|
-
content={this.state.previewTemplate.versions.base.mediaList}
|
|
1713
|
-
onEditClick={this.handleEditClick}
|
|
1714
|
-
showEdit
|
|
1715
|
-
templateId={this.state.previewTemplate._id}
|
|
1716
|
-
path={`/wechat/richmedia/edit/${this.state.previewTemplate._id}`}
|
|
1717
|
-
/>
|
|
1718
|
-
}
|
|
1719
1714
|
|
|
1720
1715
|
{(this.state.channel.toLowerCase() === 'ebill' || this.state.channel.toLowerCase() === 'email') && htmlPreviewContent && <EmailPreview
|
|
1721
1716
|
header={previewHeader}
|
|
@@ -1724,7 +1719,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1724
1719
|
device={this.state.device}
|
|
1725
1720
|
handleClose={this.toggleEmailPreview}
|
|
1726
1721
|
changePreviewDevice={this.changePreviewDevice}
|
|
1727
|
-
versions={
|
|
1722
|
+
versions={get(this.state, 'previewTemplate.versions', {})}
|
|
1728
1723
|
lastModified={this.state.previewTemplate ? this.state.previewTemplate.updatedAt : ''}
|
|
1729
1724
|
updatedByName={commonUtil.getUserNameById(parseInt(this.state.previewTemplate.updatedBy, 10), commonUtil.getMergedUserList(this.props.Templates.userList))}
|
|
1730
1725
|
/>}
|