PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.15.1
GiveWP – Donation Plugin and Fundraising Platform v3.15.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 2 years ago EditFormRoute.php 2 years ago RegisterFormBuilderPageRoute.php 2 years ago RegisterFormBuilderRestRoutes.php 2 years ago
RegisterFormBuilderPageRoute.php
209 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 View::render('FormBuilder.admin-form-builder');
161 }
162
163 /**
164 * Load Gutenberg scripts and styles from core.
165 *
166 * @see https://github.com/Automattic/isolated-block-editor/blob/trunk/examples/wordpress-php/iso-gutenberg.php
167 *
168 * @since 3.0.0
169 */
170 public function loadGutenbergScripts()
171 {
172 wp_enqueue_editor();
173
174 // Gutenberg scripts
175 wp_enqueue_script('wp-block-library');
176 wp_enqueue_script('wp-format-library');
177 wp_enqueue_script('wp-editor');
178
179 // Gutenberg styles
180 wp_enqueue_style('wp-edit-post');
181 wp_enqueue_style('wp-format-library');
182 }
183
184 /**
185 * Loop through the form builder js dependencies and check if they are registered before adding to enqueue_script.
186 *
187 * @since 3.0.0
188 */
189 protected function getRegisteredFormBuilderJsDependencies(array $formBuilderJsDependencies): array
190 {
191 $scripts = wp_scripts();
192
193 return array_filter($formBuilderJsDependencies, static function ($dependency) use ($scripts) {
194 $isRegistered = $scripts->query($dependency, 'registered');
195
196 if (!$isRegistered) {
197 Log::error(
198 sprintf(
199 'Script %s is not registered. Please check the script dependencies.',
200 $dependency
201 )
202 );
203 }
204
205 return $isRegistered;
206 });
207 }
208 }
209