PluginProbe
JetFormBuilder — Dynamic Blocks Form Builder / 3.0.5
JetFormBuilder — Dynamic Blocks Form Builder v3.0.5
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
jetformbuilder / includes / blocks / dynamic-value.php

dynamic-value.php in JetFormBuilder — Dynamic Blocks Form Builder 3.0.5, at includes/blocks/dynamic-value.php

97 lines 2.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3
4 namespace Jet_Form_Builder\Blocks;
5
6
7 use Jet_Form_Builder\Blocks\Types\Base;
8 use Jet_Form_Builder\Blocks\Types\Conditional_Block;
9 use Jet_Form_Builder\Classes\Tools;
10 use Jet_Form_Builder\Plugin;
11
12 use \Jet_Form_Builder\Blocks\Render\Base as RenderBase;
13
14
15 class Dynamic_Value {
16
17 const HANDLE = 'jet-fb-dynamic-value';
18
19 public function __construct() {
20 add_action(
21 'jet-form-builder/before-start-form-row',
22 array( $this, 'add_dynamic_value_block' )
23 );
24 add_filter(
25 'jet-form-builder/render/hidden-field',
26 array( $this, 'on_render_hidden_field' ),
27 10, 2
28 );
29 add_action(
30 'wp_enqueue_scripts',
31 array( $this, 'register_scripts' )
32 );
33 add_action(
34 'jet_plugins/frontend/register_scripts',
35 array( $this, 'register_scripts' )
36 );
37 }
38
39 public function register_scripts() {
40 wp_register_script(
41 self::HANDLE,
42 Plugin::instance()->plugin_url( 'assets/js/frontend/dynamic.value{min}.js' ),
43 array(
44 Conditional_Block::HANDLE,
45 ),
46 Plugin::instance()->get_version(),
47 true
48 );
49 }
50
51 public function add_dynamic_value_block( Base $block ) {
52 $groups = $this->get_groups_json( $block );
53
54 if ( ! $groups ) {
55 return;
56 }
57
58 $block->add_attribute( 'data-value', Tools::esc_attr( $groups ) );
59 }
60
61 public function on_render_hidden_field( array $args, RenderBase $block ): array {
62 $groups = $this->get_groups_json( $block->block_type );
63
64 if ( ! $groups ) {
65 return $args;
66 }
67
68 $block->add_attribute( 'data-dynamic-value', Tools::esc_attr( $groups ) );
69
70 return $args;
71 }
72
73 protected function get_groups_json( Base $block ): string {
74 $groups = $block->block_attrs['value']['groups'] ?? array();
75
76 if ( ! count( $groups ) ) {
77 return '';
78 }
79
80 wp_enqueue_script( self::HANDLE );
81
82 foreach ( $groups as &$group ) {
83 $group['to_set'] = jet_fb_parse_dynamic( $group['to_set'] ?? '' );
84
85 if ( ! isset( $group['conditions'] ) ) {
86 continue;
87 }
88
89 foreach ( $group['conditions'] as &$condition ) {
90 $condition['value'] = jet_fb_parse_dynamic( $condition['value'] ?? '' );
91 }
92 }
93
94 return Tools::encode_json( $groups );
95 }
96
97 }