PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 3.1.9
JetFormBuilder — Dynamic Blocks Form Builder v3.1.9
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
action-button-render.php 2 years ago base-select-radio-check.php 2 years ago base.php 2 years ago calculated-field-render.php 2 years ago checkbox-field-render.php 2 years ago date-field-render.php 2 years ago datetime-field-render.php 2 years ago form-builder.php 2 years ago form-hidden-fields.php 2 years ago group-break-field-render.php 2 years ago heading-field-render.php 2 years ago media-field-render.php 2 years ago number-field-render.php 2 years ago radio-field-render.php 2 years ago range-field-render.php 2 years ago repeater-field-render.php 2 years ago select-field-render.php 2 years ago text-field-render.php 2 years ago textarea-field-render.php 2 years ago time-field-render.php 2 years ago wysiwyg-field-render.php 2 years ago
base.php
272 lines
1 <?php
2
3 namespace Jet_Form_Builder\Blocks\Render;
4
5 use Jet_Form_Builder\Blocks\Button_Types\Button_Next;
6 use Jet_Form_Builder\Blocks\Dynamic_Value;
7 use Jet_Form_Builder\Blocks\Modules\Fields_Errors\Error_Handler;
8 use Jet_Form_Builder\Classes\Attributes_Trait;
9 use Jet_Form_Builder\Classes\Builder_Helper;
10 use Jet_Form_Builder\Classes\Get_Template_Trait;
11 use Jet_Form_Builder\Classes\Tools;
12 use Jet_Form_Builder\Live_Form;
13 use Jet_Form_Builder\Classes\Regexp_Tools;
14
15 // If this file is called directly, abort.
16
17 if ( ! defined( 'WPINC' ) ) {
18 die;
19 }
20
21 /**
22 * Define Base_Type class
23 */
24 abstract class Base {
25
26 use Attributes_Trait;
27 use Get_Template_Trait;
28
29 public $form_id;
30
31 /**
32 * @var \Jet_Form_Builder\Blocks\Types\Base
33 */
34 public $block_type;
35 public $content;
36
37 /**
38 * @var Live_Form
39 */
40 public $live_form;
41
42 /**
43 * @var array
44 */
45 public $args;
46
47 const FIELD_ERROR_CLASS = 'field-has-error';
48
49 public function __construct( $block_type ) {
50 $this->form_id = Live_Form::instance()->form_id;
51
52 $this->set_live_form();
53 $this->set_block_type( $block_type );
54 }
55
56 abstract public function get_name();
57
58 public function set_live_form() {
59 $this->live_form = Live_Form::instance();
60 }
61
62 public function set_block_type( $block_type ) {
63 $this->block_type = $block_type;
64 }
65
66 /**
67 * Returns field label
68 *
69 * @return [type] [description]
70 */
71 public function get_field_label() {
72 if ( empty( $this->block_type->block_attrs['label'] ) || ! $this->label_allowed() ) {
73 return '';
74 }
75
76 $args = $this->block_type->block_attrs;
77
78 $label_wrapper = new class() {
79 use Attributes_Trait;
80 };
81 $label_text = clone $label_wrapper;
82
83 if ( isset( $args['type'] ) && 'heading-field' === $args['type'] ) {
84 $label_wrapper->add_attribute( 'class', 'jet-form-builder__heading' );
85 $label_wrapper->add_attribute( 'class', $args['class_name'] );
86 } else {
87 $label_wrapper->add_attribute( 'class', 'jet-form-builder__label' );
88 }
89
90 $label_text->add_attribute( 'class', 'jet-form-builder__label-text' );
91 $label_text_tag = esc_attr( jet_fb_live_args()->fields_label_tag );
92
93 if ( 'label' === $label_text_tag ) {
94 $label_text->add_attribute( 'for', $this->block_type->get_field_id( $args, 'label' ) );
95 }
96
97 ob_start();
98
99 include $this->block_type->get_common_template( 'field-label.php' );
100
101 return ob_get_clean();
102 }
103
104 /**
105 * Returns field description
106 *
107 * @return [type] [description]
108 */
109 public function get_field_desc() {
110
111 ob_start();
112 if ( ! empty( $this->block_type->block_attrs['desc'] ) && $this->label_allowed() ) {
113 $args = $this->block_type->block_attrs;
114 include $this->block_type->get_common_template( 'field-description.php' );
115 }
116
117 return ob_get_clean();
118 }
119
120 /**
121 * Defines if this form control supports label
122 *
123 * @return [type] [description]
124 */
125 public function label_allowed() {
126 return true;
127 }
128
129 public function render_without_layout( $template = null, $args = array() ) {
130 $template_name = $this->get_name();
131
132 if ( empty( $args ) ) {
133 $args = $this->get_default_args_with_filter();
134 }
135
136 $this->args = $args;
137 $this->before_render( $args );
138
139 if ( is_null( $template ) ) {
140 $template = $this->block_type->get_field_template( $template_name . '.php' );
141 }
142
143 if ( $template && Tools::is_readable( $template ) ) {
144 ob_start();
145 include $template;
146 $template = ob_get_clean();
147 }
148
149 return $template;
150 }
151
152 public function get_default_args() {
153 $defaults = array(
154 'default' => '',
155 'name' => '',
156 'placeholder' => '',
157 'required' => false,
158 );
159
160 $sanitized_args = array();
161
162 foreach ( $this->block_type->block_attrs as $key => $value ) {
163 $sanitized_args[ $key ] = $value;
164 }
165
166 return wp_parse_args( $sanitized_args, $defaults );
167 }
168
169 public function get_default_args_with_filter() {
170 $args = $this->get_default_args();
171
172 // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
173 return apply_filters( "jet-form-builder/render/{$args['type']}", $args, $this );
174 }
175
176 public function before_render( $args ) {
177 }
178
179 /**
180 * @param null $wp_block
181 * @param null $template
182 *
183 * @return false|string
184 */
185 public function render( $wp_block = null, $template = null ) {
186 $args = $this->get_default_args_with_filter();
187 $template = $this->render_without_layout( $template, $args );
188
189 $label = $this->get_field_label();
190 $desc = $this->get_field_desc();
191 $layout = $this->live_form ? $this->live_form->spec_data->fields_layout : 'column';
192
193 if ( 'column' === $layout ) {
194 ob_start();
195 include $this->block_type->get_common_template( 'field-column.php' );
196 $result_field = ob_get_clean();
197 } else {
198 ob_start();
199 include $this->block_type->get_common_template( 'field-row.php' );
200 $result_field = ob_get_clean();
201 }
202
203 return $result_field;
204 }
205
206 public function render_disabled_message_form_break( $args ) {
207 $format = '<div class="jet-form-builder__next-page-msg" %2$s>%1$s</div>';
208
209 if ( ! empty( $args['page_break_disabled'] ) && ! Tools::is_editor() ) {
210 $attrs = array(
211 sprintf(
212 'data-jfb-conditional="%s"',
213 Tools::esc_attr(
214 array(
215 array(
216 'page_state' => 'active',
217 ),
218 )
219 )
220 ),
221 sprintf(
222 'data-jfb-func="%s"',
223 Tools::esc_attr(
224 array(
225 'show' => array( 'dom' => true ),
226 )
227 )
228 ),
229 );
230
231 return sprintf( $format, $args['page_break_disabled'], implode( ' ', $attrs ) );
232
233 } elseif ( Tools::is_editor() ) {
234
235 $message = ! empty( $args['page_break_disabled'] ) ? $args['page_break_disabled'] : 'Disabled message';
236
237 return sprintf( $format, $message, $this->get_style_attrs( array( 'display:block' ) ) );
238 }
239
240 return '';
241 }
242
243 public function get_style_attrs( $style ) {
244 return 'style=' . implode( ';', $style );
245 }
246
247 /**
248 * Render custom form item template
249 *
250 * @param int|string $object_id Object ID.
251 * @param array $args Field arguments.
252 * @param bool|string $checked
253 *
254 * @return string
255 */
256 public function get_custom_template( $object_id, $args, $checked = false ) {
257 return ( new Builder_Helper() )->get_custom_template( $object_id, $args, $checked );
258 }
259
260 protected function set_value() {
261 if ( ! jet_form_builder()->regexp->has_macro( $this->args['default'] ) ) {
262 $this->add_attribute( 'value', $this->args['default'] );
263
264 return;
265 }
266 wp_enqueue_script( Dynamic_Value::HANDLE );
267
268 $this->add_attribute( 'data-value', $this->args['default'] );
269 }
270
271 }
272