PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 3.0.8
JetFormBuilder — Dynamic Blocks Form Builder v3.0.8
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 / blocks / render / repeater-field-render.php
jetformbuilder / includes / blocks / render Last commit date
action-button-render.php 3 years ago base-select-radio-check.php 3 years ago base.php 3 years ago calculated-field-render.php 3 years ago checkbox-field-render.php 3 years ago date-field-render.php 3 years ago datetime-field-render.php 3 years ago form-builder.php 3 years ago form-hidden-fields.php 3 years ago group-break-field-render.php 3 years ago heading-field-render.php 3 years ago media-field-render.php 3 years ago number-field-render.php 3 years ago radio-field-render.php 3 years ago range-field-render.php 3 years ago repeater-field-render.php 3 years ago select-field-render.php 3 years ago text-field-render.php 3 years ago textarea-field-render.php 3 years ago time-field-render.php 3 years ago wysiwyg-field-render.php 3 years ago
repeater-field-render.php
143 lines
1 <?php
2
3 namespace Jet_Form_Builder\Blocks\Render;
4
5 // If this file is called directly, abort.
6 use Jet_Form_Builder\Blocks\Block_Helper;
7
8 if ( ! defined( 'WPINC' ) ) {
9 die;
10 }
11
12 /**
13 * Define text field renderer class
14 */
15 class Repeater_Field_Render extends Base {
16
17 public $current_repeater_i = false;
18 public $current_repeater;
19
20 public function get_name() {
21 return 'repeater-field';
22 }
23
24 public function render( $wp_block = null, $template = null ) {
25 if ( empty( $wp_block['innerBlocks'] ) ) {
26 return '';
27 }
28
29 $this->add_attribute( 'class', 'jet-form-builder-repeater jet-form-builder__field' );
30 $this->add_attribute( 'class', $this->maybe_get_error_class( $this->block_type->block_attrs ) );
31 $this->add_attribute( 'class', $this->block_type->block_attrs['class_name'] );
32 $this->add_attribute( 'data-required', $this->block_type->get_required_val() );
33 $this->add_attribute( 'data-jfb-sync' );
34
35 $template = sprintf(
36 '<template class="jet-form-builder-repeater__initial">%1$s</template>',
37 $this->with_repeater_row_wrapper( $this->block_type->block_content )
38 );
39
40 $html = '<div class="jet-form-builder__field-wrap">';
41
42 $html .= sprintf(
43 '<div %5$s data-repeater="1"
44 data-field-name="%1$s" name="%1$s" data-settings="%2$s" %3$s>%4$s',
45 esc_attr( $this->block_type->block_attrs['name'] ),
46 $this->block_type->settings,
47 $this->block_type->calc_dataset,
48 $template,
49 $this->get_attributes_string()
50 );
51
52 $html .= sprintf(
53 '<div class="jet-form-builder-repeater__items">%s</div>',
54 $this->maybe_render_rows( $wp_block )
55 );
56
57 if ( 'manually' === $this->block_type->manage_items ) {
58 $html .= sprintf(
59 '<div class="jet-form-builder-repeater__actions">
60 <button type="button" class="jet-form-builder-repeater__new">%1$s</button>
61 </div>',
62 wp_kses_post( $this->block_type->new_item_label )
63 );
64 }
65
66 $html .= '</div>';
67 $html .= $this->maybe_render_error( $this->block_type->block_attrs );
68 $html .= '</div>';
69
70 return parent::render( null, $html );
71 }
72
73 public function maybe_render_rows( $wp_block ) {
74 $values = $this->block_type->get_current_repeater( 'values' );
75 $response = '';
76
77 if ( empty( $values ) || ! is_array( $values ) ) {
78 return $response;
79 }
80
81 for ( $i = 0; $i < count( $values ); $i ++ ) {
82 $response .= $this->render_repeater_row( $wp_block, $i );
83 }
84
85 $this->block_type->set_current_repeater(
86 array(
87 'index' => false,
88 )
89 );
90
91 return $response;
92 }
93
94 /**
95 * Render current repeater row
96 *
97 * @param $wp_block
98 * @param int $index
99 *
100 * @return string
101 */
102 public function render_repeater_row( $wp_block, $index = 0 ) {
103 $html = '';
104
105 $this->block_type->set_current_repeater(
106 array(
107 'index' => $index,
108 )
109 );
110
111 foreach ( $wp_block['innerBlocks'] as $block ) {
112 $html .= Block_Helper::render_with_context(
113 $block,
114 array(
115 'jet-forms/repeater-field--name' => $this->block_type->parent_repeater_name(),
116 )
117 );
118 }
119
120 return $this->with_repeater_row_wrapper( $html, $index );
121 }
122
123 public function with_repeater_row_wrapper( $content, $index = 0 ) {
124 $html = sprintf(
125 '<div class="jet-form-builder-repeater__row" data-repeater-row="1" data-index="%1$s" %2$s>',
126 $index,
127 $this->block_type->calc_dataset
128 );
129
130 $html .= sprintf( '<div class="jet-form-builder-repeater__row-fields">%s</div>', $content );
131
132 if ( 'manually' === $this->block_type->manage_items ) {
133 $html .= '<div class="jet-form-builder-repeater__row-remove">';
134 $html .= '<button type="button" class="jet-form-builder-repeater__remove">&times;</button>';
135 $html .= '</div>';
136 }
137
138 return $html . '</div>';
139 }
140
141
142 }
143