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