PluginProbe ʕ •ᴥ•ʔ
Everest Forms – Contact Form, Payment Form, Quiz, Survey & Custom Form Builder with AI / 1.3.3
Everest Forms – Contact Form, Payment Form, Quiz, Survey & Custom Form Builder with AI v1.3.3
3.6.0 3.5.3 3.5.2 3.5.1 3.5.0 3.4.8 3.4.7 3.4.6 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5.1 1.1.6 1.1.7 1.1.8 1.1.9 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.5.0 1.5.1 1.5.10 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.6.1 1.6.7 1.7.0 1.7.0.1 1.7.0.2 1.7.0.3 1.7.1 1.7.2 1.7.2.1 1.7.2.2 1.7.3 1.7.4 1.7.5 1.7.5.1 1.7.5.2 1.7.6 1.7.7 1.7.7.1 1.7.7.2 1.7.8 1.7.9 1.8.0 1.8.0.1 1.8.1 1.8.2 1.8.2.1 1.8.2.2 1.8.2.3 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9.0 1.9.0.1 1.9.1 1.9.2 1.9.3 1.9.4 1.9.4.1 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.0.1 2.0.1 2.0.2 2.0.3 2.0.3.1 2.0.4 2.0.4.1 2.0.5 2.0.6 2.0.7 2.0.8 2.0.8.1 2.0.9 3.0.0 3.0.0.1 3.0.1 3.0.2 3.0.3 3.0.3.1 3.0.4 3.0.4.1 3.0.4.2 3.0.5 3.0.5.1 3.0.5.2 3.0.6 3.0.6.1 3.0.7.1 3.0.8 3.0.8.1 3.0.9 3.0.9.1 3.0.9.2 3.0.9.3 3.0.9.4 3.0.9.5 3.1.0 3.1.1 3.1.2 3.2.0 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.3.0 3.4.0 3.4.1 3.4.2 3.4.2.1 3.4.3 3.4.4 3.4.5 trunk 1.0 1.0.1 1.0.2 1.0.3
everest-forms / includes / admin / builder / class-evf-builder-fields.php
everest-forms / includes / admin / builder Last commit date
class-evf-builder-fields.php 7 years ago class-evf-builder-page.php 7 years ago class-evf-builder-settings.php 7 years ago
class-evf-builder-fields.php
277 lines
1 <?php
2 /**
3 * EverestForms Builder Fields
4 *
5 * @package EverestForms\Admin
6 * @since 1.2.0
7 */
8
9 defined( 'ABSPATH' ) || exit;
10
11 if ( class_exists( 'EVF_Builder_Fields', false ) ) {
12 return new EVF_Builder_Fields();
13 }
14
15 /**
16 * EVF_Builder_Fields class.
17 */
18 class EVF_Builder_Fields extends EVF_Builder_Page {
19
20 /**
21 * Contains information for multi-part forms.
22 *
23 * Forms that do not contain parts return false, otherwise returns an array
24 * that contains the number of total pages and page counter used when
25 * displaying part rows.
26 *
27 * @since 1.3.2
28 *
29 * @var array
30 */
31 public static $parts = false;
32
33 /**
34 * Constructor.
35 */
36 public function __construct() {
37 $this->id = 'fields';
38 $this->label = __( 'Fields', 'everest-forms' );
39 $this->sidebar = true;
40
41 parent::__construct();
42 }
43
44 /**
45 * Hook in tabs.
46 */
47 public function init_hooks() {
48 if ( $this->form ) {
49 add_action( 'everest_forms_builder_fields', array( $this, 'output_fields' ) );
50 add_action( 'everest_forms_builder_fields_options', array( $this, 'output_fields_options' ) );
51 add_action( 'everest_forms_builder_fields_preview', array( $this, 'output_fields_preview' ) );
52 }
53 }
54
55 /**
56 * Outputs the builder sidebar.
57 */
58 public function output_sidebar() {
59 ?>
60 <div class="everest-forms-fields-tab">
61 <a href="#" id="add-fields" class="fields active"><?php esc_html_e( 'Add Fields', 'everest-forms' ); ?></a>
62 <a href="#" id="field-options" class="options"><?php esc_html_e( 'Field Options', 'everest-forms' ); ?></a>
63 <?php do_action( 'everest_forms_builder_fields_tab', $this->form ); ?>
64 </div>
65 <div class="everest-forms-tab-content">
66 <div class="everest-forms-add-fields">
67 <?php do_action( 'everest_forms_builder_fields', $this->form ); ?>
68 </div>
69 <div class="everest-forms-field-options">
70 <?php do_action( 'everest_forms_builder_fields_options', $this->form ); ?>
71 </div>
72 <?php do_action( 'everest_forms_builder_fields_tab_content', $this->form ); ?>
73 </div>
74 <?php
75 }
76
77 /**
78 * Outputs the builder content.
79 */
80 public function output_content() {
81 ?>
82 <div class="everest-forms-preview-wrap">
83 <div class="everest-forms-preview">
84 <div class="everest-forms-title-desc">
85 <h2 class="everest-forms-form-name"><?php echo esc_html( $this->form->post_title ); ?></h2>
86 </div>
87 <div class="everest-forms-field-wrap">
88 <?php do_action( 'everest_forms_builder_fields_preview', $this->form ); ?>
89 </div>
90 <?php evf_debug_data( $this->form_data ); ?>
91 </div>
92 </div>
93 <?php
94 }
95
96 /**
97 * Output fields group buttons.
98 */
99 public function output_fields() {
100 $form_fields = EVF()->form_fields->form_fields();
101
102 if ( ! empty( $form_fields ) ) {
103 foreach ( $form_fields as $group => $form_field ) {
104 ?>
105 <div class="everest-forms-add-fields-group open">
106 <a href="#" class="everest-forms-add-fields-heading" data-group="<?php echo esc_attr( $group ); ?>"><?php echo evf_get_fields_group( $group ); ?><i class="handlediv"></i></a>
107 <div class="evf-registered-buttons">
108 <?php foreach ( $form_field as $field ) : ?>
109 <button type="button" id="everest-forms-add-fields-<?php echo esc_attr( $field->type ); ?>" class="evf-registered-item <?php echo sanitize_html_class( $field->class ); ?>" data-field-type="<?php echo esc_attr( $field->type ); ?>">
110 <?php if ( isset( $field->icon ) ) : ?>
111 <i class="<?php echo esc_attr( $field->icon ); ?>"></i>
112 <?php endif; ?>
113 <?php echo esc_html( $field->name ); ?>
114 </button>
115 <?php endforeach; ?>
116 </div>
117 </div>
118 <?php
119 }
120 }
121 }
122
123 /**
124 * Output fields setting options.
125 */
126 public function output_fields_options() {
127 $fields = isset( $this->form_data['form_fields'] ) ? $this->form_data['form_fields'] : array();
128
129 if ( ! empty( $fields ) ) {
130 foreach ( $fields as $field ) {
131 if ( in_array( $field['type'], EVF()->form_fields->get_pro_form_field_types(), true ) ) {
132 continue;
133 }
134
135 ?>
136 <div class="everest-forms-field-option everest-forms-field-option-<?php echo esc_attr( $field['type'] ); ?>" id="everest-forms-field-option-<?php echo esc_attr( $field['id'] ); ?>" data-field-id="<?php echo esc_attr( $field['id'] ); ?>" >
137 <input type="hidden" name="form_fields[<?php echo esc_attr( $field['id'] ); ?>][id]" value="<?php echo esc_attr( $field['id'] ); ?>" class="everest-forms-field-option-hidden-id" />
138 <input type="hidden" name="form_fields[<?php echo esc_attr( $field['id'] ); ?>][type]" value="<?php echo esc_attr( $field['type'] ); ?>" class="everest-forms-field-option-hidden-type" />
139 <?php do_action( 'everest_forms_builder_fields_options_' . $field['type'], $field ); ?>
140 </div>
141 <?php
142 }
143 } else {
144 printf( '<p class="no-fields">%s</p>', esc_html__( 'You don\'t have any fields yet.', 'everest-forms' ) );
145 }
146 }
147
148 /**
149 * Outputs fields preview content.
150 */
151 public function output_fields_preview() {
152 $form_data = $this->form_data;
153 $fields = isset( $form_data['form_fields'] ) ? $form_data['form_fields'] : array();
154 $structure = isset( $form_data['structure'] ) ? $form_data['structure'] : array( 'row_1' => array() );
155
156 // Allow Multi-Part to be customized.
157 self::$parts = apply_filters( 'everest_forms_parts_data', self::$parts, $form_data );
158
159 // Output the fields preview.
160 echo '<div class="evf-admin-field-container">';
161 echo '<div class="evf-admin-field-wrapper">';
162
163 /**
164 * Hook: everest_forms_display_builder_fields_before.
165 *
166 * @hooked EverestForms_MultiPart::display_builder_fields_before() Multi-Part markup open.
167 */
168 do_action( 'everest_forms_display_builder_fields_before', $form_data );
169
170 foreach ( $structure as $row_id => $row_data ) {
171 $row = str_replace( 'row_', '', $row_id );
172 $row_grid = isset( $form_data['structure'][ 'row_' . $row ] ) ? $form_data['structure'][ 'row_' . $row ] : array();
173 $form_grid = apply_filters( 'everest_forms_default_form_grid', 2 );
174 $total_grid = $form_grid;
175 $active_grid = count( $row_grid ) > 0 ? count( $row_grid ) : $form_grid;
176 $active_grid = $active_grid > $total_grid ? $total_grid : $active_grid;
177
178 /**
179 * Hook: everest_forms_display_row_before.
180 */
181 do_action( 'everest_forms_display_builder_row_before', $row_id, $form_data );
182
183 echo '<div class="evf-admin-row" data-row-id="' . absint( $row ) . '">';
184 echo '<div class="evf-toggle-row">';
185 echo '<div class="evf-delete-row"><span class="dashicons dashicons-trash" title="Delete"></span></div>';
186 echo '<div class="evf-show-grid"><span class="dashicons dashicons-edit" title="Edit"></span></div>';
187 echo '<div class="evf-toggle-row-content">';
188 echo '<span>' . __( 'Row Settings', 'everest-forms' ) . '</span>';
189 echo '<small>' . __( 'Select the type of row', 'everest-forms' ) . '</small>';
190 echo '<div class="clear"></div>';
191
192 for ( $grid_active = 1; $grid_active <= $total_grid; $grid_active ++ ) {
193 $class = 'evf-grid-selector';
194 if ( $grid_active === $active_grid ) {
195 $class .= ' active';
196 }
197 echo '<div class="' . $class . '" data-evf-grid="' . $grid_active . '">';
198 $gaps = 15;
199 $width = ( 100 - $gaps ) / $grid_active;
200 $margin = ( $gaps / $grid_active ) / 2;
201 for ( $row_icon = 1; $row_icon <= $grid_active; $row_icon ++ ) {
202 echo '<span style="width:' . $width . '%; margin-left:' . $margin . '%; margin-right:' . $margin . '%"></span>';
203 }
204 echo '</div>';
205 }
206
207 echo '</div>';
208 echo '</div>';
209
210 echo '<div class="clear evf-clear"></div>';
211
212 $grid_class = 'evf-admin-grid evf-grid-' . ( $active_grid );
213 for ( $grid_start = 1; $grid_start <= $active_grid; $grid_start ++ ) {
214 echo '<div class="' . $grid_class . ' " data-grid-id="' . $grid_start . '">';
215
216 $grid_fields = isset( $row_grid[ 'grid_' . $grid_start ] ) && is_array( $row_grid[ 'grid_' . $grid_start ] ) ? $row_grid[ 'grid_' . $grid_start ] : array();
217
218 foreach ( $grid_fields as $field_id ) {
219 if ( isset( $fields[ $field_id ] ) && ! in_array( $fields[ $field_id ]['type'], EVF()->form_fields->get_pro_form_field_types(), true ) ) {
220 $this->field_preview( $fields[ $field_id ] );
221 }
222 }
223
224 echo '</div>';
225 }
226
227 echo '<div class="clear evf-clear"></div>';
228 echo '</div >';
229
230 /**
231 * Hook: everest_forms_display_builder_row_after.
232 *
233 * @hooked EverestForms_MultiPart::display_builder_row_after() Multi-Part markup (close previous part, open next).
234 */
235 do_action( 'everest_forms_display_builder_row_after', $row_id, $form_data );
236 }
237
238 /**
239 * Hook: everest_forms_display_builder_fields_after.
240 *
241 * @hooked EverestForms_MultiPart::display_builder_fields_after() Multi-Part markup open.
242 */
243 do_action( 'everest_forms_display_builder_fields_after', $form_data );
244
245 echo '</div>';
246 echo '<div class="clear evf-clear"></div>';
247 echo '<div class="evf-add-row" data-total-rows="' . count( $structure ) . '"><span class="everest-forms-btn dashicons dashicons-plus-alt">' . esc_html( 'Add Row', 'everest-forms' ) . '</span></div>';
248 echo '</div >';
249 }
250
251 /**
252 * Single Field preview.
253 *
254 * @param array $field Field data.
255 */
256 public function field_preview( $field ) {
257 $css = ! empty( $field['size'] ) ? 'size-' . esc_attr( $field['size'] ) : '';
258 $css .= ! empty( $field['label_hide'] ) && $field['label_hide'] == '1' ? ' label_hide' : '';
259 $css .= ! empty( $field['sublabel_hide'] ) && $field['sublabel_hide'] == '1' ? ' sublabel_hide' : '';
260 $css .= ! empty( $field['required'] ) && $field['required'] == '1' ? ' required' : '';
261 $css = apply_filters( 'everest_forms_field_preview_class', $css, $field );
262
263 printf( '<div class="everest-forms-field everest-forms-field-%s %s" id="everest-forms-field-%s" data-field-id="%s" data-field-type="%s">', $field['type'], $css, $field['id'], $field['id'], $field['type'] );
264 printf( '<div class="evf-field-action">' );
265 printf( '<a href="#" class="everest-forms-field-duplicate" title="%s"><span class="dashicons dashicons-media-default"></span></a>', __( 'Duplicate Field', 'everest-forms' ) );
266 printf( '<a href="#" class="everest-forms-field-delete" title="%s"><span class="dashicons dashicons-trash"></span></a>', __( 'Delete Field', 'everest-forms' ) );
267 printf( '<a href="#" class="everest-forms-field-setting" title="%s"><span class="dashicons dashicons-admin-generic"></span></a>', __( 'Settings', 'everest-forms' ) );
268 printf( '</div>' );
269
270 do_action( 'everest_forms_builder_fields_preview_' . $field['type'], $field );
271
272 echo '</div>';
273 }
274 }
275
276 return new EVF_Builder_Fields();
277