Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
4bbb614
Add "frm-inline-flex" class and refactor "settings.php" view
shervElmi Jul 11, 2024
b72beba
Enhance "general.php" view
shervElmi Jul 11, 2024
bb34733
Fix HTML validation, and make better HTML
shervElmi Jul 12, 2024
107b596
Add `.frm-my-sm` class
shervElmi Jul 12, 2024
55a6149
Merge remote-tracking branch 'origin/master' into update-currency-field
shervElmi Jul 30, 2024
f670150
Merge branch 'master' into update-currency-field
shervElmi Aug 27, 2024
bc2e040
Merge remote-tracking branch 'origin/HEAD' into update-currency-field
shervElmi Oct 4, 2024
5cbf051
Merge branch 'master' into update-currency-field
shervElmi Oct 8, 2024
dd9d3a2
Merge branch 'master' into update-currency-field
shervElmi Nov 21, 2024
7afa552
Merge remote-tracking branch 'origin/master' into update-currency-field
shervElmi Dec 3, 2024
ce1fc48
Add is_hidden param to show_format_option method and refactor it
shervElmi Dec 10, 2024
cc581b1
Add print_format_number_option method to FrmFieldText class
shervElmi Dec 10, 2024
ca8a9e2
Add format-type view template
shervElmi Dec 10, 2024
a764391
Move format setting
shervElmi Dec 10, 2024
0016cb2
Update text field to include format settings
shervElmi Dec 10, 2024
6a31a6c
Update Paragraph field to include format settings
shervElmi Dec 10, 2024
6e18e25
Remove print_format_number_option method
shervElmi Dec 12, 2024
50ca0ca
Add Number option to format-type template
shervElmi Dec 12, 2024
eca4564
Remove frm-my-sm helper class
shervElmi Dec 12, 2024
f5ba756
Fix: International option selection in Lite version
shervElmi Dec 12, 2024
11eb4a3
Merge remote-tracking branch 'origin/master' into update-currency-field
shervElmi Dec 12, 2024
f32e606
Update format input id
shervElmi Dec 13, 2024
3ac1abe
Enable format settings
shervElmi Dec 13, 2024
d78b213
Update format-type template
shervElmi Dec 13, 2024
2e491fb
Update styles and fix some issues
shervElmi Dec 13, 2024
2ffcc77
Adjust maybeUpdateFormatInput function
shervElmi Dec 13, 2024
6caddaf
Adjust adjustFormatInputBeforeSave function
shervElmi Dec 13, 2024
2faa688
Remove format number checkboxes
shervElmi Dec 13, 2024
d3e6f5e
Update number option value
shervElmi Dec 17, 2024
a4156e6
Use "currency" value for number format
shervElmi Dec 18, 2024
a20cb09
Merge remote-tracking branch 'origin/master' into update-currency-field
shervElmi Dec 22, 2024
ad97b19
Fix JS error when searching fields
shervElmi Dec 22, 2024
e4a5c90
Tweak
shervElmi Dec 23, 2024
05ec900
Fix adjustFormatInputBeforeSave function
shervElmi Dec 23, 2024
755619c
Add format class
shervElmi Dec 23, 2024
15e2621
Fix conflict between custom format and number format
shervElmi Dec 26, 2024
0e6716d
Review part one
shervElmi Jan 1, 2025
66bb225
Review part two
shervElmi Jan 1, 2025
16eb399
Merge remote-tracking branch 'origin/master' into update-currency-field
shervElmi Jan 3, 2025
43a4298
Merge remote-tracking branch 'origin/master' into update-currency-field
shervElmi Jan 6, 2025
7030586
Move the format fields input class to the Pro version
shervElmi Jan 10, 2025
2f45cc4
Enhance kses method to include $echo parameter
shervElmi Jan 10, 2025
7dd51c6
Make format-dropdown template file echo safer
shervElmi Jan 10, 2025
a72422e
Improve the kses method implementation
shervElmi Jan 10, 2025
bcebf4a
Merge remote-tracking branch 'origin/master' into update-currency-field
shervElmi Jan 21, 2025
1e23391
Fix text field validation
shervElmi Jan 23, 2025
d5afcdc
Merge branch 'master' into update-currency-field
shervElmi Jan 27, 2025
220ef84
Normalize formatted numbers before saving
shervElmi Jan 30, 2025
633fa5a
Merge remote-tracking branch 'origin/HEAD' into update-currency-field
shervElmi Jan 31, 2025
6f8dce2
Merge branch 'master' into update-currency-field
Crabcyborg Jan 31, 2025
c34b414
Add render_currency_selector method
shervElmi Feb 3, 2025
1a5e74d
Fix tooltip style issue
shervElmi Feb 3, 2025
fdc9864
Add frm_other_settings_form do_action
shervElmi Feb 3, 2025
56dd10a
Add formidable_settings localize script
shervElmi Feb 3, 2025
017ea43
Add syncCurrencyOptoins
shervElmi Feb 3, 2025
f0337b4
Merge branch 'update-currency-field' of https://github.com/Strategy11…
shervElmi Feb 3, 2025
7383229
Add kses_echo helper method
shervElmi Feb 3, 2025
3804788
Remove format settings
shervElmi Feb 3, 2025
0addb4c
Refactor format-dropdown view and add options view
shervElmi Feb 3, 2025
1bf735a
Use value instead of setAttribute
shervElmi Feb 3, 2025
062b008
Enable in_array strict
shervElmi Feb 3, 2025
dae5ec6
Allow class attribute in <option> tags
shervElmi Feb 3, 2025
776bc47
Add number format
shervElmi Feb 4, 2025
ccc302b
Add data-dependency-skip option
shervElmi Feb 5, 2025
60bb212
Refactor validation logic for clarity
shervElmi Feb 6, 2025
6c978aa
Fix Turkish Liras symbol_right
shervElmi Feb 7, 2025
0705efc
Merge branch 'master' into update-currency-field
Crabcyborg Feb 10, 2025
ddafe30
Address feedback
shervElmi Feb 10, 2025
e484a55
Merge branch 'master' into update-currency-field
Crabcyborg Feb 10, 2025
4c2324a
Fix phpdoc
shervElmi Feb 10, 2025
239260a
Refine method name
shervElmi Feb 10, 2025
373ae3d
Merge branch 'master' into update-currency-field
Crabcyborg Feb 10, 2025
72b5bb8
Fix custom format validate issue
shervElmi Feb 11, 2025
bc26fe6
change validate_step visibility to protected
shervElmi Feb 11, 2025
6a7a788
Merge branch 'master' into update-currency-field
Crabcyborg Feb 11, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions classes/controllers/FrmAppController.php
Original file line number Diff line number Diff line change
Expand Up @@ -668,7 +668,12 @@ public static function admin_js() {
wp_register_script( 'formidable_embed', $plugin_url . '/js/admin/embed.js', array( 'formidable_dom', 'jquery-ui-autocomplete' ), $version, true );
self::register_popper1();
wp_register_script( 'bootstrap_tooltip', $plugin_url . '/js/bootstrap.min.js', array( 'jquery', 'popper' ), '4.6.1', true );

$settings_js_vars = array(
'currencies' => FrmCurrencyHelper::get_currencies(),
);
wp_register_script( 'formidable_settings', $plugin_url . '/js/admin/settings.js', array(), $version, true );
wp_localize_script( 'formidable_settings', 'frmSettings', $settings_js_vars );

if ( self::should_show_floating_links() ) {
self::enqueue_floating_links( $plugin_url, $version );
Expand Down
17 changes: 10 additions & 7 deletions classes/controllers/FrmFieldsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -468,15 +468,17 @@ public static function display_field_options( $settings, $field_info = null ) {
*
* @since 3.0
*
* @param array $field
* @param array $field Field data.
* @param bool $is_hidden Whether the format option should be hidden.
* @return void
*/
public static function show_format_option( $field ) {
$attributes = array();
$attributes['class'] = 'frm-has-modal';
public static function show_format_option( $field, $is_hidden = false ) {
$attributes = array(
'class' => 'frm-has-modal',
'id' => 'frm-field-format-custom-' . $field['id'],
);

if ( 'phone' === $field['type'] ) {
$attributes['id'] = 'frm-phone-field-custom-format-' . $field['id'];
if ( $is_hidden ) {
$attributes['class'] .= ' frm_hidden';
}

Expand Down Expand Up @@ -961,7 +963,8 @@ private static function should_allow_input_attribute( $key ) {
* @return void
*/
private static function add_pattern_attribute( $field, array &$add_html ) {
$has_format = FrmField::is_option_true_in_array( $field, 'format' );
$format_value = FrmField::get_option( $field, 'format' );
$has_format = $format_value && ! FrmCurrencyHelper::is_currency_format( $format_value );
$format_field = FrmField::is_field_type( $field, 'text' );

if ( $field['type'] === 'phone' || ( $has_format && $format_field ) ) {
Expand Down
5 changes: 2 additions & 3 deletions classes/controllers/FrmSettingsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -207,9 +207,8 @@ public static function general_settings() {
* @return void
*/
public static function maybe_render_currency_selector( $frm_settings, $more_html ) {
if ( false !== strpos( $more_html, 'id="frm_currency"' ) ) {
// Avoid rendering the Currency setting if it gets rendered from the frm_settings_form hook.
// This is for backward compatibility. If Pro is outdated there won't be two currency dropdowns.
if ( is_callable( 'FrmProSettingsController::add_currency_settings' ) ) {
FrmProSettingsController::add_currency_settings();
return;
}

Expand Down
18 changes: 18 additions & 0 deletions classes/helpers/FrmAppHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -870,6 +870,19 @@ public static function kses( $value, $allowed = array() ) {
return wp_kses( $value, $allowed_html );
}

/**
* Sanitizes and echoes a given value.
*
* @since x.x
*
* @param string $value The value to sanitize and output.
* @param array|string $allowed Allowed HTML tags and attributes.
* @return void
*/
public static function kses_echo( $value, $allowed = array() ) {
echo self::kses( $value, $allowed ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}

/**
* The regular kses function strips [button_action] from submit button HTML.
*
Expand Down Expand Up @@ -1089,6 +1102,11 @@ private static function safe_html() {
'legend' => array(
'class' => true,
),
'option' => array(
'class' => true,
'value' => true,
'selected' => true,
Comment thread
shervElmi marked this conversation as resolved.
),
);
}

Expand Down
14 changes: 13 additions & 1 deletion classes/helpers/FrmCurrencyHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,18 @@ public static function get_currency( $currency ) {
return $currency;
}

/**
* Checks if the given format is a valid currency format.
*
* @since x.x
*
* @param string $format_value The format value to check.
* @return bool
*/
public static function is_currency_format( $format_value ) {
return in_array( $format_value, array( 'currency', 'number' ), true );
}

/**
* Get a list of all supported currencies.
*
Expand Down Expand Up @@ -290,7 +302,7 @@ public static function get_currencies() {
'TRY' => array(
'name' => __( 'Turkish Liras', 'formidable' ),
'symbol_left' => '',
'symbol_right' => '&#8364;',
'symbol_right' => '&#8378;',
'symbol_padding' => ' ',
'thousand_separator' => '.',
'decimal_separator' => ',',
Expand Down
3 changes: 2 additions & 1 deletion classes/models/FrmEntryValidate.php
Original file line number Diff line number Diff line change
Expand Up @@ -228,8 +228,9 @@ public static function validate_field_types( &$errors, $posted_field, $value, $a
}

public static function validate_phone_field( &$errors, $field, $value, $args ) {
if ( $field->type === 'phone' || ( $field->type === 'text' && FrmField::is_option_true_in_object( $field, 'format' ) ) ) {
$format_value = FrmField::get_option( $field, 'format' );

if ( $field->type === 'phone' || ( $field->type === 'text' && $format_value && ! FrmCurrencyHelper::is_currency_format( $format_value ) ) ) {
$pattern = self::phone_format( $field );

if ( ! preg_match( $pattern, $value ) ) {
Expand Down
31 changes: 15 additions & 16 deletions classes/models/fields/FrmFieldNumber.php
Original file line number Diff line number Diff line change
Expand Up @@ -65,23 +65,22 @@ public function validate( $args ) {
$errors[ 'field' . $args['id'] ] = FrmFieldsHelper::get_error_msg( $this->field, 'invalid' );
}

// validate number settings
if ( $args['value'] != '' ) {
// only check if options are available in settings
$minnum = FrmField::get_option( $this->field, 'minnum' );
$maxnum = FrmField::get_option( $this->field, 'maxnum' );
if ( $maxnum !== '' && $minnum !== '' ) {
$value = (float) $args['value'];
if ( $value < $minnum ) {
$errors[ 'field' . $args['id'] ] = __( 'Please select a higher number', 'formidable' );
} elseif ( $value > $maxnum ) {
$errors[ 'field' . $args['id'] ] = __( 'Please select a lower number', 'formidable' );
}
}

$this->validate_step( $errors, $args );
if ( $args['value'] === '' ) {
return $errors;
}

$value = (float) $args['value'];
$minnum = FrmField::get_option( $this->field, 'minnum' );
$maxnum = FrmField::get_option( $this->field, 'maxnum' );

if ( $minnum !== '' && $value < $minnum ) {
$errors[ 'field' . $args['id'] ] = __( 'Please select a higher number', 'formidable' );
} elseif ( $maxnum !== '' && $value > $maxnum ) {
$errors[ 'field' . $args['id'] ] = __( 'Please select a lower number', 'formidable' );
}
Comment thread
Crabcyborg marked this conversation as resolved.

$this->validate_step( $errors, $args );

return $errors;
}

Expand All @@ -95,7 +94,7 @@ public function validate( $args ) {
*
* @return void
*/
private function validate_step( &$errors, $args ) {
protected function validate_step( &$errors, $args ) {
if ( isset( $errors[ 'field' . $args['id'] ] ) ) {
// Don't need to check if value is invalid before.
return;
Expand Down
5 changes: 2 additions & 3 deletions classes/models/fields/FrmFieldPhone.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public function show_primary_options( $args ) {
$field = $args['field'];

include FrmAppHelper::plugin_path() . '/classes/views/frm-fields/back-end/phone/phone-type.php';
FrmFieldsController::show_format_option( $field );
FrmFieldsController::show_format_option( $field, true );

parent::show_primary_options( $args );
}
Expand All @@ -62,11 +62,10 @@ public function show_primary_options( $args ) {
protected function print_international_option() {
?>
<option
value="international"
value=""
Comment thread
shervElmi marked this conversation as resolved.
class="frm_show_upgrade frm_noallow"
data-upgrade="<?php esc_attr_e( 'International phone field', 'formidable' ); ?>"
data-medium="international-phone-field"
<?php selected( FrmField::get_option( $this->field, 'format' ), 'international' ); ?>
>
<?php esc_html_e( 'International', 'formidable' ); ?>
</option>
Expand Down
51 changes: 51 additions & 0 deletions classes/views/frm-fields/back-end/format-dropdown-options.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<?php
/**
* @package Formidable
* @since x.x
*
* @var array $field Field data.
* @var array $args Includes 'field', 'display', and 'values' settings.
* @var FrmFieldType $this Field type object.
*/

if ( ! defined( 'ABSPATH' ) ) {
die( 'You are not allowed to call this page directly.' );
}

$field_type = $field['type'];
$format = FrmField::get_option( $field, 'format' );

FrmHtmlHelper::echo_dropdown_option( __( 'None', 'formidable' ), '' === $format, array( 'value' => 'none' ) );

FrmHtmlHelper::echo_dropdown_option(
in_array( $field_type, array( 'number', 'range' ), true ) ? __( 'Custom', 'formidable' ) : __( 'Number', 'formidable' ),
false,
array(
'value' => '',
'class' => 'frm_show_upgrade frm_noallow',
'data-upgrade' => __( 'Format number field', 'formidable' ),
'data-medium' => 'format-number-field',
)
);

FrmHtmlHelper::echo_dropdown_option(
__( 'Currency', 'formidable' ),
false,
array(
'value' => '',
'class' => 'frm_show_upgrade frm_noallow',
'data-upgrade' => __( 'Format currency field', 'formidable' ),
'data-medium' => 'format-currency-field',
)
);

if ( 'text' === $field_type ) {
FrmHtmlHelper::echo_dropdown_option(
__( 'Custom', 'formidable' ),
! empty( $format ) && ! FrmCurrencyHelper::is_currency_format( $format ),
array(
'value' => 'custom',
'data-dependency' => '#frm-field-format-custom-' . $field_id,
Comment thread
shervElmi marked this conversation as resolved.
)
);
}
51 changes: 51 additions & 0 deletions classes/views/frm-fields/back-end/format-dropdown.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<?php
/**
* @package Formidable
* @since x.x
*
* @var array $field Field data.
* @var array $args Includes 'field', 'display', and 'values' settings.
* @var FrmFieldType $this Field type object.
*/

if ( ! defined( 'ABSPATH' ) ) {
die( 'You are not allowed to call this page directly.' );
}

$field_id = $field['id'];
?>
<p class="frm6 frm_form_field frm-format-dropdown">
<label for="format_dropdown_<?php echo esc_attr( $field_id ); ?>">
<?php esc_html_e( 'Format', 'formidable' ); ?>
</label>

<select
name="field_options[format_dropdown_<?php echo esc_attr( $field_id ); ?>]"
id="frm_format_dropdown_<?php echo esc_attr( $field_id ); ?>"
class="frm_format_dropdown frm_select_with_upgrade frm_select_with_dependency"
data-field-id="<?php echo intval( $field_id ); ?>"
>
<?php
$options_view_path = FrmAppHelper::plugin_path() . '/classes/views/frm-fields/back-end/format-dropdown-options.php';

/**
* Includes the formatted options view file.
*
* @since x.x
*
* @param string $options_view_path The path to the options view file.
*/
require apply_filters( 'frm_format_options_view_path', $options_view_path );
?>
</select>
</p>

<?php
/**
* Fires after the format dropdown template is rendered.
*
* @since x.x
*
* @param array $field The field array.
*/
do_action( 'frm_after_format_dropdown_template', $field );
2 changes: 1 addition & 1 deletion classes/views/frm-fields/back-end/phone/phone-type.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class="frm_phone_type_dropdown frm_select_with_upgrade frm_select_with_dependenc
<?php esc_html_e( 'None', 'formidable' ); ?>
</option>
<?php $this->print_international_option(); ?>
<option value="custom" data-dependency="#frm-phone-field-custom-format-<?php echo esc_attr( $field_id ); ?>" <?php selected( ! empty( $format ) && 'international' !== $format, true ); ?>>
<option value="custom" data-dependency="#frm-field-format-custom-<?php echo esc_attr( $field_id ); ?>" <?php selected( ! empty( $format ) && 'international' !== $format, true ); ?>>
<?php esc_html_e( 'Custom', 'formidable' ); ?>
</option>
</select>
Expand Down
44 changes: 24 additions & 20 deletions classes/views/frm-fields/back-end/settings.php
Original file line number Diff line number Diff line change
Expand Up @@ -64,35 +64,41 @@
<input type="hidden" name="field_options[name_<?php echo esc_attr( $field['id'] ); ?>]" value="<?php echo esc_attr( $field['name'] ); ?>" id="frm_name_<?php echo esc_attr( $field['id'] ); ?>" />
<?php } ?>

<p class="frm-hide-empty">
<div class="frm-hide-empty frm-inline-flex frm-gap-sm frm-flex-wrap frm-items-center frm-my-xs">
<?php if ( $display['required'] ) { ?>
<label for="frm_req_field_<?php echo esc_attr( $field['id'] ); ?>" class="frm_inline_label">
<input type="checkbox" id="frm_req_field_<?php echo esc_attr( $field['id'] ); ?>" class="frm_req_field" name="field_options[required_<?php echo esc_attr( $field['id'] ); ?>]" value="1" <?php checked( $field['required'], 1 ); ?> />
<?php esc_html_e( 'Required', 'formidable' ); ?>
</label>
<div class="frm_form_field">
<label for="frm_req_field_<?php echo esc_attr( $field['id'] ); ?>" class="frm-mb-0">
<input type="checkbox" id="frm_req_field_<?php echo esc_attr( $field['id'] ); ?>" class="frm_req_field" name="field_options[required_<?php echo esc_attr( $field['id'] ); ?>]" value="1" <?php checked( $field['required'], 1 ); ?> />
<?php esc_html_e( 'Required', 'formidable' ); ?>
</label>
</div>
<?php
}

if ( $display['unique'] ) {
?>
<label for="frm_uniq_field_<?php echo esc_attr( $field['id'] ); ?>" class="frm_inline_label frm_help" title="<?php esc_attr_e( 'Unique: Do not allow the same response multiple times. For example, if one user enters \'Joe\', then no one else will be allowed to enter the same name.', 'formidable' ); ?>"><input type="checkbox" name="field_options[unique_<?php echo esc_attr( $field['id'] ); ?>]" id="frm_uniq_field_<?php echo esc_attr( $field['id'] ); ?>" value="1" <?php checked( $field['unique'], 1 ); ?> class="frm_mark_unique" />
<?php esc_html_e( 'Unique', 'formidable' ); ?>
</label>
<div class="frm_form_field">
<label for="frm_uniq_field_<?php echo esc_attr( $field['id'] ); ?>" class="frm_help frm-mb-0" title="<?php esc_attr_e( 'Unique: Do not allow the same response multiple times. For example, if one user enters \'Joe\', then no one else will be allowed to enter the same name.', 'formidable' ); ?>"><input type="checkbox" name="field_options[unique_<?php echo esc_attr( $field['id'] ); ?>]" id="frm_uniq_field_<?php echo esc_attr( $field['id'] ); ?>" value="1" <?php checked( $field['unique'], 1 ); ?> class="frm_mark_unique" />
<?php esc_html_e( 'Unique', 'formidable' ); ?>
</label>
</div>
<?php
}

if ( $display['read_only'] ) {
?>
<label for="frm_read_only_field_<?php echo esc_attr( $field['id'] ); ?>" class="frm_inline_label frm_help" title="<?php esc_attr_e( 'Read Only: Show this field but do not allow the field value to be edited from the front-end.', 'formidable' ); ?>" >
<input type="checkbox" id="frm_read_only_field_<?php echo esc_attr( $field['id'] ); ?>" name="field_options[read_only_<?php echo esc_attr( $field['id'] ); ?>]" value="1" <?php checked( $field['read_only'], 1 ); ?>/>
<?php esc_html_e( 'Read Only', 'formidable' ); ?>
</label>
<div class="frm_form_field">
<label for="frm_read_only_field_<?php echo esc_attr( $field['id'] ); ?>" class="frm_help frm-mb-0" title="<?php esc_attr_e( 'Read Only: Show this field but do not allow the field value to be edited from the front-end.', 'formidable' ); ?>" >
<input type="checkbox" id="frm_read_only_field_<?php echo esc_attr( $field['id'] ); ?>" name="field_options[read_only_<?php echo esc_attr( $field['id'] ); ?>]" value="1" <?php checked( $field['read_only'], 1 ); ?>/>
<?php esc_html_e( 'Read Only', 'formidable' ); ?>
</label>
</div>
<?php
}

do_action( 'frm_field_options_form_top', $field, $display, $values );
?>
</p>
</div>

<?php
if ( $display['range'] ) {
Expand All @@ -101,6 +107,10 @@

$field_obj->show_primary_options( compact( 'field', 'display', 'values' ) );

if ( $display['format'] ) {
include FrmAppHelper::plugin_path() . '/classes/views/frm-fields/back-end/format-dropdown.php';
FrmFieldsController::show_format_option( $field, true );
}
?>

<?php if ( $display['css'] ) { ?>
Expand Down Expand Up @@ -254,13 +264,7 @@
</p>
<?php } ?>

<?php
if ( $display['format'] ) {
FrmFieldsController::show_format_option( $field );
}

do_action( 'frm_field_options', compact( 'field', 'display', 'values' ) );
?>
<?php do_action( 'frm_field_options', compact( 'field', 'display', 'values' ) ); ?>

<?php if ( $display['required'] ) { ?>
<p class="frm6 frm_form_field frm_required_details<?php echo esc_attr( $field['id'] . ( $field['required'] ? '' : ' frm_hidden' ) ); ?>">
Expand Down
Loading