PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.13.0
GiveWP – Donation Plugin and Fundraising Platform v4.13.0
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 / FormBuilder / Routes / RegisterFormBuilderPageRoute.php
give / src / FormBuilder / Routes Last commit date
CreateFormRoute.php 1 year ago EditFormRoute.php 1 year ago RegisterFormBuilderPageRoute.php 9 months ago RegisterFormBuilderRestRoutes.php 1 year ago
RegisterFormBuilderPageRoute.php
234 lines
1 <?php
2
3 namespace Give\FormBuilder\Routes;
4
5
6 use Give\Campaigns\Models\Campaign;
7 use Give\FormBuilder\FormBuilderRouteBuilder;
8 use Give\FormBuilder\ViewModels\FormBuilderViewModel;
9 use Give\Framework\Views\View;
10 use Give\Helpers\Hooks;
11 use Give\Helpers\Language;
12 use Give\Log\Log;
13
14 use function wp_enqueue_style;
15
16 /**
17 * Add form builder page route and scripts
18 */
19 class RegisterFormBuilderPageRoute
20 {
21 /**
22 * Use add_submenu_page to register page within WP admin
23 *
24 * @since 4.3.2 update capability to edit_give_forms
25 * @since 4.0.0 set parent slug to empty string
26 * @since 3.0.0
27 *
28 * @return void
29 */
30 public function __invoke()
31 {
32 add_submenu_page(
33 '', // do not display in menu, just register page
34 'Visual Donation Form Builder', // ignored
35 'Add Form', // ignored
36 'edit_give_forms',
37 FormBuilderRouteBuilder::SLUG,
38 [$this, 'renderPage'],
39 1
40 );
41
42 add_action("admin_print_styles", function () {
43 if (FormBuilderRouteBuilder::isRoute()) {
44 wp_enqueue_style('givewp-design-system-foundation');
45
46 $this->loadGutenbergScripts();
47
48 wp_enqueue_style(
49 '@givewp/form-builder/style-app',
50 GIVE_PLUGIN_URL . 'build/formBuilderApp.css'
51 );
52
53 wp_enqueue_style(
54 'givewp-form-builder-admin-styles',
55 GIVE_PLUGIN_URL . 'src/FormBuilder/resources/css/admin-form-builder.css'
56 );
57 }
58 });
59 }
60
61 /**
62 * Render page with scripts
63 *
64 * @since 3.22.0 Add locale support
65 * @since 3.1.0 set translations for scripts
66 * @since 3.0.0
67 *
68 * @return void
69 */
70 public function renderPage()
71 {
72 $formBuilderViewModel = new FormBuilderViewModel();
73
74 $donationFormId = abs($_GET['donationFormID']);
75
76 // validate form exists before proceeding
77 // TODO: improve on this validation
78 if (!get_post($donationFormId)) {
79 wp_die(__('Donation form does not exist.', 'give'));
80 }
81
82 $locale = give_clean($_GET['locale']) ?? '';
83 Language::switchToLocale($locale);
84
85 wp_enqueue_style(
86 '@givewp/form-builder/registrars',
87 GIVE_PLUGIN_URL . 'build/formBuilderRegistrars.css'
88 );
89
90 $registrarsScriptHandle = '@givewp/form-builder/registrars';
91 wp_enqueue_script(
92 $registrarsScriptHandle,
93 $formBuilderViewModel->jsPathToRegistrars(),
94 $this->getRegisteredFormBuilderJsDependencies(
95 $formBuilderViewModel->jsRegistrarsDependencies()
96 ),
97 GIVE_VERSION,
98 true
99 );
100
101 Language::setScriptTranslations($registrarsScriptHandle);
102
103 /**
104 * @since 3.1.0 set translations for scripts
105 * @since 3.0.0
106 * Using `wp_enqueue_script` instead of `new EnqueueScript` for more control over dependencies.
107 * The `EnqueueScript` class discovers the dependencies from the associated `asset.php` file,
108 * which might include dependencies that are not supported in some version of WordPress.
109 * @link https://github.com/impress-org/givewp-next-gen/pull/181#discussion_r1202686731
110 */
111 Hooks::doAction('givewp_form_builder_enqueue_scripts');
112
113 $formBuilderScriptPath = '@givewp/form-builder/script';
114 wp_enqueue_script(
115 '@givewp/form-builder/script',
116 $formBuilderViewModel->jsPathFromPluginRoot(),
117 $this->getRegisteredFormBuilderJsDependencies(
118 $formBuilderViewModel->jsDependencies()
119 ),
120 GIVE_VERSION,
121 true
122 );
123
124 Language::setScriptTranslations($formBuilderScriptPath);
125
126 wp_add_inline_script(
127 '@givewp/form-builder/script',
128 'window.giveStorageData = ' . json_encode($formBuilderViewModel->storageData($donationFormId)) . ';',
129 'before'
130 );
131
132 wp_localize_script('@givewp/form-builder/script', 'onboardingTourData', [
133 'actionUrl' => admin_url('admin-ajax.php?action=givewp_tour_completed'),
134 'autoStartDesignTour' => !get_user_meta(get_current_user_id(), 'givewp-form-builder-design-tour-completed', true),
135 'autoStartSchemaTour' => !get_user_meta(get_current_user_id(), 'givewp-form-builder-schema-tour-completed', true),
136 ]);
137
138 $migratedFormId = give_get_meta($donationFormId, 'migratedFormId', true);
139 $transferredFormId = give_get_meta($donationFormId, 'transferredFormId', true);
140
141 wp_localize_script('@givewp/form-builder/script', 'migrationOnboardingData', [
142 'pluginUrl' => GIVE_PLUGIN_URL,
143 'formId' => $donationFormId,
144 'migrationActionUrl' => admin_url('admin-ajax.php?action=givewp_migration_hide_notice'),
145 'transferActionUrl' => admin_url('admin-ajax.php?action=givewp_transfer_hide_notice'),
146 'apiRoot' => esc_url_raw(rest_url('give-api/v2/admin/forms')),
147 'apiNonce' => wp_create_nonce('wp_rest'),
148 'isMigratedForm' => $migratedFormId,
149 'isTransferredForm' => $transferredFormId,
150 'showUpgradeDialog' => (bool)$migratedFormId && !(bool)give_get_meta(
151 $donationFormId,
152 'givewp-form-builder-migration-hide-notice',
153 true
154 ),
155 'transferShowNotice' => (bool)$migratedFormId && !(bool)$transferredFormId && !(bool)give_get_meta(
156 $donationFormId,
157 'givewp-form-builder-transfer-hide-notice',
158 true
159 ),
160 ]);
161
162 wp_localize_script('@givewp/form-builder/script', 'goalNotificationData', [
163 'actionUrl' => admin_url('admin-ajax.php?action=givewp_goal_hide_notice'),
164 'isDismissed' => get_user_meta(get_current_user_id(), 'givewp-goal-notice-dismissed', true),
165 ]);
166
167 /**
168 * @since 3.16.2
169 */
170 wp_localize_script('@givewp/form-builder/script', 'additionalPaymentGatewaysNotificationData', [
171 'actionUrl' => admin_url('admin-ajax.php?action=givewp_additional_payment_gateways_hide_notice'),
172 'isDismissed' => get_user_meta(get_current_user_id(), 'givewp-additional-payment-gateways-notice-dismissed', true),
173 ]);
174
175 /**
176 * @since 4.0.0
177 */
178 if ($campaign = Campaign::findByFormId($donationFormId)) {
179 wp_localize_script('@givewp/form-builder/script', 'headerContainer', [
180 'campaignUrl' => admin_url('edit.php?post_type=give_forms&page=give-campaigns&id=' . $campaign->id),
181 ]);
182 }
183
184
185 View::render('FormBuilder.admin-form-builder');
186 }
187
188 /**
189 * Load Gutenberg scripts and styles from core.
190 *
191 * @see https://github.com/Automattic/isolated-block-editor/blob/trunk/examples/wordpress-php/iso-gutenberg.php
192 *
193 * @since 3.0.0
194 */
195 public function loadGutenbergScripts()
196 {
197 wp_enqueue_editor();
198
199 // Gutenberg scripts
200 wp_enqueue_script('wp-block-library');
201 wp_enqueue_script('wp-format-library');
202 wp_enqueue_script('wp-editor');
203
204 // Gutenberg styles
205 wp_enqueue_style('wp-edit-post');
206 wp_enqueue_style('wp-format-library');
207 }
208
209 /**
210 * Loop through the form builder js dependencies and check if they are registered before adding to enqueue_script.
211 *
212 * @since 3.0.0
213 */
214 protected function getRegisteredFormBuilderJsDependencies(array $formBuilderJsDependencies): array
215 {
216 $scripts = wp_scripts();
217
218 return array_filter($formBuilderJsDependencies, static function ($dependency) use ($scripts) {
219 $isRegistered = $scripts->query($dependency, 'registered');
220
221 if (!$isRegistered) {
222 Log::error(
223 sprintf(
224 'Script %s is not registered. Please check the script dependencies.',
225 $dependency
226 )
227 );
228 }
229
230 return $isRegistered;
231 });
232 }
233 }
234