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