PluginProbe
JetFormBuilder — Dynamic Blocks Form Builder / 1.2.3
JetFormBuilder — Dynamic Blocks Form Builder v1.2.3
3.6.5.2 3.6.5.1 3.6.5 3.6.4.2 3.6.4.1 3.6.4 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 All 130 releases
← All changes | includes/admin/editor.php +498 -564 trunk1.2.3 View file →
@@ -1,564 +1,498 @@
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 - array(
91 - 'value' => 'term',
92 - 'label' => __( 'Term', 'jet-form-builder' ),
93 - ),
94 - )
95 - ),
96 - ),
97 - array(
98 - 'name' => 'post_from',
99 - 'label' => __( 'Get post ID from:', 'jet-form-builder' ),
100 - 'type' => 'select',
101 - 'options' => Tools::with_placeholder(
102 - array(
103 - array(
104 - 'value' => 'current_post',
105 - 'label' => __( 'Current post', 'jet-form-builder' ),
106 - ),
107 - array(
108 - 'value' => 'query_var',
109 - 'label' => __( 'URL Query Variable', 'jet-form-builder' ),
110 - ),
111 - )
112 - ),
113 - 'condition' => array(
114 - 'field' => 'from',
115 - 'value' => 'post',
116 - ),
117 - ),
118 - array(
119 - 'name' => 'user_from',
120 - 'label' => __( 'Get user ID from:', 'jet-form-builder' ),
121 - 'type' => 'select',
122 - 'options' => Tools::with_placeholder(
123 - array(
124 - array(
125 - 'value' => 'current_user',
126 - 'label' => __( 'Current user', 'jet-form-builder' ),
127 - ),
128 - array(
129 - 'value' => 'queried_user',
130 - 'label' => __( 'Queried user', 'jet-form-builder' ),
131 - ),
132 - array(
133 - 'value' => 'query_var',
134 - 'label' => __( 'URL Query Variable', 'jet-form-builder' ),
135 - ),
136 - )
137 - ),
138 - 'condition' => array(
139 - 'field' => 'from',
140 - 'value' => 'user',
141 - ),
142 - ),
143 - array(
144 - 'name' => 'term_from',
145 - 'label' => __( 'Get term from:', 'jet-form-builder' ),
146 - 'type' => 'select',
147 - 'options' => Tools::with_placeholder(
148 - array(
149 - array(
150 - 'value' => 'current_term',
151 - 'label' => __( 'Current term', 'jet-form-builder' ),
152 - ),
153 - array(
154 - 'value' => 'query_var',
155 - 'label' => __( 'URL Query Variable', 'jet-form-builder' ),
156 - ),
157 - )
158 - ),
159 - 'condition' => array(
160 - 'field' => 'from',
161 - 'value' => 'term',
162 - ),
163 - ),
164 - array(
165 - 'name' => 'term_taxonomy',
166 - 'label' => __( 'Term taxonomy', 'jet-form-builder' ),
167 - 'type' => 'select',
168 - 'options' => Tools::with_placeholder( $this->get_taxonomies_list() ),
169 - 'parent_condition' => array(
170 - 'field' => 'from',
171 - 'value' => 'term',
172 - ),
173 - 'condition' => array(
174 - 'field' => 'term_from',
175 - 'value' => 'query_var',
176 - ),
177 - ),
178 - array(
179 - 'name' => 'query_var',
180 - 'label' => __( 'Query variable name:', 'jet-form-builder' ),
181 - 'type' => 'text',
182 - 'custom_condition' => 'query_var',
183 - 'position' => 'dynamic',
184 - ),
185 - ),
186 - 'map_fields' => array(
187 - array(
188 - 'name' => 'key',
189 - 'label' => __( 'Query variable key', 'jet-form-builder' ),
190 - 'type' => 'text',
191 - 'position' => 'general',
192 - 'parent_condition' => array(
193 - 'field' => 'from',
194 - 'value' => 'query_var',
195 - ),
196 - ),
197 - array(
198 - 'name' => 'prop',
199 - 'label' => __( 'Post property', 'jet-form-builder' ),
200 - 'type' => 'select',
201 - 'options' => Tools::with_placeholder(
202 - array(
203 - array(
204 - 'value' => 'ID',
205 - 'label' => __( 'Post ID', 'jet-form-builder' ),
206 - ),
207 - array(
208 - 'value' => 'post_title',
209 - 'label' => __( 'Post Title', 'jet-form-builder' ),
210 - ),
211 - array(
212 - 'value' => 'post_content',
213 - 'label' => __( 'Post Content', 'jet-form-builder' ),
214 - ),
215 - array(
216 - 'value' => 'post_status',
217 - 'label' => __( 'Post Status', 'jet-form-builder' ),
218 - ),
219 - array(
220 - 'value' => 'post_author',
221 - 'label' => __( 'Post Author', 'jet-form-builder' ),
222 - ),
223 - array(
224 - 'value' => 'post_excerpt',
225 - 'label' => __( 'Post Excerpt', 'jet-form-builder' ),
226 - ),
227 - array(
228 - 'value' => 'post_date',
229 - 'label' => __( 'Post Date', 'jet-form-builder' ),
230 - ),
231 - array(
232 - 'value' => 'post_date_gmt',
233 - 'label' => __( 'Post Date GMT', 'jet-form-builder' ),
234 - ),
235 - array(
236 - 'value' => 'post_thumb',
237 - 'label' => __( 'Post Thumbnail', 'jet-form-builder' ),
238 - ),
239 - array(
240 - 'value' => 'post_meta',
241 - 'label' => __( 'Post Meta', 'jet-form-builder' ),
242 - ),
243 - array(
244 - 'value' => 'post_terms',
245 - 'label' => __( 'Post Terms', 'jet-form-builder' ),
246 - ),
247 - )
248 - ),
249 - 'parent_condition' => array(
250 - 'field' => 'from',
251 - 'value' => 'post',
252 - ),
253 - ),
254 - array(
255 - 'name' => 'key',
256 - 'label' => __( 'Taxonomy', 'jet-form-builder' ),
257 - 'type' => 'select',
258 - 'options' => Tools::with_placeholder( $this->get_taxonomies_list() ),
259 - 'parent_condition' => array(
260 - 'field' => 'from',
261 - 'value' => 'post',
262 - ),
263 - 'condition' => array(
264 - 'field' => 'prop',
265 - 'value' => 'post_terms',
266 - ),
267 - ),
268 - array(
269 - 'name' => 'key',
270 - 'label' => __( 'Meta field key', 'jet-form-builder' ),
271 - 'type' => 'text',
272 - 'parent_condition' => array(
273 - 'field' => 'from',
274 - 'value' => 'post',
275 - ),
276 - 'condition' => array(
277 - 'field' => 'prop',
278 - 'value' => 'post_meta',
279 - ),
280 - ),
281 - array(
282 - 'name' => 'prop',
283 - 'label' => __( 'User field', 'jet-form-builder' ),
284 - 'type' => 'select',
285 - 'options' => Tools::with_placeholder(
286 - array(
287 - array(
288 - 'value' => 'ID',
289 - 'label' => __( 'User ID', 'jet-form-builder' ),
290 - ),
291 - array(
292 - 'value' => 'user_login',
293 - 'label' => __( 'User Login', 'jet-form-builder' ),
294 - ),
295 - array(
296 - 'value' => 'user_email',
297 - 'label' => __( 'Email', 'jet-form-builder' ),
298 - ),
299 - array(
300 - 'value' => 'password',
301 - 'label' => __( 'Password', 'jet-form-builder' ),
302 - ),
303 - array(
304 - 'value' => 'first_name',
305 - 'label' => __( 'First Name', 'jet-form-builder' ),
306 - ),
307 - array(
308 - 'value' => 'last_name',
309 - 'label' => __( 'Last Name', 'jet-form-builder' ),
310 - ),
311 - array(
312 - 'value' => 'display_name',
313 - 'label' => __( 'Display Name', 'jet-form-builder' ),
314 - ),
315 - array(
316 - 'value' => 'user_url',
317 - 'label' => __( 'User URL', 'jet-form-builder' ),
318 - ),
319 - array(
320 - 'value' => 'user_meta',
321 - 'label' => __( 'User Meta', 'jet-form-builder' ),
322 - ),
323 - )
324 - ),
325 - 'parent_condition' => array(
326 - 'field' => 'from',
327 - 'value' => 'user',
328 - ),
329 - ),
330 - array(
331 - 'name' => 'key',
332 - 'label' => __( 'Meta field key', 'jet-form-builder' ),
333 - 'type' => 'text',
334 - 'parent_condition' => array(
335 - 'field' => 'from',
336 - 'value' => 'user',
337 - ),
338 - 'condition' => array(
339 - 'field' => 'prop',
340 - 'value' => 'user_meta',
341 - ),
342 - ),
343 - array(
344 - 'name' => 'prop',
345 - 'label' => __( 'Term property', 'jet-form-builder' ),
346 - 'type' => 'select',
347 - 'options' => Tools::with_placeholder(
348 - array(
349 - array(
350 - 'value' => 'term_id',
351 - 'label' => __( 'Term ID', 'jet-form-builder' ),
352 - ),
353 - array(
354 - 'value' => 'name',
355 - 'label' => __( 'Name', 'jet-form-builder' ),
356 - ),
357 - array(
358 - 'value' => 'slug',
359 - 'label' => __( 'Slug', 'jet-form-builder' ),
360 - ),
361 - array(
362 - 'value' => 'parent',
363 - 'label' => __( 'Parent', 'jet-form-builder' ),
364 - ),
365 - array(
366 - 'value' => 'term_meta',
367 - 'label' => __( 'Term Meta', 'jet-form-builder' ),
368 - ),
369 - )
370 - ),
371 - 'parent_condition' => array(
372 - 'field' => 'from',
373 - 'value' => 'term',
374 - ),
375 - ),
376 - array(
377 - 'name' => 'key',
378 - 'label' => __( 'Meta field key', 'jet-form-builder' ),
379 - 'type' => 'text',
380 - 'parent_condition' => array(
381 - 'field' => 'from',
382 - 'value' => 'term',
383 - ),
384 - 'condition' => array(
385 - 'field' => 'prop',
386 - 'value' => 'term_meta',
387 - ),
388 - ),
389 - ),
390 - )
391 - );
392 - }
393 -
394 - /**
395 - * Enqueue editor assets
396 - *
397 - * @return void
398 - * @throws Repository_Exception
399 - */
400 - public function enqueue_assets() {
401 - $script_asset = require_once jet_form_builder()->plugin_dir( 'assets/build/editor/package.asset.php' );
402 -
403 - if ( true === $script_asset ) {
404 - return;
405 - }
406 -
407 - do_action( 'jet-form-builder/editor-package/before', $this, self::EDITOR_PACKAGE_HANDLE );
408 -
409 - array_push(
410 - $script_asset['dependencies'],
411 - 'jet-fb-components',
412 - 'jet-fb-data',
413 - 'jet-fb-actions-v2',
414 - 'jet-fb-blocks-v2-to-actions-v2'
415 - );
416 - wp_enqueue_style( 'jet-fb-components' );
417 -
418 - wp_enqueue_script(
419 - self::EDITOR_PACKAGE_HANDLE,
420 - Plugin::instance()->plugin_url( 'assets/build/editor/package.js' ),
421 - $script_asset['dependencies'],
422 - $script_asset['version'],
423 - true
424 - );
425 -
426 - wp_localize_script(
427 - self::EDITOR_PACKAGE_HANDLE,
428 - 'jetFormEvents',
429 - jet_fb_events()->to_array()
430 - );
431 -
432 - wp_localize_script(
433 - self::EDITOR_PACKAGE_HANDLE,
434 - 'jetFormBlockConditions',
435 - Block_Condition_Manager::instance()->to_array()
436 - );
437 -
438 - wp_set_script_translations(
439 - self::EDITOR_PACKAGE_HANDLE,
440 - 'jet-form-builder',
441 - Plugin::instance()->plugin_dir( 'languages' )
442 - );
443 -
444 - $script_asset = require_once jet_form_builder()->plugin_dir( 'assets/build/editor/form.builder.asset.php' );
445 -
446 - do_action( 'jet-form-builder/editor-assets/before', $this, self::EDITOR_HANDLE );
447 -
448 - wp_enqueue_script(
449 - self::EDITOR_HANDLE,
450 - Plugin::instance()->plugin_url( 'assets/build/editor/form.builder.js' ),
451 - $script_asset['dependencies'],
452 - $script_asset['version'],
453 - true
454 - );
455 -
456 - wp_enqueue_style(
457 - self::EDITOR_HANDLE,
458 - Plugin::instance()->plugin_url( 'assets/build/editor/form.builder.css' ),
459 - array(
460 - 'media',
461 - 'l10n',
462 - 'buttons',
463 - 'wp-edit-blocks',
464 - 'wp-editor',
465 - ),
466 - $script_asset['version']
467 - );
468 -
469 - $conditions_settings = ( new Action_Condition_Manager() )->get_settings();
470 - $exclude_events = array(
471 - 'redirect_to_page' => array( 'WC.ORDER.COMPLETE', 'WC.CHECKOUT.COMPLETE' ),
472 - );
473 -
474 - /** @var Module $post_type */
475 - /** @noinspection PhpUnhandledExceptionInspection */
476 - $post_type = jet_form_builder()->module( 'post-type' );
477 -
478 - $utm = new Utm_Url( 'plugin' );
479 - $utm->set_medium( 'editor' );
480 - $utm->set_content( $utm->get_license_and_theme() );
481 -
482 - $addons = JET_FORM_BUILDER_SITE . '/addons/';
483 - $pricing = JET_FORM_BUILDER_SITE . '/pricing/';
484 -
485 - wp_localize_script(
486 - self::EDITOR_PACKAGE_HANDLE,
487 - 'JetFormEditorData',
488 - apply_filters(
489 - 'jet-form-builder/editor/config',
490 - array(
491 - 'presetConfig' => $this->get_preset_config(),
492 - 'messagesDefault' => $post_type->get_messages(),
493 - 'helpForRepeaters' => $this->get_help_for_repeaters(),
494 - 'global_settings' => Tab_Handler_Manager::instance()->all(),
495 - 'global_settings_url' => Pages_Manager::instance()->get_stable_url( 'jfb-settings' ),
496 - 'jetEngineVersion' => Tools::get_jet_engine_version(),
497 - 'actionConditionSettings' => $conditions_settings,
498 - 'actionConditionExcludeEvents' => $exclude_events,
499 - 'argumentsSource' => Form_Arguments::get_options(),
500 - 'utmLinks' => array(
501 - 'allProActions' => $utm->set_campaign( 'jetform-settings/pro-actions' )->add_query( $addons ),
502 - 'limitResponses' => $utm->set_campaign( 'jetform-settings/limit-form-responses' )->add_query( $pricing ),
503 - 'scheduleForm' => $utm->set_campaign( 'jetform-settings/schedule-forms' )->add_query( $pricing ),
504 - 'userLoginPattern' => $utm->set_campaign( 'welcome-block/user-login' )->add_query( $addons . 'user-login/' ),
505 - 'resetPassPattern' => $utm->set_campaign( 'welcome-block/reset-password' )->add_query( $addons . 'user-login/' ),
506 - ),
507 - 'isActivePro' => jet_form_builder()->addons_manager->is_active(),
508 - 'assetsUrl' => jet_form_builder()->plugin_url( 'assets/' ),
509 - )
510 - )
511 - );
512 -
513 - do_action( 'jet-form-builder/editor-assets/after', $this, self::EDITOR_HANDLE );
514 - }
515 -
516 - private function get_help_for_repeaters() {
517 - return array(
518 - 'conditional_block' => array(
519 - 'label' => __( 'With many conditions for the block, they are checked with the AND operator', 'jet-form-builder' ),
520 - ),
521 - 'conditional_block_or' => array(
522 - 'label' => __( 'With many conditions for the block, they are checked with the OR operator', 'jet-form-builder' ),
523 - ),
524 - 'conditional_action' => array(
525 - 'label' => __( 'With many conditions for the action, they are checked with the AND operator', 'jet-form-builder' ),
526 - ),
527 - 'conditional_action_or' => array(
528 - 'label' => __( 'With many conditions for the action, they are checked with the OR operator', 'jet-form-builder' ),
529 - ),
530 - );
531 - }
532 -
533 - public function enqueue_form_assets() {
534 -
535 - $handle = 'jet-form-builder/form';
536 -
537 - do_action( 'jet-form-builder/other-editor-assets/before', $this, $handle );
538 -
539 - // todo: refactor with new way of assets loading
540 - wp_register_script(
541 - $handle,
542 - Plugin::instance()->plugin_url( 'assets/build/editor/default.builder.js' ),
543 - array(
544 - 'wp-core-data',
545 - 'wp-data',
546 - 'wp-block-library',
547 - 'wp-format-library',
548 - 'wp-api-fetch',
549 - ),
550 - JET_FORM_BUILDER_VERSION,
551 - true
552 - );
553 -
554 - wp_register_style(
555 - 'jet-form-builder-others',
556 - Plugin::instance()->plugin_url( 'assets/build/frontend/main.css' ),
557 - array(),
558 - Plugin::instance()->get_version()
559 - );
560 -
561 - do_action( 'jet-form-builder/other-editor-assets/after', $this, $handle );
562 - }
563 -
564 -}
1 +<?php
2 +
3 +namespace Jet_Form_Builder\Admin;
4 +
5 +use Jet_Form_Builder\Admin\Tabs_Handlers\Tab_Handler_Manager;
6 +use Jet_Form_Builder\Classes\Tools;
7 +use Jet_Form_Builder\Gateways\Gateway_Manager;
8 +use Jet_Form_Builder\Plugin;
9 +
10 +/**
11 + * Form editor class
12 + * Thanks Tom J Nowell for initial editor idea and inspiration!
13 + */
14 +
15 +// If this file is called directly, abort.
16 +if ( ! defined( 'WPINC' ) ) {
17 + die;
18 +}
19 +
20 +/**
21 + * Define Editor class
22 + */
23 +class Editor {
24 +
25 + const EDITOR_HANDLE = 'jet-form-builder-editor';
26 + const EDITOR_PACKAGE_HANDLE = 'jet-form-builder-editor-package';
27 +
28 + public static $index = 0;
29 +
30 + public $allowed_blocks = null;
31 + public $action = null;
32 + public $item_id = null;
33 +
34 + /**
35 + * Set up editor instatnce props
36 + *
37 + * @param array $config [description]
38 + */
39 + public function __construct( $config = array() ) {
40 +
41 + if ( ! empty( $config['allowed_blocks'] ) ) {
42 + $this->allowed_blocks = $config['allowed_blocks'];
43 + }
44 +
45 + if ( ! empty( $config['action'] ) ) {
46 + $this->action = $config['action'];
47 + }
48 +
49 + if ( ! empty( $config['item_id'] ) ) {
50 + $this->item_id = $config['item_id'];
51 + }
52 +
53 + }
54 +
55 + /**
56 + * Returns action URL
57 + *
58 + * @return [type] [description]
59 + */
60 + public function get_action() {
61 +
62 + if ( null === $this->action ) {
63 + $this->action = apply_filters( 'jet-form-builder/editor/action', null );
64 + }
65 +
66 + return $this->action;
67 +
68 + }
69 +
70 + /**
71 + * Returns current item ID
72 + *
73 + * @return [type] [description]
74 + */
75 + public function get_item_id() {
76 + return $this->item_id;
77 + }
78 +
79 + /**
80 + * Retuns allowed blocks list
81 + *
82 + * @return array
83 + */
84 + public function get_allowed_blocks() {
85 +
86 + if ( empty( $this->allowed_blocks ) ) {
87 +
88 + $this->allowed_blocks = apply_filters( 'jet-form-builder/editor/allowed-blocks', array(
89 + 'core/paragraph',
90 + 'core/image',
91 + 'core/heading',
92 + 'core/verse',
93 + 'core/freeform',
94 + 'core/spacer',
95 + 'core/subhead',
96 + 'core/pullquote',
97 + 'core/preformatted',
98 + 'core/shortcode',
99 + 'core/code',
100 + 'core/quote',
101 + 'core/list',
102 + 'core/heading',
103 + 'core/separator',
104 + 'core/text-columns',
105 + 'core/embed',
106 + 'core-embed/youtube',
107 + 'core-embed/twitter',
108 + 'core-embed/vimeo',
109 + 'core/columns',
110 + 'core/column',
111 + ) );
112 +
113 + }
114 +
115 + return $this->allowed_blocks;
116 + }
117 +
118 + /**
119 + * Returns taxonomies list for the config
120 + * @return [type] [description]
121 + */
122 + public function get_taxonomies_list() {
123 +
124 + $taxonomies = get_taxonomies( array(), 'objects' );
125 +
126 + $result = array();
127 +
128 + foreach ( $taxonomies as $tax ) {
129 + $result[] = array(
130 + 'value' => $tax->name,
131 + 'label' => sprintf( '%1$s (%2$s)', $tax->label, $tax->name ),
132 + );
133 + }
134 +
135 + return $result;
136 +
137 + }
138 +
139 + public function get_preset_config() {
140 + return apply_filters( 'jet-form-builder/editor/preset-config', array(
141 + 'global_fields' => array(
142 + array(
143 + 'name' => 'from',
144 + 'label' => __( 'Source:', 'jet-form-builder' ),
145 + 'type' => 'select',
146 + 'options' => Tools::with_placeholder( array(
147 + array(
148 + 'value' => 'post',
149 + 'label' => __( 'Post', 'jet-form-builder' ),
150 + ),
151 + array(
152 + 'value' => 'user',
153 + 'label' => __( 'User', 'jet-form-builder' ),
154 + ),
155 + array(
156 + 'value' => 'query_var',
157 + 'label' => __( 'URL Query Variable', 'jet-form-builder' ),
158 + ),
159 + ) ),
160 + ),
161 + array(
162 + 'name' => 'post_from',
163 + 'label' => __( 'Get post ID from:', 'jet-form-builder' ),
164 + 'type' => 'select',
165 + 'options' => Tools::with_placeholder( array(
166 + array(
167 + 'value' => 'current_post',
168 + 'label' => __( 'Current post', 'jet-form-builder' ),
169 + ),
170 + array(
171 + 'value' => 'query_var',
172 + 'label' => __( 'URL Query Variable', 'jet-form-builder' ),
173 + ),
174 + ) ),
175 + 'condition' => array(
176 + 'field' => 'from',
177 + 'value' => 'post',
178 + ),
179 + ),
180 + array(
181 + 'name' => 'user_from',
182 + 'label' => __( 'Get user ID from:', 'jet-form-builder' ),
183 + 'type' => 'select',
184 + 'options' => Tools::with_placeholder( array(
185 + array(
186 + 'value' => 'current_user',
187 + 'label' => __( 'Current user', 'jet-form-builder' ),
188 + ),
189 + array(
190 + 'value' => 'query_var',
191 + 'label' => __( 'URL Query Variable', 'jet-form-builder' ),
192 + ),
193 + ) ),
194 + 'condition' => array(
195 + 'field' => 'from',
196 + 'value' => 'user',
197 + ),
198 + ),
199 + array(
200 + 'name' => 'query_var',
201 + 'label' => __( 'Query variable name:', 'jet-form-builder' ),
202 + 'type' => 'text',
203 + 'custom_condition' => 'query_var',
204 + 'position' => 'dynamic'
205 + )
206 + ),
207 + 'map_fields' => array(
208 + array(
209 + 'name' => 'key',
210 + 'label' => __( 'Query variable key', 'jet-form-builder' ),
211 + 'type' => 'text',
212 + 'position' => 'general',
213 + 'parent_condition' => array(
214 + 'field' => 'from',
215 + 'value' => 'query_var'
216 + ),
217 + ),
218 + array(
219 + 'name' => 'prop',
220 + 'label' => __( 'Post property', 'jet-form-builder' ),
221 + 'type' => 'select',
222 + 'options' => Tools::with_placeholder( array(
223 + array(
224 + 'value' => 'ID',
225 + 'label' => __( 'Post ID', 'jet-form-builder' ),
226 + ),
227 + array(
228 + 'value' => 'post_title',
229 + 'label' => __( 'Post Title', 'jet-form-builder' ),
230 + ),
231 + array(
232 + 'value' => 'post_content',
233 + 'label' => __( 'Post Content', 'jet-form-builder' ),
234 + ),
235 + array(
236 + 'value' => 'post_excerpt',
237 + 'label' => __( 'Post Excerpt', 'jet-form-builder' ),
238 + ),
239 + array(
240 + 'value' => 'post_date',
241 + 'label' => __( 'Post Date', 'jet-form-builder' )
242 + ),
243 + array(
244 + 'value' => 'post_date_gmt',
245 + 'label' => __( 'Post Date GMT', 'jet-form-builder' )
246 + ),
247 + array(
248 + 'value' => 'post_thumb',
249 + 'label' => __( 'Post Thumbnail', 'jet-form-builder' ),
250 + ),
251 + array(
252 + 'value' => 'post_meta',
253 + 'label' => __( 'Post Meta', 'jet-form-builder' ),
254 + ),
255 + array(
256 + 'value' => 'post_terms',
257 + 'label' => __( 'Post Terms', 'jet-form-builder' ),
258 + ),
259 + ) ),
260 + 'parent_condition' => array(
261 + 'field' => 'from',
262 + 'value' => 'post'
263 + ),
264 + ),
265 + array(
266 + 'name' => 'key',
267 + 'label' => __( 'Taxonomy', 'jet-form-builder' ),
268 + 'type' => 'select',
269 + 'options' => Tools::with_placeholder( $this->get_taxonomies_list() ),
270 + 'parent_condition' => array(
271 + 'field' => 'from',
272 + 'value' => 'post'
273 + ),
274 + 'condition' => array(
275 + 'field' => 'prop',
276 + 'value' => 'post_terms'
277 + ),
278 + ),
279 + array(
280 + 'name' => 'key',
281 + 'label' => __( 'Meta field key', 'jet-form-builder' ),
282 + 'type' => 'text',
283 + 'parent_condition' => array(
284 + 'field' => 'from',
285 + 'value' => 'post'
286 + ),
287 + 'condition' => array(
288 + 'field' => 'prop',
289 + 'value' => 'post_meta'
290 + ),
291 + ),
292 + array(
293 + 'name' => 'prop',
294 + 'label' => __( 'User field', 'jet-form-builder' ),
295 + 'type' => 'select',
296 + 'options' => Tools::with_placeholder( array(
297 + array(
298 + 'value' => 'ID',
299 + 'label' => __( 'User ID', 'jet-form-builder' ),
300 + ),
301 + array(
302 + 'value' => 'user_login',
303 + 'label' => __( 'User Login', 'jet-form-builder' ),
304 + ),
305 + array(
306 + 'value' => 'user_email',
307 + 'label' => __( 'Email', 'jet-form-builder' ),
308 + ),
309 + array(
310 + 'value' => 'password',
311 + 'label' => __( 'Password', 'jet-form-builder' ),
312 + ),
313 + array(
314 + 'value' => 'first_name',
315 + 'label' => __( 'First Name', 'jet-form-builder' ),
316 + ),
317 + array(
318 + 'value' => 'last_name',
319 + 'label' => __( 'Last Name', 'jet-form-builder' ),
320 + ),
321 + array(
322 + 'value' => 'user_url',
323 + 'label' => __( 'User URL', 'jet-form-builder' ),
324 + ),
325 + array(
326 + 'value' => 'user_meta',
327 + 'label' => __( 'User Meta', 'jet-form-builder' ),
328 + ),
329 + ) ),
330 + 'parent_condition' => array(
331 + 'field' => 'from',
332 + 'value' => 'user'
333 + ),
334 + ),
335 + array(
336 + 'name' => 'key',
337 + 'label' => __( 'Meta field key', 'jet-form-builder' ),
338 + 'type' => 'text',
339 + 'parent_condition' => array(
340 + 'field' => 'from',
341 + 'value' => 'user'
342 + ),
343 + 'condition' => array(
344 + 'field' => 'prop',
345 + 'value' => 'user_meta'
346 + ),
347 + ),
348 + ),
349 + ) );
350 + }
351 +
352 + public function get_messages_default() {
353 + return Plugin::instance()->post_type->get_messages_default();
354 + }
355 +
356 + /**
357 + * Enqueue editor assets
358 + *
359 + * @return void
360 + */
361 + public function enqueue_assets() {
362 + do_action( 'jet-form-builder/editor-package/before', $this, self::EDITOR_PACKAGE_HANDLE );
363 +
364 + wp_enqueue_script(
365 + self::EDITOR_PACKAGE_HANDLE,
366 + JET_FORM_BUILDER_URL . 'assets/js/package.js',
367 + array(
368 + 'wp-editor',
369 + 'wp-core-data',
370 + 'wp-data',
371 + 'wp-block-library',
372 + 'wp-format-library',
373 + 'wp-api-fetch',
374 + ),
375 + JET_FORM_BUILDER_VERSION,
376 + true
377 + );
378 +
379 + do_action( 'jet-form-builder/editor-assets/before', $this, self::EDITOR_HANDLE );
380 +
381 + wp_enqueue_script(
382 + self::EDITOR_HANDLE,
383 + JET_FORM_BUILDER_URL . 'assets/js/editor.js',
384 + array(),
385 + JET_FORM_BUILDER_VERSION,
386 + true
387 + );
388 +
389 + wp_enqueue_style(
390 + self::EDITOR_HANDLE,
391 + JET_FORM_BUILDER_URL . 'assets/css/editor.css',
392 + array(
393 + 'media',
394 + 'l10n',
395 + 'buttons',
396 + 'wp-edit-blocks',
397 + 'wp-editor',
398 + ),
399 + JET_FORM_BUILDER_VERSION,
400 + 'all'
401 + );
402 +
403 + wp_localize_script(
404 + self::EDITOR_PACKAGE_HANDLE,
405 + 'JetFormEditorData',
406 + array(
407 + 'allowedBlocks' => $this->get_allowed_blocks(),
408 + 'action' => $this->get_action(),
409 + 'itemID' => $this->get_item_id(),
410 + 'presetConfig' => $this->get_preset_config(),
411 + 'messagesDefault' => $this->get_messages_default(),
412 + 'gateways' => Gateway_Manager::instance()->editor_data(),
413 + 'helpForRepeaters' => $this->get_help_for_repeaters(),
414 + 'global_settings' => Tab_Handler_Manager::instance()->all()
415 + )
416 + );
417 +
418 + do_action( 'jet-form-builder/editor-assets/after', $this, self::EDITOR_HANDLE );
419 + }
420 +
421 + private function get_help_for_repeaters() {
422 + return array(
423 + 'conditional_block' => array(
424 + 'label' => __( 'With many conditions for the block, they are checked with the AND operator', 'jet-form-builder' )
425 + ),
426 + 'conditional_action' => array(
427 + 'label' => __( 'With many conditions for the action, they are checked with the AND operator', 'jet-form-builder' )
428 + ),
429 + );
430 + }
431 +
432 + public function enqueue_form_assets() {
433 +
434 + $handle = 'jet-form-builder/form';
435 +
436 + do_action( 'jet-form-builder/other-editor-assets/before', $this, $handle );
437 +
438 + wp_enqueue_script(
439 + $handle,
440 + JET_FORM_BUILDER_URL . 'assets/js/form-block.js',
441 + array(
442 + 'wp-editor',
443 + 'wp-core-data',
444 + 'wp-data',
445 + 'wp-block-library',
446 + 'wp-format-library',
447 + 'wp-api-fetch',
448 + ),
449 + JET_FORM_BUILDER_VERSION,
450 + true
451 + );
452 +
453 + wp_enqueue_style(
454 + 'jet-form-builder-others',
455 + Plugin::instance()->plugin_url( 'assets/css/frontend.css' ),
456 + array(),
457 + Plugin::instance()->get_version()
458 + );
459 +
460 + wp_localize_script( $handle, 'JetFormEditorData', array(
461 + 'allowedBlocks' => $this->get_allowed_blocks(),
462 + 'action' => $this->get_action(),
463 + 'itemID' => $this->get_item_id(),
464 + 'presetConfig' => $this->get_preset_config(),
465 + ) );
466 +
467 + do_action( 'jet-form-builder/other-editor-assets/after', $this, $handle );
468 +
469 + }
470 +
471 + /**
472 + * Render new editor instance
473 + *
474 + * @return [type] [description]
475 + */
476 + public function render( $input_name = '', $content = '', $form_name = '' ) {
477 +
478 + if ( ! $input_name ) {
479 + $input_name = 'jet_form_editor_' . self::$index;
480 + self::$index ++;
481 + }
482 +
483 + ?>
484 + <input name="<?php echo esc_attr( $input_name ); ?>" id="<?php echo esc_attr( $input_name ); ?>" type="hidden"/>
485 + <script>
486 + document.addEventListener( 'jet-form-builder-initialized', function ( event ) {
487 + window.JetFormEditor(
488 + '<?php echo esc_js( $input_name ); ?>',
489 + '<?php echo esc_js( $input_name ); ?>',
490 + '<?php echo html_entity_decode( esc_js( $content ) ); ?>',
491 + '<?php echo esc_js( $form_name ); ?>'
492 + );
493 + } );
494 + </script>
495 + <?php
496 + }
497 +
498 +}