PluginProbe
JetFormBuilder — Dynamic Blocks Form Builder / 1.0.0
JetFormBuilder — Dynamic Blocks Form Builder v1.0.0
3.6.6.1 3.6.6 3.6.5.4 3.6.5.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 All 134 releases
jetformbuilder / includes / blocks / render / repeater-field-render.php

repeater-field-render.php in JetFormBuilder — Dynamic Blocks Form Builder 1.0.0, at includes/blocks/render/repeater-field-render.php

118 lines 3.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Jet_Form_Builder\Blocks\Render;
4
5 // If this file is called directly, abort.
6 use Jet_Form_Builder\Fields_Factory;
7 use Jet_Form_Builder\Form_Preset;
8 use Jet_Form_Builder\Live_Form;
9 use Jet_Form_Builder\Plugin;
10
11 if ( ! defined( 'WPINC' ) ) {
12 die;
13 }
14
15 /**
16 * Define text field renderer class
17 */
18 class Repeater_Field_Render extends Base {
19
20 public $current_repeater_i = false;
21 public $current_repeater;
22
23 public function get_name() {
24 return 'repeater-field';
25 }
26
27 public function render( $wp_block = null, $template = null ) {
28 if ( empty( $wp_block['innerBlocks'] ) ) {
29 return;
30 }
31
32 $this->current_repeater = $this->block_type->default_value;
33
34 $template = sprintf(
35 '<template class="jet-form-builder-repeater__initial">%1$s</template>',
36 $this->render_repeater_row( $wp_block, false )
37 );
38
39 $html = sprintf(
40 '<div class="jet-form-builder-repeater" data-repeater="1"
41 data-field-name="%1$s" name="%1$s" data-settings="%2$s" %3$s>%4$s',
42 $this->block_type->block_attrs['name'],
43 $this->block_type->settings,
44 $this->block_type->calc_dataset,
45 $template
46 );
47
48 $html .= '<div class="jet-form-builder-repeater__items">';
49
50 if ( ! empty( $this->current_repeater['default'] ) && is_array( $this->current_repeater['default'] ) ) {
51 $i = 0;
52 foreach ( $this->current_repeater['default'] as $item ) {
53 $this->current_repeater['values'] = $item;
54 $html .= $this->render_repeater_row( $wp_block, $i );
55 $i ++;
56 }
57 $this->current_repeater['values'] = false;
58 }
59
60 $html .= '</div>';
61
62 if ( 'manually' === $this->block_type->manage_items ) {
63 $html .= sprintf(
64 '<div class="jet-form-builder-repeater__actions">
65 <button type="button" class="jet-form-builder-repeater__new">%1$s</button>
66 </div>',
67 $this->block_type->new_item_label
68 );
69 }
70
71 $html .= '</div>';
72
73 $this->current_repeater = false;
74
75 return parent::render( null, $html );
76 }
77
78 /**
79 * Render current repeater row
80 *
81 * @param $wp_block
82 * @param bool $index
83 *
84 * @return string
85 */
86 public function render_repeater_row( $wp_block, $index = false ) {
87
88 if ( false !== $index ) {
89 $this->current_repeater_i = $index;
90 } else {
91 $index = 0;
92 }
93
94 $html = '<div class="jet-form-builder-repeater__row" data-repeater-row="1" data-index="' . $index . '"' . $this->block_type->calc_dataset . '>';
95 $html .= '<div class="jet-form-builder-repeater__row-fields">';
96
97 Live_Form::instance()->set_repeater( $this->current_repeater, $this->current_repeater_i );
98
99 foreach ( $wp_block['innerBlocks'] as $block ) {
100 $html .= render_block( $block );
101 }
102
103 $html .= '</div>';
104
105 Live_Form::instance()->set_repeater( false );
106
107 if ( 'manually' === $this->block_type->manage_items ) {
108 $html .= '<div class="jet-form-builder-repeater__row-remove">';
109 $html .= '<button type="button" class="jet-form-builder-repeater__remove">&times;</button>';
110 $html .= '</div>';
111 }
112
113 return $html . '</div>';
114 }
115
116
117 }
118