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