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