PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 1.3.0
JetFormBuilder — Dynamic Blocks Form Builder v1.3.0
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 / 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 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
base.php
217 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\Builder_Helper;
9 use Jet_Form_Builder\Classes\Get_Template_Trait;
10 use Jet_Form_Builder\Classes\Tools;
11 use Jet_Form_Builder\Live_Form;
12 use Jet_Form_Builder\Plugin;
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 return ( new Builder_Helper() )->get_custom_template( $object_id, $args, $checked );
214 }
215
216 }
217