Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93
/home/sportsfe.../public_h.../clone/wp-conte.../plugins/wpforms-.../includes/admin/builder/panels
File: class-fields.php
<?php
[0] Fix | Delete
[1] Fix | Delete
if ( ! defined( 'ABSPATH' ) ) {
[2] Fix | Delete
exit;
[3] Fix | Delete
}
[4] Fix | Delete
[5] Fix | Delete
/**
[6] Fix | Delete
* Fields management panel.
[7] Fix | Delete
*
[8] Fix | Delete
* @since 1.0.0
[9] Fix | Delete
*/
[10] Fix | Delete
class WPForms_Builder_Panel_Fields extends WPForms_Builder_Panel {
[11] Fix | Delete
[12] Fix | Delete
/**
[13] Fix | Delete
* All systems go.
[14] Fix | Delete
*
[15] Fix | Delete
* @since 1.0.0
[16] Fix | Delete
*/
[17] Fix | Delete
public function init() {
[18] Fix | Delete
[19] Fix | Delete
// Define panel information.
[20] Fix | Delete
$this->name = esc_html__( 'Fields', 'wpforms-lite' );
[21] Fix | Delete
$this->slug = 'fields';
[22] Fix | Delete
$this->icon = 'fa-list-alt';
[23] Fix | Delete
$this->order = 10;
[24] Fix | Delete
$this->sidebar = true;
[25] Fix | Delete
[26] Fix | Delete
if ( $this->form ) {
[27] Fix | Delete
add_action( 'wpforms_builder_fields', [ $this, 'search' ], 5 );
[28] Fix | Delete
add_action( 'wpforms_builder_fields', [ $this, 'fields' ] );
[29] Fix | Delete
add_action( 'wpforms_builder_fields_options', [ $this, 'fields_options' ] );
[30] Fix | Delete
add_action( 'wpforms_builder_preview', [ $this, 'preview' ] );
[31] Fix | Delete
[32] Fix | Delete
// Template for form builder previews.
[33] Fix | Delete
add_action( 'wpforms_builder_print_footer_scripts', [ $this, 'field_preview_templates' ] );
[34] Fix | Delete
add_action( 'wpforms_builder_print_footer_scripts', [ $this, 'choices_limit_message_template' ] );
[35] Fix | Delete
add_action( 'wpforms_builder_print_footer_scripts', [ $this, 'choices_empty_message_template' ] );
[36] Fix | Delete
}
[37] Fix | Delete
}
[38] Fix | Delete
[39] Fix | Delete
/**
[40] Fix | Delete
* Enqueue assets for the Fields panel.
[41] Fix | Delete
*
[42] Fix | Delete
* @since 1.0.0
[43] Fix | Delete
* @since 1.6.8 All the builder stylesheets enqueues moved to the `\WPForms_Builder::enqueues()`.
[44] Fix | Delete
*/
[45] Fix | Delete
public function enqueues() {
[46] Fix | Delete
[47] Fix | Delete
$min = wpforms_get_min_suffix();
[48] Fix | Delete
[49] Fix | Delete
wp_enqueue_script(
[50] Fix | Delete
'wpforms-builder-drag-fields',
[51] Fix | Delete
WPFORMS_PLUGIN_URL . "assets/js/admin/builder/drag-fields{$min}.js",
[52] Fix | Delete
[ 'wpforms-builder' ],
[53] Fix | Delete
WPFORMS_VERSION,
[54] Fix | Delete
true
[55] Fix | Delete
);
[56] Fix | Delete
[57] Fix | Delete
wp_enqueue_script(
[58] Fix | Delete
'wpforms-builder-search-fields',
[59] Fix | Delete
WPFORMS_PLUGIN_URL . "assets/js/admin/builder/search-fields{$min}.js",
[60] Fix | Delete
[ 'wpforms-builder' ],
[61] Fix | Delete
WPFORMS_VERSION,
[62] Fix | Delete
true
[63] Fix | Delete
);
[64] Fix | Delete
}
[65] Fix | Delete
[66] Fix | Delete
/**
[67] Fix | Delete
* Output the Field panel sidebar.
[68] Fix | Delete
*
[69] Fix | Delete
* @since 1.0.0
[70] Fix | Delete
*/
[71] Fix | Delete
public function panel_sidebar() {
[72] Fix | Delete
[73] Fix | Delete
// Sidebar contents are not valid unless we have a form.
[74] Fix | Delete
if ( ! $this->form ) {
[75] Fix | Delete
return;
[76] Fix | Delete
}
[77] Fix | Delete
?>
[78] Fix | Delete
<ul class="wpforms-tabs wpforms-clear">
[79] Fix | Delete
[80] Fix | Delete
<li class="wpforms-tab" id="add-fields">
[81] Fix | Delete
<a href="#" class="active">
[82] Fix | Delete
<i class="fa fa-list-alt"></i><?php esc_html_e( 'Add Fields', 'wpforms-lite' ); ?>
[83] Fix | Delete
</a>
[84] Fix | Delete
</li>
[85] Fix | Delete
[86] Fix | Delete
<li class="wpforms-tab" id="field-options">
[87] Fix | Delete
<a href="#">
[88] Fix | Delete
<i class="fa fa-sliders"></i><?php esc_html_e( 'Field Options', 'wpforms-lite' ); ?>
[89] Fix | Delete
</a>
[90] Fix | Delete
</li>
[91] Fix | Delete
[92] Fix | Delete
</ul>
[93] Fix | Delete
[94] Fix | Delete
<div class="wpforms-add-fields wpforms-tab-content">
[95] Fix | Delete
<?php do_action( 'wpforms_builder_fields', $this->form ); ?>
[96] Fix | Delete
</div>
[97] Fix | Delete
[98] Fix | Delete
<div id="wpforms-field-options" class="wpforms-field-options wpforms-tab-content">
[99] Fix | Delete
<?php do_action( 'wpforms_builder_fields_options', $this->form ); ?>
[100] Fix | Delete
</div>
[101] Fix | Delete
<?php
[102] Fix | Delete
}
[103] Fix | Delete
[104] Fix | Delete
/**
[105] Fix | Delete
* Output the Field panel primary content.
[106] Fix | Delete
*
[107] Fix | Delete
* @since 1.0.0
[108] Fix | Delete
*/
[109] Fix | Delete
public function panel_content() {
[110] Fix | Delete
[111] Fix | Delete
// Check if there is a form created.
[112] Fix | Delete
if ( ! $this->form ) {
[113] Fix | Delete
echo '<div class="wpforms-alert wpforms-alert-info">';
[114] Fix | Delete
echo wp_kses(
[115] Fix | Delete
__( 'You need to <a href="#" class="wpforms-panel-switch" data-panel="setup">setup your form</a> before you can manage the fields.', 'wpforms-lite' ),
[116] Fix | Delete
[
[117] Fix | Delete
'a' => [
[118] Fix | Delete
'href' => [],
[119] Fix | Delete
'class' => [],
[120] Fix | Delete
'data-panel' => [],
[121] Fix | Delete
],
[122] Fix | Delete
]
[123] Fix | Delete
);
[124] Fix | Delete
echo '</div>';
[125] Fix | Delete
[126] Fix | Delete
return;
[127] Fix | Delete
}
[128] Fix | Delete
[129] Fix | Delete
?>
[130] Fix | Delete
[131] Fix | Delete
<div class="wpforms-preview-wrap">
[132] Fix | Delete
[133] Fix | Delete
<div class="wpforms-preview">
[134] Fix | Delete
[135] Fix | Delete
<div class="wpforms-title-desc">
[136] Fix | Delete
<div class="wpforms-title-desc-inner">
[137] Fix | Delete
<h2 class="wpforms-form-name">
[138] Fix | Delete
<?php echo esc_html( isset( $this->form_data['settings']['form_title'] ) ? $this->form_data['settings']['form_title'] : $this->form->post_title ); ?>
[139] Fix | Delete
</h2>
[140] Fix | Delete
<span class="wpforms-form-desc">
[141] Fix | Delete
<?php
[142] Fix | Delete
echo wp_kses(
[143] Fix | Delete
isset( $this->form_data['settings']['form_desc'] ) ? $this->form_data['settings']['form_desc'] : $this->form->post_excerpt,
[144] Fix | Delete
wpforms_builder_preview_get_allowed_tags()
[145] Fix | Delete
);
[146] Fix | Delete
?>
[147] Fix | Delete
</span>
[148] Fix | Delete
</div>
[149] Fix | Delete
</div>
[150] Fix | Delete
[151] Fix | Delete
<div class="wpforms-no-fields-holder wpforms-hidden">
[152] Fix | Delete
<?php $this->no_fields_options(); ?>
[153] Fix | Delete
<?php $this->no_fields_preview(); ?>
[154] Fix | Delete
</div>
[155] Fix | Delete
[156] Fix | Delete
<div class="wpforms-field-wrap">
[157] Fix | Delete
<?php do_action( 'wpforms_builder_preview', $this->form ); ?>
[158] Fix | Delete
</div>
[159] Fix | Delete
[160] Fix | Delete
<?php
[161] Fix | Delete
$captcha_settings = wpforms_get_captcha_settings();
[162] Fix | Delete
$extra_class = 'is-' . $captcha_settings['provider'];
[163] Fix | Delete
?>
[164] Fix | Delete
[165] Fix | Delete
<div class="wpforms-field-recaptcha <?php echo sanitize_html_class( $extra_class ); ?>">
[166] Fix | Delete
<div class="wpforms-field-recaptcha-wrap">
[167] Fix | Delete
<div class="wpforms-field-recaptcha-wrap-l">
[168] Fix | Delete
<svg class="wpforms-field-hcaptcha-icon" fill="none" viewBox="0 0 83 90"><path opacity=".5" d="M60.012 69.998H50.01V80h10.002V69.998z" fill="#0074BF"/><path opacity=".7" d="M50.01 69.998H40.008V80H50.01V69.998zM40.008 69.998H30.006V80h10.002V69.998z" fill="#0074BF"/><path opacity=".5" d="M30.006 69.998H20.004V80h10.002V69.998z" fill="#0074BF"/><path opacity=".7" d="M70.014 60.013H60.014v10.002h10.002V60.012z" fill="#0082BF"/><path opacity=".8" d="M60.012 60.013H50.01v10.002h10.002V60.012z" fill="#0082BF"/><path d="M50.01 60.013H40.008v10.002H50.01V60.012zM40.008 60.013H30.006v10.002h10.002V60.012z" fill="#0082BF"/><path opacity=".8" d="M30.006 60.013H20.004v10.002h10.002V60.012z" fill="#0082BF"/><path opacity=".7" d="M20.004 60.013H10.002v10.002h10.002V60.012z" fill="#0082BF"/><path opacity=".5" d="M80 50.01H69.998v10.002H80V50.01z" fill="#008FBF"/><path opacity=".8" d="M70.014 50.01H60.014v10.002h10.002V50.01z" fill="#008FBF"/><path d="M60.012 50.01H50.01v10.002h10.002V50.01zM50.01 50.01H40.008v10.002H50.01V50.01zM40.008 50.01H30.006v10.002h10.002V50.01zM30.006 50.01H20.004v10.002h10.002V50.01z" fill="#008FBF"/><path opacity=".8" d="M20.004 50.01H10.002v10.002h10.002V50.01z" fill="#008FBF"/><path opacity=".5" d="M10.002 50.01H0v10.002h10.002V50.01z" fill="#008FBF"/><path opacity=".7" d="M80 40.008H69.998V50.01H80V40.008z" fill="#009DBF"/><path d="M70.014 40.008H60.014V50.01h10.002V40.008zM60.012 40.008H50.01V50.01h10.002V40.008zM50.01 40.008H40.008V50.01H50.01V40.008zM40.008 40.008H30.006V50.01h10.002V40.008zM30.006 40.008H20.004V50.01h10.002V40.008zM20.004 40.008H10.002V50.01h10.002V40.008z" fill="#009DBF"/><path opacity=".7" d="M10.002 40.008H0V50.01h10.002V40.008z" fill="#009DBF"/><path opacity=".7" d="M80 30.006H69.998v10.002H80V30.006z" fill="#00ABBF"/><path d="M70.014 30.006H60.014v10.002h10.002V30.006zM60.012 30.006H50.01v10.002h10.002V30.006zM50.01 30.006H40.008v10.002H50.01V30.006zM40.008 30.006H30.006v10.002h10.002V30.006zM30.006 30.006H20.004v10.002h10.002V30.006zM20.004 30.006H10.002v10.002h10.002V30.006z" fill="#00ABBF"/><path opacity=".7" d="M10.002 30.006H0v10.002h10.002V30.006z" fill="#00ABBF"/><path opacity=".5" d="M80 20.004H69.998v10.002H80V20.004z" fill="#00B9BF"/><path opacity=".8" d="M70.014 20.004H60.014v10.002h10.002V20.004z" fill="#00B9BF"/><path d="M60.012 20.004H50.01v10.002h10.002V20.004zM50.01 20.004H40.008v10.002H50.01V20.004zM40.008 20.004H30.006v10.002h10.002V20.004zM30.006 20.004H20.004v10.002h10.002V20.004z" fill="#00B9BF"/><path opacity=".8" d="M20.004 20.004H10.002v10.002h10.002V20.004z" fill="#00B9BF"/><path opacity=".5" d="M10.002 20.004H0v10.002h10.002V20.004z" fill="#00B9BF"/><path opacity=".7" d="M70.014 10.002H60.014v10.002h10.002V10.002z" fill="#00C6BF"/><path opacity=".8" d="M60.012 10.002H50.01v10.002h10.002V10.002z" fill="#00C6BF"/><path d="M50.01 10.002H40.008v10.002H50.01V10.002zM40.008 10.002H30.006v10.002h10.002V10.002z" fill="#00C6BF"/><path opacity=".8" d="M30.006 10.002H20.004v10.002h10.002V10.002z" fill="#00C6BF"/><path opacity=".7" d="M20.004 10.002H10.002v10.002h10.002V10.002z" fill="#00C6BF"/><path opacity=".5" d="M60.012 0H50.01v10.002h10.002V0z" fill="#00D4BF"/><path opacity=".7" d="M50.01 0H40.008v10.002H50.01V0zM40.008 0H30.006v10.002h10.002V0z" fill="#00D4BF"/><path opacity=".5" d="M30.006 0H20.004v10.002h10.002V0z" fill="#00D4BF"/><path d="M26.34 36.84l2.787-6.237c1.012-1.592.88-3.55-.232-4.66a3.6 3.6 0 00-.481-.399 3.053 3.053 0 00-2.571-.298 4.246 4.246 0 00-2.322 1.791s-3.816 8.907-5.242 12.905c-1.426 3.998-.863 11.346 4.611 16.836 5.806 5.806 14.215 7.132 19.573 3.102.232-.116.431-.25.63-.415l16.521-13.8c.797-.664 1.99-2.024.93-3.583-1.046-1.526-3.003-.481-3.816.033l-9.504 6.917a.421.421 0 01-.597-.05s0-.017-.017-.017c-.249-.298-.282-1.078.1-1.393l14.58-12.374c1.26-1.128 1.426-2.787.414-3.915-.995-1.11-2.57-1.078-3.848.067l-13.12 10.267a.578.578 0 01-.813-.083c0-.016-.017-.016-.017-.033-.265-.298-.365-.78-.066-1.078l14.862-14.414c1.178-1.095 1.244-2.936.15-4.097a2.824 2.824 0 00-2.024-.863 2.905 2.905 0 00-2.09.83L39.544 36.144c-.365.364-1.078 0-1.161-.432a.474.474 0 01.132-.431l11.628-13.237a2.86 2.86 0 00.15-4.047 2.86 2.86 0 00-4.048-.15c-.05.05-.1.084-.133.133L28.447 37.47c-.63.63-1.56.664-2.007.299a.657.657 0 01-.1-.929z" fill="#fff"/></svg>
[169] Fix | Delete
<svg class="wpforms-field-recaptcha-icon" viewBox="0 0 28 27.918"><path d="M28 13.943l-.016-.607V2l-3.133 3.134a13.983 13.983 0 00-21.964.394l5.134 5.183a6.766 6.766 0 012.083-2.329A6.171 6.171 0 0114.025 7.1a1.778 1.778 0 01.492.066 6.719 6.719 0 015.17 3.119l-3.625 3.641 11.941.016" fill="#1c3aa9"/><path d="M13.943 0l-.607.016H2.018l3.133 3.133a13.969 13.969 0 00.377 21.964l5.183-5.134A6.766 6.766 0 018.382 17.9 6.171 6.171 0 017.1 13.975a1.778 1.778 0 01.066-.492 6.719 6.719 0 013.117-5.167l3.641 3.641L13.943 0" fill="#4285f4"/><path d="M0 13.975l.016.607v11.334l3.133-3.133a13.983 13.983 0 0021.964-.394l-5.134-5.183a6.766 6.766 0 01-2.079 2.33 6.171 6.171 0 01-3.92 1.279 1.778 1.778 0 01-.492-.066 6.719 6.719 0 01-5.167-3.117l3.641-3.641c-4.626 0-9.825.016-11.958-.016" fill="#ababab"/></svg>
[170] Fix | Delete
<svg class="wpforms-field-turnstile-icon" fill="none" viewBox="0 0 106 106"> <g clip-path="url(#a)"> <path fill="#F4801F" d="m72.375 76.265.541-1.877c.643-2.231.405-4.29-.678-5.808-1.011-1.397-2.66-2.216-4.68-2.312l-38.213-.486a.743.743 0 0 1-.683-1.012 1.012 1.012 0 0 1 .885-.678l38.583-.506c4.554-.207 9.532-3.92 11.267-8.454l2.196-5.748a1.354 1.354 0 0 0 .061-.779 25.13 25.13 0 0 0-48.312-2.6 11.307 11.307 0 0 0-17.708 11.849A16.054 16.054 0 0 0 .172 76.28a.744.744 0 0 0 .734.643H71.48a.927.927 0 0 0 .895-.658Z"/> <path fill="#F9AB41" d="M85.11 49.82c-.338 0-.692.01-1.063.03a.444.444 0 0 0-.162.035.59.59 0 0 0-.384.405l-1.518 5.191c-.648 2.231-.41 4.29.678 5.808a5.895 5.895 0 0 0 4.675 2.313l8.15.505a.728.728 0 0 1 .577.314.759.759 0 0 1 .086.693 1.012 1.012 0 0 1-.885.678l-8.465.506c-4.599.213-9.552 3.921-11.287 8.45l-.612 1.598a.455.455 0 0 0 .4.617h29.157a.782.782 0 0 0 .779-.592 20.92 20.92 0 0 0-10.822-24.36 20.916 20.916 0 0 0-9.294-2.191h-.01Z"/> </g> <defs> <clipPath id="a"> <path fill="#fff" d="M0 0h106v106H0z"/> </clipPath> </defs> </svg>
[171] Fix | Delete
</div>
[172] Fix | Delete
<div class="wpforms-field-recaptcha-wrap-r">
[173] Fix | Delete
<p class="wpforms-field-hcaptcha-title">hCaptcha</p>
[174] Fix | Delete
<p class="wpforms-field-recaptcha-title">reCAPTCHA</p>
[175] Fix | Delete
<p class="wpforms-field-turnstile-title">Turnstile</p>
[176] Fix | Delete
<p class="wpforms-field-recaptcha-desc">
[177] Fix | Delete
<span class="wpforms-field-recaptcha-desc-txt"><?php esc_html_e( 'Enabled', 'wpforms-lite' ); ?></span><svg class="wpforms-field-recaptcha-desc-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M512 256c0-37.7-23.7-69.9-57.1-82.4 14.7-32.4 8.8-71.9-17.9-98.6-26.7-26.7-66.2-32.6-98.6-17.9C325.9 23.7 293.7 0 256 0s-69.9 23.7-82.4 57.1c-32.4-14.7-72-8.8-98.6 17.9-26.7 26.7-32.6 66.2-17.9 98.6C23.7 186.1 0 218.3 0 256s23.7 69.9 57.1 82.4c-14.7 32.4-8.8 72 17.9 98.6 26.6 26.6 66.1 32.7 98.6 17.9 12.5 33.3 44.7 57.1 82.4 57.1s69.9-23.7 82.4-57.1c32.6 14.8 72 8.7 98.6-17.9 26.7-26.7 32.6-66.2 17.9-98.6 33.4-12.5 57.1-44.7 57.1-82.4zm-144.8-44.25L236.16 341.74c-4.31 4.28-11.28 4.25-15.55-.06l-75.72-76.33c-4.28-4.31-4.25-11.28.06-15.56l26.03-25.82c4.31-4.28 11.28-4.25 15.56.06l42.15 42.49 97.2-96.42c4.31-4.28 11.28-4.25 15.55.06l25.82 26.03c4.28 4.32 4.26 11.29-.06 15.56z"></path></svg>
[178] Fix | Delete
</p>
[179] Fix | Delete
</div>
[180] Fix | Delete
</div>
[181] Fix | Delete
</div>
[182] Fix | Delete
[183] Fix | Delete
<?php
[184] Fix | Delete
$submit = ! empty( $this->form_data['settings']['submit_text'] ) ? $this->form_data['settings']['submit_text'] : esc_html__( 'Submit', 'wpforms-lite' );
[185] Fix | Delete
$submit_style = empty( $this->form_data['fields'] ) ? 'display: none;' : '';
[186] Fix | Delete
[187] Fix | Delete
printf( '<p class="wpforms-field-submit" style="%1$s"><input type="submit" value="%2$s" class="wpforms-field-submit-button"></p>', esc_attr( $submit_style ), esc_attr( $submit ) );
[188] Fix | Delete
[189] Fix | Delete
/** This action is documented in includes/class-frontend.php. */
[190] Fix | Delete
do_action( 'wpforms_display_submit_after', $this->form_data, 'submit' ); // phpcs:ignore WPForms.PHP.ValidateHooks.InvalidHookName
[191] Fix | Delete
?>
[192] Fix | Delete
[193] Fix | Delete
<?php wpforms_debug_data( $this->form_data ); ?>
[194] Fix | Delete
</div>
[195] Fix | Delete
[196] Fix | Delete
</div>
[197] Fix | Delete
[198] Fix | Delete
<?php
[199] Fix | Delete
}
[200] Fix | Delete
[201] Fix | Delete
/**
[202] Fix | Delete
* Builder field buttons.
[203] Fix | Delete
*
[204] Fix | Delete
* @since 1.0.0
[205] Fix | Delete
*/
[206] Fix | Delete
public function fields() {
[207] Fix | Delete
[208] Fix | Delete
$fields = wpforms_get_builder_fields();
[209] Fix | Delete
[210] Fix | Delete
// Output the buttons.
[211] Fix | Delete
foreach ( $fields as $id => $group ) {
[212] Fix | Delete
[213] Fix | Delete
usort( $group['fields'], [ $this, 'field_order' ] );
[214] Fix | Delete
[215] Fix | Delete
echo '<div class="wpforms-add-fields-group">';
[216] Fix | Delete
[217] Fix | Delete
echo '<a href="#" class="wpforms-add-fields-heading" data-group="' . esc_attr( $id ) . '">';
[218] Fix | Delete
[219] Fix | Delete
echo '<span>' . esc_html( $group['group_name'] ) . '</span>';
[220] Fix | Delete
[221] Fix | Delete
echo '<i class="fa fa-angle-down"></i>';
[222] Fix | Delete
[223] Fix | Delete
echo '</a>';
[224] Fix | Delete
[225] Fix | Delete
echo '<div class="wpforms-add-fields-buttons">';
[226] Fix | Delete
[227] Fix | Delete
foreach ( $group['fields'] as $field ) {
[228] Fix | Delete
/**
[229] Fix | Delete
* Attributes of the form field button on the Add Fields tab in the Form Builder.
[230] Fix | Delete
*
[231] Fix | Delete
* @since 1.5.1
[232] Fix | Delete
*
[233] Fix | Delete
* @param array $attributes Field attributes.
[234] Fix | Delete
* @param array $field Field data.
[235] Fix | Delete
* @param array $form_data Form data.
[236] Fix | Delete
*/
[237] Fix | Delete
$atts = apply_filters(
[238] Fix | Delete
'wpforms_builder_field_button_attributes',
[239] Fix | Delete
[
[240] Fix | Delete
'id' => 'wpforms-add-fields-' . $field['type'],
[241] Fix | Delete
'class' => [ 'wpforms-add-fields-button' ],
[242] Fix | Delete
'data' => [
[243] Fix | Delete
'field-type' => $field['type'],
[244] Fix | Delete
],
[245] Fix | Delete
'atts' => [],
[246] Fix | Delete
],
[247] Fix | Delete
$field,
[248] Fix | Delete
$this->form_data
[249] Fix | Delete
);
[250] Fix | Delete
[251] Fix | Delete
if ( ! empty( $field['keywords'] ) ) {
[252] Fix | Delete
$atts['data']['field-keywords'] = $field['keywords'];
[253] Fix | Delete
}
[254] Fix | Delete
[255] Fix | Delete
if ( ! empty( $field['class'] ) ) {
[256] Fix | Delete
$atts['class'][] = $field['class'];
[257] Fix | Delete
}
[258] Fix | Delete
[259] Fix | Delete
echo '<button ' . wpforms_html_attributes( $atts['id'], $atts['class'], $atts['data'], $atts['atts'] ) . '>';
[260] Fix | Delete
if ( $field['icon'] ) {
[261] Fix | Delete
echo '<i class="fa ' . esc_attr( $field['icon'] ) . '"></i> ';
[262] Fix | Delete
}
[263] Fix | Delete
echo esc_html( $field['name'] );
[264] Fix | Delete
echo '</button>';
[265] Fix | Delete
}
[266] Fix | Delete
[267] Fix | Delete
echo '</div>';
[268] Fix | Delete
[269] Fix | Delete
echo '</div>';
[270] Fix | Delete
}
[271] Fix | Delete
}
[272] Fix | Delete
[273] Fix | Delete
/**
[274] Fix | Delete
* Editor Field Options.
[275] Fix | Delete
*
[276] Fix | Delete
* @since 1.0.0
[277] Fix | Delete
*/
[278] Fix | Delete
public function fields_options() {
[279] Fix | Delete
[280] Fix | Delete
// Check to make sure the form actually has fields created already.
[281] Fix | Delete
if ( empty( $this->form_data['fields'] ) ) {
[282] Fix | Delete
$this->no_fields_options();
[283] Fix | Delete
[284] Fix | Delete
return;
[285] Fix | Delete
}
[286] Fix | Delete
[287] Fix | Delete
$fields = $this->form_data['fields'];
[288] Fix | Delete
[289] Fix | Delete
foreach ( $fields as $field ) {
[290] Fix | Delete
[291] Fix | Delete
$class = apply_filters( 'wpforms_builder_field_option_class', '', $field );
[292] Fix | Delete
[293] Fix | Delete
printf( '<div class="wpforms-field-option wpforms-field-option-%s %s" id="wpforms-field-option-%d" data-field-id="%d">', sanitize_html_class( $field['type'] ), wpforms_sanitize_classes( $class ), (int) $field['id'], (int) $field['id'] );
[294] Fix | Delete
[295] Fix | Delete
printf( '<input type="hidden" name="fields[%d][id]" value="%d" class="wpforms-field-option-hidden-id">', (int) $field['id'], (int) $field['id'] );
[296] Fix | Delete
[297] Fix | Delete
printf( '<input type="hidden" name="fields[%d][type]" value="%s" class="wpforms-field-option-hidden-type">', (int) $field['id'], esc_attr( $field['type'] ) );
[298] Fix | Delete
[299] Fix | Delete
do_action( "wpforms_builder_fields_options_{$field['type']}", $field );
[300] Fix | Delete
[301] Fix | Delete
echo '</div>';
[302] Fix | Delete
}
[303] Fix | Delete
}
[304] Fix | Delete
[305] Fix | Delete
/**
[306] Fix | Delete
* Editor preview (right pane).
[307] Fix | Delete
*
[308] Fix | Delete
* @since 1.0.0
[309] Fix | Delete
*/
[310] Fix | Delete
public function preview() {
[311] Fix | Delete
[312] Fix | Delete
// Check to make sure the form actually has fields created already.
[313] Fix | Delete
if ( empty( $this->form_data['fields'] ) ) {
[314] Fix | Delete
$this->no_fields_preview();
[315] Fix | Delete
[316] Fix | Delete
return;
[317] Fix | Delete
}
[318] Fix | Delete
[319] Fix | Delete
/**
[320] Fix | Delete
* Filters the fields which must be displayed on the base level on the preview panel in the Form Builder.
[321] Fix | Delete
*
[322] Fix | Delete
* @since 1.7.7
[323] Fix | Delete
*
[324] Fix | Delete
* @param array $fields Form fields data.
[325] Fix | Delete
*/
[326] Fix | Delete
$fields = (array) apply_filters( 'wpforms_builder_panel_fields_preview_fields', $this->form_data['fields'] );
[327] Fix | Delete
[328] Fix | Delete
foreach ( $fields as $field ) {
[329] Fix | Delete
[330] Fix | Delete
$this->preview_single_field(
[331] Fix | Delete
$field,
[332] Fix | Delete
[]
[333] Fix | Delete
);
[334] Fix | Delete
}
[335] Fix | Delete
}
[336] Fix | Delete
[337] Fix | Delete
/**
[338] Fix | Delete
* Preview single field.
[339] Fix | Delete
*
[340] Fix | Delete
* @since 1.7.7
[341] Fix | Delete
*
[342] Fix | Delete
* @param array $field Field data.
[343] Fix | Delete
* @param array $args Additional arguments.
[344] Fix | Delete
*/
[345] Fix | Delete
public function preview_single_field( $field, $args ) {
[346] Fix | Delete
[347] Fix | Delete
$class = ! empty( $field['size'] ) ? 'size-' . esc_attr( $field['size'] ) : '';
[348] Fix | Delete
$class .= ! empty( $field['label_hide'] ) ? ' label_hide' : '';
[349] Fix | Delete
$class .= isset( $field['label'] ) && empty( $field['label'] ) && $field['type'] !== 'html' ? ' label_empty' : '';
[350] Fix | Delete
$class .= ! empty( $field['sublabel_hide'] ) ? ' sublabel_hide' : '';
[351] Fix | Delete
$class .= ! empty( $field['required'] ) ? ' required' : '';
[352] Fix | Delete
$class .= isset( $field['meta']['delete'] ) && $field['meta']['delete'] === false ? ' no-delete' : '';
[353] Fix | Delete
$class .= isset( $field['meta']['duplicate'] ) && $field['meta']['duplicate'] === false ? ' no-duplicate' : '';
[354] Fix | Delete
[355] Fix | Delete
if ( ! empty( $field['input_columns'] ) ) {
[356] Fix | Delete
$class .= $field['input_columns'] === '2' ? ' wpforms-list-2-columns' : '';
[357] Fix | Delete
$class .= $field['input_columns'] === '3' ? ' wpforms-list-3-columns' : '';
[358] Fix | Delete
$class .= $field['input_columns'] === 'inline' ? ' wpforms-list-inline' : '';
[359] Fix | Delete
}
[360] Fix | Delete
[361] Fix | Delete
/**
[362] Fix | Delete
* Filters class attribute of the field preview container in the Form Builder.
[363] Fix | Delete
*
[364] Fix | Delete
* @since 1.4.0
[365] Fix | Delete
*
[366] Fix | Delete
* @param string $css Field preview class.
[367] Fix | Delete
* @param array $field Field data.
[368] Fix | Delete
*/
[369] Fix | Delete
$class = apply_filters( 'wpforms_field_preview_class', $class, $field ); // phpcs:ignore WPForms.PHP.ValidateHooks.InvalidHookName
[370] Fix | Delete
[371] Fix | Delete
if ( ! has_action( "wpforms_display_field_{$field['type']}" ) ) {
[372] Fix | Delete
$this->unavailable_fields_preview( $field );
[373] Fix | Delete
[374] Fix | Delete
return;
[375] Fix | Delete
}
[376] Fix | Delete
[377] Fix | Delete
printf(
[378] Fix | Delete
'<div class="wpforms-field wpforms-field-%1$s %2$s" id="wpforms-field-%3$s" data-field-id="%3$s" data-field-type="%1$s">',
[379] Fix | Delete
esc_attr( $field['type'] ),
[380] Fix | Delete
esc_attr( $class ),
[381] Fix | Delete
wpforms_validate_field_id( $field['id'] )
[382] Fix | Delete
);
[383] Fix | Delete
[384] Fix | Delete
/**
[385] Fix | Delete
* Filters display field duplicate button flag.
[386] Fix | Delete
*
[387] Fix | Delete
* @since 1.5.6.2
[388] Fix | Delete
*
[389] Fix | Delete
* @param bool $display_duplicate_button Display field duplicate button flag.
[390] Fix | Delete
* @param array $field Field data.
[391] Fix | Delete
* @param array $form_data Form data.
[392] Fix | Delete
*/
[393] Fix | Delete
if ( apply_filters( 'wpforms_field_preview_display_duplicate_button', true, $field, $this->form_data ) ) { // phpcs:ignore WPForms.PHP.ValidateHooks.InvalidHookName
[394] Fix | Delete
printf(
[395] Fix | Delete
'<a href="#" class="wpforms-field-duplicate" title="%s"><i class="fa fa-files-o" aria-hidden="true"></i></a>',
[396] Fix | Delete
esc_attr__( 'Duplicate Field', 'wpforms-lite' )
[397] Fix | Delete
);
[398] Fix | Delete
}
[399] Fix | Delete
[400] Fix | Delete
printf(
[401] Fix | Delete
'<a href="#" class="wpforms-field-delete" title="%s"><i class="fa fa-trash-o" aria-hidden="true"></i></a>',
[402] Fix | Delete
esc_attr__( 'Delete Field', 'wpforms-lite' )
[403] Fix | Delete
);
[404] Fix | Delete
[405] Fix | Delete
if ( empty( $_COOKIE['wpforms_field_helper_hide'] ) ) {
[406] Fix | Delete
printf(
[407] Fix | Delete
'<div class="wpforms-field-helper">
[408] Fix | Delete
<span class="wpforms-field-helper-edit">%s</span>
[409] Fix | Delete
<span class="wpforms-field-helper-drag">%s</span>
[410] Fix | Delete
<span class="wpforms-field-helper-hide" title="%s">
[411] Fix | Delete
<i class="fa fa-times-circle" aria-hidden="true"></i>
[412] Fix | Delete
</span>
[413] Fix | Delete
</div>',
[414] Fix | Delete
esc_html__( 'Click to Edit', 'wpforms-lite' ),
[415] Fix | Delete
esc_html__( 'Drag to Reorder', 'wpforms-lite' ),
[416] Fix | Delete
esc_attr__( 'Hide Helper', 'wpforms-lite' )
[417] Fix | Delete
);
[418] Fix | Delete
}
[419] Fix | Delete
[420] Fix | Delete
/**
[421] Fix | Delete
* Fires after the field preview output in the Form Builder.
[422] Fix | Delete
*
[423] Fix | Delete
* @since 1.0.0
[424] Fix | Delete
*
[425] Fix | Delete
* @param array $field Field data.
[426] Fix | Delete
*/
[427] Fix | Delete
do_action( "wpforms_builder_fields_previews_{$field['type']}", $field ); // phpcs:ignore WPForms.PHP.ValidateHooks.InvalidHookName
[428] Fix | Delete
[429] Fix | Delete
echo '</div>';
[430] Fix | Delete
}
[431] Fix | Delete
[432] Fix | Delete
/**
[433] Fix | Delete
* Generate HTML for hidden inputs from given data.
[434] Fix | Delete
*
[435] Fix | Delete
* @since 1.6.7
[436] Fix | Delete
*
[437] Fix | Delete
* @param array $data Field array data.
[438] Fix | Delete
* @param string $name Input name prefix.
[439] Fix | Delete
*/
[440] Fix | Delete
private function generate_hidden_inputs( $data = [], $name = '' ) {
[441] Fix | Delete
[442] Fix | Delete
if ( ! is_array( $data ) || empty( $data ) ) {
[443] Fix | Delete
return;
[444] Fix | Delete
}
[445] Fix | Delete
[446] Fix | Delete
foreach ( $data as $key => $value ) {
[447] Fix | Delete
if ( $key === 'id' ) {
[448] Fix | Delete
continue;
[449] Fix | Delete
}
[450] Fix | Delete
[451] Fix | Delete
$key = ! empty( $data['id'] ) ? sprintf( '[%s][%s]', $data['id'], $key ) : sprintf( '[%s]', $key );
[452] Fix | Delete
[453] Fix | Delete
if ( ! empty( $name ) ) {
[454] Fix | Delete
$key = trim( $name ) . $key;
[455] Fix | Delete
}
[456] Fix | Delete
[457] Fix | Delete
if ( is_array( $value ) ) {
[458] Fix | Delete
$this->generate_hidden_inputs( $value, $key );
[459] Fix | Delete
} else {
[460] Fix | Delete
printf( "<input type='hidden' name='%s' value='%s' />", esc_attr( $key ), esc_attr( $value ) );
[461] Fix | Delete
}
[462] Fix | Delete
}
[463] Fix | Delete
}
[464] Fix | Delete
[465] Fix | Delete
/**
[466] Fix | Delete
* Unavailable builder field display.
[467] Fix | Delete
*
[468] Fix | Delete
* @since 1.6.7
[469] Fix | Delete
*
[470] Fix | Delete
* @param array $field Field array data.
[471] Fix | Delete
*/
[472] Fix | Delete
public function unavailable_fields_preview( $field ) {
[473] Fix | Delete
[474] Fix | Delete
// Using ucwords() for certain fields may generate incorrect words.
[475] Fix | Delete
switch ( $field['type'] ) {
[476] Fix | Delete
case 'url':
[477] Fix | Delete
$field_type = 'URL';
[478] Fix | Delete
break;
[479] Fix | Delete
[480] Fix | Delete
case 'html':
[481] Fix | Delete
$field_type = 'HTML';
[482] Fix | Delete
break;
[483] Fix | Delete
[484] Fix | Delete
case 'gdpr-checkbox':
[485] Fix | Delete
$field_type = 'GDPR Checkbox';
[486] Fix | Delete
break;
[487] Fix | Delete
[488] Fix | Delete
default:
[489] Fix | Delete
$field_type = ucwords( preg_replace( '/[_-]/', ' ', $field['type'] ) );
[490] Fix | Delete
}
[491] Fix | Delete
[492] Fix | Delete
$warning_message = sprintf( /* translators: %s - unavailable field name. */
[493] Fix | Delete
esc_html__( 'Unfortunately, the %s field is not available and will be ignored on the front end.', 'wpforms-lite' ),
[494] Fix | Delete
'<b>' . $field_type . '</b>'
[495] Fix | Delete
);
[496] Fix | Delete
[497] Fix | Delete
$field_id = isset( $field['id'] ) ? $field['id'] : 0;
[498] Fix | Delete
[499] Fix | Delete
12
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function