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