PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 1.2.4
JetFormBuilder — Dynamic Blocks Form Builder v1.2.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 / base.php
jetformbuilder / includes / blocks / render Last commit date
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 conditional-block-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 hidden-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
base.php
263 lines
1 <?php
2
3 namespace Jet_Form_Builder\Blocks\Render;
4
5
6 use Jet_Form_Builder\Blocks\Modules\Fields_Errors\Error_Handler;
7 use Jet_Form_Builder\Classes\Attributes_Trait;
8 use Jet_Form_Builder\Classes\Get_Template_Trait;
9 use Jet_Form_Builder\Classes\Tools;
10 use Jet_Form_Builder\Live_Form;
11 use Jet_Form_Builder\Plugin;
12 use Jet_Form_Builder\Presets\Preset_Manager;
13
14 // If this file is called directly, abort.
15
16 if ( ! defined( 'WPINC' ) ) {
17 die;
18 }
19
20 /**
21 * Define Base_Type class
22 */
23 abstract class Base {
24
25 use Attributes_Trait;
26 use Get_Template_Trait;
27
28 public $form_id;
29 public $block_type;
30 public $content;
31 public $live_form;
32
33 const FIELD_ERROR_CLASS = 'field-has-error';
34
35
36 public function __construct( $block_type ) {
37 $this->form_id = Live_Form::instance()->form_id;
38
39 $this->set_live_form();
40 $this->set_block_type( $block_type );
41 }
42
43 abstract public function get_name();
44
45 public function set_live_form() {
46 $this->live_form = Live_Form::instance();
47 }
48
49 public function set_block_type( $block_type ) {
50 $this->block_type = $block_type;
51 }
52
53 private function is_field( $needle ) {
54 return Plugin::instance()->form->is_field( $this->block_type->block_attrs['blockName'], $needle );
55 }
56
57 public function maybe_add_error_class( $args ) {
58 if ( $this->has_error( $args ) ) {
59 $this->add_attribute( 'class', self::FIELD_ERROR_CLASS );
60 }
61 }
62
63 public function maybe_render_error( $args ) {
64 if ( $this->has_error( $args ) ) {
65 return "<div class='error-message'>" . Error_Handler::instance()->error_by_name( $args['name'] ) . "</div>";
66 }
67
68 return '';
69 }
70
71 public function maybe_get_error_class( $args ) {
72 if ( $this->has_error( $args ) ) {
73 return self::FIELD_ERROR_CLASS;
74 }
75
76 return '';
77 }
78
79 private function has_error( $args ) {
80 return Error_Handler::instance()->has_error_by_name( $args['name'] );
81 }
82
83
84 /**
85 * Returns field label
86 *
87 * @return [type] [description]
88 */
89 public function get_field_label() {
90
91 ob_start();
92 if ( ! empty( $this->block_type->block_attrs['label'] ) && $this->label_allowed() ) {
93 $args = $this->block_type->block_attrs;
94 include $this->block_type->get_common_template( 'field-label.php' );
95 }
96
97 return ob_get_clean();
98
99 }
100
101 /**
102 * Returns field description
103 *
104 * @return [type] [description]
105 */
106 public function get_field_desc() {
107
108 ob_start();
109 if ( ! empty( $this->block_type->block_attrs['desc'] ) && $this->label_allowed() ) {
110 $args = $this->block_type->block_attrs;
111 include $this->block_type->get_common_template( 'field-description.php' );
112 }
113
114 return ob_get_clean();
115
116 }
117
118 /**
119 * Defines if this form control supports label
120 *
121 * @return [type] [description]
122 */
123 public function label_allowed() {
124 return true;
125 }
126
127 public function render( $wp_block = null, $template = null ) {
128
129 if ( ! $this->live_form->form_id ) {
130 return;
131 }
132
133 $defaults = array(
134 'default' => '',
135 'name' => '',
136 'placeholder' => '',
137 'required' => false,
138 );
139
140 $sanitized_args = array();
141
142 foreach ( $this->block_type->block_attrs as $key => $value ) {
143 $sanitized_args[ $key ] = $value;
144 }
145 $args = wp_parse_args( $sanitized_args, $defaults );
146
147 $template_name = $this->get_name();
148
149 $this->maybe_add_error_class( $args );
150
151 if ( is_null( $template ) ) {
152 $template = $this->block_type->get_field_template( $template_name . '.php' );
153 }
154
155 $label = $this->get_field_label();
156 $desc = $this->get_field_desc();
157 $layout = $this->live_form ? $this->live_form->spec_data->fields_layout : 'column';
158
159 $args = apply_filters( "jet-form-builder/render/{$args['type']}", $args, $this );
160
161 if ( 'hidden-field' === $args['type'] ) {
162 ob_start();
163 include $template;
164 $result_field = ob_get_clean();
165
166 } else if ( 'column' === $layout ) {
167 ob_start();
168 include $this->block_type->get_common_template( 'field-column.php' );
169 $result_field = ob_get_clean();
170 } else {
171 ob_start();
172 include $this->block_type->get_common_template( 'field-row.php' );
173 $result_field = ob_get_clean();
174 }
175
176 return $result_field;
177 }
178
179 public function render_disabled_message_form_break( $args ) {
180 $format = '<div class="jet-form-builder__next-page-msg" %2$s>%1$s</div>';
181
182 if ( ! empty( $args['page_break_disabled'] ) && ! Tools::is_editor() ) {
183 return sprintf( $format, $args['page_break_disabled'], '' );
184
185 } elseif ( Tools::is_editor() ) {
186
187 $message = ! empty( $args['page_break_disabled'] ) ? $args['page_break_disabled'] : 'Disabled message';
188
189 return sprintf( $format, $message, $this->get_style_attrs( array( 'display:block' ) ) );
190 }
191
192 return '';
193 }
194
195 public function get_style_attrs( $style ) {
196 return 'style=' . implode( ';', $style );
197 }
198
199 /**
200 * Render custom form item template
201 *
202 * @param int|string $object_id Object ID
203 * @param array $args Field arguments
204 * @param bool|string $checked
205 * @return string
206 */
207 public function get_custom_template( $object_id, $args, $checked = false ) {
208 if ( ! function_exists( 'jet_engine' ) ) {
209 return __( 'Please install JetEngine', 'jet-form-builder' ) . '<br>';
210 }
211
212 $listing_id = ! empty( $args['custom_item_template_id'] ) ? $args['custom_item_template_id'] : false;
213 $listing_id = absint( $listing_id );
214
215 if ( ! $listing_id ) {
216 return __( 'Please select template', 'jet-form-builder' ) . '<br>';
217 }
218
219 global $wp_query;
220 $default_object = $wp_query->queried_object;
221
222 $options_from = ! empty( $args['field_options_from'] ) ? $args['field_options_from'] : 'posts';
223
224 if ( 'terms' === $options_from ) {
225 $object = get_term( $object_id );
226 } else {
227 $object = get_post( $object_id );
228 }
229
230 $classes = array(
231 'jet-form-builder__field-template',
232 'jet-listing-dynamic-post-' . $object_id,
233 );
234
235 if ( $checked ) {
236 $classes[] = 'jet-form-builder__field-template--checked';
237 }
238
239 $wp_query->queried_object = $object;
240 jet_engine()->listings->data->set_current_object( $object );
241
242 jet_engine()->frontend->set_listing( $listing_id );
243
244 ob_start();
245 $content = jet_engine()->frontend->get_listing_item( $object );
246 $content .= ob_get_clean();
247
248 $result = sprintf(
249 '<div class="%3$s" data-value="%1$d">%2$s</div>',
250 $object_id,
251 apply_filters( 'jet-form-builder/custom-template-content', $content, $object_id, $listing_id ),
252 join( ' ', $classes )
253 );
254
255 $wp_query->queried_object = $default_object;
256 jet_engine()->listings->data->set_current_object( $wp_query->queried_object );
257
258 return $result;
259
260 }
261
262 }
263