PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 3.4.6
JetFormBuilder — Dynamic Blocks Form Builder v3.4.6
3.6.3.1 3.6.3 3.6.2.2 3.6.2.1 3.6.2 3.6.1.1 3.6.1 3.6.0.1 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.3.0 1.3.1 1.3.2 1.3.3 1.4.0 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.1.0 2.1.1 2.1.10 2.1.11 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 3.0.0 3.0.0.1 3.0.0.2 3.0.0.3 3.0.1 3.0.1.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.0.1 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.3.2 3.3.3 3.3.3.1 3.3.4 3.3.4.1 3.3.4.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.5.1 3.4.5.2 3.4.6 3.4.7 3.4.7.1 3.5.0 3.5.1 3.5.1.1 3.5.1.2 3.5.2 3.5.2.1 3.5.3 3.5.4 3.5.5 3.5.6 3.5.6.1 3.5.6.2 3.5.6.3 3.6.0
jetformbuilder / includes / admin / editor.php
jetformbuilder / includes / admin Last commit date
exceptions 2 years ago pages 1 year ago single-pages 2 years ago table-views 2 years ago tabs-handlers 1 year ago editor.php 1 year ago
editor.php
480 lines
1 <?php
2
3 namespace Jet_Form_Builder\Admin;
4
5 use Jet_Form_Builder\Actions\Conditions\Condition_Manager as Action_Condition_Manager;
6 use Jet_Form_Builder\Admin\Pages\Pages_Manager;
7 use Jet_Form_Builder\Admin\Tabs_Handlers\Tab_Handler_Manager;
8 use Jet_Form_Builder\Classes\Arguments\Form_Arguments;
9 use Jet_Form_Builder\Classes\Http\Utm_Url;
10 use Jet_Form_Builder\Classes\Tools;
11 use Jet_Form_Builder\Exceptions\Repository_Exception;
12 use Jet_Form_Builder\Plugin;
13 use Jet_Form_Builder\Blocks\Conditional_Block\Condition_Manager as Block_Condition_Manager;
14 use JFB_Modules\Post_Type\Module;
15
16 // If this file is called directly, abort.
17 if ( ! defined( 'WPINC' ) ) {
18 die;
19 }
20
21 /**
22 * Define Editor class
23 */
24 class Editor {
25
26 const EDITOR_HANDLE = 'jet-form-builder-editor';
27 const EDITOR_PACKAGE_HANDLE = 'jet-form-builder-editor-package';
28
29 public function __construct() {
30 add_action( 'enqueue_block_editor_assets', array( $this, 'admin_assets' ) );
31 }
32
33 /**
34 * Register admin assets
35 *
36 * @return void [type] [description]
37 */
38 public function admin_assets() {
39 if ( jet_form_builder()->post_type->is_form_editor ) {
40 $this->enqueue_assets();
41 } else {
42 $this->enqueue_form_assets();
43 }
44 }
45
46 /**
47 * Returns taxonomies list for the config
48 *
49 * @return [type] [description]
50 */
51 public function get_taxonomies_list() {
52
53 $taxonomies = get_taxonomies( array(), 'objects' );
54
55 $result = array();
56
57 foreach ( $taxonomies as $tax ) {
58 $result[] = array(
59 'value' => $tax->name,
60 'label' => sprintf( '%1$s (%2$s)', $tax->label, $tax->name ),
61 );
62 }
63
64 return $result;
65 }
66
67 public function get_preset_config() {
68 return apply_filters(
69 'jet-form-builder/editor/preset-config',
70 array(
71 'global_fields' => array(
72 array(
73 'name' => 'from',
74 'label' => __( 'Source:', 'jet-form-builder' ),
75 'type' => 'select',
76 'options' => Tools::with_placeholder(
77 array(
78 array(
79 'value' => 'post',
80 'label' => __( 'Post', 'jet-form-builder' ),
81 ),
82 array(
83 'value' => 'user',
84 'label' => __( 'User', 'jet-form-builder' ),
85 ),
86 array(
87 'value' => 'query_var',
88 'label' => __( 'URL Query Variable', 'jet-form-builder' ),
89 ),
90 )
91 ),
92 ),
93 array(
94 'name' => 'post_from',
95 'label' => __( 'Get post ID from:', 'jet-form-builder' ),
96 'type' => 'select',
97 'options' => Tools::with_placeholder(
98 array(
99 array(
100 'value' => 'current_post',
101 'label' => __( 'Current post', 'jet-form-builder' ),
102 ),
103 array(
104 'value' => 'query_var',
105 'label' => __( 'URL Query Variable', 'jet-form-builder' ),
106 ),
107 )
108 ),
109 'condition' => array(
110 'field' => 'from',
111 'value' => 'post',
112 ),
113 ),
114 array(
115 'name' => 'user_from',
116 'label' => __( 'Get user ID from:', 'jet-form-builder' ),
117 'type' => 'select',
118 'options' => Tools::with_placeholder(
119 array(
120 array(
121 'value' => 'current_user',
122 'label' => __( 'Current user', 'jet-form-builder' ),
123 ),
124 array(
125 'value' => 'queried_user',
126 'label' => __( 'Queried user', 'jet-form-builder' ),
127 ),
128 array(
129 'value' => 'query_var',
130 'label' => __( 'URL Query Variable', 'jet-form-builder' ),
131 ),
132 )
133 ),
134 'condition' => array(
135 'field' => 'from',
136 'value' => 'user',
137 ),
138 ),
139 array(
140 'name' => 'query_var',
141 'label' => __( 'Query variable name:', 'jet-form-builder' ),
142 'type' => 'text',
143 'custom_condition' => 'query_var',
144 'position' => 'dynamic',
145 ),
146 ),
147 'map_fields' => array(
148 array(
149 'name' => 'key',
150 'label' => __( 'Query variable key', 'jet-form-builder' ),
151 'type' => 'text',
152 'position' => 'general',
153 'parent_condition' => array(
154 'field' => 'from',
155 'value' => 'query_var',
156 ),
157 ),
158 array(
159 'name' => 'prop',
160 'label' => __( 'Post property', 'jet-form-builder' ),
161 'type' => 'select',
162 'options' => Tools::with_placeholder(
163 array(
164 array(
165 'value' => 'ID',
166 'label' => __( 'Post ID', 'jet-form-builder' ),
167 ),
168 array(
169 'value' => 'post_title',
170 'label' => __( 'Post Title', 'jet-form-builder' ),
171 ),
172 array(
173 'value' => 'post_content',
174 'label' => __( 'Post Content', 'jet-form-builder' ),
175 ),
176 array(
177 'value' => 'post_status',
178 'label' => __( 'Post Status', 'jet-form-builder' ),
179 ),
180 array(
181 'value' => 'post_author',
182 'label' => __( 'Post Author', 'jet-form-builder' ),
183 ),
184 array(
185 'value' => 'post_excerpt',
186 'label' => __( 'Post Excerpt', 'jet-form-builder' ),
187 ),
188 array(
189 'value' => 'post_date',
190 'label' => __( 'Post Date', 'jet-form-builder' ),
191 ),
192 array(
193 'value' => 'post_date_gmt',
194 'label' => __( 'Post Date GMT', 'jet-form-builder' ),
195 ),
196 array(
197 'value' => 'post_thumb',
198 'label' => __( 'Post Thumbnail', 'jet-form-builder' ),
199 ),
200 array(
201 'value' => 'post_meta',
202 'label' => __( 'Post Meta', 'jet-form-builder' ),
203 ),
204 array(
205 'value' => 'post_terms',
206 'label' => __( 'Post Terms', 'jet-form-builder' ),
207 ),
208 )
209 ),
210 'parent_condition' => array(
211 'field' => 'from',
212 'value' => 'post',
213 ),
214 ),
215 array(
216 'name' => 'key',
217 'label' => __( 'Taxonomy', 'jet-form-builder' ),
218 'type' => 'select',
219 'options' => Tools::with_placeholder( $this->get_taxonomies_list() ),
220 'parent_condition' => array(
221 'field' => 'from',
222 'value' => 'post',
223 ),
224 'condition' => array(
225 'field' => 'prop',
226 'value' => 'post_terms',
227 ),
228 ),
229 array(
230 'name' => 'key',
231 'label' => __( 'Meta field key', 'jet-form-builder' ),
232 'type' => 'text',
233 'parent_condition' => array(
234 'field' => 'from',
235 'value' => 'post',
236 ),
237 'condition' => array(
238 'field' => 'prop',
239 'value' => 'post_meta',
240 ),
241 ),
242 array(
243 'name' => 'prop',
244 'label' => __( 'User field', 'jet-form-builder' ),
245 'type' => 'select',
246 'options' => Tools::with_placeholder(
247 array(
248 array(
249 'value' => 'ID',
250 'label' => __( 'User ID', 'jet-form-builder' ),
251 ),
252 array(
253 'value' => 'user_login',
254 'label' => __( 'User Login', 'jet-form-builder' ),
255 ),
256 array(
257 'value' => 'user_email',
258 'label' => __( 'Email', 'jet-form-builder' ),
259 ),
260 array(
261 'value' => 'password',
262 'label' => __( 'Password', 'jet-form-builder' ),
263 ),
264 array(
265 'value' => 'first_name',
266 'label' => __( 'First Name', 'jet-form-builder' ),
267 ),
268 array(
269 'value' => 'last_name',
270 'label' => __( 'Last Name', 'jet-form-builder' ),
271 ),
272 array(
273 'value' => 'display_name',
274 'label' => __( 'Display Name', 'jet-form-builder' ),
275 ),
276 array(
277 'value' => 'user_url',
278 'label' => __( 'User URL', 'jet-form-builder' ),
279 ),
280 array(
281 'value' => 'user_meta',
282 'label' => __( 'User Meta', 'jet-form-builder' ),
283 ),
284 )
285 ),
286 'parent_condition' => array(
287 'field' => 'from',
288 'value' => 'user',
289 ),
290 ),
291 array(
292 'name' => 'key',
293 'label' => __( 'Meta field key', 'jet-form-builder' ),
294 'type' => 'text',
295 'parent_condition' => array(
296 'field' => 'from',
297 'value' => 'user',
298 ),
299 'condition' => array(
300 'field' => 'prop',
301 'value' => 'user_meta',
302 ),
303 ),
304 ),
305 )
306 );
307 }
308
309 /**
310 * Enqueue editor assets
311 *
312 * @return void
313 * @throws Repository_Exception
314 */
315 public function enqueue_assets() {
316 $script_asset = require_once jet_form_builder()->plugin_dir( 'assets/build/editor/package.asset.php' );
317
318 if ( true === $script_asset ) {
319 return;
320 }
321
322 do_action( 'jet-form-builder/editor-package/before', $this, self::EDITOR_PACKAGE_HANDLE );
323
324 array_push(
325 $script_asset['dependencies'],
326 'jet-fb-components',
327 'jet-fb-data',
328 'jet-fb-actions-v2',
329 'jet-fb-blocks-v2-to-actions-v2'
330 );
331 wp_enqueue_style( 'jet-fb-components' );
332
333 wp_enqueue_script(
334 self::EDITOR_PACKAGE_HANDLE,
335 Plugin::instance()->plugin_url( 'assets/build/editor/package.js' ),
336 $script_asset['dependencies'],
337 $script_asset['version'],
338 true
339 );
340
341 wp_localize_script(
342 self::EDITOR_PACKAGE_HANDLE,
343 'jetFormEvents',
344 jet_fb_events()->to_array()
345 );
346
347 wp_localize_script(
348 self::EDITOR_PACKAGE_HANDLE,
349 'jetFormBlockConditions',
350 Block_Condition_Manager::instance()->to_array()
351 );
352
353 wp_set_script_translations(
354 self::EDITOR_PACKAGE_HANDLE,
355 'jet-form-builder',
356 Plugin::instance()->plugin_dir( 'languages' )
357 );
358
359 $script_asset = require_once jet_form_builder()->plugin_dir( 'assets/build/editor/form.builder.asset.php' );
360
361 do_action( 'jet-form-builder/editor-assets/before', $this, self::EDITOR_HANDLE );
362
363 wp_enqueue_script(
364 self::EDITOR_HANDLE,
365 Plugin::instance()->plugin_url( 'assets/build/editor/form.builder.js' ),
366 $script_asset['dependencies'],
367 $script_asset['version'],
368 true
369 );
370
371 wp_enqueue_style(
372 self::EDITOR_HANDLE,
373 Plugin::instance()->plugin_url( 'assets/build/editor/form.builder.css' ),
374 array(
375 'media',
376 'l10n',
377 'buttons',
378 'wp-edit-blocks',
379 'wp-editor',
380 ),
381 $script_asset['version']
382 );
383
384 $conditions_settings = ( new Action_Condition_Manager() )->get_settings();
385 $exclude_events = array(
386 'redirect_to_page' => array( 'WC.ORDER.COMPLETE', 'WC.CHECKOUT.COMPLETE' ),
387 );
388
389 /** @var Module $post_type */
390 /** @noinspection PhpUnhandledExceptionInspection */
391 $post_type = jet_form_builder()->module( 'post-type' );
392
393 $utm = new Utm_Url( 'plugin' );
394 $utm->set_medium( 'editor' );
395 $utm->set_content( $utm->get_license_and_theme() );
396
397 $addons = JET_FORM_BUILDER_SITE . '/addons/';
398 $pricing = JET_FORM_BUILDER_SITE . '/pricing/';
399
400 wp_localize_script(
401 self::EDITOR_PACKAGE_HANDLE,
402 'JetFormEditorData',
403 apply_filters(
404 'jet-form-builder/editor/config',
405 array(
406 'presetConfig' => $this->get_preset_config(),
407 'messagesDefault' => $post_type->get_messages(),
408 'helpForRepeaters' => $this->get_help_for_repeaters(),
409 'global_settings' => Tab_Handler_Manager::instance()->all(),
410 'global_settings_url' => Pages_Manager::instance()->get_stable_url( 'jfb-settings' ),
411 'jetEngineVersion' => Tools::get_jet_engine_version(),
412 'actionConditionSettings' => $conditions_settings,
413 'actionConditionExcludeEvents' => $exclude_events,
414 'argumentsSource' => Form_Arguments::get_options(),
415 'utmLinks' => array(
416 'allProActions' => $utm->set_campaign( 'jetform-settings/pro-actions' )->add_query( $addons ),
417 'limitResponses' => $utm->set_campaign( 'jetform-settings/limit-form-responses' )->add_query( $pricing ),
418 'scheduleForm' => $utm->set_campaign( 'jetform-settings/schedule-forms' )->add_query( $pricing ),
419 'userLoginPattern' => $utm->set_campaign( 'welcome-block/user-login' )->add_query( $addons . 'user-login/' ),
420 'resetPassPattern' => $utm->set_campaign( 'welcome-block/reset-password' )->add_query( $addons . 'user-login/' ),
421 ),
422 'isActivePro' => jet_form_builder()->addons_manager->is_active(),
423 'assetsUrl' => jet_form_builder()->plugin_url( 'assets/' ),
424 )
425 )
426 );
427
428 do_action( 'jet-form-builder/editor-assets/after', $this, self::EDITOR_HANDLE );
429 }
430
431 private function get_help_for_repeaters() {
432 return array(
433 'conditional_block' => array(
434 'label' => __( 'With many conditions for the block, they are checked with the AND operator', 'jet-form-builder' ),
435 ),
436 'conditional_block_or' => array(
437 'label' => __( 'With many conditions for the block, they are checked with the OR operator', 'jet-form-builder' ),
438 ),
439 'conditional_action' => array(
440 'label' => __( 'With many conditions for the action, they are checked with the AND operator', 'jet-form-builder' ),
441 ),
442 'conditional_action_or' => array(
443 'label' => __( 'With many conditions for the action, they are checked with the OR operator', 'jet-form-builder' ),
444 ),
445 );
446 }
447
448 public function enqueue_form_assets() {
449
450 $handle = 'jet-form-builder/form';
451
452 do_action( 'jet-form-builder/other-editor-assets/before', $this, $handle );
453
454 // todo: refactor with new way of assets loading
455 wp_register_script(
456 $handle,
457 Plugin::instance()->plugin_url( 'assets/build/editor/default.builder.js' ),
458 array(
459 'wp-core-data',
460 'wp-data',
461 'wp-block-library',
462 'wp-format-library',
463 'wp-api-fetch',
464 ),
465 JET_FORM_BUILDER_VERSION,
466 true
467 );
468
469 wp_register_style(
470 'jet-form-builder-others',
471 Plugin::instance()->plugin_url( 'assets/build/frontend/main.css' ),
472 array(),
473 Plugin::instance()->get_version()
474 );
475
476 do_action( 'jet-form-builder/other-editor-assets/after', $this, $handle );
477 }
478
479 }
480