PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.6.1
GiveWP – Donation Plugin and Fundraising Platform v4.6.1
4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / DonationForms / V2 / resources / components / DonationFormsRowActions.tsx
give / src / DonationForms / V2 / resources / components Last commit date
AddCampaignFormModal 1 year ago Migration 1 year ago Onboarding 1 year ago DonationFormsListTable.tsx 11 months ago DonationFormsRowActions.tsx 1 year ago
DonationFormsRowActions.tsx
167 lines
1 import {__, sprintf} from '@wordpress/i18n';
2 import {useSWRConfig} from 'swr';
3 import RowAction from '@givewp/components/ListTable/RowAction';
4 import ListTableApi from '@givewp/components/ListTable/api';
5 import {useContext} from 'react';
6 import {ShowConfirmModalContext} from '@givewp/components/ListTable/ListTablePage';
7 import {Interweave} from 'interweave';
8 import {UpgradeModalContent} from './Migration';
9 import {createInterpolateElement} from '@wordpress/element';
10
11 const donationFormsApi = new ListTableApi(window.GiveDonationForms);
12
13 export function DonationFormsRowActions({data, item, removeRow, addRow, setUpdateErrors, parameters, entity}) {
14 const {mutate} = useSWRConfig();
15 const showConfirmModal = useContext(ShowConfirmModalContext);
16 const trashEnabled = Boolean(data?.trash);
17 const deleteEndpoint = trashEnabled && !item.status.includes('trash') ? '/trash' : '/delete';
18
19 const fetchAndUpdateErrors = async (parameters, endpoint, id, method) => {
20 const response = await donationFormsApi.fetchWithArgs(endpoint, {ids: [id]}, method);
21 setUpdateErrors(response);
22 await mutate(parameters);
23 return response;
24 };
25
26 const deleteForm = async (selected) => {
27 try {
28 await fetchAndUpdateErrors(parameters, deleteEndpoint, item.id, 'DELETE');
29 } catch (error) {
30 const errorData = JSON.parse(error.message.replace('Error: ', ''));
31 alert(errorData.message);
32 }
33 };
34
35 const confirmDeleteForm = (selected) => (
36 <p>
37 {__('Really delete the following form?', 'give')}
38 <br />
39 <Interweave content={item?.title} />
40 </p>
41 );
42
43 const confirmTrashForm = (selected) => (
44 <p>
45 {__('Are you sure you want to trash the following donation form? ', 'give')}
46 <br />
47 <Interweave content={item?.title} />
48 </p>
49 );
50
51 const confirmModal = (event) => {
52 showConfirmModal(__('Delete', 'give'), confirmDeleteForm, deleteForm, 'danger');
53 };
54
55 const confirmTrashModal = (event) => {
56 showConfirmModal(__('Trash', 'give'), confirmTrashForm, deleteForm, 'danger');
57 };
58
59 const confirmUpgradeModal = (event) => {
60 showConfirmModal(__('Upgrade', 'give'), UpgradeModalContent, async (selected) => {
61 const response = await donationFormsApi.fetchWithArgs('/migrate/' + item.id, {}, 'POST');
62 await mutate(parameters);
63 return response;
64 });
65 };
66
67 const urlParams = new URLSearchParams(window.location.search);
68 const isCampaignDetailsPage =
69 urlParams.get('id') && urlParams.get('page') && 'give-campaigns' === urlParams.get('page');
70
71 const defaultCampaignModalContent = createInterpolateElement(
72 __('This will set <title_link/> as the default form for this campaign. Do you want to proceed?', 'give'),
73 {
74 title_link: <Interweave content={item?.title} />,
75 }
76 );
77
78 const confirmDefaultCampaignFormModal = (event) => {
79 showConfirmModal(
80 __('Make as default', 'give'),
81 (selected) => <p>{defaultCampaignModalContent}</p>,
82 async () => {
83 await entity.edit({
84 defaultFormId: item.id,
85 });
86
87 const response = await entity.save();
88
89 await mutate(parameters);
90 return response;
91 },
92 __('Yes proceed', 'give')
93 );
94 };
95
96 const copyShortcode = (event) => {
97 navigator.clipboard.writeText(`[give_form id="${item.id}"]`);
98 alert(sprintf(__('The shortcode for Donation Form #%d has been copied to your clipboard!', 'give'), item.id));
99 };
100
101 return (
102 <>
103 {parameters.status === 'trash' ? (
104 <>
105 <RowAction
106 onClick={removeRow(
107 async () => await fetchAndUpdateErrors(parameters, '/restore', item.id, 'POST')
108 )}
109 actionId={item.id}
110 displayText={__('Restore', 'give')}
111 hiddenText={item?.name}
112 />
113 <RowAction
114 onClick={confirmModal}
115 actionId={item.id}
116 displayText={__('Delete Permanently', 'give')}
117 hiddenText={item?.name}
118 highlight
119 />
120 </>
121 ) : (
122 <>
123 <RowAction href={item.edit} displayText={__('Edit', 'give')} hiddenText={item?.name} />
124 {!item.isDefaultCampaignForm && (
125 <RowAction
126 onClick={confirmTrashModal}
127 actionId={item.id}
128 highlight={true}
129 displayText={trashEnabled ? __('Trash', 'give') : __('Delete', 'give')}
130 hiddenText={item?.name}
131 />
132 )}
133 <RowAction href={item.permalink} displayText={__('View', 'give')} hiddenText={item?.name} />
134 <RowAction
135 onClick={addRow(async (id) => await fetchAndUpdateErrors(parameters, '/duplicate', id, 'POST'))}
136 actionId={item.id}
137 displayText={__('Duplicate', 'give')}
138 hiddenText={item?.name}
139 />
140 {!item.v3form && (
141 <RowAction
142 onClick={confirmUpgradeModal}
143 actionId={item.id}
144 displayText={__('Upgrade', 'give')}
145 hiddenText={item?.name}
146 />
147 )}
148 <RowAction
149 onClick={copyShortcode}
150 actionId={item.id}
151 displayText={__('Copy shortcode', 'give')}
152 hiddenText={item?.name}
153 />
154 {isCampaignDetailsPage && !item.isDefaultCampaignForm && (
155 <RowAction
156 onClick={confirmDefaultCampaignFormModal}
157 actionId={item.id}
158 displayText={__('Make as default', 'give')}
159 hiddenText={item?.name}
160 />
161 )}
162 </>
163 )}
164 </>
165 );
166 }
167