@capillarytech/creatives-library 6.12.8 → 6.12.11
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/config/app.js +1 -1
- package/package.json +1 -1
- package/services/api.js +3 -2
- package/telepresence.log +57 -0
- package/v2Components/BeeEditor/index.js +263 -0
- package/v2Components/BeeEditor/index.scss +11 -0
- package/v2Components/BeeEditor/messages.js +71 -0
- package/v2Components/BeeEditor/tests/index.test.js +10 -0
- package/v2Components/FormBuilder/index.js +8 -0
- package/v2Containers/CreativesContainer/SlideBoxContent.js +2 -6
- package/v2Containers/CreativesContainer/index.js +4 -5
- package/v2Containers/Email/actions.js +1 -2
- package/v2Containers/Email/index.js +29 -44
- package/v2Containers/Email/sagas.js +2 -2
- package/v2Containers/EmailWrapper/index.js +0 -2
- package/v2Containers/Line/Create/_lineCreate.scss +64 -0
- package/v2Containers/Line/Create/actions.js +94 -0
- package/v2Containers/Line/Create/constants.js +43 -0
- package/v2Containers/Line/Create/index.js +1132 -0
- package/v2Containers/Line/Create/initialSchema.js +378 -0
- package/v2Containers/Line/Create/messages.js +229 -0
- package/v2Containers/Line/Create/reducer.js +99 -0
- package/v2Containers/Line/Create/sagas.js +113 -0
- package/v2Containers/Line/Create/selectors.js +30 -0
- package/v2Containers/Line/CreateWrapper/constants.js +2 -0
- package/v2Containers/Line/CreateWrapper/index.js +117 -0
- package/v2Containers/Line/CreateWrapper/messages.js +55 -0
- package/v2Containers/Line/Edit/_lineEdit.scss +23 -0
- package/v2Containers/Line/Edit/actions.js +79 -0
- package/v2Containers/Line/Edit/constants.js +27 -0
- package/v2Containers/Line/Edit/index.js +1051 -0
- package/v2Containers/Line/Edit/messages.js +173 -0
- package/v2Containers/Line/Edit/reducer.js +83 -0
- package/v2Containers/Line/Edit/sagas.js +81 -0
- package/v2Containers/Line/Edit/selectors.js +29 -0
- package/v2Containers/Line/Edit/tests/actions.test.js +18 -0
- package/v2Containers/Line/Edit/tests/index.test.js +10 -0
- package/v2Containers/Line/Edit/tests/reducer.test.js +9 -0
- package/v2Containers/Line/Edit/tests/sagas.test.js +15 -0
- package/v2Containers/Line/Edit/tests/selectors.test.js +10 -0
- package/v2Containers/TemplatesV2/index.js +6 -5
package/config/app.js
CHANGED
|
@@ -14,7 +14,7 @@ const config = {
|
|
|
14
14
|
accountConfig: (strs, accountId) => `${window.location.origin}/org/config/AccountAdd?q=a&channelId=2&accountId=${accountId}&edit=1`,
|
|
15
15
|
},
|
|
16
16
|
development: {
|
|
17
|
-
api_endpoint: '
|
|
17
|
+
api_endpoint: 'https://crm-nightly-new.cc.capillarytech.com/arya/api/v1/creatives',
|
|
18
18
|
campaigns_api_endpoint: 'https://crm-nightly-new.cc.capillarytech.com/iris/v2/campaigns',
|
|
19
19
|
auth_endpoint: 'https://crm-nightly-new.cc.capillarytech.com/arya/api/v1/auth',
|
|
20
20
|
arya_endpoint: 'https://crm-nightly-new.cc.capillarytech.com/arya/api/v1',
|
package/package.json
CHANGED
package/services/api.js
CHANGED
|
@@ -319,11 +319,12 @@ export const getCmsTemplateSettings = (cmsType, projectId, cmsMode, langId, isEd
|
|
|
319
319
|
return API.get(url);
|
|
320
320
|
};
|
|
321
321
|
|
|
322
|
-
export const getCmsTemplateSettingsV2 = (cmsType, projectId, cmsMode, langId, isEdmSupport
|
|
323
|
-
const url = `${API_ENDPOINT}/cms/v2/getDetails/?type=${cmsType}&projectId=${projectId}&cmsMode=${cmsMode}&langId=${langId}&isEdmSupport=${isEdmSupport ? 1 : 0}
|
|
322
|
+
export const getCmsTemplateSettingsV2 = (cmsType, projectId, cmsMode, langId, isEdmSupport) => {
|
|
323
|
+
const url = `${API_ENDPOINT}/cms/v2/getDetails/?type=${cmsType}&projectId=${projectId}&cmsMode=${cmsMode}&langId=${langId}&isEdmSupport=${isEdmSupport ? 1 : 0}`;
|
|
324
324
|
return API.get(url);
|
|
325
325
|
};
|
|
326
326
|
|
|
327
|
+
|
|
327
328
|
export const getCmsTemplateData = (cmsType, projectId, langId) => {
|
|
328
329
|
const url = `${API_ENDPOINT}/cms/getContent?type=${cmsType}&projectId=${projectId}&langId=${langId}`;
|
|
329
330
|
return API.get(url);
|
package/telepresence.log
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
0.0 TEL | Telepresence 0.104 launched at Tue Oct 6 11:57:13 2020
|
|
2
|
+
0.0 TEL | /usr/local/bin/telepresence --also-proxy 10.250.0.0/16 --deployment telepresence-perm
|
|
3
|
+
0.0 TEL | uname: uname_result(system='Darwin', node='CAP-LAP-997.local', release='19.6.0', version='Darwin Kernel Version 19.6.0: Thu Jun 18 20:49:00 PDT 2020; root:xnu-6153.141.1~1/RELEASE_X86_64', machine='x86_64', processor='i386')
|
|
4
|
+
0.0 TEL | Platform: darwin
|
|
5
|
+
0.0 TEL | WSL: False
|
|
6
|
+
0.0 TEL | Python 3.6.8 (v3.6.8:3c6b436a57, Dec 24 2018, 02:04:31)
|
|
7
|
+
0.0 TEL | [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)]
|
|
8
|
+
0.1 TEL | BEGIN SPAN main.py:40(main)
|
|
9
|
+
0.1 TEL | BEGIN SPAN startup.py:83(set_kube_command)
|
|
10
|
+
0.1 TEL | Found kubectl -> /usr/local/bin/kubectl
|
|
11
|
+
0.1 TEL | [1] Capturing: kubectl config current-context
|
|
12
|
+
0.1 TEL | [1] captured in 0.06 secs.
|
|
13
|
+
0.1 TEL | [2] Capturing: kubectl --context default-context version --short
|
|
14
|
+
1.9 TEL | [2] captured in 1.80 secs.
|
|
15
|
+
1.9 TEL | [3] Capturing: kubectl --context default-context config view -o json
|
|
16
|
+
2.0 TEL | [3] captured in 0.06 secs.
|
|
17
|
+
2.0 TEL | [4] Capturing: kubectl --context default-context get ns default
|
|
18
|
+
3.9 TEL | [4] captured in 1.96 secs.
|
|
19
|
+
3.9 TEL | [5] Capturing: kubectl --context default-context api-versions
|
|
20
|
+
6.1 TEL | [5] captured in 2.15 secs.
|
|
21
|
+
6.1 TEL | Command: kubectl 1.18.8
|
|
22
|
+
6.1 TEL | Context: default-context, namespace: default, version: 1.14.10
|
|
23
|
+
6.1 >>> | Warning: kubectl 1.18.8 may not work correctly with cluster version 1.14.10 due to the version discrepancy. See https://kubernetes.io/docs/setup/version-skew-policy/ for more information.
|
|
24
|
+
6.1 >>> |
|
|
25
|
+
6.1 TEL | END SPAN startup.py:83(set_kube_command) 6.0s
|
|
26
|
+
6.1 TEL | Found ssh -> /usr/bin/ssh
|
|
27
|
+
6.1 TEL | [6] Capturing: ssh -V
|
|
28
|
+
6.1 TEL | [6] captured in 0.01 secs.
|
|
29
|
+
6.1 TEL | Found bash -> /bin/bash
|
|
30
|
+
6.1 TEL | Found sshuttle-telepresence -> /usr/local/Cellar/telepresence/0.104/libexec/sshuttle-telepresence
|
|
31
|
+
6.1 TEL | Found pfctl -> /sbin/pfctl
|
|
32
|
+
6.1 TEL | Found sudo -> /usr/bin/sudo
|
|
33
|
+
6.1 TEL | [7] Running: sudo -n echo -n
|
|
34
|
+
6.2 TEL | [7] ran in 0.05 secs.
|
|
35
|
+
6.2 >>> | Starting proxy with method 'vpn-tcp', which has the following limitations: All processes are affected, only one telepresence can run per machine, and you can't use other VPNs. You may need to add cloud hosts and headless services with --also-proxy. For a full list of method limitations see https://telepresence.io/reference/methods.html
|
|
36
|
+
6.2 TEL | Found sshfs -> /usr/local/bin/sshfs
|
|
37
|
+
6.2 TEL | Found umount -> /sbin/umount
|
|
38
|
+
6.2 >>> | Volumes are rooted at $TELEPRESENCE_ROOT. See https://telepresence.io/howto/volumes.html for details.
|
|
39
|
+
6.2 TEL | [8] Running: kubectl --context default-context --namespace default get pods telepresence-connectivity-check --ignore-not-found
|
|
40
|
+
7.8 TEL | [8] ran in 1.67 secs.
|
|
41
|
+
8.4 TEL | Scout info: {'latest_version': '0.104', 'FAILED': '<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)>'}
|
|
42
|
+
8.4 >>> | Starting network proxy to cluster using the existing proxy Deployment telepresence-perm
|
|
43
|
+
8.4 TEL | [9] Running: kubectl --context default-context --namespace default get deployment telepresence-perm
|
|
44
|
+
10.3 9 | Error from server (NotFound): deployments.extensions "telepresence-perm" not found
|
|
45
|
+
10.3 TEL | [9] exit 1 in 1.85 secs.
|
|
46
|
+
10.3 >>> |
|
|
47
|
+
10.3 >>> | Failed to find deployment telepresence-perm:
|
|
48
|
+
10.3 >>> | Error from server (NotFound): deployments.extensions "telepresence-perm" not found
|
|
49
|
+
10.3 >>> |
|
|
50
|
+
10.3 TEL | EXITING with status code 255
|
|
51
|
+
10.3 >>> | Exit cleanup in progress
|
|
52
|
+
10.3 TEL | (Cleanup) Kill sudo privileges holder
|
|
53
|
+
10.3 TEL | (Cleanup) Stop time tracking
|
|
54
|
+
10.3 TEL | END SPAN main.py:40(main) 10.2s
|
|
55
|
+
10.3 TEL | (Cleanup) Remove temporary directory
|
|
56
|
+
10.3 TEL | (Cleanup) Save caches
|
|
57
|
+
11.2 TEL | (sudo privileges holder thread exiting)
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* Beeeditor
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
6
|
+
import React, { useEffect, useState, useRef, useCallback } from 'react';
|
|
7
|
+
import PropTypes from 'prop-types';
|
|
8
|
+
import { injectIntl, intlShape, FormattedMessage } from 'react-intl';
|
|
9
|
+
import TagList from '../../v2Containers/TagList';
|
|
10
|
+
import
|
|
11
|
+
{
|
|
12
|
+
CapModal,
|
|
13
|
+
CapButton,
|
|
14
|
+
CapInput,
|
|
15
|
+
CapSelect,
|
|
16
|
+
}
|
|
17
|
+
from '@capillarytech/cap-ui-library';
|
|
18
|
+
import messages from './messages';
|
|
19
|
+
import './index.scss';
|
|
20
|
+
|
|
21
|
+
function BeeEditor(props) {
|
|
22
|
+
const {
|
|
23
|
+
uid,
|
|
24
|
+
beeJson,
|
|
25
|
+
tokenData,
|
|
26
|
+
id,
|
|
27
|
+
location = {},
|
|
28
|
+
moduleFilterEnabled,
|
|
29
|
+
label,
|
|
30
|
+
className,
|
|
31
|
+
userLocale,
|
|
32
|
+
selectedOfferDetails,
|
|
33
|
+
tags,
|
|
34
|
+
injectedTags,
|
|
35
|
+
saveBeeInstance,
|
|
36
|
+
saveBeeData,
|
|
37
|
+
intl,
|
|
38
|
+
onContextChange,
|
|
39
|
+
} = props;
|
|
40
|
+
const {formatMessage} = intl;
|
|
41
|
+
const UNSUBSCRIBE = 'unsubscribe';
|
|
42
|
+
let beePluginInstance = null;
|
|
43
|
+
const categoryOptions = [{key: 'cta', value: 'cta', label: formatMessage(messages.cta)},
|
|
44
|
+
{key: 'footer', value: 'footer', label: formatMessage(messages.footer)},
|
|
45
|
+
{key: 'header', value: 'header', label: formatMessage(messages.header)},
|
|
46
|
+
{key: 'sp', value: 'sp', label: formatMessage(messages.socialPlatform)},
|
|
47
|
+
{key: 'others', value: 'others', label: formatMessage(messages.others)},
|
|
48
|
+
];
|
|
49
|
+
const [visibleTaglist, setVisibleTaglist] = useState(false);
|
|
50
|
+
const [showRowMetaModal, setRowMetaModal] = useState(false);
|
|
51
|
+
const [selectedTag, setSelectedTag] = useState({});
|
|
52
|
+
const [rowMetaInfo, setRowMetaInfo] = useState({});
|
|
53
|
+
const [rowName, setRowName] = useState('');
|
|
54
|
+
const [rowCategory, setRowCategory] = useState('');
|
|
55
|
+
|
|
56
|
+
const savedCallback = useRef();
|
|
57
|
+
const filteredTags = (tags || []).filter((obj) => obj.definition.value !== UNSUBSCRIBE);
|
|
58
|
+
let intervalTimer;
|
|
59
|
+
|
|
60
|
+
useEffect(() => {
|
|
61
|
+
savedCallback.current = Object.keys(selectedTag).length > 0 ? selectedTag : rowMetaInfo;
|
|
62
|
+
}, [selectedTag, rowMetaInfo]);
|
|
63
|
+
|
|
64
|
+
useEffect(() => {
|
|
65
|
+
const beeConfig = {
|
|
66
|
+
uid,
|
|
67
|
+
container: 'bee-plugin-container',
|
|
68
|
+
rowsConfiguration: {
|
|
69
|
+
emptyRows: true,
|
|
70
|
+
defaultRows: true,
|
|
71
|
+
},
|
|
72
|
+
contentDialog: {
|
|
73
|
+
specialLinks: {
|
|
74
|
+
label: UNSUBSCRIBE,
|
|
75
|
+
handler(resolve) {
|
|
76
|
+
resolve({
|
|
77
|
+
type: 'custom',
|
|
78
|
+
label: UNSUBSCRIBE,
|
|
79
|
+
link: `{{${UNSUBSCRIBE}}}`,
|
|
80
|
+
});
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
mergeTags: {
|
|
84
|
+
label: formatMessage(messages.addLabel),
|
|
85
|
+
handler: async (resolve, reject) => {
|
|
86
|
+
// this will open tag modal
|
|
87
|
+
await setVisibleTaglist(true);
|
|
88
|
+
// until tag modal will not open promise will not execute
|
|
89
|
+
// once tag modal is opened it will start 2 sec interval to wait use has selected any tag or cancel the tag selection
|
|
90
|
+
const promise = new Promise((resolveP) => {
|
|
91
|
+
intervalTimer = setInterval(() => {
|
|
92
|
+
// this will execute, if user cancel the tag selection
|
|
93
|
+
if ((savedCallback.current || {}).close === true) {
|
|
94
|
+
reject();
|
|
95
|
+
clearInterval(intervalTimer);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
// this block is checking use has selected any tag or not
|
|
99
|
+
if (Object.keys(savedCallback.current || {}).length > 0) {
|
|
100
|
+
resolveP(savedCallback.current);
|
|
101
|
+
setSelectedTag({});
|
|
102
|
+
clearInterval(intervalTimer);
|
|
103
|
+
}
|
|
104
|
+
}, 2000);
|
|
105
|
+
});
|
|
106
|
+
// once prmise will resolve , pass the resolve data to handler to show tags in bee edior
|
|
107
|
+
const result = await promise;
|
|
108
|
+
resolve(result);
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
saveRow: {
|
|
112
|
+
handler: async (resolve, reject) => {
|
|
113
|
+
await setRowMetaModal(true);
|
|
114
|
+
const promise = new Promise((resolveP) => {
|
|
115
|
+
intervalTimer = setInterval(() => {
|
|
116
|
+
if ((savedCallback.current || {}).close === true) {
|
|
117
|
+
reject();
|
|
118
|
+
clearInterval(intervalTimer);
|
|
119
|
+
setRowMetaInfo({});
|
|
120
|
+
setRowName('');
|
|
121
|
+
setRowCategory('');
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
if (Object.keys(savedCallback.current || {}).length > 0) {
|
|
125
|
+
resolveP(savedCallback.current);
|
|
126
|
+
}
|
|
127
|
+
}, 2000);
|
|
128
|
+
});
|
|
129
|
+
const result = await promise;
|
|
130
|
+
resolve(result); // "done!"
|
|
131
|
+
setRowMetaInfo({});
|
|
132
|
+
setRowName('');
|
|
133
|
+
setRowCategory('');
|
|
134
|
+
clearInterval(intervalTimer);
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
onSave: (jsonFile, htmlFile) => {
|
|
139
|
+
saveBeeData(jsonFile, htmlFile);
|
|
140
|
+
},
|
|
141
|
+
// will use this function on save row feature
|
|
142
|
+
onSaveRow: (rowJSON) => {
|
|
143
|
+
console.log('bee-plugin-container onSaveRows', rowJSON);
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
window.BeePlugin.create(tokenData, beeConfig, (instance) => {
|
|
147
|
+
beePluginInstance = instance;
|
|
148
|
+
const parseJson = JSON.parse(beeJson);
|
|
149
|
+
beePluginInstance.start(parseJson);
|
|
150
|
+
saveBeeInstance(beePluginInstance);
|
|
151
|
+
});
|
|
152
|
+
return () => clearInterval(intervalTimer);
|
|
153
|
+
}, []);
|
|
154
|
+
|
|
155
|
+
const onTagSelect = (result) => {
|
|
156
|
+
const msg = {
|
|
157
|
+
name: result,
|
|
158
|
+
value: `{{${result}}}`,
|
|
159
|
+
};
|
|
160
|
+
setSelectedTag(msg);
|
|
161
|
+
setVisibleTaglist(false);
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
const onCancelTagList = () => {
|
|
165
|
+
setVisibleTaglist(false);
|
|
166
|
+
setSelectedTag({close: true});
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
const handleCancel = () => {
|
|
170
|
+
setRowMetaModal(false);
|
|
171
|
+
setRowMetaInfo({close: true});
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
const handleOk = () => {
|
|
175
|
+
const rowInfo = {};
|
|
176
|
+
if (rowCategory !== '') {
|
|
177
|
+
rowInfo.category = rowCategory;
|
|
178
|
+
}
|
|
179
|
+
setRowMetaInfo({
|
|
180
|
+
name: rowName,
|
|
181
|
+
...rowInfo,
|
|
182
|
+
});
|
|
183
|
+
setRowMetaModal(false);
|
|
184
|
+
};
|
|
185
|
+
const isDisableSave = () => rowName === '';
|
|
186
|
+
|
|
187
|
+
const onRowChange = useCallback((e) => {
|
|
188
|
+
setRowName(e.target.value);
|
|
189
|
+
});
|
|
190
|
+
const onChangeCategoy = (e) => {
|
|
191
|
+
setRowCategory(e);
|
|
192
|
+
};
|
|
193
|
+
const contentSection = <>
|
|
194
|
+
<CapInput
|
|
195
|
+
label={<FormattedMessage {...messages.rowName} />}
|
|
196
|
+
placeholder={formatMessage(messages.rowPlaceHolder)}
|
|
197
|
+
onChange={onRowChange}
|
|
198
|
+
value={rowName}
|
|
199
|
+
maxLength={50}
|
|
200
|
+
style={{ width: '324px', paddingBottom: '16px' }}
|
|
201
|
+
/>
|
|
202
|
+
<CapSelect
|
|
203
|
+
label="Category"
|
|
204
|
+
style={{ width: 250, paddingBottom: '16px'}}
|
|
205
|
+
options={categoryOptions}
|
|
206
|
+
selectPlaceholder={formatMessage(messages.select)}
|
|
207
|
+
placeholder={
|
|
208
|
+
<FormattedMessage {...messages.selectCategoyPlaceholder} />
|
|
209
|
+
}
|
|
210
|
+
onChange={onChangeCategoy}
|
|
211
|
+
/>
|
|
212
|
+
|
|
213
|
+
</>;
|
|
214
|
+
return (
|
|
215
|
+
<>
|
|
216
|
+
<div id="bee-plugin-container" style={{ height: '500px'}}>
|
|
217
|
+
</div>
|
|
218
|
+
<TagList
|
|
219
|
+
moduleFilterEnabled={moduleFilterEnabled}
|
|
220
|
+
label={label}
|
|
221
|
+
onTagSelect={onTagSelect}
|
|
222
|
+
location={location}
|
|
223
|
+
tags={filteredTags}
|
|
224
|
+
injectedTags={injectedTags}
|
|
225
|
+
className={className}
|
|
226
|
+
id={id}
|
|
227
|
+
userLocale={userLocale}
|
|
228
|
+
selectedOfferDetails={selectedOfferDetails}
|
|
229
|
+
visibleTaglist={visibleTaglist}
|
|
230
|
+
hidePopover
|
|
231
|
+
modalProps={{
|
|
232
|
+
onCancel: onCancelTagList,
|
|
233
|
+
style: { left: 135, top: 250 },
|
|
234
|
+
className: "bee-editor-tag-list",
|
|
235
|
+
}}
|
|
236
|
+
onContextChange={onContextChange}
|
|
237
|
+
/>
|
|
238
|
+
<CapModal
|
|
239
|
+
visible={showRowMetaModal}
|
|
240
|
+
onCancel={handleCancel}
|
|
241
|
+
title={formatMessage(messages.customRows)}
|
|
242
|
+
footer={[
|
|
243
|
+
<CapButton key="back" onClick={handleCancel}>{formatMessage(messages.cancel)}</CapButton>,
|
|
244
|
+
<CapButton key="submit" type="primary" id="delete-version" onClick={handleOk} disabled={isDisableSave()}>
|
|
245
|
+
{formatMessage(messages.save)}
|
|
246
|
+
</CapButton>,
|
|
247
|
+
]}
|
|
248
|
+
>
|
|
249
|
+
{contentSection}
|
|
250
|
+
</CapModal>
|
|
251
|
+
</>
|
|
252
|
+
);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
BeeEditor.propTypes = {
|
|
256
|
+
beeJson: PropTypes.object.isRequired,
|
|
257
|
+
tokenData: PropTypes.object.isRequired,
|
|
258
|
+
uid: PropTypes.string.isRequired,
|
|
259
|
+
showTagsPopover: PropTypes.func.isRequired,
|
|
260
|
+
intl: intlShape.isRequired,
|
|
261
|
+
};
|
|
262
|
+
|
|
263
|
+
export default injectIntl(BeeEditor);
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* BeeEditor Messages
|
|
3
|
+
*
|
|
4
|
+
* This contains all the text for the BeeEditor component.
|
|
5
|
+
*/
|
|
6
|
+
import { defineMessages } from 'react-intl';
|
|
7
|
+
|
|
8
|
+
const prefix = 'creatives.componentsV2.BeeEditor';
|
|
9
|
+
|
|
10
|
+
export default defineMessages({
|
|
11
|
+
cancel: {
|
|
12
|
+
id: `${prefix}.cancel`,
|
|
13
|
+
defaultMessage: 'Cancel',
|
|
14
|
+
},
|
|
15
|
+
save: {
|
|
16
|
+
id: `${prefix}.save`,
|
|
17
|
+
defaultMessage: 'Save',
|
|
18
|
+
},
|
|
19
|
+
rowPlaceHolder: {
|
|
20
|
+
id: `${prefix}.rowPlaceHolder`,
|
|
21
|
+
defaultMessage: 'Enter Row name',
|
|
22
|
+
},
|
|
23
|
+
rowName: {
|
|
24
|
+
id: `${prefix}.rowName`,
|
|
25
|
+
defaultMessage: 'Row name',
|
|
26
|
+
},
|
|
27
|
+
select: {
|
|
28
|
+
id: `${prefix}.select`,
|
|
29
|
+
defaultMessage: 'Select',
|
|
30
|
+
},
|
|
31
|
+
customRows: {
|
|
32
|
+
id: `${prefix}.customRows`,
|
|
33
|
+
defaultMessage: 'Custom rows',
|
|
34
|
+
},
|
|
35
|
+
selectCategoyPlaceholder: {
|
|
36
|
+
id: `${prefix}.selectCategoyPlaceholder`,
|
|
37
|
+
defaultMessage: 'Select category',
|
|
38
|
+
},
|
|
39
|
+
tags: {
|
|
40
|
+
id: `${prefix}.tags`,
|
|
41
|
+
defaultMessage: 'Tags (optional)',
|
|
42
|
+
},
|
|
43
|
+
tagPlaceHolder: {
|
|
44
|
+
id: `${prefix}.tagPlaceHolder`,
|
|
45
|
+
defaultMessage: 'Enter tags',
|
|
46
|
+
},
|
|
47
|
+
addLabel: {
|
|
48
|
+
id: `${prefix}.addLabel`,
|
|
49
|
+
defaultMessage: 'Add label',
|
|
50
|
+
},
|
|
51
|
+
cta: {
|
|
52
|
+
id: `${prefix}.cta`,
|
|
53
|
+
defaultMessage: 'CTA',
|
|
54
|
+
},
|
|
55
|
+
header: {
|
|
56
|
+
id: `${prefix}.header`,
|
|
57
|
+
defaultMessage: 'Header',
|
|
58
|
+
},
|
|
59
|
+
footer: {
|
|
60
|
+
id: `${prefix}.footer`,
|
|
61
|
+
defaultMessage: 'Footer',
|
|
62
|
+
},
|
|
63
|
+
others: {
|
|
64
|
+
id: `${prefix}.others`,
|
|
65
|
+
defaultMessage: 'Others',
|
|
66
|
+
},
|
|
67
|
+
socialPlatform: {
|
|
68
|
+
id: `${prefix}.socialPlatform`,
|
|
69
|
+
defaultMessage: 'Social platform',
|
|
70
|
+
},
|
|
71
|
+
});
|
|
@@ -1470,6 +1470,10 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
|
|
|
1470
1470
|
} else if (key === this.props.baseLanguage) {
|
|
1471
1471
|
formData[newTabIndex][key] = {};
|
|
1472
1472
|
_.forEach(val, (subVal, index) => {
|
|
1473
|
+
// if (subVal === 'is_drag_drop' || subVal === 'lang_id' || subVal === 'iso_code' === 'language') {
|
|
1474
|
+
//
|
|
1475
|
+
// formData[newTabIndex][key][index] = formData[0][this.props.baseLanguage][subVal];
|
|
1476
|
+
// } else {
|
|
1473
1477
|
if (index === 'tabKey') {
|
|
1474
1478
|
formData[newTabIndex][key][index] = _.uniqueId();
|
|
1475
1479
|
} else if (index === 'template-content') {
|
|
@@ -3176,6 +3180,10 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
|
|
|
3176
3180
|
console.log('CKEditor Data 2', this.state.formData, this.state.formData[`${this.state.currentTab - 1}`], val, this.state.currentTab, this.state.currentLangTab, langIndex);
|
|
3177
3181
|
const currentLang = ((!_.isEmpty(this.state.formData) && !_.isEmpty(this.state.formData[`${this.state.currentTab - 1}`]) && !_.isEmpty(this.state.formData[`${this.state.currentTab - 1}`].selectedLanguages) && this.state.formData[`${this.state.currentTab - 1}`].selectedLanguages[langIndex]) ? this.state.formData[`${this.state.currentTab - 1}`].selectedLanguages[langIndex] : this.props.baseLanguage) || 'en';
|
|
3178
3182
|
const content = (!_.isEmpty(this.state.formData) && this.state.formData[`${this.state.currentTab - 1}`][currentLang]['template-content'] ? this.state.formData[`${this.state.currentTab - 1}`][currentLang]['template-content'] : '');
|
|
3183
|
+
console.log('ckeditor current lang', currentLang, content);
|
|
3184
|
+
if (this.state.formData[`${this.state.currentTab - 1}`][currentLang].is_drag_drop) {
|
|
3185
|
+
// content = "";
|
|
3186
|
+
}
|
|
3179
3187
|
columns.push(
|
|
3180
3188
|
<CapColumn style={val.colStyle ? val.colStyle : {}} span={val.width}>
|
|
3181
3189
|
<CKEditor
|
|
@@ -69,7 +69,7 @@ const getLineType = ({
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
return {};
|
|
72
|
-
}
|
|
72
|
+
}
|
|
73
73
|
|
|
74
74
|
function SlideBoxContent(props) {
|
|
75
75
|
const {
|
|
@@ -96,7 +96,6 @@ function SlideBoxContent(props) {
|
|
|
96
96
|
cap,
|
|
97
97
|
onResetStep,
|
|
98
98
|
isFullMode,
|
|
99
|
-
editor,
|
|
100
99
|
onCallTaskSubmit,
|
|
101
100
|
setIsLoadingContent,
|
|
102
101
|
showTemplateName,
|
|
@@ -185,7 +184,7 @@ function SlideBoxContent(props) {
|
|
|
185
184
|
} = {},
|
|
186
185
|
template,
|
|
187
186
|
}) => {
|
|
188
|
-
|
|
187
|
+
let previewContent = {};
|
|
189
188
|
previewContent.messageContent = text;
|
|
190
189
|
previewContent.previewImageUrl = previewImageUrl;
|
|
191
190
|
previewContent.selectedSticker = selectedSticker || {
|
|
@@ -367,7 +366,6 @@ function SlideBoxContent(props) {
|
|
|
367
366
|
step={templateStep}
|
|
368
367
|
showNextStep={onCreateNextStep}
|
|
369
368
|
isFullMode={isFullMode}
|
|
370
|
-
editor={editor}
|
|
371
369
|
cap={cap}
|
|
372
370
|
onResetStep={onResetStep}
|
|
373
371
|
showTemplateName={showTemplateName}
|
|
@@ -394,7 +392,6 @@ function SlideBoxContent(props) {
|
|
|
394
392
|
getFormSubscriptionData={getFormData}
|
|
395
393
|
getDefaultTags={type}
|
|
396
394
|
isFullMode={isFullMode}
|
|
397
|
-
editor={editor}
|
|
398
395
|
cap={cap}
|
|
399
396
|
showTemplateName={showTemplateName}
|
|
400
397
|
onValidationFail={onValidationFail}
|
|
@@ -459,7 +456,6 @@ function SlideBoxContent(props) {
|
|
|
459
456
|
messageDetails={messageDetails}
|
|
460
457
|
cap={cap}
|
|
461
458
|
onFacebookSubmit={onFacebookSubmit}
|
|
462
|
-
isFullMode={isFullMode}
|
|
463
459
|
/>
|
|
464
460
|
)
|
|
465
461
|
}
|
|
@@ -225,9 +225,9 @@ class Creatives extends React.Component {
|
|
|
225
225
|
const messagesDefinition = JSON.parse(messages);
|
|
226
226
|
let lineContent = JSON.parse(messageBody || '{}').messages || [{}];
|
|
227
227
|
lineContent = lineContent.map((content, index) => ({
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
228
|
+
...content,
|
|
229
|
+
...(messagesDefinition[index] || {})
|
|
230
|
+
}));
|
|
231
231
|
creativesTemplateData = {
|
|
232
232
|
type: constants.LINE,
|
|
233
233
|
isDefault,
|
|
@@ -529,7 +529,7 @@ class Creatives extends React.Component {
|
|
|
529
529
|
}
|
|
530
530
|
render() {
|
|
531
531
|
const {slidBoxContent, isGetFormData, showSlideBox, templateData, currentChannel, emailCreateMode, templateStep, isLoadingContent, mobilePushCreateMode, isDiscardMessage, weChatTemplateType, weChatMaptemplateStep} = this.state;
|
|
532
|
-
const {isFullMode, creativesMode, cap, isUploading, channelsToHide, selectedWeChatAccount, forwardedTags, channelsToDisable, selectedOfferDetails, onTestContentClicked, onPreviewContentClicked, getCreativesData, fetchingCmsData
|
|
532
|
+
const {isFullMode, creativesMode, cap, isUploading, channelsToHide, selectedWeChatAccount, forwardedTags, channelsToDisable, selectedOfferDetails, onTestContentClicked, onPreviewContentClicked, getCreativesData, fetchingCmsData} = this.props;
|
|
533
533
|
const mapTemplateCreate = slidBoxContent === 'createTemplate' && weChatTemplateType === MAP_TEMPLATE && templateStep !== 'modeSelection';
|
|
534
534
|
/* TODO: Instead of passing down same props separately to each component down, write common function to these props and pass it accordingly */
|
|
535
535
|
return (
|
|
@@ -602,7 +602,6 @@ class Creatives extends React.Component {
|
|
|
602
602
|
selectedAccount={this.props.selectedAccount}
|
|
603
603
|
onShowTemplates={this.onShowTemplates}
|
|
604
604
|
handleClose={this.handleCloseSlideBox}
|
|
605
|
-
editor={editor}
|
|
606
605
|
/>
|
|
607
606
|
}
|
|
608
607
|
footer={this.shouldShowFooter() &&
|
|
@@ -38,7 +38,7 @@ export function getAllAssets(assetType, queryParams) {
|
|
|
38
38
|
};
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
export function getCmsSetting(cmsType, projectId, cmsMode, langId, isEdmSupport
|
|
41
|
+
export function getCmsSetting(cmsType, projectId, cmsMode, langId, isEdmSupport) {
|
|
42
42
|
return {
|
|
43
43
|
type: types.GET_CMS_EDITOR_DETAILS_REQUEST,
|
|
44
44
|
cmsType,
|
|
@@ -46,7 +46,6 @@ export function getCmsSetting(cmsType, projectId, cmsMode, langId, isEdmSupport,
|
|
|
46
46
|
cmsMode,
|
|
47
47
|
langId,
|
|
48
48
|
isEdmSupport,
|
|
49
|
-
disableBEE,
|
|
50
49
|
};
|
|
51
50
|
}
|
|
52
51
|
|