PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.19.4
GiveWP – Donation Plugin and Fundraising Platform v3.19.4
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 2 years ago EditFormRoute.php 2 years ago RegisterFormBuilderPageRoute.php 1 year ago RegisterFormBuilderRestRoutes.php 2 years ago
RegisterFormBuilderPageRoute.php
217 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.1.0 set translations for scripts
62 * @since 3.0.0
63 *
64 * @return void
65 */
66 public function renderPage()
67 {
68 $formBuilderViewModel = new FormBuilderViewModel();
69
70 $donationFormId = abs($_GET['donationFormID']);
71
72 // validate form exists before proceeding
73 // TODO: improve on this validation
74 if (!get_post($donationFormId)) {
75 wp_die(__('Donation form does not exist.'));
76 }
77
78 wp_enqueue_style(
79 '@givewp/form-builder/registrars',
80 GIVE_PLUGIN_URL . 'build/formBuilderRegistrars.css'
81 );
82
83 $registrarsScriptHandle = '@givewp/form-builder/registrars';
84 wp_enqueue_script(
85 $registrarsScriptHandle,
86 $formBuilderViewModel->jsPathToRegistrars(),
87 $this->getRegisteredFormBuilderJsDependencies(
88 $formBuilderViewModel->jsRegistrarsDependencies()
89 ),
90 GIVE_VERSION,
91 true
92 );
93
94 Language::setScriptTranslations($registrarsScriptHandle);
95
96 /**
97 * @since 3.1.0 set translations for scripts
98 * @since 3.0.0
99 * Using `wp_enqueue_script` instead of `new EnqueueScript` for more control over dependencies.
100 * The `EnqueueScript` class discovers the dependencies from the associated `asset.php` file,
101 * which might include dependencies that are not supported in some version of WordPress.
102 * @link https://github.com/impress-org/givewp-next-gen/pull/181#discussion_r1202686731
103 */
104 Hooks::doAction('givewp_form_builder_enqueue_scripts');
105
106 $formBuilderScriptPath = '@givewp/form-builder/script';
107 wp_enqueue_script(
108 '@givewp/form-builder/script',
109 $formBuilderViewModel->jsPathFromPluginRoot(),
110 $this->getRegisteredFormBuilderJsDependencies(
111 $formBuilderViewModel->jsDependencies()
112 ),
113 GIVE_VERSION,
114 true
115 );
116
117 Language::setScriptTranslations($formBuilderScriptPath);
118
119 wp_add_inline_script(
120 '@givewp/form-builder/script',
121 'window.giveStorageData = ' . json_encode($formBuilderViewModel->storageData($donationFormId)) . ';',
122 'before'
123 );
124
125 wp_localize_script('@givewp/form-builder/script', 'onboardingTourData', [
126 'actionUrl' => admin_url('admin-ajax.php?action=givewp_tour_completed'),
127 'autoStartDesignTour' => !get_user_meta(get_current_user_id(), 'givewp-form-builder-design-tour-completed', true),
128 'autoStartSchemaTour' => !get_user_meta(get_current_user_id(), 'givewp-form-builder-schema-tour-completed', true),
129 ]);
130
131 $migratedFormId = give_get_meta($donationFormId, 'migratedFormId', true);
132 $transferredFormId = give_get_meta($donationFormId, 'transferredFormId', true);
133
134 wp_localize_script('@givewp/form-builder/script', 'migrationOnboardingData', [
135 'pluginUrl' => GIVE_PLUGIN_URL,
136 'formId' => $donationFormId,
137 'migrationActionUrl' => admin_url('admin-ajax.php?action=givewp_migration_hide_notice'),
138 'transferActionUrl' => admin_url('admin-ajax.php?action=givewp_transfer_hide_notice'),
139 'apiRoot' => esc_url_raw(rest_url('give-api/v2/admin/forms')),
140 'apiNonce' => wp_create_nonce('wp_rest'),
141 'isMigratedForm' => $migratedFormId,
142 'isTransferredForm' => $transferredFormId,
143 'showUpgradeDialog' => (bool)$migratedFormId && !(bool)give_get_meta(
144 $donationFormId,
145 'givewp-form-builder-migration-hide-notice',
146 true
147 ),
148 'transferShowNotice' => (bool)$migratedFormId && !(bool)$transferredFormId && !(bool)give_get_meta(
149 $donationFormId,
150 'givewp-form-builder-transfer-hide-notice',
151 true
152 ),
153 ]);
154
155 wp_localize_script('@givewp/form-builder/script', 'goalNotificationData', [
156 'actionUrl' => admin_url('admin-ajax.php?action=givewp_goal_hide_notice'),
157 'isDismissed' => get_user_meta(get_current_user_id(), 'givewp-goal-notice-dismissed', true),
158 ]);
159
160 /**
161 * @since 3.16.2
162 */
163 wp_localize_script('@givewp/form-builder/script', 'additionalPaymentGatewaysNotificationData', [
164 'actionUrl' => admin_url('admin-ajax.php?action=givewp_additional_payment_gateways_hide_notice'),
165 'isDismissed' => get_user_meta(get_current_user_id(), 'givewp-additional-payment-gateways-notice-dismissed', true),
166 ]);
167
168 View::render('FormBuilder.admin-form-builder');
169 }
170
171 /**
172 * Load Gutenberg scripts and styles from core.
173 *
174 * @see https://github.com/Automattic/isolated-block-editor/blob/trunk/examples/wordpress-php/iso-gutenberg.php
175 *
176 * @since 3.0.0
177 */
178 public function loadGutenbergScripts()
179 {
180 wp_enqueue_editor();
181
182 // Gutenberg scripts
183 wp_enqueue_script('wp-block-library');
184 wp_enqueue_script('wp-format-library');
185 wp_enqueue_script('wp-editor');
186
187 // Gutenberg styles
188 wp_enqueue_style('wp-edit-post');
189 wp_enqueue_style('wp-format-library');
190 }
191
192 /**
193 * Loop through the form builder js dependencies and check if they are registered before adding to enqueue_script.
194 *
195 * @since 3.0.0
196 */
197 protected function getRegisteredFormBuilderJsDependencies(array $formBuilderJsDependencies): array
198 {
199 $scripts = wp_scripts();
200
201 return array_filter($formBuilderJsDependencies, static function ($dependency) use ($scripts) {
202 $isRegistered = $scripts->query($dependency, 'registered');
203
204 if (!$isRegistered) {
205 Log::error(
206 sprintf(
207 'Script %s is not registered. Please check the script dependencies.',
208 $dependency
209 )
210 );
211 }
212
213 return $isRegistered;
214 });
215 }
216 }
217