Skip to content

Commit 459510e

Browse files
committed
feat: tags added in post creation action
1 parent 7c5028c commit 459510e

File tree

3 files changed

+100
-64
lines changed

3 files changed

+100
-64
lines changed

frontend-dev/src/components/AllIntegrations/PostCreation/Post.jsx

Lines changed: 50 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ import { saveIntegConfig } from '../IntegrationHelpers/IntegrationHelpers'
2121
import IntegrationStepThree from '../IntegrationHelpers/IntegrationStepThree'
2222
import tutorialLinks from '../../../Utils/StaticData/tutorialLinks'
2323
import TutorialLink from '../../Utilities/TutorialLink'
24+
import MultiSelect from 'react-multiple-select-dropdown-lite'
25+
import 'react-multiple-select-dropdown-lite/dist/index.css'
26+
import { useRecoilValue } from 'recoil'
27+
import { $btcbi } from '../../../GlobalStates'
28+
import { ProFeatureTitle } from '../IntegrationHelpers/ActionProFeatureLabels'
2429

2530
function Post({ formFields, setFlow, flow, allIntegURL }) {
2631
const [users, setUsers] = useState([])
@@ -34,6 +39,8 @@ function Post({ formFields, setFlow, flow, allIntegURL }) {
3439
const [mb, setMb] = useState({ fields: [], files: [] })
3540
const [jeCPTMeta, setJeCPTMeta] = useState({ fields: [], files: [] })
3641
const { postCreation } = tutorialLinks
42+
const btcbi = useRecoilValue($btcbi)
43+
const { isPro } = btcbi
3744

3845
const [postConf, setPostConf] = useState({
3946
name: 'WP Post Creation',
@@ -54,51 +61,51 @@ function Post({ formFields, setFlow, flow, allIntegURL }) {
5461
}
5562

5663
useEffect(() => {
57-
bitsFetch({}, 'user/list').then((res) => {
64+
bitsFetch({}, 'user/list').then(res => {
5865
const { data } = res
5966
setUsers(data)
6067
})
6168

62-
bitsFetch({}, 'post-types/list').then((res) => {
69+
bitsFetch({}, 'post-types/list').then(res => {
6370
const { data } = res
6471
setPostTypes(data)
6572
})
6673
const newConf = { ...postConf }
6774
newConf.post_map = postFields
68-
.filter((fld) => fld.required)
69-
.map((fl) => ({ formField: '', postField: fl.key, required: fl.required }))
75+
.filter(fld => fld.required)
76+
.map(fl => ({ formField: '', postField: fl.key, required: fl.required }))
7077
setPostConf(newConf)
7178
}, [])
7279

7380
const getCustomFields = (typ, val) => {
7481
const tmpData = { ...postConf }
7582
tmpData[typ] = val
76-
bitsFetch({ post_type: val }, 'customfield/list').then((res) => {
83+
bitsFetch({ post_type: val }, 'customfield/list').then(res => {
7784
const { data } = res
7885
setAcf({ fields: data.acf_fields, files: data.acf_files })
7986
setMb({ fields: data.mb_fields, files: data.mb_files })
8087
setJeCPTMeta({ fields: data.je_cpt_fields, files: data.je_cpt_files })
8188

8289
if (data?.acf_fields) {
8390
tmpData.acf_map = data.acf_fields
84-
.filter((fld) => fld.required)
85-
.map((fl) => ({ formField: '', acfField: fl.key, required: fl.required }))
91+
.filter(fld => fld.required)
92+
.map(fl => ({ formField: '', acfField: fl.key, required: fl.required }))
8693
if (tmpData.acf_map.length < 1) {
8794
tmpData.acf_map = [{}]
8895
}
8996
}
9097
if (data?.mb_fields) {
9198
tmpData.metabox_map = data.mb_fields
92-
.filter((fld) => fld.required)
93-
.map((fl) => ({ formField: '', metaboxField: fl.key, required: fl.required }))
99+
.filter(fld => fld.required)
100+
.map(fl => ({ formField: '', metaboxField: fl.key, required: fl.required }))
94101
if (tmpData.metabox_map.length < 1) {
95102
tmpData.metabox_map = [{}]
96103
}
97104
}
98105
if (data?.je_cpt_fields) {
99106
tmpData.je_cpt_meta_map = data.je_cpt_fields
100-
.filter((fld) => fld.required)
101-
.map((fl) => ({ formField: '', jeCPTField: fl.key, required: fl.required }))
107+
.filter(fld => fld.required)
108+
.map(fl => ({ formField: '', jeCPTField: fl.key, required: fl.required }))
102109
}
103110
if (tmpData.je_cpt_meta_map.length < 1) {
104111
tmpData.je_cpt_meta_map = [{}]
@@ -110,7 +117,7 @@ function Post({ formFields, setFlow, flow, allIntegURL }) {
110117
// setLoad(false)
111118
}
112119

113-
const nextPage = (stepNo) => {
120+
const nextPage = stepNo => {
114121
setTimeout(() => {
115122
document.getElementById('btcd-settings-wrp').scrollTop = 0
116123
}, 300)
@@ -149,17 +156,8 @@ function Post({ formFields, setFlow, flow, allIntegURL }) {
149156

150157
const saveConfig = () => {
151158
setIsLoading(true)
152-
const resp = saveIntegConfig(
153-
flow,
154-
setFlow,
155-
allIntegURL,
156-
postConf,
157-
navigate,
158-
'',
159-
'',
160-
setIsLoading
161-
)
162-
resp.then((res) => {
159+
const resp = saveIntegConfig(flow, setFlow, allIntegURL, postConf, navigate, '', '', setIsLoading)
160+
resp.then(res => {
163161
if (res.success) {
164162
setSnackbar({ show: true, msg: res.data?.msg })
165163
navigate(allIntegURL)
@@ -190,7 +188,7 @@ function Post({ formFields, setFlow, flow, allIntegURL }) {
190188
</div>
191189
<input
192190
className="btcd-paper-inp w-5 mt-1"
193-
onChange={(e) => handleInput(e.target.name, e.target.value)}
191+
onChange={e => handleInput(e.target.name, e.target.value)}
194192
name="name"
195193
value={postConf.name}
196194
type="text"
@@ -212,7 +210,7 @@ function Post({ formFields, setFlow, flow, allIntegURL }) {
212210
<div>
213211
<select
214212
name="post_type"
215-
onChange={(e) => getCustomFields(e.target.name, e.target.value)}
213+
onChange={e => getCustomFields(e.target.name, e.target.value)}
216214
className="btcd-paper-inp w-5 mt-1">
217215
<option disabled selected>
218216
{('Select Post Type', 'bit-integrations')}
@@ -246,7 +244,7 @@ function Post({ formFields, setFlow, flow, allIntegURL }) {
246244
</div>
247245
<select
248246
name="post_status"
249-
onChange={(e) => handleInput(e.target.name, e.target.value)}
247+
onChange={e => handleInput(e.target.name, e.target.value)}
250248
className="btcd-paper-inp w-5 mt-2">
251249
<option disabled selected>
252250
{__('Select Status', 'bit-integrations')}
@@ -270,7 +268,7 @@ function Post({ formFields, setFlow, flow, allIntegURL }) {
270268
<div>
271269
<select
272270
name="post_author"
273-
onChange={(e) => handleInput(e.target.name, e.target.value)}
271+
onChange={e => handleInput(e.target.name, e.target.value)}
274272
className="btcd-paper-inp w-5 mt-2">
275273
<option disabled selected>
276274
{__('Select Author', 'bit-integrations')}
@@ -289,7 +287,7 @@ function Post({ formFields, setFlow, flow, allIntegURL }) {
289287
</div>
290288
<select
291289
name="comment_status"
292-
onChange={(e) => handleInput(e.target.name, e.target.value)}
290+
onChange={e => handleInput(e.target.name, e.target.value)}
293291
className="btcd-paper-inp w-5 mt-2">
294292
<option disabled selected>
295293
{__('Select Status', 'bit-integrations')}
@@ -298,6 +296,29 @@ function Post({ formFields, setFlow, flow, allIntegURL }) {
298296
<option value="closed">{__('Closed', 'bit-integrations')}</option>
299297
</select>
300298

299+
<div className="mt-3">
300+
<b>
301+
<ProFeatureTitle title={__('Add Post Tags', 'bit-integrations')} />
302+
</b>
303+
304+
<Cooltip width={250} icnSize={17} className="ml-2">
305+
<div className="txt-body">
306+
{__('Use commas to separate multiple tags. Example: tag1, tag2, tag3', 'bit-integrations')}
307+
<br />
308+
</div>
309+
</Cooltip>
310+
</div>
311+
312+
<input
313+
className="btcd-paper-inp w-5 mt-2 "
314+
onChange={e => handleInput(e.target.name, e.target.value)}
315+
name="post_tags"
316+
value={postConf.post_tags}
317+
type="text"
318+
placeholder={__('Add Post Tags...', 'bit-integrations')}
319+
disabled={!isPro}
320+
/>
321+
301322
<div>
302323
<div className="mt-3 mb-1">
303324
<b>{__('Post Field Mapping', 'bit-integrations')}</b>
@@ -349,9 +370,7 @@ function Post({ formFields, setFlow, flow, allIntegURL }) {
349370
<CustomField
350371
formID={formID}
351372
formFields={formFields}
352-
handleInput={(e) =>
353-
handleInput(e, postConf, setPostConf, formID, setIsLoading, setSnackbar)
354-
}
373+
handleInput={e => handleInput(e, postConf, setPostConf, formID, setIsLoading, setSnackbar)}
355374
postConf={postConf}
356375
setPostConf={setPostConf}
357376
isLoading={isLoading}

frontend-dev/src/components/AllIntegrations/PostCreation/PostEdit.jsx

Lines changed: 45 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { useEffect, useState } from 'react'
22
import { useNavigate, useParams } from 'react-router-dom'
33
import { useRecoilState, useRecoilValue } from 'recoil'
4-
import { $actionConf, $formFields, $newFlow } from '../../../GlobalStates'
4+
import { $actionConf, $btcbi, $formFields, $newFlow } from '../../../GlobalStates'
55
import { deepCopy } from '../../../Utils/Helpers'
66
import { postFields } from '../../../Utils/StaticData/postField'
77
import bitsFetch from '../../../Utils/bitsFetch'
@@ -22,6 +22,7 @@ import {
2222
checkMappedPostFields,
2323
refreshPostTypes
2424
} from './PostHelperFunction'
25+
import { ProFeatureTitle } from '../IntegrationHelpers/ActionProFeatureLabels'
2526

2627
function Post({ allIntegURL }) {
2728
const [users, setUsers] = useState([])
@@ -37,6 +38,8 @@ function Post({ allIntegURL }) {
3738
const [mb, setMb] = useState({ fields: [], files: [] })
3839
const [jeCPTMeta, setJeCPTMeta] = useState({ fields: [], files: [] })
3940
// const [postConf, setPostConf] = useState({ ...flow.flow_details })
41+
const btcbi = useRecoilValue($btcbi)
42+
const { isPro } = btcbi
4043

4144
const handleInput = (typ, val) => {
4245
const tmpData = { ...postConf }
@@ -45,17 +48,17 @@ function Post({ allIntegURL }) {
4548
}
4649
useEffect(() => {
4750
const tmpData = deepCopy({ ...postConf })
48-
bitsFetch({}, 'user/list').then((res) => {
51+
bitsFetch({}, 'user/list').then(res => {
4952
const { data } = res
5053
setUsers(data)
5154
})
5255

53-
bitsFetch({}, 'post-types/list').then((res) => {
56+
bitsFetch({}, 'post-types/list').then(res => {
5457
const { data } = res
5558
setPostTypes(data)
5659
})
5760

58-
bitsFetch({ post_type: postConf?.post_type }, 'customfield/list').then((res) => {
61+
bitsFetch({ post_type: postConf?.post_type }, 'customfield/list').then(res => {
5962
const { data } = res
6063
setAcf({ fields: data.acf_fields, files: data.acf_files })
6164
setMb({ fields: data.mb_fields, files: data.mb_files })
@@ -68,31 +71,31 @@ function Post({ allIntegURL }) {
6871
const getCustomFields = (typ, val) => {
6972
const tmpData = { ...postConf }
7073
tmpData[typ] = val
71-
bitsFetch({ post_type: val }, 'customfield/list').then((res) => {
74+
bitsFetch({ post_type: val }, 'customfield/list').then(res => {
7275
const { data } = res
7376
setAcf({ fields: data.acf_fields, files: data.acf_files })
7477
setMb({ fields: data.mb_fields, files: data.mb_files })
7578
setJeCPTMeta({ fields: data.je_cpt_fields, files: data.je_cpt_files })
7679
if (data?.acf_fields) {
7780
tmpData.acf_map = data.acf_fields
78-
.filter((fld) => fld.required)
79-
.map((fl) => ({ formField: '', acfField: fl.key, required: fl.required }))
81+
.filter(fld => fld.required)
82+
.map(fl => ({ formField: '', acfField: fl.key, required: fl.required }))
8083
if (tmpData.acf_map.length < 1) {
8184
tmpData.acf_map = [{}]
8285
}
8386
}
8487
if (data?.mb_fields) {
8588
tmpData.metabox_map = data.mb_fields
86-
.filter((fld) => fld.required)
87-
.map((fl) => ({ formField: '', metaboxField: fl.key, required: fl.required }))
89+
.filter(fld => fld.required)
90+
.map(fl => ({ formField: '', metaboxField: fl.key, required: fl.required }))
8891
if (tmpData.metabox_map.length < 1) {
8992
tmpData.metabox_map = [{}]
9093
}
9194
}
9295
if (data?.je_cpt_fields) {
9396
tmpData.je_cpt_meta_map = data.je_cpt_fields
94-
.filter((fld) => fld.required)
95-
.map((fl) => ({ formField: '', jeCPTField: fl.key, required: fl.required }))
97+
.filter(fld => fld.required)
98+
.map(fl => ({ formField: '', jeCPTField: fl.key, required: fl.required }))
9699
}
97100
if (tmpData.je_cpt_meta_map.length < 1) {
98101
tmpData.je_cpt_meta_map = [{}]
@@ -120,17 +123,8 @@ function Post({ allIntegURL }) {
120123
return
121124
}
122125
setIsLoading(true)
123-
const resp = saveIntegConfig(
124-
flow,
125-
setFlow,
126-
allIntegURL,
127-
postConf,
128-
navigate,
129-
id,
130-
1,
131-
setIsLoading
132-
)
133-
resp.then((res) => {
126+
const resp = saveIntegConfig(flow, setFlow, allIntegURL, postConf, navigate, id, 1, setIsLoading)
127+
resp.then(res => {
134128
if (res.success) {
135129
setSnackbar({ show: true, msg: res.data })
136130
// navigate(allIntegURL)
@@ -149,7 +143,7 @@ function Post({ allIntegURL }) {
149143
</div>
150144
<input
151145
className="btcd-paper-inp w-5 mt-1"
152-
onChange={(e) => handleInput(e.target.name, e.target.value)}
146+
onChange={e => handleInput(e.target.name, e.target.value)}
153147
name="name"
154148
value={postConf.name}
155149
type="text"
@@ -175,7 +169,7 @@ function Post({ allIntegURL }) {
175169
<select
176170
name="post_type"
177171
value={postConf?.post_type}
178-
onChange={(e) => getCustomFields(e.target.name, e.target.value)}
172+
onChange={e => getCustomFields(e.target.name, e.target.value)}
179173
className="btcd-paper-inp w-5 mt-1">
180174
<option disabled selected>
181175
{__('Select Post Type', 'bit-integrations')}
@@ -210,7 +204,7 @@ function Post({ allIntegURL }) {
210204
<select
211205
name="post_status"
212206
value={postConf?.post_status}
213-
onChange={(e) => handleInput(e.target.name, e.target.value)}
207+
onChange={e => handleInput(e.target.name, e.target.value)}
214208
className="btcd-paper-inp w-5 mt-2">
215209
<option disabled selected>
216210
{__('Select Status', 'bit-integrations')}
@@ -235,7 +229,7 @@ function Post({ allIntegURL }) {
235229
<select
236230
name="post_author"
237231
value={postConf?.post_author}
238-
onChange={(e) => handleInput(e.target.name, e.target.value)}
232+
onChange={e => handleInput(e.target.name, e.target.value)}
239233
className="btcd-paper-inp w-5 mt-2">
240234
<option disabled selected>
241235
{__('Select Author', 'bit-integrations')}
@@ -255,7 +249,7 @@ function Post({ allIntegURL }) {
255249
<select
256250
name="comment_status"
257251
value={postConf?.comment_status}
258-
onChange={(e) => handleInput(e.target.name, e.target.value)}
252+
onChange={e => handleInput(e.target.name, e.target.value)}
259253
className="btcd-paper-inp w-5 mt-2">
260254
<option disabled selected>
261255
{__('Select Status', 'bit-integrations')}
@@ -264,6 +258,29 @@ function Post({ allIntegURL }) {
264258
<option value="closed">{__('Closed', 'bit-integrations')}</option>
265259
</select>
266260

261+
<div className="mt-3">
262+
<b>
263+
<ProFeatureTitle title={__('Add Post Tags', 'bit-integrations')} />
264+
</b>
265+
266+
<Cooltip width={250} icnSize={17} className="ml-2">
267+
<div className="txt-body">
268+
{__('Use commas to separate multiple tags. Example: tag1, tag2, tag3', 'bit-integrations')}
269+
<br />
270+
</div>
271+
</Cooltip>
272+
</div>
273+
274+
<input
275+
className="btcd-paper-inp w-5 mt-2 "
276+
onChange={e => handleInput(e.target.name, e.target.value)}
277+
name="post_tags"
278+
value={postConf.post_tags}
279+
type="text"
280+
placeholder={__('Add Post Tags...', 'bit-integrations')}
281+
disabled={!isPro}
282+
/>
283+
267284
<div>
268285
<div className="mt-3 mb-1">
269286
<b>{__('Post Field Mapping', 'bit-integrations')}</b>
@@ -305,9 +322,7 @@ function Post({ allIntegURL }) {
305322
<CustomField
306323
formID={formID}
307324
formFields={formFields}
308-
handleInput={(e) =>
309-
handleInput(e, postConf, setPostConf, formID, setIsLoading, setSnackbar)
310-
}
325+
handleInput={e => handleInput(e, postConf, setPostConf, formID, setIsLoading, setSnackbar)}
311326
postConf={postConf}
312327
setPostConf={setPostConf}
313328
isLoading={isLoading}

0 commit comments

Comments
 (0)