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