PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.3
GiveWP – Donation Plugin and Fundraising Platform v4.16.3
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 / Campaigns / Blocks / DonateButton / edit.tsx
give / src / Campaigns / Blocks / DonateButton Last commit date
app.tsx 1 year ago block.json 7 months ago edit.tsx 1 year ago index.tsx 1 year ago render.php 1 year ago styles.scss 1 year ago
edit.tsx
105 lines
1 import {__} from '@wordpress/i18n';
2 import {useSelect} from '@wordpress/data';
3 import {addQueryArgs} from '@wordpress/url';
4 import apiFetch from '@wordpress/api-fetch';
5 import useSWR from 'swr';
6 import {InspectorControls, useBlockProps} from '@wordpress/block-editor';
7 import {BlockEditProps} from '@wordpress/blocks';
8 import {PanelBody, SelectControl, TextControl, ToggleControl} from '@wordpress/components';
9 import ServerSideRender from '@wordpress/server-side-render';
10 import useCampaign from '../shared/hooks/useCampaign';
11 import CampaignSelector from '../shared/components/CampaignSelector';
12
13
14 /**
15 * @since 4.0.0
16 */
17 export default function Edit({attributes, setAttributes}: BlockEditProps<{
18 campaignId: number;
19 buttonText: string;
20 useDefaultForm: boolean;
21 selectedForm: string;
22 }>) {
23 const blockProps = useBlockProps();
24 const {buttonText = __('Donate', 'give')} = attributes;
25 const {campaign, hasResolved} = useCampaign(attributes.campaignId);
26
27 const adminBaseUrl = useSelect(
28 // @ts-ignore
29 (select) => select('core').getSite()?.url + '/wp-admin/edit.php?post_type=give_forms&page=give-campaigns',
30 []
31 );
32
33 const campaignForms = (() => {
34 const {data, isLoading}: { data: { items: [] }, isLoading: boolean } = useSWR(
35 addQueryArgs('/give-api/v2/admin/forms', {campaignId: attributes.campaignId, status: 'publish'}),
36 path => apiFetch({path})
37 )
38
39 if (isLoading) {
40 return [{label: __('Loading...', 'give'), value: ''}]
41 }
42
43 const options = data?.items.map((form: { name: string, id: string }) => ({
44 label: form.name,
45 value: form.id
46 }))
47
48 return [
49 {label: __('Select form', 'give'), value: ''},
50 ...options
51 ];
52 })();
53
54 return (
55 <div {...blockProps}>
56 <CampaignSelector
57 campaignId={attributes.campaignId}
58 handleSelect={(campaignId: number) => setAttributes({campaignId})}
59 >
60 <ServerSideRender block="givewp/campaign-donate-button" attributes={attributes} />
61 </CampaignSelector>
62
63 {hasResolved && campaign?.id && (
64 <InspectorControls>
65 <PanelBody title="Settings" initialOpen={true}>
66 <TextControl
67 label={__('Donate button', 'give')}
68 value={buttonText}
69 onChange={(buttonText: string) => setAttributes({buttonText})}
70 />
71 <ToggleControl
72 label={__('Use default form', 'give')}
73 checked={attributes.useDefaultForm}
74 onChange={(useDefaultForm: boolean) => setAttributes({useDefaultForm})}
75 help={
76 <>
77 {__('Uses the campaign’s default form.', 'give')}
78 {` `}
79 <a
80 href={`${adminBaseUrl}&id=${attributes.campaignId}&tab=forms`}
81 target="_blank"
82 rel="noopener noreferrer"
83 aria-label={__('Change campaign default form', 'give')}
84 >
85 {__('Change default form', 'give')}
86 </a>
87 </>
88 }
89 />
90 {!attributes.useDefaultForm && (
91 <SelectControl
92 label={__('Form', 'give')}
93 onChange={(selectedForm: string) => setAttributes({selectedForm})}
94 options={campaignForms}
95 value={attributes.selectedForm}
96 help={__('Donations are collected through this form.', 'give')}
97 />
98 )}
99 </PanelBody>
100 </InspectorControls>
101 )}
102 </div>
103 );
104 }
105