Version Description
- New: Show a warning if a WordPress parameter is used in the redirect URL to prevent unintented results.
- New: Added frm_is_field_type hook to set if an individual field is shown as radio or checkbox
- New: Show the new pricing fields in the builder for product education.
Download this release
Release Info
Developer | sswells |
Plugin | Formidable Forms – Form Builder for WordPress |
Version | 4.04 |
Comparing to | |
See all releases |
Code changes from version 4.03.07 to 4.04
- classes/controllers/FrmAppController.php +13 -0
- classes/controllers/FrmFieldsController.php +25 -0
- classes/controllers/FrmFormsController.php +20 -3
- classes/helpers/FrmAppHelper.php +12 -4
- classes/helpers/FrmFieldsHelper.php +51 -0
- classes/helpers/FrmFormsHelper.php +153 -0
- classes/models/FrmField.php +36 -3
- classes/models/fields/FrmFieldType.php +62 -2
- classes/views/frm-fields/back-end/field-choices.php +2 -25
- classes/views/frm-fields/back-end/field-options.php +18 -0
- classes/views/frm-fields/back-end/number-range.php +1 -1
- classes/views/frm-fields/back-end/settings.php +1 -1
- classes/views/frm-fields/front-end/dropdown-field.php +2 -13
- classes/views/frm-forms/add_field_links.php +27 -43
- classes/views/shared/errors.php +15 -0
- classes/views/shared/info-overlay.php +20 -0
- css/frm_admin.css +83 -4
- formidable.php +1 -1
- images/icons.svg +16 -0
- js/formidable_admin.js +270 -42
- languages/formidable.pot +236 -179
- readme.txt +15 -14
classes/controllers/FrmAppController.php
CHANGED
@@ -260,6 +260,17 @@ class FrmAppController {
|
|
260 |
include( FrmAppHelper::plugin_path() . '/classes/views/shared/confirm-overlay.php' );
|
261 |
}
|
262 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
263 |
/**
|
264 |
* @since 3.04.02
|
265 |
*/
|
@@ -409,6 +420,7 @@ class FrmAppController {
|
|
409 |
|
410 |
do_action( 'frm_enqueue_builder_scripts' );
|
411 |
self::include_upgrade_overlay();
|
|
|
412 |
} elseif ( FrmAppHelper::is_view_builder_page() ) {
|
413 |
if ( isset( $_REQUEST['post_type'] ) ) {
|
414 |
$post_type = sanitize_title( wp_unslash( $_REQUEST['post_type'] ) );
|
@@ -428,6 +440,7 @@ class FrmAppController {
|
|
428 |
wp_enqueue_script( 'formidable_admin' );
|
429 |
wp_enqueue_style( 'formidable-admin' );
|
430 |
FrmAppHelper::localize_script( 'admin' );
|
|
|
431 |
}
|
432 |
} elseif ( $pagenow == 'widgets.php' ) {
|
433 |
FrmAppHelper::load_admin_wide_js();
|
260 |
include( FrmAppHelper::plugin_path() . '/classes/views/shared/confirm-overlay.php' );
|
261 |
}
|
262 |
|
263 |
+
public static function include_info_overlay() {
|
264 |
+
wp_enqueue_script( 'jquery-ui-dialog' );
|
265 |
+
wp_enqueue_style( 'jquery-ui-dialog' );
|
266 |
+
|
267 |
+
add_action( 'admin_footer', 'FrmAppController::info_overlay_html' );
|
268 |
+
}
|
269 |
+
|
270 |
+
public static function info_overlay_html() {
|
271 |
+
include( FrmAppHelper::plugin_path() . '/classes/views/shared/info-overlay.php' );
|
272 |
+
}
|
273 |
+
|
274 |
/**
|
275 |
* @since 3.04.02
|
276 |
*/
|
420 |
|
421 |
do_action( 'frm_enqueue_builder_scripts' );
|
422 |
self::include_upgrade_overlay();
|
423 |
+
self::include_info_overlay();
|
424 |
} elseif ( FrmAppHelper::is_view_builder_page() ) {
|
425 |
if ( isset( $_REQUEST['post_type'] ) ) {
|
426 |
$post_type = sanitize_title( wp_unslash( $_REQUEST['post_type'] ) );
|
440 |
wp_enqueue_script( 'formidable_admin' );
|
441 |
wp_enqueue_style( 'formidable-admin' );
|
442 |
FrmAppHelper::localize_script( 'admin' );
|
443 |
+
self::include_info_overlay();
|
444 |
}
|
445 |
} elseif ( $pagenow == 'widgets.php' ) {
|
446 |
FrmAppHelper::load_admin_wide_js();
|
classes/controllers/FrmFieldsController.php
CHANGED
@@ -613,6 +613,31 @@ class FrmFieldsController {
|
|
613 |
return $default_value;
|
614 |
}
|
615 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
616 |
/**
|
617 |
* Use HMTL5 placeholder with js fallback
|
618 |
*
|
613 |
return $default_value;
|
614 |
}
|
615 |
|
616 |
+
/**
|
617 |
+
* Maybe add a blank placeholder option before any options
|
618 |
+
* in a dropdown.
|
619 |
+
*
|
620 |
+
* @since 4.04
|
621 |
+
* @return bool True if placeholder was added.
|
622 |
+
*/
|
623 |
+
public static function add_placeholder_to_select( $field ) {
|
624 |
+
$placeholder = FrmField::get_option( $field, 'placeholder' );
|
625 |
+
if ( empty( $placeholder ) ) {
|
626 |
+
$placeholder = self::get_default_value_from_name( $field );
|
627 |
+
}
|
628 |
+
|
629 |
+
if ( $placeholder !== '' ) {
|
630 |
+
?>
|
631 |
+
<option value="">
|
632 |
+
<?php echo esc_html( FrmField::get_option( $field, 'autocom' ) ? '' : $placeholder ); ?>
|
633 |
+
</option>
|
634 |
+
<?php
|
635 |
+
return true;
|
636 |
+
}
|
637 |
+
|
638 |
+
return false;
|
639 |
+
}
|
640 |
+
|
641 |
/**
|
642 |
* Use HMTL5 placeholder with js fallback
|
643 |
*
|
classes/controllers/FrmFormsController.php
CHANGED
@@ -122,8 +122,10 @@ class FrmFormsController {
|
|
122 |
$id = FrmAppHelper::get_param( 'id', '', 'get', 'absint' );
|
123 |
|
124 |
$errors = FrmForm::validate( $_POST );
|
|
|
|
|
125 |
if ( count( $errors ) > 0 ) {
|
126 |
-
return self::get_settings_vars( $id, $errors );
|
127 |
}
|
128 |
|
129 |
do_action( 'frm_before_update_form_settings', $id );
|
@@ -132,7 +134,7 @@ class FrmFormsController {
|
|
132 |
|
133 |
$message = __( 'Settings Successfully Updated', 'formidable' );
|
134 |
|
135 |
-
return self::get_settings_vars( $id, array(),
|
136 |
}
|
137 |
|
138 |
public static function update( $values = array() ) {
|
@@ -897,11 +899,26 @@ class FrmFormsController {
|
|
897 |
}
|
898 |
}
|
899 |
|
900 |
-
public static function get_settings_vars( $id, $errors = array(), $
|
901 |
FrmAppHelper::permission_check( 'frm_edit_forms' );
|
902 |
|
903 |
global $frm_vars;
|
904 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
905 |
$form = FrmForm::getOne( $id );
|
906 |
$fields = FrmField::get_all_for_form( $id );
|
907 |
$values = FrmAppHelper::setup_edit_vars( $form, 'forms', $fields, true );
|
122 |
$id = FrmAppHelper::get_param( 'id', '', 'get', 'absint' );
|
123 |
|
124 |
$errors = FrmForm::validate( $_POST );
|
125 |
+
$warnings = FrmFormsHelper::check_for_warnings( $_POST );
|
126 |
+
|
127 |
if ( count( $errors ) > 0 ) {
|
128 |
+
return self::get_settings_vars( $id, $errors, compact( 'warnings' ) );
|
129 |
}
|
130 |
|
131 |
do_action( 'frm_before_update_form_settings', $id );
|
134 |
|
135 |
$message = __( 'Settings Successfully Updated', 'formidable' );
|
136 |
|
137 |
+
return self::get_settings_vars( $id, array(), compact( 'message', 'warnings' ) );
|
138 |
}
|
139 |
|
140 |
public static function update( $values = array() ) {
|
899 |
}
|
900 |
}
|
901 |
|
902 |
+
public static function get_settings_vars( $id, $errors = array(), $args = array() ) {
|
903 |
FrmAppHelper::permission_check( 'frm_edit_forms' );
|
904 |
|
905 |
global $frm_vars;
|
906 |
|
907 |
+
if ( ! is_array( $args ) ) {
|
908 |
+
// For reverse compatibility.
|
909 |
+
$args = array(
|
910 |
+
'message' => $args,
|
911 |
+
);
|
912 |
+
}
|
913 |
+
|
914 |
+
$defaults = array(
|
915 |
+
'message' => '',
|
916 |
+
'warnings' => array(),
|
917 |
+
);
|
918 |
+
$args = array_merge( $defaults, $args );
|
919 |
+
$message = $args['message'];
|
920 |
+
$warnings = $args['warnings'];
|
921 |
+
|
922 |
$form = FrmForm::getOne( $id );
|
923 |
$fields = FrmField::get_all_for_form( $id );
|
924 |
$values = FrmAppHelper::setup_edit_vars( $form, 'forms', $fields, true );
|
classes/helpers/FrmAppHelper.php
CHANGED
@@ -11,7 +11,7 @@ class FrmAppHelper {
|
|
11 |
/**
|
12 |
* @since 2.0
|
13 |
*/
|
14 |
-
public static $plug_version = '4.
|
15 |
|
16 |
/**
|
17 |
* @since 1.07.02
|
@@ -1168,9 +1168,9 @@ class FrmAppHelper {
|
|
1168 |
|
1169 |
public static function frm_capabilities( $type = 'auto' ) {
|
1170 |
$cap = array(
|
1171 |
-
'frm_view_forms' => __( 'View Forms
|
1172 |
-
'frm_edit_forms' => __( 'Add
|
1173 |
-
'frm_delete_forms' => __( 'Delete Forms
|
1174 |
'frm_change_settings' => __( 'Access this Settings Page', 'formidable' ),
|
1175 |
'frm_view_entries' => __( 'View Entries from Admin Area', 'formidable' ),
|
1176 |
'frm_delete_entries' => __( 'Delete Entries from Admin Area', 'formidable' ),
|
@@ -2265,10 +2265,18 @@ class FrmAppHelper {
|
|
2265 |
'unmatched_parens' => __( 'This calculation has at least one unmatched ( ) { } [ ].', 'formidable' ),
|
2266 |
'view_shortcodes' => __( 'This calculation may have shortcodes that work in Views but not forms.', 'formidable' ),
|
2267 |
'text_shortcodes' => __( 'This calculation may have shortcodes that work in text calculations but not numeric calculations.', 'formidable' ),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2268 |
'repeat_limit_min' => __( 'Please enter a Repeat Limit that is greater than 1.', 'formidable' ),
|
2269 |
'checkbox_limit' => __( 'Please select a limit between 0 and 200.', 'formidable' ),
|
2270 |
'install' => __( 'Install', 'formidable' ),
|
2271 |
'active' => __( 'Active', 'formidable' ),
|
|
|
2272 |
'no_items_found' => __( 'No items found.', 'formidable' ),
|
2273 |
);
|
2274 |
|
11 |
/**
|
12 |
* @since 2.0
|
13 |
*/
|
14 |
+
public static $plug_version = '4.04';
|
15 |
|
16 |
/**
|
17 |
* @since 1.07.02
|
1168 |
|
1169 |
public static function frm_capabilities( $type = 'auto' ) {
|
1170 |
$cap = array(
|
1171 |
+
'frm_view_forms' => __( 'View Forms', 'formidable' ),
|
1172 |
+
'frm_edit_forms' => __( 'Add and Edit Forms', 'formidable' ),
|
1173 |
+
'frm_delete_forms' => __( 'Delete Forms', 'formidable' ),
|
1174 |
'frm_change_settings' => __( 'Access this Settings Page', 'formidable' ),
|
1175 |
'frm_view_entries' => __( 'View Entries from Admin Area', 'formidable' ),
|
1176 |
'frm_delete_entries' => __( 'Delete Entries from Admin Area', 'formidable' ),
|
2265 |
'unmatched_parens' => __( 'This calculation has at least one unmatched ( ) { } [ ].', 'formidable' ),
|
2266 |
'view_shortcodes' => __( 'This calculation may have shortcodes that work in Views but not forms.', 'formidable' ),
|
2267 |
'text_shortcodes' => __( 'This calculation may have shortcodes that work in text calculations but not numeric calculations.', 'formidable' ),
|
2268 |
+
'only_one_action' => __( 'This form action is limited to one per form. Please edit the existing form action.', 'formidable' ),
|
2269 |
+
'unsafe_params' => FrmFormsHelper::reserved_words(),
|
2270 |
+
/* Translators: %s is the name of a Detail Page Slug that is a reserved word.*/
|
2271 |
+
'slug_is_reserved' => sprintf( __( 'The Detail Page Slug "%s" is reserved by WordPress. This may cause problems. Is this intentional?', 'formidable' ), '****' ),
|
2272 |
+
/* Translators: %s is the name of a parameter that is a reserved word. More than one word could be listed here, though that would not be common. */
|
2273 |
+
'param_is_reserved' => sprintf( __( 'The parameter "%s" is reserved by WordPress. This may cause problems when included in the URL. Is this intentional? ', 'formidable' ), '****' ),
|
2274 |
+
'reserved_words' => __( 'See the list of reserved words in WordPress.', 'formidable' ),
|
2275 |
'repeat_limit_min' => __( 'Please enter a Repeat Limit that is greater than 1.', 'formidable' ),
|
2276 |
'checkbox_limit' => __( 'Please select a limit between 0 and 200.', 'formidable' ),
|
2277 |
'install' => __( 'Install', 'formidable' ),
|
2278 |
'active' => __( 'Active', 'formidable' ),
|
2279 |
+
'select_a_field' => __( 'Select a Field', 'formidable' ),
|
2280 |
'no_items_found' => __( 'No items found.', 'formidable' ),
|
2281 |
);
|
2282 |
|
classes/helpers/FrmFieldsHelper.php
CHANGED
@@ -1703,6 +1703,57 @@ class FrmFieldsHelper {
|
|
1703 |
return $field_array + $field_options;
|
1704 |
}
|
1705 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1706 |
/**
|
1707 |
* @deprecated 4.0
|
1708 |
*/
|
1703 |
return $field_array + $field_options;
|
1704 |
}
|
1705 |
|
1706 |
+
/**
|
1707 |
+
* @since 4.04
|
1708 |
+
*/
|
1709 |
+
public static function show_add_field_buttons( $args ) {
|
1710 |
+
$field_key = $args['field_key'];
|
1711 |
+
$field_type = $args['field_type'];
|
1712 |
+
$field_label = FrmAppHelper::icon_by_class( FrmFormsHelper::get_field_link_icon( $field_type ), array( 'echo' => false ) );
|
1713 |
+
$field_name = FrmFormsHelper::get_field_link_name( $field_type );
|
1714 |
+
$field_label .= ' <span>' . $field_name . '</span>';
|
1715 |
+
|
1716 |
+
/* translators: %s: Field name */
|
1717 |
+
$upgrade_label = sprintf( esc_html__( '%s fields', 'formidable' ), $field_name );
|
1718 |
+
|
1719 |
+
// If the individual field isn't allowed, disable it.
|
1720 |
+
$run_filter = true;
|
1721 |
+
$single_no_allow = ' ';
|
1722 |
+
$install_data = '';
|
1723 |
+
$requires = '';
|
1724 |
+
$upgrade_message = '';
|
1725 |
+
$link = isset( $field_type['link'] ) ? esc_url_raw( $field_type['link'] ) : '';
|
1726 |
+
if ( strpos( $field_type['icon'], ' frm_show_upgrade' ) ) {
|
1727 |
+
$single_no_allow .= 'frm_show_upgrade';
|
1728 |
+
$field_type['icon'] = str_replace( ' frm_show_upgrade', '', $field_type['icon'] );
|
1729 |
+
$run_filter = false;
|
1730 |
+
if ( isset( $field_type['addon'] ) ) {
|
1731 |
+
$upgrading = FrmAddonsController::install_link( $field_type['addon'] );
|
1732 |
+
if ( isset( $upgrading['url'] ) ) {
|
1733 |
+
$install_data = json_encode( $upgrading );
|
1734 |
+
}
|
1735 |
+
$requires = FrmFormsHelper::get_plan_required( $upgrading );
|
1736 |
+
} elseif ( isset( $field_type['require'] ) ) {
|
1737 |
+
$requires = $field_type['require'];
|
1738 |
+
}
|
1739 |
+
}
|
1740 |
+
|
1741 |
+
if ( isset( $field_type['message'] ) ) {
|
1742 |
+
$upgrade_message = FrmAppHelper::kses( $field_type['message'], array( 'a', 'img' ) );
|
1743 |
+
}
|
1744 |
+
|
1745 |
+
?>
|
1746 |
+
<li class="frmbutton <?php echo esc_attr( $args['no_allow_class'] . $single_no_allow . ' frm_t' . str_replace( '|', '-', $field_key ) ); ?>" id="<?php echo esc_attr( $field_key ); ?>" data-upgrade="<?php echo esc_attr( $upgrade_label ); ?>" data-message="<?php echo esc_attr( $upgrade_message ); ?>" data-link="<?php echo esc_attr( $link ); ?>" data-medium="builder" data-oneclick="<?php echo esc_attr( $install_data ); ?>" data-content="<?php echo esc_attr( $field_key ); ?>" data-requires="<?php echo esc_attr( $requires ); ?>">
|
1747 |
+
<?php
|
1748 |
+
if ( $run_filter ) {
|
1749 |
+
$field_label = apply_filters( 'frmpro_field_links', $field_label, $args['id'], $field_key );
|
1750 |
+
}
|
1751 |
+
echo FrmAppHelper::kses( $field_label, array( 'a', 'i', 'span', 'use', 'svg' ) ); // WPCS: XSS ok.
|
1752 |
+
?>
|
1753 |
+
</li>
|
1754 |
+
<?php
|
1755 |
+
}
|
1756 |
+
|
1757 |
/**
|
1758 |
* @deprecated 4.0
|
1759 |
*/
|
classes/helpers/FrmFormsHelper.php
CHANGED
@@ -1360,4 +1360,157 @@ BEFORE_HTML;
|
|
1360 |
|
1361 |
return false;
|
1362 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1363 |
}
|
1360 |
|
1361 |
return false;
|
1362 |
}
|
1363 |
+
|
1364 |
+
/**
|
1365 |
+
* Checks for warnings to be displayed after form settings are saved.
|
1366 |
+
*
|
1367 |
+
* @since 4.04
|
1368 |
+
*
|
1369 |
+
* @param array $values The $_POST array, which contains values submitted in a form.
|
1370 |
+
*
|
1371 |
+
* @return array An array of warnings or an empty array.
|
1372 |
+
*/
|
1373 |
+
public static function check_for_warnings( $values ) {
|
1374 |
+
$warnings = array();
|
1375 |
+
|
1376 |
+
$redirect_warning = self::check_redirect_url_for_unsafe_params( $values );
|
1377 |
+
|
1378 |
+
if ( $redirect_warning ) {
|
1379 |
+
$warnings[] = $redirect_warning;
|
1380 |
+
}
|
1381 |
+
|
1382 |
+
return apply_filters( 'frm_check_for_warnings', $warnings, $values );
|
1383 |
+
}
|
1384 |
+
|
1385 |
+
/**
|
1386 |
+
* Checks the redirect URL for params whose names are reserved words.
|
1387 |
+
*
|
1388 |
+
* @since 4.04
|
1389 |
+
*
|
1390 |
+
* @param array $values The $_POST array, which contains the values submitted in a form.
|
1391 |
+
*
|
1392 |
+
* @return bool|string A warning message about unsafe params or false.
|
1393 |
+
*/
|
1394 |
+
private static function check_redirect_url_for_unsafe_params( $values ) {
|
1395 |
+
if ( ! isset( $values['options'] ) ) {
|
1396 |
+
return false;
|
1397 |
+
}
|
1398 |
+
|
1399 |
+
$options = $values['options'];
|
1400 |
+
FrmAppHelper::sanitize_with_html( $options );
|
1401 |
+
|
1402 |
+
if ( ( ! isset( $options['success_action'] ) ) || $options['success_action'] !== 'redirect' || ! isset( $options['success_url'] ) ) {
|
1403 |
+
return false;
|
1404 |
+
}
|
1405 |
+
|
1406 |
+
$unsafe_params_in_redirect = self::get_unsafe_params( $options['success_url'] );
|
1407 |
+
|
1408 |
+
return self::create_unsafe_param_warning( $unsafe_params_in_redirect );
|
1409 |
+
}
|
1410 |
+
|
1411 |
+
/**
|
1412 |
+
* Returns an array of params whose names are reserved words in the specified URL.
|
1413 |
+
*
|
1414 |
+
* @since 4.04
|
1415 |
+
*
|
1416 |
+
* @param string $url The URL whose params are being checked.
|
1417 |
+
*
|
1418 |
+
* @return array An array of params whose names are reserved words or an empty array.
|
1419 |
+
*/
|
1420 |
+
private static function get_unsafe_params( $url ) {
|
1421 |
+
$redirect_components = parse_url( $url );
|
1422 |
+
parse_str( $redirect_components['query'], $redirect_params );
|
1423 |
+
$redirect_param_names = array_keys( $redirect_params );
|
1424 |
+
$reserved_words = self::reserved_words();
|
1425 |
+
$unsafe_params_in_redirect = array_intersect( $redirect_param_names, $reserved_words );
|
1426 |
+
|
1427 |
+
return array_values( $unsafe_params_in_redirect );
|
1428 |
+
}
|
1429 |
+
|
1430 |
+
/**
|
1431 |
+
* Returns a warning if reserved words have been used as param names in the redirect URL.
|
1432 |
+
*
|
1433 |
+
* @since 4.04
|
1434 |
+
*
|
1435 |
+
* @param array $unsafe_params_in_redirect Array of params from the redirect URL whose names are reserved words.
|
1436 |
+
*
|
1437 |
+
* @return bool|string A string with an unsafe param message or false.
|
1438 |
+
*/
|
1439 |
+
private static function create_unsafe_param_warning( $unsafe_params_in_redirect ) {
|
1440 |
+
$count = count( $unsafe_params_in_redirect );
|
1441 |
+
$caution = esc_html__( 'Is this intentional?', 'formidable' );
|
1442 |
+
$reserved_words_intro = esc_html__( 'See the list of reserved words in WordPress.', 'formidable' );
|
1443 |
+
$reserved_words_link = '<a href="https://codex.wordpress.org/WordPress_Query_Vars" target="_blank"> ' . $reserved_words_intro . '</a>';
|
1444 |
+
|
1445 |
+
if ( $count === 0 ) {
|
1446 |
+
return false;
|
1447 |
+
}
|
1448 |
+
|
1449 |
+
if ( $count == 1 ) {
|
1450 |
+
/* translators: %s: the name of a single parameter in the redirect URL */
|
1451 |
+
return sprintf( esc_html__( 'The redirect URL is using the parameter "%s", which is reserved by WordPress. ', 'formidable' ), $unsafe_params_in_redirect[0] ) . $caution . $reserved_words_link;
|
1452 |
+
}
|
1453 |
+
|
1454 |
+
$unsafe_params_string = implode( '", "', $unsafe_params_in_redirect );
|
1455 |
+
|
1456 |
+
/* translators: %s: the names of two or more parameters in the redirect URL, separated by commas */
|
1457 |
+
return sprintf( esc_html__( 'The redirect URL is using the parameters "%s", which are reserved by WordPress. ', 'formidable' ), $unsafe_params_string ) . $caution . $reserved_words_link;
|
1458 |
+
}
|
1459 |
+
|
1460 |
+
/**
|
1461 |
+
* Returns an array of common reserved words in WordPress.
|
1462 |
+
*
|
1463 |
+
* An edited list of reserved terms from the Codex.
|
1464 |
+
* https://codex.wordpress.org/Reserved_Terms
|
1465 |
+
*
|
1466 |
+
* @since 4.04
|
1467 |
+
*
|
1468 |
+
* @return array Array of WordPress reserved words.
|
1469 |
+
*/
|
1470 |
+
public static function reserved_words() {
|
1471 |
+
return array(
|
1472 |
+
'id',
|
1473 |
+
'attachment',
|
1474 |
+
'author',
|
1475 |
+
'author_name',
|
1476 |
+
'calendar',
|
1477 |
+
'cat',
|
1478 |
+
'category',
|
1479 |
+
'category_name',
|
1480 |
+
'cpage',
|
1481 |
+
'custom',
|
1482 |
+
'day',
|
1483 |
+
'date',
|
1484 |
+
'error',
|
1485 |
+
'feed',
|
1486 |
+
'hour',
|
1487 |
+
'm',
|
1488 |
+
'minute',
|
1489 |
+
'more',
|
1490 |
+
'name',
|
1491 |
+
'order',
|
1492 |
+
'p',
|
1493 |
+
'page',
|
1494 |
+
'page_id',
|
1495 |
+
'paged',
|
1496 |
+
'pb',
|
1497 |
+
'post',
|
1498 |
+
'posts',
|
1499 |
+
'preview',
|
1500 |
+
's',
|
1501 |
+
'search',
|
1502 |
+
'second',
|
1503 |
+
'sentence',
|
1504 |
+
'tag',
|
1505 |
+
'taxonomy',
|
1506 |
+
'tb',
|
1507 |
+
'term',
|
1508 |
+
'terms',
|
1509 |
+
'theme',
|
1510 |
+
'title',
|
1511 |
+
'type',
|
1512 |
+
'w',
|
1513 |
+
'year',
|
1514 |
+
);
|
1515 |
+
}
|
1516 |
}
|
classes/models/FrmField.php
CHANGED
@@ -175,6 +175,21 @@ class FrmField {
|
|
175 |
<img src="https://s3.amazonaws.com/fp.strategy11.com/images/appointments/appointments.png" alt="Scheduling" />',
|
176 |
'link' => 'https://simplyscheduleappointments.com/meet/formidable/',
|
177 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
178 |
);
|
179 |
|
180 |
// Since the signature field may be in a different section, don't show it twice.
|
@@ -944,7 +959,16 @@ class FrmField {
|
|
944 |
}
|
945 |
|
946 |
public static function get_option_in_array( $field, $option ) {
|
947 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
948 |
}
|
949 |
|
950 |
public static function get_option_in_object( $field, $option ) {
|
@@ -1030,10 +1054,19 @@ class FrmField {
|
|
1030 |
$field_type = self::get_original_field_type( $field );
|
1031 |
$data_type = self::get_option( $field, 'data_type' );
|
1032 |
|
1033 |
-
|
1034 |
$is_type === $field_type ||
|
1035 |
( 'data' === $field_type && $is_type === $data_type ) ||
|
1036 |
-
( 'lookup' === $field_type && $is_type === $data_type )
|
|
|
1037 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1038 |
}
|
1039 |
}
|
175 |
<img src="https://s3.amazonaws.com/fp.strategy11.com/images/appointments/appointments.png" alt="Scheduling" />',
|
176 |
'link' => 'https://simplyscheduleappointments.com/meet/formidable/',
|
177 |
),
|
178 |
+
'product' => array(
|
179 |
+
'name' => __( 'Product', 'formidable' ),
|
180 |
+
'icon' => 'frm_icon_font frm_product_icon',
|
181 |
+
'section' => 'pricing',
|
182 |
+
),
|
183 |
+
'quantity' => array(
|
184 |
+
'name' => __( 'Quantity', 'formidable' ),
|
185 |
+
'icon' => 'frm_icon_font frm_quantity_icon',
|
186 |
+
'section' => 'pricing',
|
187 |
+
),
|
188 |
+
'total' => array(
|
189 |
+
'name' => __( 'Total', 'formidable' ),
|
190 |
+
'icon' => 'frm_icon_font frm_total_icon',
|
191 |
+
'section' => 'pricing',
|
192 |
+
),
|
193 |
);
|
194 |
|
195 |
// Since the signature field may be in a different section, don't show it twice.
|
959 |
}
|
960 |
|
961 |
public static function get_option_in_array( $field, $option ) {
|
962 |
+
|
963 |
+
if ( isset( $field[ $option ] ) ) {
|
964 |
+
$this_option = $field[ $option ];
|
965 |
+
} elseif ( isset( $field['field_options'] ) && is_array( $field['field_options'] ) && isset( $field['field_options'][ $option ] ) ) {
|
966 |
+
$this_option = $field['field_options'][ $option ];
|
967 |
+
} else {
|
968 |
+
$this_option = '';
|
969 |
+
}
|
970 |
+
|
971 |
+
return $this_option;
|
972 |
}
|
973 |
|
974 |
public static function get_option_in_object( $field, $option ) {
|
1054 |
$field_type = self::get_original_field_type( $field );
|
1055 |
$data_type = self::get_option( $field, 'data_type' );
|
1056 |
|
1057 |
+
$is_field_type = (
|
1058 |
$is_type === $field_type ||
|
1059 |
( 'data' === $field_type && $is_type === $data_type ) ||
|
1060 |
+
( 'lookup' === $field_type && $is_type === $data_type ) ||
|
1061 |
+
( 'product' === $field_type && $is_type === $data_type )
|
1062 |
);
|
1063 |
+
|
1064 |
+
/**
|
1065 |
+
* When a field type is checked, allow individual fields
|
1066 |
+
* to set the type.
|
1067 |
+
*
|
1068 |
+
* @since 4.04
|
1069 |
+
*/
|
1070 |
+
return apply_filters( 'frm_is_field_type', $is_field_type, compact( 'field', 'is_type' ) );
|
1071 |
}
|
1072 |
}
|
classes/models/fields/FrmFieldType.php
CHANGED
@@ -369,12 +369,65 @@ DEFAULT_HTML;
|
|
369 |
}
|
370 |
|
371 |
$this->field_choices_heading( $args );
|
372 |
-
|
|
|
373 |
include( FrmAppHelper::plugin_path() . '/classes/views/frm-fields/back-end/field-choices.php' );
|
374 |
$this->show_extra_field_choices( $args );
|
375 |
echo '</div>';
|
376 |
}
|
377 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
378 |
/**
|
379 |
* Should the section for adding choices show for this field?
|
380 |
*
|
@@ -407,7 +460,7 @@ DEFAULT_HTML;
|
|
407 |
protected function field_choices_heading( $args ) {
|
408 |
$all_field_types = array_merge( FrmField::pro_field_selection(), FrmField::field_selection() );
|
409 |
?>
|
410 |
-
<h3
|
411 |
<?php
|
412 |
printf(
|
413 |
/* translators: %s: Field type */
|
@@ -420,6 +473,13 @@ DEFAULT_HTML;
|
|
420 |
<?php
|
421 |
}
|
422 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
423 |
/**
|
424 |
* This is called for any fields with set options (radio, checkbox, select, dynamic, lookup).
|
425 |
*
|
369 |
}
|
370 |
|
371 |
$this->field_choices_heading( $args );
|
372 |
+
|
373 |
+
echo '<div class="frm_grid_container frm-collapse-me' . esc_attr( $this->extra_field_choices_class() ) . '">';
|
374 |
include( FrmAppHelper::plugin_path() . '/classes/views/frm-fields/back-end/field-choices.php' );
|
375 |
$this->show_extra_field_choices( $args );
|
376 |
echo '</div>';
|
377 |
}
|
378 |
|
379 |
+
/**
|
380 |
+
* @since 4.04
|
381 |
+
*/
|
382 |
+
public function show_field_options( $args ) {
|
383 |
+
if ( ! $this->should_continue_to_field_options( $args ) ) {
|
384 |
+
return;
|
385 |
+
}
|
386 |
+
|
387 |
+
$has_options = ! empty( $args['field']['options'] );
|
388 |
+
$short_name = FrmAppHelper::truncate( strip_tags( str_replace( '"', '"', $args['field']['name'] ) ), 20 );
|
389 |
+
|
390 |
+
/* translators: %s: Field name */
|
391 |
+
$option_title = sprintf( __( '%s Options', 'formidable' ), $short_name );
|
392 |
+
|
393 |
+
include( FrmAppHelper::plugin_path() . '/classes/views/frm-fields/back-end/field-options.php' );
|
394 |
+
}
|
395 |
+
|
396 |
+
/**
|
397 |
+
* @since 4.04
|
398 |
+
*/
|
399 |
+
protected function should_continue_to_field_options( $args ) {
|
400 |
+
return in_array( $args['field']['type'], array( 'select', 'radio', 'checkbox' ) );
|
401 |
+
}
|
402 |
+
|
403 |
+
/**
|
404 |
+
* @since 4.04
|
405 |
+
*/
|
406 |
+
protected function get_bulk_edit_string() {
|
407 |
+
return __( 'Bulk Edit Options', 'formidable' );
|
408 |
+
}
|
409 |
+
|
410 |
+
/**
|
411 |
+
* @since 4.04
|
412 |
+
*/
|
413 |
+
protected function get_add_option_string() {
|
414 |
+
return __( 'Add Option', 'formidable' );
|
415 |
+
}
|
416 |
+
|
417 |
+
/**
|
418 |
+
* @since 4.04
|
419 |
+
*/
|
420 |
+
protected function show_single_option( $args ) {
|
421 |
+
FrmFieldsHelper::show_single_option( $args['field'] );
|
422 |
+
}
|
423 |
+
|
424 |
+
/**
|
425 |
+
* @since 4.04
|
426 |
+
*/
|
427 |
+
protected function extra_field_choices_class() {
|
428 |
+
return '';
|
429 |
+
}
|
430 |
+
|
431 |
/**
|
432 |
* Should the section for adding choices show for this field?
|
433 |
*
|
460 |
protected function field_choices_heading( $args ) {
|
461 |
$all_field_types = array_merge( FrmField::pro_field_selection(), FrmField::field_selection() );
|
462 |
?>
|
463 |
+
<h3 <?php $this->field_choices_heading_attrs( $args ); ?>>
|
464 |
<?php
|
465 |
printf(
|
466 |
/* translators: %s: Field type */
|
473 |
<?php
|
474 |
}
|
475 |
|
476 |
+
/**
|
477 |
+
* @since 4.04
|
478 |
+
*/
|
479 |
+
protected function field_choices_heading_attrs( $args ) {
|
480 |
+
return;
|
481 |
+
}
|
482 |
+
|
483 |
/**
|
484 |
* This is called for any fields with set options (radio, checkbox, select, dynamic, lookup).
|
485 |
*
|
classes/views/frm-fields/back-end/field-choices.php
CHANGED
@@ -5,29 +5,6 @@ if ( isset( $args['field']['post_field'] ) && $args['field']['post_field'] == 'p
|
|
5 |
<?php echo FrmFieldsHelper::get_term_link( $args['field']['taxonomy'] ); // WPCS: XSS ok. ?>
|
6 |
</div>
|
7 |
<?php
|
8 |
-
}
|
9 |
-
$
|
10 |
-
$short_name = FrmAppHelper::truncate( strip_tags( str_replace( '"', '"', $args['field']['name'] ) ), 20 );
|
11 |
-
|
12 |
-
/* translators: %s: Field name */
|
13 |
-
$option_title = sprintf( __( '%s Options', 'formidable' ), $short_name );
|
14 |
-
|
15 |
-
?>
|
16 |
-
<span class="frm-bulk-edit-link">
|
17 |
-
<a href="#" title="<?php echo esc_attr( $option_title ); ?>" class="frm-bulk-edit-link">
|
18 |
-
<?php esc_html_e( 'Bulk Edit Options', 'formidable' ); ?>
|
19 |
-
</a>
|
20 |
-
</span>
|
21 |
-
<?php do_action( 'frm_add_multiple_opts_labels', $args['field'] ); ?>
|
22 |
-
<ul id="frm_field_<?php echo esc_attr( $args['field']['id'] ); ?>_opts" class="frm_sortable_field_opts frm_clear<?php echo ( count( $args['field']['options'] ) > 10 ) ? ' frm_field_opts_list' : ''; ?> frm_add_remove" data-key="<?php echo esc_attr( $args['field']['field_key'] ); ?>">
|
23 |
-
<?php FrmFieldsHelper::show_single_option( $args['field'] ); ?>
|
24 |
-
</ul>
|
25 |
-
<div class="frm6 frm_form_field">
|
26 |
-
<a href="javascript:void(0);" data-opttype="single" class="frm_cb_button frm-small-add frm_add_opt frm6 frm_form_field" id="frm_add_opt_<?php echo esc_attr( $args['field']['id'] ); ?>">
|
27 |
-
<span class="frm_icon_font frm_add_tag"></span>
|
28 |
-
<?php esc_html_e( 'Add Option', 'formidable' ); ?>
|
29 |
-
</a>
|
30 |
-
</div>
|
31 |
-
|
32 |
-
<?php
|
33 |
}
|
5 |
<?php echo FrmFieldsHelper::get_term_link( $args['field']['taxonomy'] ); // WPCS: XSS ok. ?>
|
6 |
</div>
|
7 |
<?php
|
8 |
+
} else {
|
9 |
+
$this->show_field_options( $args );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
}
|
classes/views/frm-fields/back-end/field-options.php
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<span class="frm-bulk-edit-link">
|
2 |
+
<a href="#" title="<?php echo esc_attr( $option_title ); ?>" class="frm-bulk-edit-link">
|
3 |
+
<?php echo esc_html( $this->get_bulk_edit_string() ); ?>
|
4 |
+
</a>
|
5 |
+
</span>
|
6 |
+
|
7 |
+
<?php do_action( 'frm_add_multiple_opts_labels', $args['field'] ); ?>
|
8 |
+
|
9 |
+
<ul id="frm_field_<?php echo esc_attr( $args['field']['id'] ); ?>_opts" class="frm_sortable_field_opts frm_clear<?php echo ( count( $args['field']['options'] ) > 10 ) ? ' frm_field_opts_list' : ''; ?> frm_add_remove" data-key="<?php echo esc_attr( $args['field']['field_key'] ); ?>">
|
10 |
+
<?php $this->show_single_option( $args ); ?>
|
11 |
+
</ul>
|
12 |
+
|
13 |
+
<div class="frm6 frm_form_field">
|
14 |
+
<a href="javascript:void(0);" data-opttype="single" class="frm_cb_button frm-small-add frm_add_opt frm6 frm_form_field" id="frm_add_opt_<?php echo esc_attr( $args['field']['id'] ); ?>">
|
15 |
+
<span class="frm_icon_font frm_add_tag"></span>
|
16 |
+
<?php echo esc_html( $this->get_add_option_string() ); ?>
|
17 |
+
</a>
|
18 |
+
</div>
|
classes/views/frm-fields/back-end/number-range.php
CHANGED
@@ -11,7 +11,7 @@
|
|
11 |
</span>
|
12 |
</span>
|
13 |
</p>
|
14 |
-
<p class="frm3 frm_last frm_form_field">
|
15 |
<label for="frm_step_<?php echo esc_attr( $field['field_key'] ); ?>">
|
16 |
<?php esc_html_e( 'Step', 'formidable' ); ?>
|
17 |
</label>
|
11 |
</span>
|
12 |
</span>
|
13 |
</p>
|
14 |
+
<p class="frm3 frm_last frm_form_field frm-step">
|
15 |
<label for="frm_step_<?php echo esc_attr( $field['field_key'] ); ?>">
|
16 |
<?php esc_html_e( 'Step', 'formidable' ); ?>
|
17 |
</label>
|
classes/views/frm-fields/back-end/settings.php
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
<div class="frm-single-settings frm_hidden frm-fields" id="frm-single-settings-<?php echo esc_attr( $field['id'] ); ?>" data-fid="<?php echo esc_attr( $field['id'] ); ?>">
|
2 |
<input type="hidden" name="frm_fields_submitted[]" value="<?php echo esc_attr( $field['id'] ); ?>" />
|
3 |
<input type="hidden" name="field_options[field_order_<?php echo esc_attr( $field['id'] ); ?>]" value="<?php echo esc_attr( $field['field_order'] ); ?>"/>
|
4 |
|
1 |
+
<div class="frm-single-settings frm_hidden frm-fields frm-type-<?php echo esc_attr( $field['type'] ); ?>" id="frm-single-settings-<?php echo esc_attr( $field['id'] ); ?>" data-fid="<?php echo esc_attr( $field['id'] ); ?>">
|
2 |
<input type="hidden" name="frm_fields_submitted[]" value="<?php echo esc_attr( $field['id'] ); ?>" />
|
3 |
<input type="hidden" name="field_options[field_order_<?php echo esc_attr( $field['id'] ); ?>]" value="<?php echo esc_attr( $field['field_order'] ); ?>"/>
|
4 |
|
classes/views/frm-fields/front-end/dropdown-field.php
CHANGED
@@ -18,20 +18,9 @@ if ( isset( $field['post_field'] ) && $field['post_field'] == 'post_category' &&
|
|
18 |
<?php
|
19 |
}
|
20 |
|
21 |
-
$placeholder =
|
22 |
-
if ( empty( $placeholder ) ) {
|
23 |
-
$placeholder = FrmFieldsController::get_default_value_from_name( $field );
|
24 |
-
}
|
25 |
|
26 |
$skipped = false;
|
27 |
-
if ( $placeholder !== '' ) {
|
28 |
-
?>
|
29 |
-
<option value="">
|
30 |
-
<?php echo esc_html( FrmField::get_option( $field, 'autocom' ) ? '' : $placeholder ); ?>
|
31 |
-
</option>
|
32 |
-
<?php
|
33 |
-
}
|
34 |
-
|
35 |
$other_opt = false;
|
36 |
$other_checked = false;
|
37 |
if ( empty( $field['options'] ) ) {
|
@@ -48,7 +37,7 @@ if ( isset( $field['post_field'] ) && $field['post_field'] == 'post_category' &&
|
|
48 |
}
|
49 |
}
|
50 |
|
51 |
-
if (
|
52 |
$skipped = true;
|
53 |
continue;
|
54 |
}
|
18 |
<?php
|
19 |
}
|
20 |
|
21 |
+
$placeholder = FrmFieldsController::add_placeholder_to_select( $field );
|
|
|
|
|
|
|
22 |
|
23 |
$skipped = false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
$other_opt = false;
|
25 |
$other_checked = false;
|
26 |
if ( empty( $field['options'] ) ) {
|
37 |
}
|
38 |
}
|
39 |
|
40 |
+
if ( $placeholder && $opt == '' && ! $skipped ) {
|
41 |
$skipped = true;
|
42 |
continue;
|
43 |
}
|
classes/views/frm-forms/add_field_links.php
CHANGED
@@ -44,7 +44,17 @@ if ( $no_allow_class === 'frm_noallow' ) {
|
|
44 |
$no_allow_class .= ' frm_show_upgrade';
|
45 |
}
|
46 |
|
47 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
|
49 |
if ( is_array( $field_type ) && isset( $field_type['switch_from'] ) ) {
|
50 |
continue;
|
@@ -74,48 +84,7 @@ foreach ( FrmField::pro_field_selection() as $field_key => $field_type ) {
|
|
74 |
</li>
|
75 |
<?php
|
76 |
} else {
|
77 |
-
|
78 |
-
$field_name = FrmFormsHelper::get_field_link_name( $field_type );
|
79 |
-
$field_label .= ' <span>' . $field_name . '</span>';
|
80 |
-
|
81 |
-
/* translators: %s: Field name */
|
82 |
-
$upgrade_label = sprintf( esc_html__( '%s fields', 'formidable' ), $field_name );
|
83 |
-
|
84 |
-
// If the individual field isn't allowed, disable it.
|
85 |
-
$run_filter = true;
|
86 |
-
$single_no_allow = ' ';
|
87 |
-
$install_data = '';
|
88 |
-
$requires = '';
|
89 |
-
$upgrade_message = '';
|
90 |
-
$link = isset( $field_type['link'] ) ? esc_url_raw( $field_type['link'] ) : '';
|
91 |
-
if ( strpos( $field_type['icon'], ' frm_show_upgrade' ) ) {
|
92 |
-
$single_no_allow .= 'frm_show_upgrade';
|
93 |
-
$field_type['icon'] = str_replace( ' frm_show_upgrade', '', $field_type['icon'] );
|
94 |
-
$run_filter = false;
|
95 |
-
if ( isset( $field_type['addon'] ) ) {
|
96 |
-
$upgrading = FrmAddonsController::install_link( $field_type['addon'] );
|
97 |
-
if ( isset( $upgrading['url'] ) ) {
|
98 |
-
$install_data = json_encode( $upgrading );
|
99 |
-
}
|
100 |
-
$requires = FrmFormsHelper::get_plan_required( $upgrading );
|
101 |
-
} elseif ( isset( $field_type['require'] ) ) {
|
102 |
-
$requires = $field_type['require'];
|
103 |
-
}
|
104 |
-
}
|
105 |
-
|
106 |
-
if ( isset( $field_type['message'] ) ) {
|
107 |
-
$upgrade_message = FrmAppHelper::kses( $field_type['message'], array( 'a', 'img' ) );
|
108 |
-
}
|
109 |
-
?>
|
110 |
-
<li class="frmbutton <?php echo esc_attr( $no_allow_class . $single_no_allow . ' frm_t' . str_replace( '|', '-', $field_key ) ); ?>" id="<?php echo esc_attr( $field_key ); ?>" data-upgrade="<?php echo esc_attr( $upgrade_label ); ?>" data-message="<?php echo esc_attr( $upgrade_message ); ?>" data-link="<?php echo esc_attr( $link ); ?>" data-medium="builder" data-oneclick="<?php echo esc_attr( $install_data ); ?>" data-content="<?php echo esc_attr( $field_key ); ?>" data-requires="<?php echo esc_attr( $requires ); ?>">
|
111 |
-
<?php
|
112 |
-
if ( $run_filter ) {
|
113 |
-
$field_label = apply_filters( 'frmpro_field_links', $field_label, $id, $field_key );
|
114 |
-
}
|
115 |
-
echo FrmAppHelper::kses( $field_label, array( 'a', 'i', 'span', 'use', 'svg' ) ); // WPCS: XSS ok.
|
116 |
-
?>
|
117 |
-
</li>
|
118 |
-
<?php
|
119 |
}
|
120 |
|
121 |
unset( $field_key, $field_type, $field_label );
|
@@ -123,6 +92,21 @@ foreach ( FrmField::pro_field_selection() as $field_key => $field_type ) {
|
|
123 |
?>
|
124 |
</ul>
|
125 |
<div class="clear"></div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
126 |
</div>
|
127 |
<?php do_action( 'frm_extra_form_instructions' ); ?>
|
128 |
|
44 |
$no_allow_class .= ' frm_show_upgrade';
|
45 |
}
|
46 |
|
47 |
+
$pro_fields = FrmField::pro_field_selection();
|
48 |
+
$field_sections = array();
|
49 |
+
foreach ( $pro_fields as $field_key => $field_type ) {
|
50 |
+
|
51 |
+
if ( isset( $field_type['section'] ) ) {
|
52 |
+
if ( ! isset( $field_sections[ $field_type['section'] ] ) ) {
|
53 |
+
$field_sections[ $field_type['section'] ] = array();
|
54 |
+
}
|
55 |
+
$field_sections[ $field_type['section'] ][ $field_key ] = $field_type;
|
56 |
+
continue;
|
57 |
+
}
|
58 |
|
59 |
if ( is_array( $field_type ) && isset( $field_type['switch_from'] ) ) {
|
60 |
continue;
|
84 |
</li>
|
85 |
<?php
|
86 |
} else {
|
87 |
+
FrmFieldsHelper::show_add_field_buttons( compact( 'field_key', 'field_type', 'id', 'no_allow_class' ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
}
|
89 |
|
90 |
unset( $field_key, $field_type, $field_label );
|
92 |
?>
|
93 |
</ul>
|
94 |
<div class="clear"></div>
|
95 |
+
|
96 |
+
<?php foreach ( $field_sections as $section => $section_fields ) { ?>
|
97 |
+
<h3 class="frm-with-line">
|
98 |
+
<span><?php esc_html_e( 'Pricing Fields', 'formidable' ); ?></span>
|
99 |
+
</h3>
|
100 |
+
<ul class="field_type_list">
|
101 |
+
<?php
|
102 |
+
foreach ( $section_fields as $field_key => $field_type ) {
|
103 |
+
FrmFieldsHelper::show_add_field_buttons( compact( 'field_key', 'field_type', 'id', 'no_allow_class' ) );
|
104 |
+
unset( $field_key, $field_type );
|
105 |
+
}
|
106 |
+
?>
|
107 |
+
</ul>
|
108 |
+
<div class="clear"></div>
|
109 |
+
<?php } ?>
|
110 |
</div>
|
111 |
<?php do_action( 'frm_extra_form_instructions' ); ?>
|
112 |
|
classes/views/shared/errors.php
CHANGED
@@ -9,6 +9,21 @@ if ( isset( $message ) && '' !== $message ) {
|
|
9 |
}
|
10 |
}
|
11 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
if ( isset( $errors ) && is_array( $errors ) && count( $errors ) > 0 ) {
|
13 |
?>
|
14 |
<div class="frm_error_style inline" role="alert">
|
9 |
}
|
10 |
}
|
11 |
|
12 |
+
if ( isset( $warnings ) && is_array( $warnings ) && count( $warnings ) > 0 ) {
|
13 |
+
?>
|
14 |
+
<div class="frm_warning_style inline" role="alert">
|
15 |
+
<div class="frm_warning_heading"> <?php echo esc_html__( 'Warning:', 'formidable' ); ?></div>
|
16 |
+
<ul id="frm_warnings">
|
17 |
+
<?php
|
18 |
+
foreach ( $warnings as $warning ) {
|
19 |
+
echo '<li>' . FrmAppHelper::kses( $warning, array( 'a', 'br' ) ) . '</li>'; // WPCS: XSS ok.
|
20 |
+
}
|
21 |
+
?>
|
22 |
+
</ul>
|
23 |
+
</div>
|
24 |
+
<?php
|
25 |
+
}
|
26 |
+
|
27 |
if ( isset( $errors ) && is_array( $errors ) && count( $errors ) > 0 ) {
|
28 |
?>
|
29 |
<div class="frm_error_style inline" role="alert">
|
classes/views/shared/info-overlay.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div id="frm_info_modal" class="frm_hidden frm-inline-modal frm-info-modal">
|
2 |
+
<div class="metabox-holder">
|
3 |
+
<div class="postbox">
|
4 |
+
<a href="#" class="dismiss alignright" title="<?php esc_attr_e( 'Dismiss this message', 'formidable' ); ?>">
|
5 |
+
<?php FrmAppHelper::icon_by_class( 'frmfont frm_close_icon', array( 'aria-label' => 'Dismiss' ) ); ?>
|
6 |
+
</a>
|
7 |
+
<div class="inside">
|
8 |
+
<div class="info-modal-inside frmcenter">
|
9 |
+
<p class="frm-info-msg">
|
10 |
+
<?php esc_html_e( 'Are you sure?', 'formidable' ); ?>
|
11 |
+
</p>
|
12 |
+
<br/>
|
13 |
+
<a href="#" id="frm-info-click" class="button button-primary frm-button-primary dismiss">
|
14 |
+
<?php esc_html_e( 'Got it!', 'formidable' ); ?>
|
15 |
+
</a>
|
16 |
+
</div>
|
17 |
+
</div>
|
18 |
+
</div>
|
19 |
+
</div>
|
20 |
+
</div>
|
css/frm_admin.css
CHANGED
@@ -14,7 +14,6 @@
|
|
14 |
--sidebar-hover: rgb(227, 232, 235);
|
15 |
--primary-color: rgb(65, 153, 253);
|
16 |
--primary-hover: rgb(49, 119, 199);
|
17 |
-
--tooltip-font-size: 14px;
|
18 |
--green: rgb(63, 172, 37);
|
19 |
--orange: #F15A24;
|
20 |
--pink: rgb(226, 42, 110);
|
@@ -594,8 +593,10 @@ p.frm_has_shortcodes {
|
|
594 |
text-align: center;
|
595 |
}
|
596 |
|
|
|
597 |
#frm_confirm_modal .dismiss .frmsvg,
|
598 |
#frm_upgrade_modal .dismiss .frmsvg,
|
|
|
599 |
#frm_confirm_modal .dismiss i,
|
600 |
#frm_upgrade_modal .dismiss i {
|
601 |
top: 7px;
|
@@ -746,7 +747,7 @@ p.frm_has_shortcodes {
|
|
746 |
position: sticky;
|
747 |
top: 0;
|
748 |
background-color: var(--sidebar-color);
|
749 |
-
z-index:
|
750 |
margin-top: 0;
|
751 |
padding-top: 5px;
|
752 |
}
|
@@ -1018,6 +1019,7 @@ h2 .frm-button-primary {
|
|
1018 |
transition: all .2s ease;
|
1019 |
padding: 0 15px;
|
1020 |
height: 28px;
|
|
|
1021 |
outline: none;
|
1022 |
line-height: 26px;
|
1023 |
}
|
@@ -1501,6 +1503,7 @@ form .frm_blank_field label {
|
|
1501 |
}
|
1502 |
|
1503 |
.frm_error_style,
|
|
|
1504 |
.frm_message,
|
1505 |
#post-body-content .frm_updated_message,
|
1506 |
div.frm_updated_message {
|
@@ -1528,8 +1531,24 @@ div.frm_updated_message {
|
|
1528 |
background-color: #F2DEDE;
|
1529 |
}
|
1530 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1531 |
.frm_updated_message ul,
|
1532 |
.frm_updated_message li,
|
|
|
|
|
1533 |
.frm_error_style ul,
|
1534 |
.frm_error_style li {
|
1535 |
margin: 0;
|
@@ -3294,6 +3313,7 @@ li.ui-state-default.edit_field_type_divider .frm-show-hover {
|
|
3294 |
padding-bottom: 5px;
|
3295 |
}
|
3296 |
|
|
|
3297 |
#new_fields .frm_single_option select,
|
3298 |
#new_fields .frm_single_option input[type=text] {
|
3299 |
width: calc(100% - 73px);
|
@@ -3311,7 +3331,7 @@ li.ui-state-default.edit_field_type_divider .frm-show-hover {
|
|
3311 |
.frm_single_option .frm-drag {
|
3312 |
font-size: 23px;
|
3313 |
width: 22px;
|
3314 |
-
height:
|
3315 |
margin-left: -6px;
|
3316 |
color: var(--grey);
|
3317 |
}
|
@@ -5137,6 +5157,46 @@ tr.frm_options_heading td {
|
|
5137 |
font-size: 15px;
|
5138 |
}
|
5139 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5140 |
#frm-preview-block {
|
5141 |
height: 400px;
|
5142 |
overflow: scroll;
|
@@ -5688,6 +5748,11 @@ select[name="m"] {
|
|
5688 |
line-height: 30px;
|
5689 |
}
|
5690 |
|
|
|
|
|
|
|
|
|
|
|
5691 |
/*hide elements if js is avail*/
|
5692 |
select.texture {
|
5693 |
display: none;
|
@@ -5746,6 +5811,10 @@ ul .frm_col_two {
|
|
5746 |
margin-right: 0;
|
5747 |
}
|
5748 |
|
|
|
|
|
|
|
|
|
5749 |
.settings-lite-cta a,
|
5750 |
.settings-lite-cta ul,
|
5751 |
.settings-lite-cta p,
|
@@ -5755,6 +5824,7 @@ ul .frm_col_two {
|
|
5755 |
box-shadow: none !important;
|
5756 |
}
|
5757 |
|
|
|
5758 |
.settings-lite-cta h3 {
|
5759 |
font-size: 17px !important;
|
5760 |
}
|
@@ -5763,6 +5833,7 @@ ul .frm_col_two {
|
|
5763 |
color: var(--green);
|
5764 |
}
|
5765 |
|
|
|
5766 |
.settings-lite-cta .postbox .inside {
|
5767 |
padding: 20px 40px;
|
5768 |
}
|
@@ -5771,6 +5842,14 @@ ul .frm_col_two {
|
|
5771 |
color: var(--orange)
|
5772 |
}
|
5773 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5774 |
.frm-caution {
|
5775 |
text-transform: uppercase;
|
5776 |
font-weight: bold;
|
@@ -6188,7 +6267,7 @@ iframe#dyncontent_ifr {
|
|
6188 |
z-index: 9999999;
|
6189 |
display: block;
|
6190 |
visibility: visible;
|
6191 |
-
font-size:
|
6192 |
line-height: 1.4;
|
6193 |
opacity: 0;
|
6194 |
filter: alpha(opacity=0);
|
14 |
--sidebar-hover: rgb(227, 232, 235);
|
15 |
--primary-color: rgb(65, 153, 253);
|
16 |
--primary-hover: rgb(49, 119, 199);
|
|
|
17 |
--green: rgb(63, 172, 37);
|
18 |
--orange: #F15A24;
|
19 |
--pink: rgb(226, 42, 110);
|
593 |
text-align: center;
|
594 |
}
|
595 |
|
596 |
+
#frm_info_modal .dismiss .frmsvg,
|
597 |
#frm_confirm_modal .dismiss .frmsvg,
|
598 |
#frm_upgrade_modal .dismiss .frmsvg,
|
599 |
+
#frm_info_modal .dismiss i,
|
600 |
#frm_confirm_modal .dismiss i,
|
601 |
#frm_upgrade_modal .dismiss i {
|
602 |
top: 7px;
|
747 |
position: sticky;
|
748 |
top: 0;
|
749 |
background-color: var(--sidebar-color);
|
750 |
+
z-index: 98; /* must be < 99 */
|
751 |
margin-top: 0;
|
752 |
padding-top: 5px;
|
753 |
}
|
1019 |
transition: all .2s ease;
|
1020 |
padding: 0 15px;
|
1021 |
height: 28px;
|
1022 |
+
min-height: 28px;
|
1023 |
outline: none;
|
1024 |
line-height: 26px;
|
1025 |
}
|
1503 |
}
|
1504 |
|
1505 |
.frm_error_style,
|
1506 |
+
.frm_warning_style,
|
1507 |
.frm_message,
|
1508 |
#post-body-content .frm_updated_message,
|
1509 |
div.frm_updated_message {
|
1531 |
background-color: #F2DEDE;
|
1532 |
}
|
1533 |
|
1534 |
+
.frm_warning_style {
|
1535 |
+
color: #8B6E3C;
|
1536 |
+
border-color: #FBECCD;
|
1537 |
+
background-color: #FDF9E3;
|
1538 |
+
border-radius: 10px;
|
1539 |
+
text-align: left;
|
1540 |
+
padding-top: 5px;
|
1541 |
+
}
|
1542 |
+
|
1543 |
+
.frm_warning_heading{
|
1544 |
+
font-weight: bold;
|
1545 |
+
margin-bottom:4px;
|
1546 |
+
}
|
1547 |
+
|
1548 |
.frm_updated_message ul,
|
1549 |
.frm_updated_message li,
|
1550 |
+
.frm_warning_style ul,
|
1551 |
+
.frm_warning_style li,
|
1552 |
.frm_error_style ul,
|
1553 |
.frm_error_style li {
|
1554 |
margin: 0;
|
3313 |
padding-bottom: 5px;
|
3314 |
}
|
3315 |
|
3316 |
+
.frm_product_price_wrapper,
|
3317 |
#new_fields .frm_single_option select,
|
3318 |
#new_fields .frm_single_option input[type=text] {
|
3319 |
width: calc(100% - 73px);
|
3331 |
.frm_single_option .frm-drag {
|
3332 |
font-size: 23px;
|
3333 |
width: 22px;
|
3334 |
+
height: 19px;
|
3335 |
margin-left: -6px;
|
3336 |
color: var(--grey);
|
3337 |
}
|
5157 |
font-size: 15px;
|
5158 |
}
|
5159 |
|
5160 |
+
.frm_product_price_wrapper {
|
5161 |
+
display: inline-block;
|
5162 |
+
vertical-align: middle;
|
5163 |
+
}
|
5164 |
+
|
5165 |
+
.frm_prod_type_single .frm_product_price_wrapper {
|
5166 |
+
width: 100%;
|
5167 |
+
}
|
5168 |
+
|
5169 |
+
.frm-type-quantity .frm-step {
|
5170 |
+
display: none;
|
5171 |
+
}
|
5172 |
+
|
5173 |
+
#new_fields .frm_product_price_wrapper input:first-child {
|
5174 |
+
width: 60%;
|
5175 |
+
float: left;
|
5176 |
+
}
|
5177 |
+
|
5178 |
+
#new_fields .frm_product_price_wrapper input:last-child {
|
5179 |
+
width: 37%;
|
5180 |
+
float: right;
|
5181 |
+
}
|
5182 |
+
|
5183 |
+
li.frm_single_option:not(:last-child) {
|
5184 |
+
padding-bottom: 11px;
|
5185 |
+
margin-bottom: 10px;
|
5186 |
+
border-bottom: 1px solid var(--sidebar-hover);
|
5187 |
+
}
|
5188 |
+
|
5189 |
+
.frm_prod_type_single input[type=radio],
|
5190 |
+
.frm_prod_type_single .frm_drag_icon,
|
5191 |
+
.frm_prod_type_single .frm_sortable_field_opts li:nth-child( n + 3 ),
|
5192 |
+
.frm_prod_type_single .frm_sortable_field_opts .frm_remove_tag,
|
5193 |
+
.frm_prod_type_single .frm_form_field:not(.frm_product_type):not(.frm_sep_val_product),
|
5194 |
+
.frm_prod_type_single .frm-bulk-edit-link,
|
5195 |
+
.frm_prod_type_user_def.frm_grid_container,
|
5196 |
+
.frm_prod_options_heading.frm_prod_user_def {
|
5197 |
+
display: none;
|
5198 |
+
}
|
5199 |
+
|
5200 |
#frm-preview-block {
|
5201 |
height: 400px;
|
5202 |
overflow: scroll;
|
5748 |
line-height: 30px;
|
5749 |
}
|
5750 |
|
5751 |
+
.frm-single-settings .frm_prod_field_opt_cont {
|
5752 |
+
margin-top: initial;
|
5753 |
+
margin-bottom: 20px;
|
5754 |
+
}
|
5755 |
+
|
5756 |
/*hide elements if js is avail*/
|
5757 |
select.texture {
|
5758 |
display: none;
|
5811 |
margin-right: 0;
|
5812 |
}
|
5813 |
|
5814 |
+
.frm-info-modal a,
|
5815 |
+
.frm-info-modal ul,
|
5816 |
+
.frm-info-modal p,
|
5817 |
+
.frm-info-modal,
|
5818 |
.settings-lite-cta a,
|
5819 |
.settings-lite-cta ul,
|
5820 |
.settings-lite-cta p,
|
5824 |
box-shadow: none !important;
|
5825 |
}
|
5826 |
|
5827 |
+
.frm-info-modal h3,
|
5828 |
.settings-lite-cta h3 {
|
5829 |
font-size: 17px !important;
|
5830 |
}
|
5833 |
color: var(--green);
|
5834 |
}
|
5835 |
|
5836 |
+
.frm-info-modal .postbox .inside,
|
5837 |
.settings-lite-cta .postbox .inside {
|
5838 |
padding: 20px 40px;
|
5839 |
}
|
5842 |
color: var(--orange)
|
5843 |
}
|
5844 |
|
5845 |
+
.info-modal-inside a.frm-standard-link {
|
5846 |
+
color: var(--primary-color);
|
5847 |
+
}
|
5848 |
+
|
5849 |
+
.info-modal-inside a.frm-standard-link:hover {
|
5850 |
+
color: var(--primary-hover);
|
5851 |
+
}
|
5852 |
+
|
5853 |
.frm-caution {
|
5854 |
text-transform: uppercase;
|
5855 |
font-weight: bold;
|
6267 |
z-index: 9999999;
|
6268 |
display: block;
|
6269 |
visibility: visible;
|
6270 |
+
font-size: 14px;
|
6271 |
line-height: 1.4;
|
6272 |
opacity: 0;
|
6273 |
filter: alpha(opacity=0);
|
formidable.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/*
|
3 |
Plugin Name: Formidable Forms
|
4 |
Description: Quickly and easily create drag-and-drop forms
|
5 |
-
Version: 4.
|
6 |
Plugin URI: https://formidableforms.com/
|
7 |
Author URI: https://formidableforms.com/
|
8 |
Author: Strategy11
|
2 |
/*
|
3 |
Plugin Name: Formidable Forms
|
4 |
Description: Quickly and easily create drag-and-drop forms
|
5 |
+
Version: 4.04
|
6 |
Plugin URI: https://formidableforms.com/
|
7 |
Author URI: https://formidableforms.com/
|
8 |
Author: Strategy11
|
images/icons.svg
CHANGED
@@ -872,5 +872,21 @@
|
|
872 |
<title>cc_stripe</title>
|
873 |
<path d="M17.3 10c0 .6 0 1-.2 1.2-.1.3-.3.4-.6.4a1 1 0 0 1-.4 0V9c.3-.3.5-.3.6-.3.4 0 .6.4.6 1.3zm4.8-.3h-1.2c0-.7.2-1 .6-1s.6.3.6 1zM5 11.2c0-1-.5-1.3-1.4-1.7-.5-.1-.7-.3-.7-.5s.1-.3.4-.3c.5 0 1 .2 1.3.4L5 7.9c-.2-.2-.8-.4-1.6-.4A2 2 0 0 0 2 8c-.4.3-.5.7-.5 1.2 0 .9.5 1.3 1.4 1.6.5.2.7.4.7.6 0 .2-.1.3-.5.3s-1-.2-1.5-.5l-.2 1.3c.4.2 1 .4 1.8.4.6 0 1-.1 1.4-.4.4-.3.6-.7.6-1.3zm3.3-2.4l.2-1.2h-1V6.1L6 6.4 6 7.6l-.5.1-.1 1.1h.6v2.4c0 .6.2 1 .5 1.3.3.2.7.3 1.2.3l.9-.1v-1.3l-.5.1c-.3 0-.5-.2-.5-.5V8.8h.9zm3.4.3V7.6h-.3a1 1 0 0 0-1 .6v-.6H9v5.1h1.6V9.4c.2-.2.5-.3 1-.3h.2zm.4 3.6h1.6v-5h-1.6v5zm6.7-2.7c0-.8-.1-1.5-.4-2-.3-.3-.7-.5-1.2-.5s-1 .2-1.3.6l-.1-.5h-1.4v7l1.6-.3v-1.6l.7.1c.4 0 1 0 1.5-.6.4-.5.6-1.2.6-2.2zm-5-3.8c0-.4-.4-.8-.9-.8s-.8.4-.8.8.3 1 .8 1 .9-.5.9-1zm9.7 4c0-.9-.2-1.5-.5-2-.4-.4-.9-.7-1.6-.7-1.4 0-2.2 1-2.2 2.7 0 .9.2 1.6.7 2 .4.4 1 .6 1.7.6s1.3-.1 1.7-.4l-.1-1.1c-.4.2-.9.3-1.4.3-.3 0-.5 0-.7-.2-.2-.1-.3-.4-.3-.7h2.7V10zM25 3v13.8c0 .8-.6 1.4-1.4 1.4H1.4C.6 18.3 0 17.7 0 17V3.1c0-.8.6-1.4 1.4-1.4h22.2c.8 0 1.4.6 1.4 1.4z"/>
|
874 |
</symbol>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
875 |
</defs>
|
876 |
</svg>
|
872 |
<title>cc_stripe</title>
|
873 |
<path d="M17.3 10c0 .6 0 1-.2 1.2-.1.3-.3.4-.6.4a1 1 0 0 1-.4 0V9c.3-.3.5-.3.6-.3.4 0 .6.4.6 1.3zm4.8-.3h-1.2c0-.7.2-1 .6-1s.6.3.6 1zM5 11.2c0-1-.5-1.3-1.4-1.7-.5-.1-.7-.3-.7-.5s.1-.3.4-.3c.5 0 1 .2 1.3.4L5 7.9c-.2-.2-.8-.4-1.6-.4A2 2 0 0 0 2 8c-.4.3-.5.7-.5 1.2 0 .9.5 1.3 1.4 1.6.5.2.7.4.7.6 0 .2-.1.3-.5.3s-1-.2-1.5-.5l-.2 1.3c.4.2 1 .4 1.8.4.6 0 1-.1 1.4-.4.4-.3.6-.7.6-1.3zm3.3-2.4l.2-1.2h-1V6.1L6 6.4 6 7.6l-.5.1-.1 1.1h.6v2.4c0 .6.2 1 .5 1.3.3.2.7.3 1.2.3l.9-.1v-1.3l-.5.1c-.3 0-.5-.2-.5-.5V8.8h.9zm3.4.3V7.6h-.3a1 1 0 0 0-1 .6v-.6H9v5.1h1.6V9.4c.2-.2.5-.3 1-.3h.2zm.4 3.6h1.6v-5h-1.6v5zm6.7-2.7c0-.8-.1-1.5-.4-2-.3-.3-.7-.5-1.2-.5s-1 .2-1.3.6l-.1-.5h-1.4v7l1.6-.3v-1.6l.7.1c.4 0 1 0 1.5-.6.4-.5.6-1.2.6-2.2zm-5-3.8c0-.4-.4-.8-.9-.8s-.8.4-.8.8.3 1 .8 1 .9-.5.9-1zm9.7 4c0-.9-.2-1.5-.5-2-.4-.4-.9-.7-1.6-.7-1.4 0-2.2 1-2.2 2.7 0 .9.2 1.6.7 2 .4.4 1 .6 1.7.6s1.3-.1 1.7-.4l-.1-1.1c-.4.2-.9.3-1.4.3-.3 0-.5 0-.7-.2-.2-.1-.3-.4-.3-.7h2.7V10zM25 3v13.8c0 .8-.6 1.4-1.4 1.4H1.4C.6 18.3 0 17.7 0 17V3.1c0-.8.6-1.4 1.4-1.4h22.2c.8 0 1.4.6 1.4 1.4z"/>
|
874 |
</symbol>
|
875 |
+
<symbol id="frm_price_icon" viewBox="0 0 20 20">
|
876 |
+
<title>price</title>
|
877 |
+
<path d="M.5 11.5l8 8a1.9 1.9 0 002.7 0l8.3-8.3a1.9 1.9 0 00.5-1.4v-8A1.9 1.9 0 0018.1 0h-8a1.9 1.9 0 00-1.3.5L.5 8.8a1.9 1.9 0 000 2.7zM2 10.2l8.3-8.3h8v8L9.7 18zm12.5-6.4a1.9 1.9 0 11-1.9 1.8 1.9 1.9 0 011.9-1.8z"/>
|
878 |
+
</symbol>
|
879 |
+
<symbol id="frm_product_icon" viewBox="0 0 23 23">
|
880 |
+
<title>product</title>
|
881 |
+
<path d="M22 2.9H5.8l-.4-2a1 1 0 00-1-.9h-4a.5.5 0 00-.4.5v1.1a.5.5 0 00.5.6h3.2l2.8 16a3 3 0 00-.8 2A2.7 2.7 0 008.3 23a2.7 2.7 0 002.6-2.9 3.1 3.1 0 00-.4-1.4h5.8A3.1 3.1 0 0016 20a2.7 2.7 0 002.5 2.9 2.7 2.7 0 002.6-2.9 3 3 0 00-.8-2v-.3a1 1 0 00-.9-1.3H8.1l-.3-2.1h12.4a1 1 0 001-.9L23 4.2a1 1 0 00-1-1.3zM8.3 21.2a1 1 0 010-2.2 1 1 0 010 2.2zm10.2 0a1 1 0 111-1 1 1 0 01-1 1zm1-9H7.4L6 5H21l-1.4 7.2z"/>
|
882 |
+
</symbol>
|
883 |
+
<symbol id="frm_total_icon" viewBox="0 0 23 13.8">
|
884 |
+
<title>total</title>
|
885 |
+
<path d="M21.9 0H1A1.1 1.1 0 000 1.2v11.5a1.1 1.1 0 001.1 1.1H22a1.1 1.1 0 001.1-1.1V1.2A1.1 1.1 0 0021.9 0zm-.6 9.8A2.3 2.3 0 0019 12H4a2.3 2.3 0 00-2.3-2.3V4A2.3 2.3 0 004 1.7h15A2.3 2.3 0 0021.3 4zM11.5 4a2.9 2.9 0 000 5.8 2.9 2.9 0 000-5.8z"/>
|
886 |
+
</symbol>
|
887 |
+
<symbol id="frm_quantity_icon" viewBox="0 0 17 20">
|
888 |
+
<title>quantity</title>
|
889 |
+
<g><path d="M15.6 1.3H1.9C1 1.3 0 2 0 3.1v13.6c0 1 .9 2 2 2h13.6c1 0 1.9-1 1.9-2V3.2c0-1-.9-2-2-2zm0 15.5H1.9V3.2h13.7"></path><path fill="none" stroke="currentColor" stroke-width="2" d="M9.5 4.5v10M4.5 9.5h10" transform="translate(-.7,0.4)"/></g>
|
890 |
+
</symbol>
|
891 |
</defs>
|
892 |
</svg>
|
js/formidable_admin.js
CHANGED
@@ -372,6 +372,19 @@ function frmAdminBuildJS() {
|
|
372 |
return false;
|
373 |
}
|
374 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
375 |
function toggleItem( e ) {
|
376 |
/*jshint validthis:true */
|
377 |
var toggle = this.getAttribute( 'data-frmtoggle' ),
|
@@ -673,6 +686,7 @@ function frmAdminBuildJS() {
|
|
673 |
if ( auto !== 'auto' ) {
|
674 |
// Hide success message on tab change.
|
675 |
jQuery( '.frm_updated_message' ).hide();
|
|
|
676 |
}
|
677 |
|
678 |
if ( jQuery( link ).closest( '#frm_adv_info' ).length ) {
|
@@ -1001,6 +1015,7 @@ function frmAdminBuildJS() {
|
|
1001 |
|
1002 |
initiateMultiselect();
|
1003 |
renumberPageBreaks();
|
|
|
1004 |
},
|
1005 |
} );
|
1006 |
}
|
@@ -1075,7 +1090,7 @@ function frmAdminBuildJS() {
|
|
1075 |
}
|
1076 |
|
1077 |
function maybeReenableSummaryBtnAfterAJAX( fieldType, addBtn, fieldButton, errorThrown ) {
|
1078 |
-
|
1079 |
if ( 'summary' === fieldType ) {
|
1080 |
addBtn.removeClass( 'disabled' );
|
1081 |
fieldButton.draggable( 'enable' );
|
@@ -1087,6 +1102,23 @@ function frmAdminBuildJS() {
|
|
1087 |
return $newFields.children( 'li.edit_field_type_summary' ).length > 0;
|
1088 |
}
|
1089 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1090 |
function duplicateField() {
|
1091 |
/*jshint validthis:true */
|
1092 |
var thisField = jQuery( this ).closest( 'li' );
|
@@ -1121,10 +1153,22 @@ function frmAdminBuildJS() {
|
|
1121 |
field = document.getElementById( match[1] ),
|
1122 |
section = '#' + match[1] + '.edit_field_type_divider ul.frm_sorting',
|
1123 |
$thisSection = jQuery( section ),
|
|
|
1124 |
toggled = false;
|
1125 |
|
1126 |
setupSortable( section );
|
1127 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1128 |
if ( $thisSection.length ) {
|
1129 |
$thisSection.parent( '.frm_field_box' ).children( '.frm_no_section_fields' ).addClass( 'frm_block' );
|
1130 |
} else {
|
@@ -1200,10 +1244,61 @@ function frmAdminBuildJS() {
|
|
1200 |
warningMessage += checkShortcodes( calculation, this );
|
1201 |
|
1202 |
if ( warningMessage !== '' ) {
|
1203 |
-
|
1204 |
}
|
1205 |
}
|
1206 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1207 |
/**
|
1208 |
* Checks a string for parens, brackets, and curly braces and returns a message if any unmatched are found.
|
1209 |
* @param formula
|
@@ -1238,7 +1333,7 @@ function frmAdminBuildJS() {
|
|
1238 |
}
|
1239 |
|
1240 |
if ( stack.length > 0 || unmatchedClosing.length > 0 ) {
|
1241 |
-
msg = frm_admin_js.unmatched_parens +
|
1242 |
return msg;
|
1243 |
}
|
1244 |
|
@@ -1325,13 +1420,17 @@ function frmAdminBuildJS() {
|
|
1325 |
return /\[id\]|\[key\]|\[if\s\w+\]|\[foreach\s\w+\]|\[created-at(\s*)?/g;
|
1326 |
}
|
1327 |
|
1328 |
-
function
|
1329 |
var list = jQuery( box ).find( '.frm_code_list' );
|
1330 |
-
return 1 === list.length && list.hasClass(
|
1331 |
}
|
1332 |
|
1333 |
function extractExcludedOptions( exclude ) {
|
1334 |
var opts = [];
|
|
|
|
|
|
|
|
|
1335 |
for ( var i = 0; i < exclude.length; i++ ) {
|
1336 |
if ( exclude[ i ].startsWith( '[' ) ) {
|
1337 |
opts.push( exclude[ i ] );
|
@@ -1372,7 +1471,7 @@ function frmAdminBuildJS() {
|
|
1372 |
return;
|
1373 |
}
|
1374 |
|
1375 |
-
var isSummary =
|
1376 |
|
1377 |
var form_id = jQuery( 'input[name="id"]' ).val();
|
1378 |
var fieldId = p.find( 'input[name="frm_fields_submitted[]"]' ).val();
|
@@ -1391,7 +1490,7 @@ function frmAdminBuildJS() {
|
|
1391 |
list.innerHTML = '';
|
1392 |
|
1393 |
for ( i = 0; i < fields.length; i++ ) {
|
1394 |
-
if ( exclude.includes( fields[ i ].fieldType ) ||
|
1395 |
( excludedOpts.length && hasExcludedOption( fields[ i ], excludedOpts ) ) ) {
|
1396 |
continue;
|
1397 |
}
|
@@ -1453,11 +1552,17 @@ function frmAdminBuildJS() {
|
|
1453 |
popCalcFields( jQuery( '.frm-inline-modal.postbox:has(.frm_js_summary_list)' )[0], true );
|
1454 |
}
|
1455 |
|
1456 |
-
function getFieldList() {
|
1457 |
var i, fields = [],
|
1458 |
-
allFields = document.querySelectorAll( 'li.frm_field_box' )
|
|
|
1459 |
|
1460 |
for ( i = 0; i < allFields.length; i++ ) {
|
|
|
|
|
|
|
|
|
|
|
1461 |
var fieldId = allFields[ i ].getAttribute( 'data-fid' );
|
1462 |
if ( typeof fieldId !== 'undefined' && fieldId ) {
|
1463 |
fields.push( {
|
@@ -1467,10 +1572,54 @@ function frmAdminBuildJS() {
|
|
1467 |
'fieldKey': getPossibleValue( 'field_options_field_key_' + fieldId )
|
1468 |
} );
|
1469 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1470 |
|
1471 |
-
|
1472 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1473 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
1474 |
}
|
1475 |
}
|
1476 |
|
@@ -1656,7 +1805,8 @@ function frmAdminBuildJS() {
|
|
1656 |
fieldId = jQuery( this ).closest( '[data-fid]' ).data( 'fid' ),
|
1657 |
separate = usingSeparateValues( fieldId ),
|
1658 |
optList = document.getElementById( 'frm_field_' + fieldId + '_opts' ),
|
1659 |
-
opts = optList.getElementsByTagName( 'li' )
|
|
|
1660 |
|
1661 |
document.getElementById( 'bulk-field-id' ).value = fieldId;
|
1662 |
|
@@ -1669,6 +1819,9 @@ function frmAdminBuildJS() {
|
|
1669 |
if ( separate ) {
|
1670 |
content += '|' + document.getElementsByName( 'field_options[options_' + fieldId + '][' + key + '][value]' )[0].value;
|
1671 |
}
|
|
|
|
|
|
|
1672 |
content += "\r\n";
|
1673 |
}
|
1674 |
}
|
@@ -1914,14 +2067,20 @@ function frmAdminBuildJS() {
|
|
1914 |
settings.remove();
|
1915 |
|
1916 |
$thisField.fadeOut( 'slow', function() {
|
1917 |
-
var $section = $thisField.closest( '.start_divider' )
|
|
|
1918 |
$thisField.remove();
|
1919 |
-
if (
|
1920 |
renumberPageBreaks();
|
1921 |
}
|
1922 |
-
if (
|
1923 |
reenableAddSummaryBtn();
|
1924 |
}
|
|
|
|
|
|
|
|
|
|
|
1925 |
if ( jQuery( '#frm-show-fields li' ).length === 0 ) {
|
1926 |
document.getElementById( 'frm_form_editor_container' ).classList.remove( 'frm-has-fields' );
|
1927 |
} else if ( $section.length ) {
|
@@ -2137,6 +2296,10 @@ function frmAdminBuildJS() {
|
|
2137 |
}
|
2138 |
|
2139 |
function clickLabel() {
|
|
|
|
|
|
|
|
|
2140 |
/*jshint validthis:true */
|
2141 |
var setting = document.querySelectorAll( '[data-changeme="' + this.id + '"]' )[0],
|
2142 |
fieldId = this.id.replace( 'field_label_', '' ),
|
@@ -2231,7 +2394,7 @@ function frmAdminBuildJS() {
|
|
2231 |
/*jshint validthis:true */
|
2232 |
var val = this.value;
|
2233 |
if ( val !== '' && ( val < 2 || val > 200 ) ) {
|
2234 |
-
|
2235 |
this.value = '';
|
2236 |
}
|
2237 |
}
|
@@ -2240,7 +2403,7 @@ function frmAdminBuildJS() {
|
|
2240 |
/*jshint validthis:true */
|
2241 |
var val = this.value;
|
2242 |
if ( val !== '' && ( val < 1 || val > 200 ) ) {
|
2243 |
-
|
2244 |
this.value = '';
|
2245 |
}
|
2246 |
}
|
@@ -2364,29 +2527,30 @@ function frmAdminBuildJS() {
|
|
2364 |
type = input.attr( 'type' );
|
2365 |
jQuery( '#field_' + fieldId + '_inner_container > .frm_form_fields' ).html( '' );
|
2366 |
fieldInfo = getFieldKeyFromOpt( jQuery( '#frm_delete_field_' + fieldId + '-000_container' ) );
|
|
|
|
|
2367 |
|
2368 |
for ( i = 0; i < opts.length; i++ ) {
|
2369 |
-
addRadioCheckboxOpt( type, opts[ i ], fieldId, fieldInfo.fieldKey );
|
2370 |
}
|
2371 |
}
|
2372 |
}
|
2373 |
|
2374 |
-
function addRadioCheckboxOpt( type, opt, fieldId, fieldKey ) {
|
2375 |
var other, single,
|
2376 |
isOther = opt.key.indexOf( 'other' ) !== -1,
|
2377 |
-
id = 'field_' + fieldKey + '-' + opt.key
|
2378 |
-
container = jQuery( '#field_' + fieldId + '_inner_container > .frm_form_fields' );
|
2379 |
|
2380 |
other = '<input type="text" id="field_' + fieldKey + '-' + opt.key + '-otext" class="frm_other_input frm_pos_none" name="item_meta[other][' + fieldId + '][' + opt.key + ']" value="" />';
|
2381 |
|
2382 |
single = '<div class="frm_' + type + ' ' + type + '" id="frm_' + type + '_' + fieldId + '-' + opt.key + '"><label for="' + id +
|
2383 |
'"><input type="' + type +
|
2384 |
'" name="item_meta[' + fieldId + ']' + ( type === 'checkbox' ? '[]' : '' ) +
|
2385 |
-
'" value="' + opt.saved + '" id="' + id + '"> ' + opt.label + '</label>' +
|
2386 |
( isOther ? other : '' ) +
|
2387 |
'</div>';
|
2388 |
|
2389 |
-
|
2390 |
}
|
2391 |
|
2392 |
function fillDropdownOpts( field, atts ) {
|
@@ -2395,6 +2559,7 @@ function frmAdminBuildJS() {
|
|
2395 |
}
|
2396 |
var sourceID = atts.sourceID,
|
2397 |
placeholder = atts.placeholder,
|
|
|
2398 |
showOther = atts.other;
|
2399 |
|
2400 |
removeDropdownOpts( field );
|
@@ -2416,6 +2581,11 @@ function frmAdminBuildJS() {
|
|
2416 |
var opt = document.createElement( 'option' );
|
2417 |
opt.value = opts[ i ].saved;
|
2418 |
opt.innerHTML = label;
|
|
|
|
|
|
|
|
|
|
|
2419 |
field.appendChild( opt );
|
2420 |
}
|
2421 |
}
|
@@ -2436,12 +2606,13 @@ function frmAdminBuildJS() {
|
|
2436 |
}
|
2437 |
|
2438 |
function getMultipleOpts( fieldId ) {
|
2439 |
-
var i, saved, labelName, label, key, opts = [],
|
2440 |
optVals = jQuery( 'input[name^="field_options[options_' + fieldId + ']"]' ),
|
2441 |
-
separateValues = usingSeparateValues( fieldId )
|
|
|
2442 |
|
2443 |
for ( i = 0; i < optVals.length; i++ ) {
|
2444 |
-
if ( optVals[ i ].name.indexOf( '[000]' ) > 0 || optVals[ i ].name.indexOf( '[value]' ) > 0 ) {
|
2445 |
continue;
|
2446 |
}
|
2447 |
saved = optVals[ i ].value;
|
@@ -2453,11 +2624,18 @@ function frmAdminBuildJS() {
|
|
2453 |
saved = jQuery( 'input[name="' + labelName + '"]' ).val();
|
2454 |
}
|
2455 |
|
2456 |
-
|
2457 |
saved: saved,
|
2458 |
label: label,
|
2459 |
key: key
|
2460 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2461 |
}
|
2462 |
|
2463 |
return opts;
|
@@ -2494,7 +2672,7 @@ function frmAdminBuildJS() {
|
|
2494 |
var c = false;
|
2495 |
if ( !c && jQuery( v ).attr( 'id' ) != id && jQuery( v ).html() == text ) {
|
2496 |
c = true;
|
2497 |
-
|
2498 |
}
|
2499 |
} );
|
2500 |
}
|
@@ -2686,7 +2864,7 @@ function frmAdminBuildJS() {
|
|
2686 |
*/
|
2687 |
function hideEmptyEle() {
|
2688 |
jQuery( '.frm-hide-empty' ).each( function() {
|
2689 |
-
if ( jQuery( this ).text().trim().length
|
2690 |
jQuery( this ).remove();
|
2691 |
}
|
2692 |
});
|
@@ -3099,6 +3277,7 @@ function frmAdminBuildJS() {
|
|
3099 |
function showFieldOptions( obj ) {
|
3100 |
var i, singleField,
|
3101 |
fieldId = obj.getAttribute( 'data-fid' ),
|
|
|
3102 |
allFieldSettings = document.querySelectorAll( '.frm-single-settings:not(.frm_hidden)' );
|
3103 |
|
3104 |
for ( i = 0; i < allFieldSettings.length; i++ ) {
|
@@ -3108,6 +3287,10 @@ function frmAdminBuildJS() {
|
|
3108 |
singleField = document.getElementById( 'frm-single-settings-' + fieldId );
|
3109 |
moveFieldSettings( singleField );
|
3110 |
|
|
|
|
|
|
|
|
|
3111 |
singleField.classList.remove( 'frm_hidden' );
|
3112 |
document.getElementById( 'frm-options-panel-tab' ).click();
|
3113 |
}
|
@@ -3155,13 +3338,20 @@ function frmAdminBuildJS() {
|
|
3155 |
function checkActiveAction( type ) {
|
3156 |
var limit = parseInt( jQuery( '.frm_' + type + '_action' ).data( 'limit' ) );
|
3157 |
var len = jQuery( '.frm_single_' + type + '_settings' ).length;
|
|
|
3158 |
if ( len >= limit ) {
|
3159 |
-
|
|
|
|
|
3160 |
} else {
|
3161 |
-
jQuery( '.frm_' + type + '_action' ).removeClass( 'frm_inactive_action' ).addClass( 'frm_active_action' );
|
3162 |
}
|
3163 |
}
|
3164 |
|
|
|
|
|
|
|
|
|
3165 |
function addFormLogicRow() {
|
3166 |
/*jshint validthis:true */
|
3167 |
var id = jQuery( this ).data( 'emailkey' );
|
@@ -3299,7 +3489,7 @@ function frmAdminBuildJS() {
|
|
3299 |
if ( jQuery( this ).val() === v && this.name !== $t.name ) {
|
3300 |
this.style.borderColor = 'red';
|
3301 |
jQuery( $t ).val( '' );
|
3302 |
-
|
3303 |
return false;
|
3304 |
}
|
3305 |
} );
|
@@ -4110,7 +4300,7 @@ function frmAdminBuildJS() {
|
|
4110 |
// Check if there is enough space for text
|
4111 |
var textSpace = height - size - paddingTop - paddingBottom - 3;
|
4112 |
if ( textSpace < 0 ) {
|
4113 |
-
|
4114 |
}
|
4115 |
}
|
4116 |
|
@@ -4652,7 +4842,7 @@ function frmAdminBuildJS() {
|
|
4652 |
create: function( event, ui ) {
|
4653 |
var $container = jQuery( this ).parent();
|
4654 |
|
4655 |
-
if ( $container.length
|
4656 |
$container = 'body';
|
4657 |
}
|
4658 |
|
@@ -4718,9 +4908,9 @@ function frmAdminBuildJS() {
|
|
4718 |
|
4719 |
function installNewForm( form, action ) {
|
4720 |
var data,
|
4721 |
-
formName = form.elements
|
4722 |
-
formDesc = form.elements
|
4723 |
-
link = form.elements
|
4724 |
|
4725 |
data = {
|
4726 |
action: action,
|
@@ -4931,6 +5121,32 @@ function frmAdminBuildJS() {
|
|
4931 |
}
|
4932 |
}
|
4933 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4934 |
return {
|
4935 |
init: function() {
|
4936 |
s = {};
|
@@ -5155,9 +5371,17 @@ function frmAdminBuildJS() {
|
|
5155 |
$builderForm.on( 'change', '.frm_include_extras_field', rePopCalcFieldsForSummary );
|
5156 |
$builderForm.on( 'change', 'select[name^="field_options[form_select_"]', maybeChangeEmbedFormMsg );
|
5157 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5158 |
initBulkOptionsOverlay();
|
5159 |
hideEmptyEle();
|
5160 |
maybeDisableAddSummaryBtn();
|
|
|
5161 |
},
|
5162 |
|
5163 |
settingsInit: function() {
|
@@ -5195,6 +5419,7 @@ function frmAdminBuildJS() {
|
|
5195 |
var formSettings = jQuery( '.frm_form_settings' );
|
5196 |
formSettings.on( 'click', '.frm_add_form_logic', addFormLogicRow );
|
5197 |
formSettings.on( 'blur', '.frm_email_blur', formatEmailSetting );
|
|
|
5198 |
|
5199 |
formSettings.on( 'change', '#logic_link_submit', toggleSubmitLogic );
|
5200 |
formSettings.on( 'click', '.frm_add_submit_logic', addSubmitLogic );
|
@@ -5374,6 +5599,9 @@ function frmAdminBuildJS() {
|
|
5374 |
$advInfo.before( '<div id="frm_position_ele"></div>' );
|
5375 |
setupMenuOffset();
|
5376 |
|
|
|
|
|
|
|
5377 |
// Show loading indicator.
|
5378 |
jQuery( '#publish' ).mousedown( function() {
|
5379 |
this.classList.add( 'frm_loading_button' );
|
@@ -5564,14 +5792,14 @@ function frmAdminBuildJS() {
|
|
5564 |
},
|
5565 |
|
5566 |
updateOpts: function( field_id, opts, modal ) {
|
5567 |
-
var separate = usingSeparateValues( field_id )
|
5568 |
-
|
5569 |
-
|
5570 |
jQuery.ajax( {
|
5571 |
type: 'POST',
|
5572 |
url: ajaxurl,
|
5573 |
data: {
|
5574 |
-
action:
|
5575 |
field_id: field_id,
|
5576 |
opts: opts,
|
5577 |
separate: separate,
|
372 |
return false;
|
373 |
}
|
374 |
|
375 |
+
function infoModal( msg ) {
|
376 |
+
var $info = initModal( '#frm_info_modal', '400px' );
|
377 |
+
|
378 |
+
if ( $info === false ) {
|
379 |
+
return false;
|
380 |
+
}
|
381 |
+
|
382 |
+
jQuery( '.frm-info-msg' ).html( msg );
|
383 |
+
|
384 |
+
$info.dialog( 'open' );
|
385 |
+
return false;
|
386 |
+
}
|
387 |
+
|
388 |
function toggleItem( e ) {
|
389 |
/*jshint validthis:true */
|
390 |
var toggle = this.getAttribute( 'data-frmtoggle' ),
|
686 |
if ( auto !== 'auto' ) {
|
687 |
// Hide success message on tab change.
|
688 |
jQuery( '.frm_updated_message' ).hide();
|
689 |
+
jQuery( '.frm_warning_style' ).hide();
|
690 |
}
|
691 |
|
692 |
if ( jQuery( link ).closest( '#frm_adv_info' ).length ) {
|
1015 |
|
1016 |
initiateMultiselect();
|
1017 |
renumberPageBreaks();
|
1018 |
+
maybeHideQuantityProductFieldOption();
|
1019 |
},
|
1020 |
} );
|
1021 |
}
|
1090 |
}
|
1091 |
|
1092 |
function maybeReenableSummaryBtnAfterAJAX( fieldType, addBtn, fieldButton, errorThrown ) {
|
1093 |
+
infoModal( errorThrown + '. Please try again.' );
|
1094 |
if ( 'summary' === fieldType ) {
|
1095 |
addBtn.removeClass( 'disabled' );
|
1096 |
fieldButton.draggable( 'enable' );
|
1102 |
return $newFields.children( 'li.edit_field_type_summary' ).length > 0;
|
1103 |
}
|
1104 |
|
1105 |
+
function maybeHideQuantityProductFieldOption() {
|
1106 |
+
var hide = true,
|
1107 |
+
opts = document.querySelectorAll( '.frmjs_prod_field_opt_cont' );
|
1108 |
+
|
1109 |
+
if ( $newFields.find( 'li.edit_field_type_product' ).length > 1 ) {
|
1110 |
+
hide = false;
|
1111 |
+
}
|
1112 |
+
|
1113 |
+
for ( var i = 0; i < opts.length; i++ ) {
|
1114 |
+
if ( hide ) {
|
1115 |
+
opts[ i ].classList.add( 'frm_hidden' );
|
1116 |
+
} else {
|
1117 |
+
opts[ i ].classList.remove( 'frm_hidden' );
|
1118 |
+
}
|
1119 |
+
}
|
1120 |
+
}
|
1121 |
+
|
1122 |
function duplicateField() {
|
1123 |
/*jshint validthis:true */
|
1124 |
var thisField = jQuery( this ).closest( 'li' );
|
1153 |
field = document.getElementById( match[1] ),
|
1154 |
section = '#' + match[1] + '.edit_field_type_divider ul.frm_sorting',
|
1155 |
$thisSection = jQuery( section ),
|
1156 |
+
type = field.getAttribute( 'data-type' ),
|
1157 |
toggled = false;
|
1158 |
|
1159 |
setupSortable( section );
|
1160 |
|
1161 |
+
if ( 'quantity' === type ) {
|
1162 |
+
// try to automatically attach a product field
|
1163 |
+
maybeSetProductField( field );
|
1164 |
+
}
|
1165 |
+
|
1166 |
+
if ( 'product' === type || 'quantity' === type ) {
|
1167 |
+
// quantity too needs to be a part of the if stmt especially cos of the very
|
1168 |
+
// 1st quantity field (or even if it's just one quantity field in the form).
|
1169 |
+
maybeHideQuantityProductFieldOption();
|
1170 |
+
}
|
1171 |
+
|
1172 |
if ( $thisSection.length ) {
|
1173 |
$thisSection.parent( '.frm_field_box' ).children( '.frm_no_section_fields' ).addClass( 'frm_block' );
|
1174 |
} else {
|
1244 |
warningMessage += checkShortcodes( calculation, this );
|
1245 |
|
1246 |
if ( warningMessage !== '' ) {
|
1247 |
+
infoModal( calculation + "\n\n" + warningMessage );
|
1248 |
}
|
1249 |
}
|
1250 |
|
1251 |
+
/**
|
1252 |
+
* Checks the Detail Page slug to see if it's a reserved word and displays a message if it is.
|
1253 |
+
*/
|
1254 |
+
function checkDetailPageSlug() {
|
1255 |
+
var slug = jQuery( '#param' ).val(),
|
1256 |
+
msg;
|
1257 |
+
slug = slug.trim().toLowerCase();
|
1258 |
+
if ( Array.isArray( frm_admin_js.unsafe_params ) && frm_admin_js.unsafe_params.includes( slug ) ) {
|
1259 |
+
msg = frm_admin_js.slug_is_reserved;
|
1260 |
+
msg = msg.replace( '****', addHtmlTags( slug, 'strong' ) );
|
1261 |
+
msg += '<br /><br />';
|
1262 |
+
msg += addHtmlTags( '<a href="https://codex.wordpress.org/WordPress_Query_Vars" target="_blank" class="frm-standard-link">' + frm_admin_js.reserved_words + '</a>', 'div');
|
1263 |
+
infoModal( msg );
|
1264 |
+
}
|
1265 |
+
}
|
1266 |
+
|
1267 |
+
/**
|
1268 |
+
* Checks View filter value for params named with reserved words and displays a message if any are found.
|
1269 |
+
*/
|
1270 |
+
function checkFilterParamNames() {
|
1271 |
+
var regEx = /\[\s*get\s*param\s*=\s*['"]?([a-zA-Z-_]+)['"]?/ig,
|
1272 |
+
filterValue = jQuery( this ).val(),
|
1273 |
+
match = regEx.exec( filterValue ),
|
1274 |
+
unsafeParams = '';
|
1275 |
+
|
1276 |
+
while ( match != null ) {
|
1277 |
+
if ( Array.isArray( frm_admin_js.unsafe_params ) && frm_admin_js.unsafe_params.includes( match[ 1 ] ) ) {
|
1278 |
+
if ( unsafeParams !== '' ) {
|
1279 |
+
unsafeParams += '", "' + match[ 1 ];
|
1280 |
+
} else {
|
1281 |
+
unsafeParams = match[ 1 ];
|
1282 |
+
}
|
1283 |
+
}
|
1284 |
+
match = regEx.exec( filterValue );
|
1285 |
+
}
|
1286 |
+
|
1287 |
+
if ( unsafeParams !== '' ) {
|
1288 |
+
msg = frm_admin_js.param_is_reserved;
|
1289 |
+
msg = msg.replace( '****', addHtmlTags( unsafeParams, 'strong' ) );
|
1290 |
+
msg += '<br /><br />';
|
1291 |
+
msg += ' <a href="https://codex.wordpress.org/WordPress_Query_Vars" target="_blank" class="frm-standard-link">' + frm_admin_js.reserved_words + '</a>';
|
1292 |
+
|
1293 |
+
infoModal( msg );
|
1294 |
+
}
|
1295 |
+
}
|
1296 |
+
|
1297 |
+
function addHtmlTags( text, tag ){
|
1298 |
+
tag = tag ? tag : 'p';
|
1299 |
+
return '<' + tag + '>' + text + '</' + tag + '>';
|
1300 |
+
}
|
1301 |
+
|
1302 |
/**
|
1303 |
* Checks a string for parens, brackets, and curly braces and returns a message if any unmatched are found.
|
1304 |
* @param formula
|
1333 |
}
|
1334 |
|
1335 |
if ( stack.length > 0 || unmatchedClosing.length > 0 ) {
|
1336 |
+
msg = frm_admin_js.unmatched_parens + "\n\n";
|
1337 |
return msg;
|
1338 |
}
|
1339 |
|
1420 |
return /\[id\]|\[key\]|\[if\s\w+\]|\[foreach\s\w+\]|\[created-at(\s*)?/g;
|
1421 |
}
|
1422 |
|
1423 |
+
function isCalcBoxType( box, listClass ) {
|
1424 |
var list = jQuery( box ).find( '.frm_code_list' );
|
1425 |
+
return 1 === list.length && list.hasClass( listClass );
|
1426 |
}
|
1427 |
|
1428 |
function extractExcludedOptions( exclude ) {
|
1429 |
var opts = [];
|
1430 |
+
if ( ! Array.isArray( exclude ) ) {
|
1431 |
+
return opts;
|
1432 |
+
}
|
1433 |
+
|
1434 |
for ( var i = 0; i < exclude.length; i++ ) {
|
1435 |
if ( exclude[ i ].startsWith( '[' ) ) {
|
1436 |
opts.push( exclude[ i ] );
|
1471 |
return;
|
1472 |
}
|
1473 |
|
1474 |
+
var isSummary = isCalcBoxType( v, 'frm_js_summary_list' );
|
1475 |
|
1476 |
var form_id = jQuery( 'input[name="id"]' ).val();
|
1477 |
var fieldId = p.find( 'input[name="frm_fields_submitted[]"]' ).val();
|
1490 |
list.innerHTML = '';
|
1491 |
|
1492 |
for ( i = 0; i < fields.length; i++ ) {
|
1493 |
+
if ( ( exclude && exclude.includes( fields[ i ].fieldType ) ) ||
|
1494 |
( excludedOpts.length && hasExcludedOption( fields[ i ], excludedOpts ) ) ) {
|
1495 |
continue;
|
1496 |
}
|
1552 |
popCalcFields( jQuery( '.frm-inline-modal.postbox:has(.frm_js_summary_list)' )[0], true );
|
1553 |
}
|
1554 |
|
1555 |
+
function getFieldList( fieldType ) {
|
1556 |
var i, fields = [],
|
1557 |
+
allFields = document.querySelectorAll( 'li.frm_field_box' ),
|
1558 |
+
checkType = 'undefined' !== typeof fieldType;
|
1559 |
|
1560 |
for ( i = 0; i < allFields.length; i++ ) {
|
1561 |
+
// data-ftype is better (than data-type) cos of fields loaded by AJAX - which might not be ready yet
|
1562 |
+
if ( checkType && allFields[ i ].getAttribute( 'data-ftype' ) !== fieldType ) {
|
1563 |
+
continue;
|
1564 |
+
}
|
1565 |
+
|
1566 |
var fieldId = allFields[ i ].getAttribute( 'data-fid' );
|
1567 |
if ( typeof fieldId !== 'undefined' && fieldId ) {
|
1568 |
fields.push( {
|
1572 |
'fieldKey': getPossibleValue( 'field_options_field_key_' + fieldId )
|
1573 |
} );
|
1574 |
}
|
1575 |
+
}
|
1576 |
+
|
1577 |
+
return fields;
|
1578 |
+
}
|
1579 |
+
|
1580 |
+
function popProductFields( field ) {
|
1581 |
+
var options = [], fields, i, selected, current;
|
1582 |
|
1583 |
+
current = field.getAttribute( 'data-frmcurrent' );
|
1584 |
+
|
1585 |
+
fields = getFieldList( 'product' );
|
1586 |
+
|
1587 |
+
options.push( '<option value="">' + frm_admin_js.select_a_field + '</option>' );
|
1588 |
+
|
1589 |
+
for ( i = 0; i < fields.length; i++ ) {
|
1590 |
+
selected = current == fields[ i ].fieldId ? ' selected' : '';
|
1591 |
+
options.push( '<option value="'+ fields[ i ].fieldId +'"' + selected + '>'+ fields[ i ].fieldName +'</option>' );
|
1592 |
+
}
|
1593 |
+
|
1594 |
+
field.innerHTML = options.join( '' );
|
1595 |
+
}
|
1596 |
+
|
1597 |
+
function popAllProductFields() {
|
1598 |
+
var opts = document.querySelectorAll( '.frmjs_prod_field_opt' );
|
1599 |
+
for ( var i = 0; i < opts.length; i++ ) {
|
1600 |
+
popProductFields( opts[ i ] );
|
1601 |
+
}
|
1602 |
+
}
|
1603 |
+
|
1604 |
+
function maybeSetProductField( field ) {
|
1605 |
+
var productFields, quantityFields, fieldsList, productFieldOpt, fieldId;
|
1606 |
+
|
1607 |
+
fieldsList = jQuery( field ).closest( 'ul.frm_sorting' );
|
1608 |
+
productFields = fieldsList.children( '.edit_field_type_product' );
|
1609 |
+
quantityFields = fieldsList.children( '.edit_field_type_quantity' );
|
1610 |
+
|
1611 |
+
if ( 1 === quantityFields.length && 1 === productFields.length ) {
|
1612 |
+
fieldId = field.getAttribute( 'data-fid' );
|
1613 |
+
productFieldOpt = document.getElementById( 'field_options[product_field_' + fieldId + ']' );
|
1614 |
+
if ( null === productFieldOpt ) {
|
1615 |
+
return; // very unlikely though
|
1616 |
}
|
1617 |
+
|
1618 |
+
productFieldOpt.setAttribute( 'data-frmcurrent', productFields[0].getAttribute( 'data-fid' ) );
|
1619 |
+
popProductFields( productFieldOpt );
|
1620 |
+
// in order to move its settings to that LHS panel where
|
1621 |
+
// the update form resides, else it'll lose this setting
|
1622 |
+
moveFieldSettings( document.getElementById( 'frm-single-settings-' + fieldId ) );
|
1623 |
}
|
1624 |
}
|
1625 |
|
1805 |
fieldId = jQuery( this ).closest( '[data-fid]' ).data( 'fid' ),
|
1806 |
separate = usingSeparateValues( fieldId ),
|
1807 |
optList = document.getElementById( 'frm_field_' + fieldId + '_opts' ),
|
1808 |
+
opts = optList.getElementsByTagName( 'li' ),
|
1809 |
+
product = isProductField( fieldId );
|
1810 |
|
1811 |
document.getElementById( 'bulk-field-id' ).value = fieldId;
|
1812 |
|
1819 |
if ( separate ) {
|
1820 |
content += '|' + document.getElementsByName( 'field_options[options_' + fieldId + '][' + key + '][value]' )[0].value;
|
1821 |
}
|
1822 |
+
if ( product ) {
|
1823 |
+
content += '|' + document.getElementsByName( 'field_options[options_' + fieldId + '][' + key + '][price]' )[0].value;
|
1824 |
+
}
|
1825 |
content += "\r\n";
|
1826 |
}
|
1827 |
}
|
2067 |
settings.remove();
|
2068 |
|
2069 |
$thisField.fadeOut( 'slow', function() {
|
2070 |
+
var $section = $thisField.closest( '.start_divider' ),
|
2071 |
+
type = $thisField.data( 'type' );
|
2072 |
$thisField.remove();
|
2073 |
+
if ( type === 'break' ) {
|
2074 |
renumberPageBreaks();
|
2075 |
}
|
2076 |
+
if ( type === 'summary' ) {
|
2077 |
reenableAddSummaryBtn();
|
2078 |
}
|
2079 |
+
if ( type === 'product' ) {
|
2080 |
+
maybeHideQuantityProductFieldOption();
|
2081 |
+
// a product field attached to a quantity field earlier might be the one deleted, so re-populate
|
2082 |
+
popAllProductFields();
|
2083 |
+
}
|
2084 |
if ( jQuery( '#frm-show-fields li' ).length === 0 ) {
|
2085 |
document.getElementById( 'frm_form_editor_container' ).classList.remove( 'frm-has-fields' );
|
2086 |
} else if ( $section.length ) {
|
2296 |
}
|
2297 |
|
2298 |
function clickLabel() {
|
2299 |
+
if ( ! this.id ) {
|
2300 |
+
return;
|
2301 |
+
}
|
2302 |
+
|
2303 |
/*jshint validthis:true */
|
2304 |
var setting = document.querySelectorAll( '[data-changeme="' + this.id + '"]' )[0],
|
2305 |
fieldId = this.id.replace( 'field_label_', '' ),
|
2394 |
/*jshint validthis:true */
|
2395 |
var val = this.value;
|
2396 |
if ( val !== '' && ( val < 2 || val > 200 ) ) {
|
2397 |
+
infoModal( frm_admin_js.repeat_limit_min );
|
2398 |
this.value = '';
|
2399 |
}
|
2400 |
}
|
2403 |
/*jshint validthis:true */
|
2404 |
var val = this.value;
|
2405 |
if ( val !== '' && ( val < 1 || val > 200 ) ) {
|
2406 |
+
infoModal( frm_admin_js.checkbox_limit );
|
2407 |
this.value = '';
|
2408 |
}
|
2409 |
}
|
2527 |
type = input.attr( 'type' );
|
2528 |
jQuery( '#field_' + fieldId + '_inner_container > .frm_form_fields' ).html( '' );
|
2529 |
fieldInfo = getFieldKeyFromOpt( jQuery( '#frm_delete_field_' + fieldId + '-000_container' ) );
|
2530 |
+
var container = jQuery( '#field_' + fieldId + '_inner_container > .frm_form_fields' ),
|
2531 |
+
isProduct = isProductField( fieldId );
|
2532 |
|
2533 |
for ( i = 0; i < opts.length; i++ ) {
|
2534 |
+
container.append( addRadioCheckboxOpt( type, opts[ i ], fieldId, fieldInfo.fieldKey, isProduct ) );
|
2535 |
}
|
2536 |
}
|
2537 |
}
|
2538 |
|
2539 |
+
function addRadioCheckboxOpt( type, opt, fieldId, fieldKey, isProduct ) {
|
2540 |
var other, single,
|
2541 |
isOther = opt.key.indexOf( 'other' ) !== -1,
|
2542 |
+
id = 'field_' + fieldKey + '-' + opt.key;
|
|
|
2543 |
|
2544 |
other = '<input type="text" id="field_' + fieldKey + '-' + opt.key + '-otext" class="frm_other_input frm_pos_none" name="item_meta[other][' + fieldId + '][' + opt.key + ']" value="" />';
|
2545 |
|
2546 |
single = '<div class="frm_' + type + ' ' + type + '" id="frm_' + type + '_' + fieldId + '-' + opt.key + '"><label for="' + id +
|
2547 |
'"><input type="' + type +
|
2548 |
'" name="item_meta[' + fieldId + ']' + ( type === 'checkbox' ? '[]' : '' ) +
|
2549 |
+
'" value="' + opt.saved + '" id="' + id + '"' + ( isProduct ? ' data-price="' + opt.price + '"' : '' ) + '> ' + opt.label + '</label>' +
|
2550 |
( isOther ? other : '' ) +
|
2551 |
'</div>';
|
2552 |
|
2553 |
+
return single;
|
2554 |
}
|
2555 |
|
2556 |
function fillDropdownOpts( field, atts ) {
|
2559 |
}
|
2560 |
var sourceID = atts.sourceID,
|
2561 |
placeholder = atts.placeholder,
|
2562 |
+
isProduct = isProductField( sourceID )
|
2563 |
showOther = atts.other;
|
2564 |
|
2565 |
removeDropdownOpts( field );
|
2581 |
var opt = document.createElement( 'option' );
|
2582 |
opt.value = opts[ i ].saved;
|
2583 |
opt.innerHTML = label;
|
2584 |
+
|
2585 |
+
if ( isProduct ) {
|
2586 |
+
opt.setAttribute( 'data-price', opts[ i ].price );
|
2587 |
+
}
|
2588 |
+
|
2589 |
field.appendChild( opt );
|
2590 |
}
|
2591 |
}
|
2606 |
}
|
2607 |
|
2608 |
function getMultipleOpts( fieldId ) {
|
2609 |
+
var i, saved, labelName, label, key, opts = [], optObj,
|
2610 |
optVals = jQuery( 'input[name^="field_options[options_' + fieldId + ']"]' ),
|
2611 |
+
separateValues = usingSeparateValues( fieldId ),
|
2612 |
+
isProduct = isProductField( fieldId );
|
2613 |
|
2614 |
for ( i = 0; i < optVals.length; i++ ) {
|
2615 |
+
if ( optVals[ i ].name.indexOf( '[000]' ) > 0 || optVals[ i ].name.indexOf( '[value]' ) > 0 || optVals[ i ].name.indexOf( '[price]' ) > 0 ) {
|
2616 |
continue;
|
2617 |
}
|
2618 |
saved = optVals[ i ].value;
|
2624 |
saved = jQuery( 'input[name="' + labelName + '"]' ).val();
|
2625 |
}
|
2626 |
|
2627 |
+
optObj = {
|
2628 |
saved: saved,
|
2629 |
label: label,
|
2630 |
key: key
|
2631 |
+
};
|
2632 |
+
|
2633 |
+
if ( isProduct ) {
|
2634 |
+
labelName = optVals[ i ].name.replace( '[label]', '[price]' );
|
2635 |
+
optObj.price = jQuery( 'input[name="' + labelName + '"]' ).val();
|
2636 |
+
}
|
2637 |
+
|
2638 |
+
opts.push( optObj );
|
2639 |
}
|
2640 |
|
2641 |
return opts;
|
2672 |
var c = false;
|
2673 |
if ( !c && jQuery( v ).attr( 'id' ) != id && jQuery( v ).html() == text ) {
|
2674 |
c = true;
|
2675 |
+
infoModal( 'Saved values cannot be identical.' );
|
2676 |
}
|
2677 |
} );
|
2678 |
}
|
2864 |
*/
|
2865 |
function hideEmptyEle() {
|
2866 |
jQuery( '.frm-hide-empty' ).each( function() {
|
2867 |
+
if ( jQuery( this ).text().trim().length === 0 ) {
|
2868 |
jQuery( this ).remove();
|
2869 |
}
|
2870 |
});
|
3277 |
function showFieldOptions( obj ) {
|
3278 |
var i, singleField,
|
3279 |
fieldId = obj.getAttribute( 'data-fid' ),
|
3280 |
+
fieldType = obj.getAttribute( 'data-type' ),
|
3281 |
allFieldSettings = document.querySelectorAll( '.frm-single-settings:not(.frm_hidden)' );
|
3282 |
|
3283 |
for ( i = 0; i < allFieldSettings.length; i++ ) {
|
3287 |
singleField = document.getElementById( 'frm-single-settings-' + fieldId );
|
3288 |
moveFieldSettings( singleField );
|
3289 |
|
3290 |
+
if ( fieldType && 'quantity' === fieldType ) {
|
3291 |
+
popProductFields( jQuery( singleField ).find( '.frmjs_prod_field_opt' )[0] );
|
3292 |
+
}
|
3293 |
+
|
3294 |
singleField.classList.remove( 'frm_hidden' );
|
3295 |
document.getElementById( 'frm-options-panel-tab' ).click();
|
3296 |
}
|
3338 |
function checkActiveAction( type ) {
|
3339 |
var limit = parseInt( jQuery( '.frm_' + type + '_action' ).data( 'limit' ) );
|
3340 |
var len = jQuery( '.frm_single_' + type + '_settings' ).length;
|
3341 |
+
var limitClass;
|
3342 |
if ( len >= limit ) {
|
3343 |
+
limitClass = 'frm_inactive_action';
|
3344 |
+
limitClass += ( limit > 0 ) ? ' frm_already_used' : '';
|
3345 |
+
jQuery( '.frm_' + type + '_action' ).removeClass( 'frm_active_action' ).addClass( limitClass );
|
3346 |
} else {
|
3347 |
+
jQuery( '.frm_' + type + '_action' ).removeClass( 'frm_inactive_action frm_already_used' ).addClass( 'frm_active_action' );
|
3348 |
}
|
3349 |
}
|
3350 |
|
3351 |
+
function onlyOneActionMessage() {
|
3352 |
+
infoModal( frm_admin_js.only_one_action );
|
3353 |
+
}
|
3354 |
+
|
3355 |
function addFormLogicRow() {
|
3356 |
/*jshint validthis:true */
|
3357 |
var id = jQuery( this ).data( 'emailkey' );
|
3489 |
if ( jQuery( this ).val() === v && this.name !== $t.name ) {
|
3490 |
this.style.borderColor = 'red';
|
3491 |
jQuery( $t ).val( '' );
|
3492 |
+
infoModal( 'Oops. You have already used that field.' );
|
3493 |
return false;
|
3494 |
}
|
3495 |
} );
|
4300 |
// Check if there is enough space for text
|
4301 |
var textSpace = height - size - paddingTop - paddingBottom - 3;
|
4302 |
if ( textSpace < 0 ) {
|
4303 |
+
infoModal( frm_admin_js.css_invalid_size );
|
4304 |
}
|
4305 |
}
|
4306 |
|
4842 |
create: function( event, ui ) {
|
4843 |
var $container = jQuery( this ).parent();
|
4844 |
|
4845 |
+
if ( $container.length === 0 ) {
|
4846 |
$container = 'body';
|
4847 |
}
|
4848 |
|
4908 |
|
4909 |
function installNewForm( form, action ) {
|
4910 |
var data,
|
4911 |
+
formName = form.elements.template_name.value,
|
4912 |
+
formDesc = form.elements.template_desc.value,
|
4913 |
+
link = form.elements.link.value;
|
4914 |
|
4915 |
data = {
|
4916 |
action: action,
|
5121 |
}
|
5122 |
}
|
5123 |
|
5124 |
+
function toggleProductType() {
|
5125 |
+
var settings = jQuery( this ).closest( '.frm-single-settings' ),
|
5126 |
+
container = settings.find( '.frmjs_product_choices' ),
|
5127 |
+
heading = settings.find( '.frm_prod_options_heading' ),
|
5128 |
+
currentVal = this.options[ this.selectedIndex ].value;
|
5129 |
+
|
5130 |
+
container.removeClass( 'frm_prod_type_single frm_prod_type_user_def' );
|
5131 |
+
heading.removeClass( 'frm_prod_user_def' );
|
5132 |
+
|
5133 |
+
if ( 'single' === currentVal ) {
|
5134 |
+
container.addClass( 'frm_prod_type_single' );
|
5135 |
+
} else if ( 'user_def' === currentVal ) {
|
5136 |
+
container.addClass( 'frm_prod_type_user_def' );
|
5137 |
+
heading.addClass( 'frm_prod_user_def' );
|
5138 |
+
}
|
5139 |
+
}
|
5140 |
+
|
5141 |
+
function isProductField( fieldId ) {
|
5142 |
+
var field = document.getElementById( 'frm_field_id_' + fieldId );
|
5143 |
+
if ( field === null ) {
|
5144 |
+
return false;
|
5145 |
+
} else {
|
5146 |
+
return 'product' === field.getAttribute( 'data-type' );
|
5147 |
+
}
|
5148 |
+
}
|
5149 |
+
|
5150 |
return {
|
5151 |
init: function() {
|
5152 |
s = {};
|
5371 |
$builderForm.on( 'change', '.frm_include_extras_field', rePopCalcFieldsForSummary );
|
5372 |
$builderForm.on( 'change', 'select[name^="field_options[form_select_"]', maybeChangeEmbedFormMsg );
|
5373 |
|
5374 |
+
popAllProductFields();
|
5375 |
+
jQuery( document ).on( 'change', '.frmjs_prod_field_opt', function () {
|
5376 |
+
this.setAttribute( 'data-frmcurrent', this.options[ this.selectedIndex ].value );
|
5377 |
+
} );
|
5378 |
+
|
5379 |
+
jQuery( document ).on( 'change', '.frmjs_prod_data_type_opt', toggleProductType );
|
5380 |
+
|
5381 |
initBulkOptionsOverlay();
|
5382 |
hideEmptyEle();
|
5383 |
maybeDisableAddSummaryBtn();
|
5384 |
+
maybeHideQuantityProductFieldOption();
|
5385 |
},
|
5386 |
|
5387 |
settingsInit: function() {
|
5419 |
var formSettings = jQuery( '.frm_form_settings' );
|
5420 |
formSettings.on( 'click', '.frm_add_form_logic', addFormLogicRow );
|
5421 |
formSettings.on( 'blur', '.frm_email_blur', formatEmailSetting );
|
5422 |
+
formSettings.on( 'click', '.frm_already_used', onlyOneActionMessage );
|
5423 |
|
5424 |
formSettings.on( 'change', '#logic_link_submit', toggleSubmitLogic );
|
5425 |
formSettings.on( 'click', '.frm_add_submit_logic', addSubmitLogic );
|
5599 |
$advInfo.before( '<div id="frm_position_ele"></div>' );
|
5600 |
setupMenuOffset();
|
5601 |
|
5602 |
+
jQuery( document ).on( 'blur', '#param', checkDetailPageSlug );
|
5603 |
+
jQuery( document ).on( 'blur', 'input[name^="options[where_val]"]', checkFilterParamNames );
|
5604 |
+
|
5605 |
// Show loading indicator.
|
5606 |
jQuery( '#publish' ).mousedown( function() {
|
5607 |
this.classList.add( 'frm_loading_button' );
|
5792 |
},
|
5793 |
|
5794 |
updateOpts: function( field_id, opts, modal ) {
|
5795 |
+
var separate = usingSeparateValues( field_id ),
|
5796 |
+
$fieldOpts = document.getElementById( 'frm_field_' + field_id + '_opts' ),
|
5797 |
+
action = isProductField( field_id ) ? 'frm_bulk_products' : 'frm_import_options';
|
5798 |
jQuery.ajax( {
|
5799 |
type: 'POST',
|
5800 |
url: ajaxurl,
|
5801 |
data: {
|
5802 |
+
action: action,
|
5803 |
field_id: field_id,
|
5804 |
opts: opts,
|
5805 |
separate: separate,
|
languages/formidable.pot
CHANGED
@@ -2,14 +2,14 @@
|
|
2 |
# This file is distributed under the same license as the Formidable Forms plugin.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Formidable Forms 4.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/formidable\n"
|
7 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
8 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"POT-Creation-Date: 2020-
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.1.0\n"
|
15 |
"X-Domain: formidable\n"
|
@@ -241,7 +241,7 @@ msgid "Dropdown"
|
|
241 |
msgstr ""
|
242 |
|
243 |
#: classes/models/FrmField.php:34
|
244 |
-
#: classes/controllers/FrmFormsController.php:
|
245 |
msgid "Email"
|
246 |
msgstr ""
|
247 |
|
@@ -266,7 +266,7 @@ msgid "Hidden Field"
|
|
266 |
msgstr ""
|
267 |
|
268 |
#: classes/models/FrmField.php:58
|
269 |
-
#: classes/controllers/FrmFormsController.php:
|
270 |
msgid "User ID"
|
271 |
msgstr ""
|
272 |
|
@@ -283,7 +283,7 @@ msgid "Rich Text"
|
|
283 |
msgstr ""
|
284 |
|
285 |
#: classes/models/FrmField.php:82
|
286 |
-
#: classes/controllers/FrmFormsController.php:
|
287 |
msgid "Date"
|
288 |
msgstr ""
|
289 |
|
@@ -367,6 +367,19 @@ msgstr ""
|
|
367 |
msgid "Appointment"
|
368 |
msgstr ""
|
369 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
370 |
#: classes/models/FrmDb.php:430
|
371 |
msgid "Use the query in an array format so it can be properly prepared."
|
372 |
msgstr ""
|
@@ -424,28 +437,37 @@ msgstr ""
|
|
424 |
msgid "The reCAPTCHA was not entered correctly"
|
425 |
msgstr ""
|
426 |
|
427 |
-
#. translators: %s: Field type
|
428 |
#. translators: %s: Field name
|
429 |
-
|
430 |
-
#: classes/
|
|
|
431 |
msgid "%s Options"
|
432 |
msgstr ""
|
433 |
|
434 |
-
#: classes/models/fields/FrmFieldType.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
435 |
#: classes/helpers/FrmFieldsHelper.php:294
|
436 |
msgid "This field is invalid"
|
437 |
msgstr ""
|
438 |
|
439 |
#. translators: %s: The field name.
|
440 |
#. translators: %s: Field name
|
441 |
-
#: classes/models/fields/FrmFieldType.php:
|
442 |
#: classes/helpers/FrmFieldsHelper.php:167
|
443 |
#: classes/helpers/FrmFieldsHelper.php:296
|
444 |
#: classes/helpers/FrmXMLHelper.php:1099
|
445 |
msgid "%s is invalid"
|
446 |
msgstr ""
|
447 |
|
448 |
-
#: classes/models/fields/FrmFieldType.php:
|
449 |
msgid "Untitled"
|
450 |
msgstr ""
|
451 |
|
@@ -570,7 +592,7 @@ msgid "Installed"
|
|
570 |
msgstr ""
|
571 |
|
572 |
#: classes/controllers/FrmAddonsController.php:484
|
573 |
-
#: classes/helpers/FrmAppHelper.php:
|
574 |
msgid "Active"
|
575 |
msgstr ""
|
576 |
|
@@ -603,7 +625,7 @@ msgstr ""
|
|
603 |
|
604 |
#: classes/controllers/FrmAppController.php:158
|
605 |
#: classes/controllers/FrmXMLController.php:133
|
606 |
-
#: classes/controllers/FrmFormsController.php:
|
607 |
#: classes/controllers/FrmEntriesController.php:8
|
608 |
#: classes/controllers/FrmEntriesController.php:90
|
609 |
#: classes/views/xml/import_form.php:114
|
@@ -639,7 +661,7 @@ msgstr ""
|
|
639 |
|
640 |
#: classes/controllers/FrmXMLController.php:132
|
641 |
#: classes/controllers/FrmFormsController.php:6
|
642 |
-
#: classes/controllers/FrmFormsController.php:
|
643 |
#: classes/views/frm-forms/list.php:5
|
644 |
msgid "Forms"
|
645 |
msgstr ""
|
@@ -710,7 +732,7 @@ msgstr ""
|
|
710 |
#: classes/controllers/FrmSettingsController.php:237
|
711 |
#: classes/views/frm-forms/_publish_box.php:9
|
712 |
#: classes/views/frm-forms/edit.php:23
|
713 |
-
#: classes/views/frm-forms/add_field_links.php:
|
714 |
#: classes/views/styles/header-buttons.php:7
|
715 |
#: classes/views/styles/manage.php:84
|
716 |
#: classes/helpers/FrmStylesHelper.php:70
|
@@ -817,12 +839,12 @@ msgid "Your form styles have been saved."
|
|
817 |
msgstr ""
|
818 |
|
819 |
#: classes/controllers/FrmStylesController.php:389
|
820 |
-
#: classes/controllers/FrmFormsController.php:
|
821 |
msgid "General"
|
822 |
msgstr ""
|
823 |
|
824 |
#: classes/controllers/FrmStylesController.php:390
|
825 |
-
#: classes/controllers/FrmFormsController.php:
|
826 |
#: classes/views/frm-forms/settings-advanced.php:8
|
827 |
#: classes/views/xml/import_form.php:111
|
828 |
#: classes/views/styles/_sample_form.php:14
|
@@ -872,269 +894,269 @@ msgstr ""
|
|
872 |
msgid "Once Weekly"
|
873 |
msgstr ""
|
874 |
|
875 |
-
#: classes/controllers/FrmFormsController.php:
|
876 |
msgid "Settings Successfully Updated"
|
877 |
msgstr ""
|
878 |
|
879 |
-
#: classes/controllers/FrmFormsController.php:
|
880 |
-
#: classes/controllers/FrmFormsController.php:
|
881 |
msgid "Form was successfully updated."
|
882 |
msgstr ""
|
883 |
|
884 |
#. translators: %1$s: Start link HTML, %2$s: end link HTML
|
885 |
-
#: classes/controllers/FrmFormsController.php:
|
886 |
msgid "However, your form is very long and may be %1$sreaching server limits%2$s."
|
887 |
msgstr ""
|
888 |
|
889 |
-
#: classes/controllers/FrmFormsController.php:
|
890 |
#: deprecated/FrmDeprecated.php:400
|
891 |
msgid "Form template was Successfully Created"
|
892 |
msgstr ""
|
893 |
|
894 |
-
#: classes/controllers/FrmFormsController.php:
|
895 |
msgid "Form was Successfully Copied"
|
896 |
msgstr ""
|
897 |
|
898 |
-
#: classes/controllers/FrmFormsController.php:
|
899 |
msgid "There was a problem creating the new template."
|
900 |
msgstr ""
|
901 |
|
902 |
-
#: classes/controllers/FrmFormsController.php:
|
903 |
msgid "Form Preview"
|
904 |
msgstr ""
|
905 |
|
906 |
#. translators: %1$s: Number of forms
|
907 |
-
#: classes/controllers/FrmFormsController.php:
|
908 |
-
#: classes/controllers/FrmFormsController.php:
|
909 |
msgid "%1$s form restored from the Trash."
|
910 |
msgid_plural "%1$s forms restored from the Trash."
|
911 |
msgstr[0] ""
|
912 |
|
913 |
#. translators: %1$s: Number of forms, %2$s: Start link HTML, %3$s: End link HTML
|
914 |
-
#: classes/controllers/FrmFormsController.php:
|
915 |
-
#: classes/controllers/FrmFormsController.php:
|
916 |
msgid "%1$s form moved to the Trash. %2$sUndo%3$s"
|
917 |
msgid_plural "%1$s forms moved to the Trash. %2$sUndo%3$s"
|
918 |
msgstr[0] ""
|
919 |
|
920 |
#. translators: %1$s: Number of forms
|
921 |
-
#: classes/controllers/FrmFormsController.php:
|
922 |
msgid "%1$s Form Permanently Deleted"
|
923 |
msgid_plural "%1$s Forms Permanently Deleted"
|
924 |
msgstr[0] ""
|
925 |
|
926 |
#. translators: %1$s: Number of forms
|
927 |
-
#: classes/controllers/FrmFormsController.php:
|
928 |
-
#: classes/controllers/FrmFormsController.php:
|
929 |
msgid "%1$s form permanently deleted."
|
930 |
msgid_plural "%1$s forms permanently deleted."
|
931 |
msgstr[0] ""
|
932 |
|
933 |
-
#: classes/controllers/FrmFormsController.php:
|
934 |
msgid "There was an error creating a template."
|
935 |
msgstr ""
|
936 |
|
937 |
-
#: classes/controllers/FrmFormsController.php:
|
938 |
msgid "Add forms and content"
|
939 |
msgstr ""
|
940 |
|
941 |
-
#: classes/controllers/FrmFormsController.php:
|
942 |
#: classes/controllers/FrmEntriesController.php:74
|
943 |
#: classes/views/xml/import_form.php:145
|
944 |
#: classes/widgets/FrmShowForm.php:56
|
945 |
msgid "Form"
|
946 |
msgstr ""
|
947 |
|
948 |
-
#: classes/controllers/FrmFormsController.php:
|
949 |
#: classes/views/frm-forms/insert_form_popup.php:28
|
950 |
msgid "Insert a Form"
|
951 |
msgstr ""
|
952 |
|
953 |
-
#: classes/controllers/FrmFormsController.php:
|
954 |
msgid "Display form title"
|
955 |
msgstr ""
|
956 |
|
957 |
-
#: classes/controllers/FrmFormsController.php:
|
958 |
msgid "Display form description"
|
959 |
msgstr ""
|
960 |
|
961 |
-
#: classes/controllers/FrmFormsController.php:
|
962 |
msgid "Minimize form HTML"
|
963 |
msgstr ""
|
964 |
|
965 |
-
#: classes/controllers/FrmFormsController.php:
|
966 |
#: classes/views/frm-forms/new-form-overlay.php:9
|
967 |
msgid "Template Name"
|
968 |
msgstr ""
|
969 |
|
970 |
-
#: classes/controllers/FrmFormsController.php:
|
971 |
#: classes/views/xml/import_form.php:113
|
972 |
msgid "Type"
|
973 |
msgstr ""
|
974 |
|
975 |
-
#: classes/controllers/FrmFormsController.php:
|
976 |
-
#: classes/controllers/FrmFormsController.php:
|
977 |
#: classes/views/shared/mb_adv_info.php:93
|
978 |
#: classes/helpers/FrmCSVExportHelper.php:155
|
979 |
msgid "Key"
|
980 |
msgstr ""
|
981 |
|
982 |
-
#: classes/controllers/FrmFormsController.php:
|
983 |
msgid "Shortcodes"
|
984 |
msgstr ""
|
985 |
|
986 |
-
#: classes/controllers/FrmFormsController.php:
|
987 |
msgid "You are trying to edit a form that does not exist."
|
988 |
msgstr ""
|
989 |
|
990 |
#. translators: %1$s: Start link HTML, %2$s: End link HTML
|
991 |
-
#: classes/controllers/FrmFormsController.php:
|
992 |
msgid "You are trying to edit a child form. Please edit from %1$shere%2$s"
|
993 |
msgstr ""
|
994 |
|
995 |
-
#: classes/controllers/FrmFormsController.php:
|
996 |
msgid "Template was successfully updated."
|
997 |
msgstr ""
|
998 |
|
999 |
-
#: classes/controllers/FrmFormsController.php:
|
1000 |
msgid "General Form Settings"
|
1001 |
msgstr ""
|
1002 |
|
1003 |
-
#: classes/controllers/FrmFormsController.php:
|
1004 |
msgid "Actions & Notifications"
|
1005 |
msgstr ""
|
1006 |
|
1007 |
-
#: classes/controllers/FrmFormsController.php:
|
1008 |
-
#: classes/controllers/FrmFormsController.php:
|
1009 |
msgid "Form Permissions"
|
1010 |
msgstr ""
|
1011 |
|
1012 |
-
#: classes/controllers/FrmFormsController.php:
|
1013 |
msgid "Form Scheduling"
|
1014 |
msgstr ""
|
1015 |
|
1016 |
-
#: classes/controllers/FrmFormsController.php:
|
1017 |
msgid "Form scheduling settings"
|
1018 |
msgstr ""
|
1019 |
|
1020 |
-
#: classes/controllers/FrmFormsController.php:
|
1021 |
msgid "Styling & Buttons"
|
1022 |
msgstr ""
|
1023 |
|
1024 |
-
#: classes/controllers/FrmFormsController.php:
|
1025 |
msgid "Customize HTML"
|
1026 |
msgstr ""
|
1027 |
|
1028 |
-
#: classes/controllers/FrmFormsController.php:
|
1029 |
msgid "Customize field values with the following parameters."
|
1030 |
msgstr ""
|
1031 |
|
1032 |
-
#: classes/controllers/FrmFormsController.php:
|
1033 |
msgid "Separator"
|
1034 |
msgstr ""
|
1035 |
|
1036 |
-
#: classes/controllers/FrmFormsController.php:
|
1037 |
msgid "Use a different separator for checkbox fields"
|
1038 |
msgstr ""
|
1039 |
|
1040 |
-
#: classes/controllers/FrmFormsController.php:
|
1041 |
msgid "Date Format"
|
1042 |
msgstr ""
|
1043 |
|
1044 |
-
#: classes/controllers/FrmFormsController.php:
|
1045 |
#: classes/views/frm-fields/back-end/settings.php:22
|
1046 |
msgid "Field Label"
|
1047 |
msgstr ""
|
1048 |
|
1049 |
-
#: classes/controllers/FrmFormsController.php:
|
1050 |
msgid "No Auto P"
|
1051 |
msgstr ""
|
1052 |
|
1053 |
-
#: classes/controllers/FrmFormsController.php:
|
1054 |
msgid "Do not automatically add any paragraphs or line breaks"
|
1055 |
msgstr ""
|
1056 |
|
1057 |
-
#: classes/controllers/FrmFormsController.php:
|
1058 |
msgid "First Name"
|
1059 |
msgstr ""
|
1060 |
|
1061 |
-
#: classes/controllers/FrmFormsController.php:
|
1062 |
msgid "Last Name"
|
1063 |
msgstr ""
|
1064 |
|
1065 |
-
#: classes/controllers/FrmFormsController.php:
|
1066 |
msgid "Display Name"
|
1067 |
msgstr ""
|
1068 |
|
1069 |
-
#: classes/controllers/FrmFormsController.php:
|
1070 |
msgid "User Login"
|
1071 |
msgstr ""
|
1072 |
|
1073 |
-
#: classes/controllers/FrmFormsController.php:
|
1074 |
msgid "Avatar"
|
1075 |
msgstr ""
|
1076 |
|
1077 |
-
#: classes/controllers/FrmFormsController.php:
|
1078 |
msgid "Author Link"
|
1079 |
msgstr ""
|
1080 |
|
1081 |
-
#: classes/controllers/FrmFormsController.php:
|
1082 |
#: classes/views/frm-entries/sidebar-shared.php:46
|
1083 |
msgid "Entry ID"
|
1084 |
msgstr ""
|
1085 |
|
1086 |
-
#: classes/controllers/FrmFormsController.php:
|
1087 |
#: classes/controllers/FrmEntriesController.php:69
|
1088 |
#: classes/views/frm-entries/sidebar-shared.php:52
|
1089 |
#: classes/views/frm-entries/form.php:52
|
1090 |
msgid "Entry Key"
|
1091 |
msgstr ""
|
1092 |
|
1093 |
-
#: classes/controllers/FrmFormsController.php:
|
1094 |
msgid "Post ID"
|
1095 |
msgstr ""
|
1096 |
|
1097 |
-
#: classes/controllers/FrmFormsController.php:
|
1098 |
msgid "User IP"
|
1099 |
msgstr ""
|
1100 |
|
1101 |
-
#: classes/controllers/FrmFormsController.php:
|
1102 |
msgid "Entry created"
|
1103 |
msgstr ""
|
1104 |
|
1105 |
-
#: classes/controllers/FrmFormsController.php:
|
1106 |
msgid "Entry updated"
|
1107 |
msgstr ""
|
1108 |
|
1109 |
-
#: classes/controllers/FrmFormsController.php:
|
1110 |
msgid "Site URL"
|
1111 |
msgstr ""
|
1112 |
|
1113 |
-
#: classes/controllers/FrmFormsController.php:
|
1114 |
msgid "Site Name"
|
1115 |
msgstr ""
|
1116 |
|
1117 |
-
#: classes/controllers/FrmFormsController.php:
|
1118 |
msgid "Default Msg"
|
1119 |
msgstr ""
|
1120 |
|
1121 |
-
#: classes/controllers/FrmFormsController.php:
|
1122 |
msgid "Default HTML"
|
1123 |
msgstr ""
|
1124 |
|
1125 |
-
#: classes/controllers/FrmFormsController.php:
|
1126 |
msgid "Default Plain"
|
1127 |
msgstr ""
|
1128 |
|
1129 |
-
#: classes/controllers/FrmFormsController.php:
|
1130 |
msgid "No forms were specified"
|
1131 |
msgstr ""
|
1132 |
|
1133 |
-
#: classes/controllers/FrmFormsController.php:
|
1134 |
msgid "Abnormal HTML characters prevented your form from saving correctly"
|
1135 |
msgstr ""
|
1136 |
|
1137 |
-
#: classes/controllers/FrmFormsController.php:
|
1138 |
#: classes/views/frm-forms/list-templates.php:190
|
1139 |
#: classes/views/xml/import_form.php:126
|
1140 |
#: classes/views/styles/manage.php:54
|
@@ -1146,17 +1168,17 @@ msgstr ""
|
|
1146 |
msgid "(no title)"
|
1147 |
msgstr ""
|
1148 |
|
1149 |
-
#: classes/controllers/FrmFormsController.php:
|
1150 |
-
#: classes/controllers/FrmFormsController.php:
|
1151 |
msgid "Please select a valid form"
|
1152 |
msgstr ""
|
1153 |
|
1154 |
-
#: classes/controllers/FrmFormsController.php:
|
1155 |
msgid "Please wait while you are redirected."
|
1156 |
msgstr ""
|
1157 |
|
1158 |
#. translators: %1$s: Start link HTML, %2$s: End link HTML
|
1159 |
-
#: classes/controllers/FrmFormsController.php:
|
1160 |
msgid "%1$sClick here%2$s if you are not automatically redirected."
|
1161 |
msgstr ""
|
1162 |
|
@@ -1604,24 +1626,23 @@ msgstr ""
|
|
1604 |
msgid "Advanced Fields"
|
1605 |
msgstr ""
|
1606 |
|
1607 |
-
|
1608 |
-
|
1609 |
-
msgid "%s fields"
|
1610 |
msgstr ""
|
1611 |
|
1612 |
-
#: classes/views/frm-forms/add_field_links.php:
|
1613 |
msgid "Select a field to see the options"
|
1614 |
msgstr ""
|
1615 |
|
1616 |
-
#: classes/views/frm-forms/add_field_links.php:
|
1617 |
msgid "Smart Default Values"
|
1618 |
msgstr ""
|
1619 |
|
1620 |
-
#: classes/views/frm-forms/add_field_links.php:
|
1621 |
msgid "Add Layout Classes"
|
1622 |
msgstr ""
|
1623 |
|
1624 |
-
#: classes/views/frm-forms/add_field_links.php:
|
1625 |
msgid "Input Mask Format"
|
1626 |
msgstr ""
|
1627 |
|
@@ -1792,7 +1813,7 @@ msgstr ""
|
|
1792 |
#: classes/views/addons/list.php:74
|
1793 |
#: classes/views/addons/list.php:75
|
1794 |
#: classes/views/shared/upgrade_overlay.php:27
|
1795 |
-
#: classes/helpers/FrmAppHelper.php:
|
1796 |
msgid "Install"
|
1797 |
msgstr ""
|
1798 |
|
@@ -1806,13 +1827,19 @@ msgstr ""
|
|
1806 |
msgid "Renew Now"
|
1807 |
msgstr ""
|
1808 |
|
|
|
|
|
|
|
|
|
1809 |
#: classes/views/shared/confirm-overlay.php:4
|
1810 |
#: classes/views/shared/upgrade_overlay.php:4
|
|
|
1811 |
#: classes/views/frm-settings/settings_cta.php:5
|
1812 |
msgid "Dismiss this message"
|
1813 |
msgstr ""
|
1814 |
|
1815 |
#: classes/views/shared/confirm-overlay.php:10
|
|
|
1816 |
#: classes/helpers/FrmAppHelper.php:2245
|
1817 |
msgid "Are you sure?"
|
1818 |
msgstr ""
|
@@ -1938,6 +1965,7 @@ msgstr ""
|
|
1938 |
|
1939 |
#: classes/views/shared/mb_adv_info.php:108
|
1940 |
#: classes/views/shared/mb_adv_info.php:122
|
|
|
1941 |
msgid "Select a Field"
|
1942 |
msgstr ""
|
1943 |
|
@@ -1949,6 +1977,10 @@ msgstr ""
|
|
1949 |
msgid "Click to Insert"
|
1950 |
msgstr ""
|
1951 |
|
|
|
|
|
|
|
|
|
1952 |
#: classes/views/xml/import_form.php:12
|
1953 |
msgid "Import"
|
1954 |
msgstr ""
|
@@ -2444,11 +2476,6 @@ msgstr ""
|
|
2444 |
msgid "Custom HTML:"
|
2445 |
msgstr ""
|
2446 |
|
2447 |
-
#: classes/views/frm-fields/back-end/bulk-options-overlay.php:6
|
2448 |
-
#: classes/views/frm-fields/back-end/field-choices.php:18
|
2449 |
-
msgid "Bulk Edit Options"
|
2450 |
-
msgstr ""
|
2451 |
-
|
2452 |
#: classes/views/frm-fields/back-end/bulk-options-overlay.php:11
|
2453 |
msgid "Edit or add field options (one per line)"
|
2454 |
msgstr ""
|
@@ -2642,10 +2669,6 @@ msgstr ""
|
|
2642 |
msgid "Max Characters"
|
2643 |
msgstr ""
|
2644 |
|
2645 |
-
#: classes/views/frm-fields/back-end/field-choices.php:28
|
2646 |
-
msgid "Add Option"
|
2647 |
-
msgstr ""
|
2648 |
-
|
2649 |
#: classes/views/frm-fields/back-end/field-user-id.php:3
|
2650 |
msgid "User ID fields will not show in your form."
|
2651 |
msgstr ""
|
@@ -4460,6 +4483,11 @@ msgstr ""
|
|
4460 |
msgid "Strongly Disagree"
|
4461 |
msgstr ""
|
4462 |
|
|
|
|
|
|
|
|
|
|
|
4463 |
#: classes/helpers/FrmStylesHelper.php:32
|
4464 |
msgid "Edit Styles"
|
4465 |
msgstr ""
|
@@ -4514,7 +4542,7 @@ msgid "Excerpt View"
|
|
4514 |
msgstr ""
|
4515 |
|
4516 |
#: classes/helpers/FrmListHelper.php:257
|
4517 |
-
#: classes/helpers/FrmAppHelper.php:
|
4518 |
msgid "No items found."
|
4519 |
msgstr ""
|
4520 |
|
@@ -4695,10 +4723,6 @@ msgstr ""
|
|
4695 |
msgid "This will permanently delete the form and all its entries. This is irreversible. Are you sure you want to continue?"
|
4696 |
msgstr ""
|
4697 |
|
4698 |
-
#: classes/helpers/FrmFormsHelper.php:1118
|
4699 |
-
msgid "Total"
|
4700 |
-
msgstr ""
|
4701 |
-
|
4702 |
#: classes/helpers/FrmFormsHelper.php:1119
|
4703 |
msgid "Add this to a read-only field to display the text in bold without a border or background."
|
4704 |
msgstr ""
|
@@ -4755,6 +4779,25 @@ msgstr ""
|
|
4755 |
msgid "License plan required:"
|
4756 |
msgstr ""
|
4757 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4758 |
#: classes/helpers/FrmCSVExportHelper.php:124
|
4759 |
msgid "(label)"
|
4760 |
msgstr ""
|
@@ -4792,15 +4835,15 @@ msgid "Parent ID"
|
|
4792 |
msgstr ""
|
4793 |
|
4794 |
#: classes/helpers/FrmAppHelper.php:1171
|
4795 |
-
msgid "View Forms
|
4796 |
msgstr ""
|
4797 |
|
4798 |
#: classes/helpers/FrmAppHelper.php:1172
|
4799 |
-
msgid "Add
|
4800 |
msgstr ""
|
4801 |
|
4802 |
#: classes/helpers/FrmAppHelper.php:1173
|
4803 |
-
msgid "Delete Forms
|
4804 |
msgstr ""
|
4805 |
|
4806 |
#: classes/helpers/FrmAppHelper.php:1174
|
@@ -5064,269 +5107,283 @@ msgid "This calculation may have shortcodes that work in text calculations but n
|
|
5064 |
msgstr ""
|
5065 |
|
5066 |
#: classes/helpers/FrmAppHelper.php:2268
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5067 |
msgid "Please enter a Repeat Limit that is greater than 1."
|
5068 |
msgstr ""
|
5069 |
|
5070 |
-
#: classes/helpers/FrmAppHelper.php:
|
5071 |
msgid "Please select a limit between 0 and 200."
|
5072 |
msgstr ""
|
5073 |
|
5074 |
-
#: classes/helpers/FrmAppHelper.php:
|
5075 |
msgid "You are running an outdated version of Formidable. This plugin may not work correctly if you do not update Formidable."
|
5076 |
msgstr ""
|
5077 |
|
5078 |
-
#: classes/helpers/FrmAppHelper.php:
|
5079 |
msgid "You are running a version of Formidable Forms that may not be compatible with your version of Formidable Forms Pro."
|
5080 |
msgstr ""
|
5081 |
|
5082 |
-
#: classes/helpers/FrmAppHelper.php:
|
5083 |
msgid "The version of PHP on your server is too low. If this is not corrected, you may see issues with Formidable Forms. Please contact your web host and ask to be updated to PHP 7.0+."
|
5084 |
msgstr ""
|
5085 |
|
5086 |
-
#: classes/helpers/FrmAppHelper.php:
|
5087 |
msgid "You are using an outdated browser that is not compatible with Formidable Forms. Please update to a more current browser (we recommend Chrome)."
|
5088 |
msgstr ""
|
5089 |
|
5090 |
-
#: classes/helpers/FrmAppHelper.php:
|
5091 |
msgid "English"
|
5092 |
msgstr ""
|
5093 |
|
5094 |
-
#: classes/helpers/FrmAppHelper.php:
|
5095 |
msgid "Afrikaans"
|
5096 |
msgstr ""
|
5097 |
|
5098 |
-
#: classes/helpers/FrmAppHelper.php:
|
5099 |
msgid "Albanian"
|
5100 |
msgstr ""
|
5101 |
|
5102 |
-
#: classes/helpers/FrmAppHelper.php:
|
5103 |
msgid "Arabic"
|
5104 |
msgstr ""
|
5105 |
|
5106 |
-
#: classes/helpers/FrmAppHelper.php:
|
5107 |
msgid "Armenian"
|
5108 |
msgstr ""
|
5109 |
|
5110 |
-
#: classes/helpers/FrmAppHelper.php:
|
5111 |
msgid "Azerbaijani"
|
5112 |
msgstr ""
|
5113 |
|
5114 |
-
#: classes/helpers/FrmAppHelper.php:
|
5115 |
msgid "Basque"
|
5116 |
msgstr ""
|
5117 |
|
5118 |
-
#: classes/helpers/FrmAppHelper.php:
|
5119 |
msgid "Bosnian"
|
5120 |
msgstr ""
|
5121 |
|
5122 |
-
#: classes/helpers/FrmAppHelper.php:
|
5123 |
msgid "Bulgarian"
|
5124 |
msgstr ""
|
5125 |
|
5126 |
-
#: classes/helpers/FrmAppHelper.php:
|
5127 |
msgid "Catalan"
|
5128 |
msgstr ""
|
5129 |
|
5130 |
-
#: classes/helpers/FrmAppHelper.php:
|
5131 |
msgid "Chinese Hong Kong"
|
5132 |
msgstr ""
|
5133 |
|
5134 |
-
#: classes/helpers/FrmAppHelper.php:
|
5135 |
msgid "Chinese Simplified"
|
5136 |
msgstr ""
|
5137 |
|
5138 |
-
#: classes/helpers/FrmAppHelper.php:
|
5139 |
msgid "Chinese Traditional"
|
5140 |
msgstr ""
|
5141 |
|
5142 |
-
#: classes/helpers/FrmAppHelper.php:
|
5143 |
msgid "Croatian"
|
5144 |
msgstr ""
|
5145 |
|
5146 |
-
#: classes/helpers/FrmAppHelper.php:
|
5147 |
msgid "Czech"
|
5148 |
msgstr ""
|
5149 |
|
5150 |
-
#: classes/helpers/FrmAppHelper.php:
|
5151 |
msgid "Danish"
|
5152 |
msgstr ""
|
5153 |
|
5154 |
-
#: classes/helpers/FrmAppHelper.php:
|
5155 |
msgid "Dutch"
|
5156 |
msgstr ""
|
5157 |
|
5158 |
-
#: classes/helpers/FrmAppHelper.php:
|
5159 |
msgid "English/UK"
|
5160 |
msgstr ""
|
5161 |
|
5162 |
-
#: classes/helpers/FrmAppHelper.php:
|
5163 |
msgid "Esperanto"
|
5164 |
msgstr ""
|
5165 |
|
5166 |
-
#: classes/helpers/FrmAppHelper.php:
|
5167 |
msgid "Estonian"
|
5168 |
msgstr ""
|
5169 |
|
5170 |
-
#: classes/helpers/FrmAppHelper.php:
|
5171 |
msgid "Faroese"
|
5172 |
msgstr ""
|
5173 |
|
5174 |
-
#: classes/helpers/FrmAppHelper.php:
|
5175 |
msgid "Farsi/Persian"
|
5176 |
msgstr ""
|
5177 |
|
5178 |
-
#: classes/helpers/FrmAppHelper.php:
|
5179 |
msgid "Filipino"
|
5180 |
msgstr ""
|
5181 |
|
5182 |
-
#: classes/helpers/FrmAppHelper.php:
|
5183 |
msgid "Finnish"
|
5184 |
msgstr ""
|
5185 |
|
5186 |
-
#: classes/helpers/FrmAppHelper.php:
|
5187 |
msgid "French"
|
5188 |
msgstr ""
|
5189 |
|
5190 |
-
#: classes/helpers/FrmAppHelper.php:
|
5191 |
msgid "French/Canadian"
|
5192 |
msgstr ""
|
5193 |
|
5194 |
-
#: classes/helpers/FrmAppHelper.php:
|
5195 |
msgid "French/Swiss"
|
5196 |
msgstr ""
|
5197 |
|
5198 |
-
#: classes/helpers/FrmAppHelper.php:
|
5199 |
msgid "German"
|
5200 |
msgstr ""
|
5201 |
|
5202 |
-
#: classes/helpers/FrmAppHelper.php:
|
5203 |
msgid "German/Austria"
|
5204 |
msgstr ""
|
5205 |
|
5206 |
-
#: classes/helpers/FrmAppHelper.php:
|
5207 |
msgid "German/Switzerland"
|
5208 |
msgstr ""
|
5209 |
|
5210 |
-
#: classes/helpers/FrmAppHelper.php:
|
5211 |
msgid "Greek"
|
5212 |
msgstr ""
|
5213 |
|
5214 |
-
#: classes/helpers/FrmAppHelper.php:
|
5215 |
-
#: classes/helpers/FrmAppHelper.php:
|
5216 |
msgid "Hebrew"
|
5217 |
msgstr ""
|
5218 |
|
5219 |
-
#: classes/helpers/FrmAppHelper.php:
|
5220 |
msgid "Hindi"
|
5221 |
msgstr ""
|
5222 |
|
5223 |
-
#: classes/helpers/FrmAppHelper.php:
|
5224 |
msgid "Hungarian"
|
5225 |
msgstr ""
|
5226 |
|
5227 |
-
#: classes/helpers/FrmAppHelper.php:
|
5228 |
msgid "Icelandic"
|
5229 |
msgstr ""
|
5230 |
|
5231 |
-
#: classes/helpers/FrmAppHelper.php:
|
5232 |
msgid "Indonesian"
|
5233 |
msgstr ""
|
5234 |
|
5235 |
-
#: classes/helpers/FrmAppHelper.php:
|
5236 |
msgid "Italian"
|
5237 |
msgstr ""
|
5238 |
|
5239 |
-
#: classes/helpers/FrmAppHelper.php:
|
5240 |
msgid "Japanese"
|
5241 |
msgstr ""
|
5242 |
|
5243 |
-
#: classes/helpers/FrmAppHelper.php:
|
5244 |
msgid "Korean"
|
5245 |
msgstr ""
|
5246 |
|
5247 |
-
#: classes/helpers/FrmAppHelper.php:
|
5248 |
msgid "Latvian"
|
5249 |
msgstr ""
|
5250 |
|
5251 |
-
#: classes/helpers/FrmAppHelper.php:
|
5252 |
msgid "Lithuanian"
|
5253 |
msgstr ""
|
5254 |
|
5255 |
-
#: classes/helpers/FrmAppHelper.php:
|
5256 |
msgid "Malaysian"
|
5257 |
msgstr ""
|
5258 |
|
5259 |
-
#: classes/helpers/FrmAppHelper.php:
|
5260 |
msgid "Norwegian"
|
5261 |
msgstr ""
|
5262 |
|
5263 |
-
#: classes/helpers/FrmAppHelper.php:
|
5264 |
msgid "Polish"
|
5265 |
msgstr ""
|
5266 |
|
5267 |
-
#: classes/helpers/FrmAppHelper.php:
|
5268 |
msgid "Portuguese"
|
5269 |
msgstr ""
|
5270 |
|
5271 |
-
#: classes/helpers/FrmAppHelper.php:
|
5272 |
msgid "Portuguese/Brazilian"
|
5273 |
msgstr ""
|
5274 |
|
5275 |
-
#: classes/helpers/FrmAppHelper.php:
|
5276 |
msgid "Portuguese/Portugal"
|
5277 |
msgstr ""
|
5278 |
|
5279 |
-
#: classes/helpers/FrmAppHelper.php:
|
5280 |
msgid "Romanian"
|
5281 |
msgstr ""
|
5282 |
|
5283 |
-
#: classes/helpers/FrmAppHelper.php:
|
5284 |
msgid "Russian"
|
5285 |
msgstr ""
|
5286 |
|
5287 |
-
#: classes/helpers/FrmAppHelper.php:
|
5288 |
-
#: classes/helpers/FrmAppHelper.php:
|
5289 |
msgid "Serbian"
|
5290 |
msgstr ""
|
5291 |
|
5292 |
-
#: classes/helpers/FrmAppHelper.php:
|
5293 |
msgid "Slovak"
|
5294 |
msgstr ""
|
5295 |
|
5296 |
-
#: classes/helpers/FrmAppHelper.php:
|
5297 |
msgid "Slovenian"
|
5298 |
msgstr ""
|
5299 |
|
5300 |
-
#: classes/helpers/FrmAppHelper.php:
|
5301 |
msgid "Spanish"
|
5302 |
msgstr ""
|
5303 |
|
5304 |
-
#: classes/helpers/FrmAppHelper.php:
|
5305 |
msgid "Spanish/Latin America"
|
5306 |
msgstr ""
|
5307 |
|
5308 |
-
#: classes/helpers/FrmAppHelper.php:
|
5309 |
msgid "Swedish"
|
5310 |
msgstr ""
|
5311 |
|
5312 |
-
#: classes/helpers/FrmAppHelper.php:
|
5313 |
msgid "Tamil"
|
5314 |
msgstr ""
|
5315 |
|
5316 |
-
#: classes/helpers/FrmAppHelper.php:
|
5317 |
msgid "Thai"
|
5318 |
msgstr ""
|
5319 |
|
5320 |
-
#: classes/helpers/FrmAppHelper.php:
|
5321 |
-
#: classes/helpers/FrmAppHelper.php:
|
5322 |
msgid "Turkish"
|
5323 |
msgstr ""
|
5324 |
|
5325 |
-
#: classes/helpers/FrmAppHelper.php:
|
5326 |
msgid "Ukranian"
|
5327 |
msgstr ""
|
5328 |
|
5329 |
-
#: classes/helpers/FrmAppHelper.php:
|
5330 |
msgid "Vietnamese"
|
5331 |
msgstr ""
|
5332 |
|
2 |
# This file is distributed under the same license as the Formidable Forms plugin.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Formidable Forms 4.04\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/formidable\n"
|
7 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
8 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"POT-Creation-Date: 2020-02-05T00:10:51+01:00\n"
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.1.0\n"
|
15 |
"X-Domain: formidable\n"
|
241 |
msgstr ""
|
242 |
|
243 |
#: classes/models/FrmField.php:34
|
244 |
+
#: classes/controllers/FrmFormsController.php:1166
|
245 |
msgid "Email"
|
246 |
msgstr ""
|
247 |
|
266 |
msgstr ""
|
267 |
|
268 |
#: classes/models/FrmField.php:58
|
269 |
+
#: classes/controllers/FrmFormsController.php:1161
|
270 |
msgid "User ID"
|
271 |
msgstr ""
|
272 |
|
283 |
msgstr ""
|
284 |
|
285 |
#: classes/models/FrmField.php:82
|
286 |
+
#: classes/controllers/FrmFormsController.php:734
|
287 |
msgid "Date"
|
288 |
msgstr ""
|
289 |
|
367 |
msgid "Appointment"
|
368 |
msgstr ""
|
369 |
|
370 |
+
#: classes/models/FrmField.php:179
|
371 |
+
msgid "Product"
|
372 |
+
msgstr ""
|
373 |
+
|
374 |
+
#: classes/models/FrmField.php:184
|
375 |
+
msgid "Quantity"
|
376 |
+
msgstr ""
|
377 |
+
|
378 |
+
#: classes/models/FrmField.php:189
|
379 |
+
#: classes/helpers/FrmFormsHelper.php:1118
|
380 |
+
msgid "Total"
|
381 |
+
msgstr ""
|
382 |
+
|
383 |
#: classes/models/FrmDb.php:430
|
384 |
msgid "Use the query in an array format so it can be properly prepared."
|
385 |
msgstr ""
|
437 |
msgid "The reCAPTCHA was not entered correctly"
|
438 |
msgstr ""
|
439 |
|
|
|
440 |
#. translators: %s: Field name
|
441 |
+
#. translators: %s: Field type
|
442 |
+
#: classes/models/fields/FrmFieldType.php:391
|
443 |
+
#: classes/models/fields/FrmFieldType.php:467
|
444 |
msgid "%s Options"
|
445 |
msgstr ""
|
446 |
|
447 |
+
#: classes/models/fields/FrmFieldType.php:407
|
448 |
+
#: classes/views/frm-fields/back-end/bulk-options-overlay.php:6
|
449 |
+
msgid "Bulk Edit Options"
|
450 |
+
msgstr ""
|
451 |
+
|
452 |
+
#: classes/models/fields/FrmFieldType.php:414
|
453 |
+
msgid "Add Option"
|
454 |
+
msgstr ""
|
455 |
+
|
456 |
+
#: classes/models/fields/FrmFieldType.php:567
|
457 |
#: classes/helpers/FrmFieldsHelper.php:294
|
458 |
msgid "This field is invalid"
|
459 |
msgstr ""
|
460 |
|
461 |
#. translators: %s: The field name.
|
462 |
#. translators: %s: Field name
|
463 |
+
#: classes/models/fields/FrmFieldType.php:570
|
464 |
#: classes/helpers/FrmFieldsHelper.php:167
|
465 |
#: classes/helpers/FrmFieldsHelper.php:296
|
466 |
#: classes/helpers/FrmXMLHelper.php:1099
|
467 |
msgid "%s is invalid"
|
468 |
msgstr ""
|
469 |
|
470 |
+
#: classes/models/fields/FrmFieldType.php:577
|
471 |
msgid "Untitled"
|
472 |
msgstr ""
|
473 |
|
592 |
msgstr ""
|
593 |
|
594 |
#: classes/controllers/FrmAddonsController.php:484
|
595 |
+
#: classes/helpers/FrmAppHelper.php:2278
|
596 |
msgid "Active"
|
597 |
msgstr ""
|
598 |
|
625 |
|
626 |
#: classes/controllers/FrmAppController.php:158
|
627 |
#: classes/controllers/FrmXMLController.php:133
|
628 |
+
#: classes/controllers/FrmFormsController.php:729
|
629 |
#: classes/controllers/FrmEntriesController.php:8
|
630 |
#: classes/controllers/FrmEntriesController.php:90
|
631 |
#: classes/views/xml/import_form.php:114
|
661 |
|
662 |
#: classes/controllers/FrmXMLController.php:132
|
663 |
#: classes/controllers/FrmFormsController.php:6
|
664 |
+
#: classes/controllers/FrmFormsController.php:739
|
665 |
#: classes/views/frm-forms/list.php:5
|
666 |
msgid "Forms"
|
667 |
msgstr ""
|
732 |
#: classes/controllers/FrmSettingsController.php:237
|
733 |
#: classes/views/frm-forms/_publish_box.php:9
|
734 |
#: classes/views/frm-forms/edit.php:23
|
735 |
+
#: classes/views/frm-forms/add_field_links.php:159
|
736 |
#: classes/views/styles/header-buttons.php:7
|
737 |
#: classes/views/styles/manage.php:84
|
738 |
#: classes/helpers/FrmStylesHelper.php:70
|
839 |
msgstr ""
|
840 |
|
841 |
#: classes/controllers/FrmStylesController.php:389
|
842 |
+
#: classes/controllers/FrmFormsController.php:953
|
843 |
msgid "General"
|
844 |
msgstr ""
|
845 |
|
846 |
#: classes/controllers/FrmStylesController.php:390
|
847 |
+
#: classes/controllers/FrmFormsController.php:728
|
848 |
#: classes/views/frm-forms/settings-advanced.php:8
|
849 |
#: classes/views/xml/import_form.php:111
|
850 |
#: classes/views/styles/_sample_form.php:14
|
894 |
msgid "Once Weekly"
|
895 |
msgstr ""
|
896 |
|
897 |
+
#: classes/controllers/FrmFormsController.php:135
|
898 |
msgid "Settings Successfully Updated"
|
899 |
msgstr ""
|
900 |
|
901 |
+
#: classes/controllers/FrmFormsController.php:162
|
902 |
+
#: classes/controllers/FrmFormsController.php:887
|
903 |
msgid "Form was successfully updated."
|
904 |
msgstr ""
|
905 |
|
906 |
#. translators: %1$s: Start link HTML, %2$s: end link HTML
|
907 |
+
#: classes/controllers/FrmFormsController.php:167
|
908 |
msgid "However, your form is very long and may be %1$sreaching server limits%2$s."
|
909 |
msgstr ""
|
910 |
|
911 |
+
#: classes/controllers/FrmFormsController.php:221
|
912 |
#: deprecated/FrmDeprecated.php:400
|
913 |
msgid "Form template was Successfully Created"
|
914 |
msgstr ""
|
915 |
|
916 |
+
#: classes/controllers/FrmFormsController.php:221
|
917 |
msgid "Form was Successfully Copied"
|
918 |
msgstr ""
|
919 |
|
920 |
+
#: classes/controllers/FrmFormsController.php:225
|
921 |
msgid "There was a problem creating the new template."
|
922 |
msgstr ""
|
923 |
|
924 |
+
#: classes/controllers/FrmFormsController.php:333
|
925 |
msgid "Form Preview"
|
926 |
msgstr ""
|
927 |
|
928 |
#. translators: %1$s: Number of forms
|
929 |
+
#: classes/controllers/FrmFormsController.php:378
|
930 |
+
#: classes/controllers/FrmFormsController.php:439
|
931 |
msgid "%1$s form restored from the Trash."
|
932 |
msgid_plural "%1$s forms restored from the Trash."
|
933 |
msgstr[0] ""
|
934 |
|
935 |
#. translators: %1$s: Number of forms, %2$s: Start link HTML, %3$s: End link HTML
|
936 |
+
#: classes/controllers/FrmFormsController.php:442
|
937 |
+
#: classes/controllers/FrmFormsController.php:467
|
938 |
msgid "%1$s form moved to the Trash. %2$sUndo%3$s"
|
939 |
msgid_plural "%1$s forms moved to the Trash. %2$sUndo%3$s"
|
940 |
msgstr[0] ""
|
941 |
|
942 |
#. translators: %1$s: Number of forms
|
943 |
+
#: classes/controllers/FrmFormsController.php:490
|
944 |
msgid "%1$s Form Permanently Deleted"
|
945 |
msgid_plural "%1$s Forms Permanently Deleted"
|
946 |
msgstr[0] ""
|
947 |
|
948 |
#. translators: %1$s: Number of forms
|
949 |
+
#: classes/controllers/FrmFormsController.php:507
|
950 |
+
#: classes/controllers/FrmFormsController.php:524
|
951 |
msgid "%1$s form permanently deleted."
|
952 |
msgid_plural "%1$s forms permanently deleted."
|
953 |
msgstr[0] ""
|
954 |
|
955 |
+
#: classes/controllers/FrmFormsController.php:570
|
956 |
msgid "There was an error creating a template."
|
957 |
msgstr ""
|
958 |
|
959 |
+
#: classes/controllers/FrmFormsController.php:614
|
960 |
msgid "Add forms and content"
|
961 |
msgstr ""
|
962 |
|
963 |
+
#: classes/controllers/FrmFormsController.php:630
|
964 |
#: classes/controllers/FrmEntriesController.php:74
|
965 |
#: classes/views/xml/import_form.php:145
|
966 |
#: classes/widgets/FrmShowForm.php:56
|
967 |
msgid "Form"
|
968 |
msgstr ""
|
969 |
|
970 |
+
#: classes/controllers/FrmFormsController.php:631
|
971 |
#: classes/views/frm-forms/insert_form_popup.php:28
|
972 |
msgid "Insert a Form"
|
973 |
msgstr ""
|
974 |
|
975 |
+
#: classes/controllers/FrmFormsController.php:660
|
976 |
msgid "Display form title"
|
977 |
msgstr ""
|
978 |
|
979 |
+
#: classes/controllers/FrmFormsController.php:664
|
980 |
msgid "Display form description"
|
981 |
msgstr ""
|
982 |
|
983 |
+
#: classes/controllers/FrmFormsController.php:668
|
984 |
msgid "Minimize form HTML"
|
985 |
msgstr ""
|
986 |
|
987 |
+
#: classes/controllers/FrmFormsController.php:724
|
988 |
#: classes/views/frm-forms/new-form-overlay.php:9
|
989 |
msgid "Template Name"
|
990 |
msgstr ""
|
991 |
|
992 |
+
#: classes/controllers/FrmFormsController.php:725
|
993 |
#: classes/views/xml/import_form.php:113
|
994 |
msgid "Type"
|
995 |
msgstr ""
|
996 |
|
997 |
+
#: classes/controllers/FrmFormsController.php:726
|
998 |
+
#: classes/controllers/FrmFormsController.php:730
|
999 |
#: classes/views/shared/mb_adv_info.php:93
|
1000 |
#: classes/helpers/FrmCSVExportHelper.php:155
|
1001 |
msgid "Key"
|
1002 |
msgstr ""
|
1003 |
|
1004 |
+
#: classes/controllers/FrmFormsController.php:731
|
1005 |
msgid "Shortcodes"
|
1006 |
msgstr ""
|
1007 |
|
1008 |
+
#: classes/controllers/FrmFormsController.php:861
|
1009 |
msgid "You are trying to edit a form that does not exist."
|
1010 |
msgstr ""
|
1011 |
|
1012 |
#. translators: %1$s: Start link HTML, %2$s: End link HTML
|
1013 |
+
#: classes/controllers/FrmFormsController.php:866
|
1014 |
msgid "You are trying to edit a child form. Please edit from %1$shere%2$s"
|
1015 |
msgstr ""
|
1016 |
|
1017 |
+
#: classes/controllers/FrmFormsController.php:889
|
1018 |
msgid "Template was successfully updated."
|
1019 |
msgstr ""
|
1020 |
|
1021 |
+
#: classes/controllers/FrmFormsController.php:954
|
1022 |
msgid "General Form Settings"
|
1023 |
msgstr ""
|
1024 |
|
1025 |
+
#: classes/controllers/FrmFormsController.php:959
|
1026 |
msgid "Actions & Notifications"
|
1027 |
msgstr ""
|
1028 |
|
1029 |
+
#: classes/controllers/FrmFormsController.php:965
|
1030 |
+
#: classes/controllers/FrmFormsController.php:970
|
1031 |
msgid "Form Permissions"
|
1032 |
msgstr ""
|
1033 |
|
1034 |
+
#: classes/controllers/FrmFormsController.php:974
|
1035 |
msgid "Form Scheduling"
|
1036 |
msgstr ""
|
1037 |
|
1038 |
+
#: classes/controllers/FrmFormsController.php:979
|
1039 |
msgid "Form scheduling settings"
|
1040 |
msgstr ""
|
1041 |
|
1042 |
+
#: classes/controllers/FrmFormsController.php:983
|
1043 |
msgid "Styling & Buttons"
|
1044 |
msgstr ""
|
1045 |
|
1046 |
+
#: classes/controllers/FrmFormsController.php:989
|
1047 |
msgid "Customize HTML"
|
1048 |
msgstr ""
|
1049 |
|
1050 |
+
#: classes/controllers/FrmFormsController.php:1098
|
1051 |
msgid "Customize field values with the following parameters."
|
1052 |
msgstr ""
|
1053 |
|
1054 |
+
#: classes/controllers/FrmFormsController.php:1135
|
1055 |
msgid "Separator"
|
1056 |
msgstr ""
|
1057 |
|
1058 |
+
#: classes/controllers/FrmFormsController.php:1136
|
1059 |
msgid "Use a different separator for checkbox fields"
|
1060 |
msgstr ""
|
1061 |
|
1062 |
+
#: classes/controllers/FrmFormsController.php:1139
|
1063 |
msgid "Date Format"
|
1064 |
msgstr ""
|
1065 |
|
1066 |
+
#: classes/controllers/FrmFormsController.php:1142
|
1067 |
#: classes/views/frm-fields/back-end/settings.php:22
|
1068 |
msgid "Field Label"
|
1069 |
msgstr ""
|
1070 |
|
1071 |
+
#: classes/controllers/FrmFormsController.php:1145
|
1072 |
msgid "No Auto P"
|
1073 |
msgstr ""
|
1074 |
|
1075 |
+
#: classes/controllers/FrmFormsController.php:1146
|
1076 |
msgid "Do not automatically add any paragraphs or line breaks"
|
1077 |
msgstr ""
|
1078 |
|
1079 |
+
#: classes/controllers/FrmFormsController.php:1162
|
1080 |
msgid "First Name"
|
1081 |
msgstr ""
|
1082 |
|
1083 |
+
#: classes/controllers/FrmFormsController.php:1163
|
1084 |
msgid "Last Name"
|
1085 |
msgstr ""
|
1086 |
|
1087 |
+
#: classes/controllers/FrmFormsController.php:1164
|
1088 |
msgid "Display Name"
|
1089 |
msgstr ""
|
1090 |
|
1091 |
+
#: classes/controllers/FrmFormsController.php:1165
|
1092 |
msgid "User Login"
|
1093 |
msgstr ""
|
1094 |
|
1095 |
+
#: classes/controllers/FrmFormsController.php:1167
|
1096 |
msgid "Avatar"
|
1097 |
msgstr ""
|
1098 |
|
1099 |
+
#: classes/controllers/FrmFormsController.php:1168
|
1100 |
msgid "Author Link"
|
1101 |
msgstr ""
|
1102 |
|
1103 |
+
#: classes/controllers/FrmFormsController.php:1181
|
1104 |
#: classes/views/frm-entries/sidebar-shared.php:46
|
1105 |
msgid "Entry ID"
|
1106 |
msgstr ""
|
1107 |
|
1108 |
+
#: classes/controllers/FrmFormsController.php:1182
|
1109 |
#: classes/controllers/FrmEntriesController.php:69
|
1110 |
#: classes/views/frm-entries/sidebar-shared.php:52
|
1111 |
#: classes/views/frm-entries/form.php:52
|
1112 |
msgid "Entry Key"
|
1113 |
msgstr ""
|
1114 |
|
1115 |
+
#: classes/controllers/FrmFormsController.php:1183
|
1116 |
msgid "Post ID"
|
1117 |
msgstr ""
|
1118 |
|
1119 |
+
#: classes/controllers/FrmFormsController.php:1184
|
1120 |
msgid "User IP"
|
1121 |
msgstr ""
|
1122 |
|
1123 |
+
#: classes/controllers/FrmFormsController.php:1185
|
1124 |
msgid "Entry created"
|
1125 |
msgstr ""
|
1126 |
|
1127 |
+
#: classes/controllers/FrmFormsController.php:1186
|
1128 |
msgid "Entry updated"
|
1129 |
msgstr ""
|
1130 |
|
1131 |
+
#: classes/controllers/FrmFormsController.php:1188
|
1132 |
msgid "Site URL"
|
1133 |
msgstr ""
|
1134 |
|
1135 |
+
#: classes/controllers/FrmFormsController.php:1189
|
1136 |
msgid "Site Name"
|
1137 |
msgstr ""
|
1138 |
|
1139 |
+
#: classes/controllers/FrmFormsController.php:1197
|
1140 |
msgid "Default Msg"
|
1141 |
msgstr ""
|
1142 |
|
1143 |
+
#: classes/controllers/FrmFormsController.php:1198
|
1144 |
msgid "Default HTML"
|
1145 |
msgstr ""
|
1146 |
|
1147 |
+
#: classes/controllers/FrmFormsController.php:1199
|
1148 |
msgid "Default Plain"
|
1149 |
msgstr ""
|
1150 |
|
1151 |
+
#: classes/controllers/FrmFormsController.php:1288
|
1152 |
msgid "No forms were specified"
|
1153 |
msgstr ""
|
1154 |
|
1155 |
+
#: classes/controllers/FrmFormsController.php:1399
|
1156 |
msgid "Abnormal HTML characters prevented your form from saving correctly"
|
1157 |
msgstr ""
|
1158 |
|
1159 |
+
#: classes/controllers/FrmFormsController.php:1468
|
1160 |
#: classes/views/frm-forms/list-templates.php:190
|
1161 |
#: classes/views/xml/import_form.php:126
|
1162 |
#: classes/views/styles/manage.php:54
|
1168 |
msgid "(no title)"
|
1169 |
msgstr ""
|
1170 |
|
1171 |
+
#: classes/controllers/FrmFormsController.php:1514
|
1172 |
+
#: classes/controllers/FrmFormsController.php:1528
|
1173 |
msgid "Please select a valid form"
|
1174 |
msgstr ""
|
1175 |
|
1176 |
+
#: classes/controllers/FrmFormsController.php:1760
|
1177 |
msgid "Please wait while you are redirected."
|
1178 |
msgstr ""
|
1179 |
|
1180 |
#. translators: %1$s: Start link HTML, %2$s: End link HTML
|
1181 |
+
#: classes/controllers/FrmFormsController.php:1796
|
1182 |
msgid "%1$sClick here%2$s if you are not automatically redirected."
|
1183 |
msgstr ""
|
1184 |
|
1626 |
msgid "Advanced Fields"
|
1627 |
msgstr ""
|
1628 |
|
1629 |
+
#: classes/views/frm-forms/add_field_links.php:98
|
1630 |
+
msgid "Pricing Fields"
|
|
|
1631 |
msgstr ""
|
1632 |
|
1633 |
+
#: classes/views/frm-forms/add_field_links.php:117
|
1634 |
msgid "Select a field to see the options"
|
1635 |
msgstr ""
|
1636 |
|
1637 |
+
#: classes/views/frm-forms/add_field_links.php:131
|
1638 |
msgid "Smart Default Values"
|
1639 |
msgstr ""
|
1640 |
|
1641 |
+
#: classes/views/frm-forms/add_field_links.php:139
|
1642 |
msgid "Add Layout Classes"
|
1643 |
msgstr ""
|
1644 |
|
1645 |
+
#: classes/views/frm-forms/add_field_links.php:147
|
1646 |
msgid "Input Mask Format"
|
1647 |
msgstr ""
|
1648 |
|
1813 |
#: classes/views/addons/list.php:74
|
1814 |
#: classes/views/addons/list.php:75
|
1815 |
#: classes/views/shared/upgrade_overlay.php:27
|
1816 |
+
#: classes/helpers/FrmAppHelper.php:2277
|
1817 |
msgid "Install"
|
1818 |
msgstr ""
|
1819 |
|
1827 |
msgid "Renew Now"
|
1828 |
msgstr ""
|
1829 |
|
1830 |
+
#: classes/views/shared/errors.php:15
|
1831 |
+
msgid "Warning:"
|
1832 |
+
msgstr ""
|
1833 |
+
|
1834 |
#: classes/views/shared/confirm-overlay.php:4
|
1835 |
#: classes/views/shared/upgrade_overlay.php:4
|
1836 |
+
#: classes/views/shared/info-overlay.php:4
|
1837 |
#: classes/views/frm-settings/settings_cta.php:5
|
1838 |
msgid "Dismiss this message"
|
1839 |
msgstr ""
|
1840 |
|
1841 |
#: classes/views/shared/confirm-overlay.php:10
|
1842 |
+
#: classes/views/shared/info-overlay.php:10
|
1843 |
#: classes/helpers/FrmAppHelper.php:2245
|
1844 |
msgid "Are you sure?"
|
1845 |
msgstr ""
|
1965 |
|
1966 |
#: classes/views/shared/mb_adv_info.php:108
|
1967 |
#: classes/views/shared/mb_adv_info.php:122
|
1968 |
+
#: classes/helpers/FrmAppHelper.php:2279
|
1969 |
msgid "Select a Field"
|
1970 |
msgstr ""
|
1971 |
|
1977 |
msgid "Click to Insert"
|
1978 |
msgstr ""
|
1979 |
|
1980 |
+
#: classes/views/shared/info-overlay.php:14
|
1981 |
+
msgid "Got it!"
|
1982 |
+
msgstr ""
|
1983 |
+
|
1984 |
#: classes/views/xml/import_form.php:12
|
1985 |
msgid "Import"
|
1986 |
msgstr ""
|
2476 |
msgid "Custom HTML:"
|
2477 |
msgstr ""
|
2478 |
|
|
|
|
|
|
|
|
|
|
|
2479 |
#: classes/views/frm-fields/back-end/bulk-options-overlay.php:11
|
2480 |
msgid "Edit or add field options (one per line)"
|
2481 |
msgstr ""
|
2669 |
msgid "Max Characters"
|
2670 |
msgstr ""
|
2671 |
|
|
|
|
|
|
|
|
|
2672 |
#: classes/views/frm-fields/back-end/field-user-id.php:3
|
2673 |
msgid "User ID fields will not show in your form."
|
2674 |
msgstr ""
|
4483 |
msgid "Strongly Disagree"
|
4484 |
msgstr ""
|
4485 |
|
4486 |
+
#. translators: %s: Field name
|
4487 |
+
#: classes/helpers/FrmFieldsHelper.php:1717
|
4488 |
+
msgid "%s fields"
|
4489 |
+
msgstr ""
|
4490 |
+
|
4491 |
#: classes/helpers/FrmStylesHelper.php:32
|
4492 |
msgid "Edit Styles"
|
4493 |
msgstr ""
|
4542 |
msgstr ""
|
4543 |
|
4544 |
#: classes/helpers/FrmListHelper.php:257
|
4545 |
+
#: classes/helpers/FrmAppHelper.php:2280
|
4546 |
msgid "No items found."
|
4547 |
msgstr ""
|
4548 |
|
4723 |
msgid "This will permanently delete the form and all its entries. This is irreversible. Are you sure you want to continue?"
|
4724 |
msgstr ""
|
4725 |
|
|
|
|
|
|
|
|
|
4726 |
#: classes/helpers/FrmFormsHelper.php:1119
|
4727 |
msgid "Add this to a read-only field to display the text in bold without a border or background."
|
4728 |
msgstr ""
|
4779 |
msgid "License plan required:"
|
4780 |
msgstr ""
|
4781 |
|
4782 |
+
#: classes/helpers/FrmFormsHelper.php:1441
|
4783 |
+
msgid "Is this intentional?"
|
4784 |
+
msgstr ""
|
4785 |
+
|
4786 |
+
#: classes/helpers/FrmFormsHelper.php:1442
|
4787 |
+
#: classes/helpers/FrmAppHelper.php:2274
|
4788 |
+
msgid "See the list of reserved words in WordPress."
|
4789 |
+
msgstr ""
|
4790 |
+
|
4791 |
+
#. translators: %s: the name of a single parameter in the redirect URL
|
4792 |
+
#: classes/helpers/FrmFormsHelper.php:1451
|
4793 |
+
msgid "The redirect URL is using the parameter \"%s\", which is reserved by WordPress. "
|
4794 |
+
msgstr ""
|
4795 |
+
|
4796 |
+
#. translators: %s: the names of two or more parameters in the redirect URL, separated by commas
|
4797 |
+
#: classes/helpers/FrmFormsHelper.php:1457
|
4798 |
+
msgid "The redirect URL is using the parameters \"%s\", which are reserved by WordPress. "
|
4799 |
+
msgstr ""
|
4800 |
+
|
4801 |
#: classes/helpers/FrmCSVExportHelper.php:124
|
4802 |
msgid "(label)"
|
4803 |
msgstr ""
|
4835 |
msgstr ""
|
4836 |
|
4837 |
#: classes/helpers/FrmAppHelper.php:1171
|
4838 |
+
msgid "View Forms"
|
4839 |
msgstr ""
|
4840 |
|
4841 |
#: classes/helpers/FrmAppHelper.php:1172
|
4842 |
+
msgid "Add and Edit Forms"
|
4843 |
msgstr ""
|
4844 |
|
4845 |
#: classes/helpers/FrmAppHelper.php:1173
|
4846 |
+
msgid "Delete Forms"
|
4847 |
msgstr ""
|
4848 |
|
4849 |
#: classes/helpers/FrmAppHelper.php:1174
|
5107 |
msgstr ""
|
5108 |
|
5109 |
#: classes/helpers/FrmAppHelper.php:2268
|
5110 |
+
msgid "This form action is limited to one per form. Please edit the existing form action."
|
5111 |
+
msgstr ""
|
5112 |
+
|
5113 |
+
#. Translators: %s is the name of a Detail Page Slug that is a reserved word.
|
5114 |
+
#: classes/helpers/FrmAppHelper.php:2271
|
5115 |
+
msgid "The Detail Page Slug \"%s\" is reserved by WordPress. This may cause problems. Is this intentional?"
|
5116 |
+
msgstr ""
|
5117 |
+
|
5118 |
+
#. Translators: %s is the name of a parameter that is a reserved word. More than one word could be listed here, though that would not be common.
|
5119 |
+
#: classes/helpers/FrmAppHelper.php:2273
|
5120 |
+
msgid "The parameter \"%s\" is reserved by WordPress. This may cause problems when included in the URL. Is this intentional? "
|
5121 |
+
msgstr ""
|
5122 |
+
|
5123 |
+
#: classes/helpers/FrmAppHelper.php:2275
|
5124 |
msgid "Please enter a Repeat Limit that is greater than 1."
|
5125 |
msgstr ""
|
5126 |
|
5127 |
+
#: classes/helpers/FrmAppHelper.php:2276
|
5128 |
msgid "Please select a limit between 0 and 200."
|
5129 |
msgstr ""
|
5130 |
|
5131 |
+
#: classes/helpers/FrmAppHelper.php:2307
|
5132 |
msgid "You are running an outdated version of Formidable. This plugin may not work correctly if you do not update Formidable."
|
5133 |
msgstr ""
|
5134 |
|
5135 |
+
#: classes/helpers/FrmAppHelper.php:2334
|
5136 |
msgid "You are running a version of Formidable Forms that may not be compatible with your version of Formidable Forms Pro."
|
5137 |
msgstr ""
|
5138 |
|
5139 |
+
#: classes/helpers/FrmAppHelper.php:2362
|
5140 |
msgid "The version of PHP on your server is too low. If this is not corrected, you may see issues with Formidable Forms. Please contact your web host and ask to be updated to PHP 7.0+."
|
5141 |
msgstr ""
|
5142 |
|
5143 |
+
#: classes/helpers/FrmAppHelper.php:2368
|
5144 |
msgid "You are using an outdated browser that is not compatible with Formidable Forms. Please update to a more current browser (we recommend Chrome)."
|
5145 |
msgstr ""
|
5146 |
|
5147 |
+
#: classes/helpers/FrmAppHelper.php:2382
|
5148 |
msgid "English"
|
5149 |
msgstr ""
|
5150 |
|
5151 |
+
#: classes/helpers/FrmAppHelper.php:2383
|
5152 |
msgid "Afrikaans"
|
5153 |
msgstr ""
|
5154 |
|
5155 |
+
#: classes/helpers/FrmAppHelper.php:2384
|
5156 |
msgid "Albanian"
|
5157 |
msgstr ""
|
5158 |
|
5159 |
+
#: classes/helpers/FrmAppHelper.php:2385
|
5160 |
msgid "Arabic"
|
5161 |
msgstr ""
|
5162 |
|
5163 |
+
#: classes/helpers/FrmAppHelper.php:2386
|
5164 |
msgid "Armenian"
|
5165 |
msgstr ""
|
5166 |
|
5167 |
+
#: classes/helpers/FrmAppHelper.php:2387
|
5168 |
msgid "Azerbaijani"
|
5169 |
msgstr ""
|
5170 |
|
5171 |
+
#: classes/helpers/FrmAppHelper.php:2388
|
5172 |
msgid "Basque"
|
5173 |
msgstr ""
|
5174 |
|
5175 |
+
#: classes/helpers/FrmAppHelper.php:2389
|
5176 |
msgid "Bosnian"
|
5177 |
msgstr ""
|
5178 |
|
5179 |
+
#: classes/helpers/FrmAppHelper.php:2390
|
5180 |
msgid "Bulgarian"
|
5181 |
msgstr ""
|
5182 |
|
5183 |
+
#: classes/helpers/FrmAppHelper.php:2391
|
5184 |
msgid "Catalan"
|
5185 |
msgstr ""
|
5186 |
|
5187 |
+
#: classes/helpers/FrmAppHelper.php:2392
|
5188 |
msgid "Chinese Hong Kong"
|
5189 |
msgstr ""
|
5190 |
|
5191 |
+
#: classes/helpers/FrmAppHelper.php:2393
|
5192 |
msgid "Chinese Simplified"
|
5193 |
msgstr ""
|
5194 |
|
5195 |
+
#: classes/helpers/FrmAppHelper.php:2394
|
5196 |
msgid "Chinese Traditional"
|
5197 |
msgstr ""
|
5198 |
|
5199 |
+
#: classes/helpers/FrmAppHelper.php:2395
|
5200 |
msgid "Croatian"
|
5201 |
msgstr ""
|
5202 |
|
5203 |
+
#: classes/helpers/FrmAppHelper.php:2396
|
5204 |
msgid "Czech"
|
5205 |
msgstr ""
|
5206 |
|
5207 |
+
#: classes/helpers/FrmAppHelper.php:2397
|
5208 |
msgid "Danish"
|
5209 |
msgstr ""
|
5210 |
|
5211 |
+
#: classes/helpers/FrmAppHelper.php:2398
|
5212 |
msgid "Dutch"
|
5213 |
msgstr ""
|
5214 |
|
5215 |
+
#: classes/helpers/FrmAppHelper.php:2399
|
5216 |
msgid "English/UK"
|
5217 |
msgstr ""
|
5218 |
|
5219 |
+
#: classes/helpers/FrmAppHelper.php:2400
|
5220 |
msgid "Esperanto"
|
5221 |
msgstr ""
|
5222 |
|
5223 |
+
#: classes/helpers/FrmAppHelper.php:2401
|
5224 |
msgid "Estonian"
|
5225 |
msgstr ""
|
5226 |
|
5227 |
+
#: classes/helpers/FrmAppHelper.php:2402
|
5228 |
msgid "Faroese"
|
5229 |
msgstr ""
|
5230 |
|
5231 |
+
#: classes/helpers/FrmAppHelper.php:2403
|
5232 |
msgid "Farsi/Persian"
|
5233 |
msgstr ""
|
5234 |
|
5235 |
+
#: classes/helpers/FrmAppHelper.php:2404
|
5236 |
msgid "Filipino"
|
5237 |
msgstr ""
|
5238 |
|
5239 |
+
#: classes/helpers/FrmAppHelper.php:2405
|
5240 |
msgid "Finnish"
|
5241 |
msgstr ""
|
5242 |
|
5243 |
+
#: classes/helpers/FrmAppHelper.php:2406
|
5244 |
msgid "French"
|
5245 |
msgstr ""
|
5246 |
|
5247 |
+
#: classes/helpers/FrmAppHelper.php:2407
|
5248 |
msgid "French/Canadian"
|
5249 |
msgstr ""
|
5250 |
|
5251 |
+
#: classes/helpers/FrmAppHelper.php:2408
|
5252 |
msgid "French/Swiss"
|
5253 |
msgstr ""
|
5254 |
|
5255 |
+
#: classes/helpers/FrmAppHelper.php:2409
|
5256 |
msgid "German"
|
5257 |
msgstr ""
|
5258 |
|
5259 |
+
#: classes/helpers/FrmAppHelper.php:2410
|
5260 |
msgid "German/Austria"
|
5261 |
msgstr ""
|
5262 |
|
5263 |
+
#: classes/helpers/FrmAppHelper.php:2411
|
5264 |
msgid "German/Switzerland"
|
5265 |
msgstr ""
|
5266 |
|
5267 |
+
#: classes/helpers/FrmAppHelper.php:2412
|
5268 |
msgid "Greek"
|
5269 |
msgstr ""
|
5270 |
|
5271 |
+
#: classes/helpers/FrmAppHelper.php:2413
|
5272 |
+
#: classes/helpers/FrmAppHelper.php:2414
|
5273 |
msgid "Hebrew"
|
5274 |
msgstr ""
|
5275 |
|
5276 |
+
#: classes/helpers/FrmAppHelper.php:2415
|
5277 |
msgid "Hindi"
|
5278 |
msgstr ""
|
5279 |
|
5280 |
+
#: classes/helpers/FrmAppHelper.php:2416
|
5281 |
msgid "Hungarian"
|
5282 |
msgstr ""
|
5283 |
|
5284 |
+
#: classes/helpers/FrmAppHelper.php:2417
|
5285 |
msgid "Icelandic"
|
5286 |
msgstr ""
|
5287 |
|
5288 |
+
#: classes/helpers/FrmAppHelper.php:2418
|
5289 |
msgid "Indonesian"
|
5290 |
msgstr ""
|
5291 |
|
5292 |
+
#: classes/helpers/FrmAppHelper.php:2419
|
5293 |
msgid "Italian"
|
5294 |
msgstr ""
|
5295 |
|
5296 |
+
#: classes/helpers/FrmAppHelper.php:2420
|
5297 |
msgid "Japanese"
|
5298 |
msgstr ""
|
5299 |
|
5300 |
+
#: classes/helpers/FrmAppHelper.php:2421
|
5301 |
msgid "Korean"
|
5302 |
msgstr ""
|
5303 |
|
5304 |
+
#: classes/helpers/FrmAppHelper.php:2422
|
5305 |
msgid "Latvian"
|
5306 |
msgstr ""
|
5307 |
|
5308 |
+
#: classes/helpers/FrmAppHelper.php:2423
|
5309 |
msgid "Lithuanian"
|
5310 |
msgstr ""
|
5311 |
|
5312 |
+
#: classes/helpers/FrmAppHelper.php:2424
|
5313 |
msgid "Malaysian"
|
5314 |
msgstr ""
|
5315 |
|
5316 |
+
#: classes/helpers/FrmAppHelper.php:2425
|
5317 |
msgid "Norwegian"
|
5318 |
msgstr ""
|
5319 |
|
5320 |
+
#: classes/helpers/FrmAppHelper.php:2426
|
5321 |
msgid "Polish"
|
5322 |
msgstr ""
|
5323 |
|
5324 |
+
#: classes/helpers/FrmAppHelper.php:2427
|
5325 |
msgid "Portuguese"
|
5326 |
msgstr ""
|
5327 |
|
5328 |
+
#: classes/helpers/FrmAppHelper.php:2428
|
5329 |
msgid "Portuguese/Brazilian"
|
5330 |
msgstr ""
|
5331 |
|
5332 |
+
#: classes/helpers/FrmAppHelper.php:2429
|
5333 |
msgid "Portuguese/Portugal"
|
5334 |
msgstr ""
|
5335 |
|
5336 |
+
#: classes/helpers/FrmAppHelper.php:2430
|
5337 |
msgid "Romanian"
|
5338 |
msgstr ""
|
5339 |
|
5340 |
+
#: classes/helpers/FrmAppHelper.php:2431
|
5341 |
msgid "Russian"
|
5342 |
msgstr ""
|
5343 |
|
5344 |
+
#: classes/helpers/FrmAppHelper.php:2432
|
5345 |
+
#: classes/helpers/FrmAppHelper.php:2433
|
5346 |
msgid "Serbian"
|
5347 |
msgstr ""
|
5348 |
|
5349 |
+
#: classes/helpers/FrmAppHelper.php:2434
|
5350 |
msgid "Slovak"
|
5351 |
msgstr ""
|
5352 |
|
5353 |
+
#: classes/helpers/FrmAppHelper.php:2435
|
5354 |
msgid "Slovenian"
|
5355 |
msgstr ""
|
5356 |
|
5357 |
+
#: classes/helpers/FrmAppHelper.php:2436
|
5358 |
msgid "Spanish"
|
5359 |
msgstr ""
|
5360 |
|
5361 |
+
#: classes/helpers/FrmAppHelper.php:2437
|
5362 |
msgid "Spanish/Latin America"
|
5363 |
msgstr ""
|
5364 |
|
5365 |
+
#: classes/helpers/FrmAppHelper.php:2438
|
5366 |
msgid "Swedish"
|
5367 |
msgstr ""
|
5368 |
|
5369 |
+
#: classes/helpers/FrmAppHelper.php:2439
|
5370 |
msgid "Tamil"
|
5371 |
msgstr ""
|
5372 |
|
5373 |
+
#: classes/helpers/FrmAppHelper.php:2440
|
5374 |
msgid "Thai"
|
5375 |
msgstr ""
|
5376 |
|
5377 |
+
#: classes/helpers/FrmAppHelper.php:2441
|
5378 |
+
#: classes/helpers/FrmAppHelper.php:2442
|
5379 |
msgid "Turkish"
|
5380 |
msgstr ""
|
5381 |
|
5382 |
+
#: classes/helpers/FrmAppHelper.php:2443
|
5383 |
msgid "Ukranian"
|
5384 |
msgstr ""
|
5385 |
|
5386 |
+
#: classes/helpers/FrmAppHelper.php:2444
|
5387 |
msgid "Vietnamese"
|
5388 |
msgstr ""
|
5389 |
|
readme.txt
CHANGED
@@ -5,7 +5,7 @@ Tags: forms, contact form, form builder, survey, form maker, form, form creator
|
|
5 |
Requires at least: 4.6
|
6 |
Tested up to: 5.3.2
|
7 |
Requires PHP: 5.6
|
8 |
-
Stable tag: 4.
|
9 |
|
10 |
The most advanced WordPress forms plugin. Go beyond contact forms with our drag & drop form builder for surveys, quiz forms, and more.
|
11 |
|
@@ -113,21 +113,21 @@ Our customers use Formidable Views to create data-driven web applications like r
|
|
113 |
|
114 |
As you can see, Formidable is not your average contact form plugin. It's a true all-in-one WordPress form solution.
|
115 |
|
116 |
-
= Increase Your Sales with WooCommerce Product Forms =
|
117 |
|
118 |
-
Formidable is the only WordPress form builder plugin that offers extensive integration with WooCommerce.
|
119 |
|
120 |
-
Our goal is to empower you to build powerful WooCommerce product forms, so you can increase your store sales.
|
121 |
|
122 |
-
You can use Formidable to add a WooCommerce
|
123 |
|
124 |
-
Need your customers to upload a file when they purchase a product? No problem. Simply drag & drop a file upload field into your WooCommerce form and you're done.
|
125 |
|
126 |
You can even show submitted form values in the WooCommerce purchase receipt emails as well as trigger SMS text messages or marketing integrations when an order is completed.
|
127 |
|
128 |
= Make Powerful Quiz Forms & Calculators =
|
129 |
|
130 |
-
|
131 |
|
132 |
More on quiz forms later, but here are some example web calculators you can quickly add to your WordPress site:
|
133 |
|
@@ -200,6 +200,7 @@ Since Formidable is not your average WordPress form plugin, this feature list is
|
|
200 |
* <a href="https://formidableforms.com/features/conditional-logic-wordpress-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Conditional logic for smart forms</a>. Show or hide form fields based on user selections or user roles. Make complex forms simple and increase form conversion rates.
|
201 |
* <a href="https://formidableforms.com/features/email-autoresponders-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Send email notifications & autoresponders</a>. Automatically let clients know you received their message. Then create customized email notifications for multiple recipients and get info from an email form to those who need it.
|
202 |
* Email routing: Conditionally send multiple autoresponder emails and notifications based on values in email forms, payment forms, and registration forms.
|
|
|
203 |
* <a href="https://formidableforms.com/features/wordpress-calculated-fields-form/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Calculator forms</a>. Create basic and complex calculations, and even combine text from multiple fields for a mortgage calculator, auto loan calculator, or many other calculator forms. Even a contact form could benefit from calculations for easy quotes and price estimates.
|
204 |
* <a href="https://formidableforms.com/features/wordpress-visual-form-styler/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Visual form style creator</a>. Our form creator for email forms, calculators, and other online forms not only allows you to build forms, but also create branded forms that match your site. Change colors, borders, padding and much more without any code.
|
205 |
* <a href="https://formidableforms.com/features/flexible-layouts-responsive-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Flexible form layout design</a>. Build mobile responsive forms and advanced form layouts with multiple fields in a row by using our CSS layout classes.
|
@@ -234,8 +235,8 @@ In addition to all the features listed above, power up your forms with these int
|
|
234 |
* <a href="https://formidableforms.com/features/paypal-wordpress-payments/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">PayPal Payment Forms</a>. Automate your business by collecting instant payments and recurring payments from clients. Collect information, calculate a total, and send clients to PayPal from your payment forms.
|
235 |
* <a href="https://formidableforms.com/features/stripe-payments-for-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Stripe Payment Forms</a>. Keep users on your site while collecting payments from a credit card form. Select from one time and recurring charges in order forms and donation forms.
|
236 |
* <a href="https://formidableforms.com/features/authorize-net-payments/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Authorize.net AIM Payment Forms</a>. Process one-time payments in order forms, registration forms, and calculator forms with Authorize.net AIM.
|
237 |
-
* <a href="https://formidableforms.com/features/customizable-woocommerce-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">WooCommerce product configurator</a>. Add custom fields to a WooCommerce product form and collect extra data when a product is added to the cart. Use form calculations for variable pricing, upload a file with the purchase, and send custom emails when a purchase is completed.
|
238 |
-
* <a href="https://formidableforms.com/features/mailchimp-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">MailChimp Forms</a>. Add and update leads in a MailChimp email marketing list from lead forms, order forms, and email forms.
|
239 |
* <a href="https://formidableforms.com/features/entries-to-constant-contact/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Constant Contact Forms</a>. Create leads automatically in Constant Contact with newsletter signup forms.
|
240 |
* <a href="https://formidableforms.com/features/form-entries-to-getresponse/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">GetResponse Forms</a>. Collect leads in WordPress forms, add them to GetResponse, and trigger GetResponse marketing automations.
|
241 |
* <a href="https://formidableforms.com/features/aweber-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">AWeber Forms</a>. Subscribe users to an AWeber mailing list when a newsletter signup form is submitted.
|
@@ -356,14 +357,14 @@ The Formidable drag & drop form builder combined with our add-ons is the most po
|
|
356 |
To get access to more features, integrations, and support, <a href="https://formidableforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">upgrade to Formidable Forms Pro</a>. A Pro license gives you access to the full version of Formidable Forms for more advanced forms, Formidable Views, graphs and stats, priority support, and Formidable Add-ons!
|
357 |
|
358 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
359 |
= 4.03.07 =
|
360 |
* Project Delight: Make admin-side tooltips more enjoyable and helpful.
|
361 |
* Add several missing countries to the country list.
|
362 |
* Fix: Prevent duplicate localization strings from showing in the page source.
|
363 |
|
364 |
-
= 4.03.06 =
|
365 |
-
* New: Use autocomplete for settings for selecting a WordPress page for faster load time on sites with many pages.
|
366 |
-
* Fix: When saving conditional logic settings in WP 5.3.1, there was a PHP error message showing on some sites.
|
367 |
-
* Fix: Custom CSS was being sanitized incorrectly and > was switched to &rt;
|
368 |
-
|
369 |
<a href="https://raw.githubusercontent.com/Strategy11/formidable-forms/master/changelog.txt">See changelog for all versions</a>
|
5 |
Requires at least: 4.6
|
6 |
Tested up to: 5.3.2
|
7 |
Requires PHP: 5.6
|
8 |
+
Stable tag: 4.04
|
9 |
|
10 |
The most advanced WordPress forms plugin. Go beyond contact forms with our drag & drop form builder for surveys, quiz forms, and more.
|
11 |
|
113 |
|
114 |
As you can see, Formidable is not your average contact form plugin. It's a true all-in-one WordPress form solution.
|
115 |
|
116 |
+
= Increase Your Sales with WooCommerce Product Order Forms =
|
117 |
|
118 |
+
Formidable is the only WordPress form builder plugin that offers extensive integration with WooCommerce orders.
|
119 |
|
120 |
+
Our goal is to empower you to build powerful WooCommerce product order forms, so you can increase your store sales.
|
121 |
|
122 |
+
You can use Formidable to add a WooCommerce product configurator with custom calculation fields. Then automatically send the order info to the WooCommerce cart with variable pricing options.
|
123 |
|
124 |
+
Need your customers to upload a file when they purchase a product? No problem. Simply drag & drop a file upload field into your linked up WooCommerce order form and you're done.
|
125 |
|
126 |
You can even show submitted form values in the WooCommerce purchase receipt emails as well as trigger SMS text messages or marketing integrations when an order is completed.
|
127 |
|
128 |
= Make Powerful Quiz Forms & Calculators =
|
129 |
|
130 |
+
In addition to simple order forms, you can also use Formidable to create quiz forms and calculator forms.
|
131 |
|
132 |
More on quiz forms later, but here are some example web calculators you can quickly add to your WordPress site:
|
133 |
|
200 |
* <a href="https://formidableforms.com/features/conditional-logic-wordpress-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Conditional logic for smart forms</a>. Show or hide form fields based on user selections or user roles. Make complex forms simple and increase form conversion rates.
|
201 |
* <a href="https://formidableforms.com/features/email-autoresponders-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Send email notifications & autoresponders</a>. Automatically let clients know you received their message. Then create customized email notifications for multiple recipients and get info from an email form to those who need it.
|
202 |
* Email routing: Conditionally send multiple autoresponder emails and notifications based on values in email forms, payment forms, and registration forms.
|
203 |
+
* Pricing fields for easy eCommerce forms with automatic calculations. Drop in a product field, quantity, and total and you're good to go.
|
204 |
* <a href="https://formidableforms.com/features/wordpress-calculated-fields-form/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Calculator forms</a>. Create basic and complex calculations, and even combine text from multiple fields for a mortgage calculator, auto loan calculator, or many other calculator forms. Even a contact form could benefit from calculations for easy quotes and price estimates.
|
205 |
* <a href="https://formidableforms.com/features/wordpress-visual-form-styler/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Visual form style creator</a>. Our form creator for email forms, calculators, and other online forms not only allows you to build forms, but also create branded forms that match your site. Change colors, borders, padding and much more without any code.
|
206 |
* <a href="https://formidableforms.com/features/flexible-layouts-responsive-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Flexible form layout design</a>. Build mobile responsive forms and advanced form layouts with multiple fields in a row by using our CSS layout classes.
|
235 |
* <a href="https://formidableforms.com/features/paypal-wordpress-payments/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">PayPal Payment Forms</a>. Automate your business by collecting instant payments and recurring payments from clients. Collect information, calculate a total, and send clients to PayPal from your payment forms.
|
236 |
* <a href="https://formidableforms.com/features/stripe-payments-for-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Stripe Payment Forms</a>. Keep users on your site while collecting payments from a credit card form. Select from one time and recurring charges in order forms and donation forms.
|
237 |
* <a href="https://formidableforms.com/features/authorize-net-payments/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Authorize.net AIM Payment Forms</a>. Process one-time payments in order forms, registration forms, and calculator forms with Authorize.net AIM.
|
238 |
+
* <a href="https://formidableforms.com/features/customizable-woocommerce-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">WooCommerce product configurator</a>. Add custom fields to a WooCommerce product order form and collect extra data when a product is added to the cart. Use form calculations for variable pricing, upload a file with the purchase, and send custom emails when a purchase is completed.
|
239 |
+
* <a href="https://formidableforms.com/features/mailchimp-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">MailChimp Forms</a>. Add and update leads in a MailChimp email marketing list from lead forms, online order forms, and email forms.
|
240 |
* <a href="https://formidableforms.com/features/entries-to-constant-contact/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Constant Contact Forms</a>. Create leads automatically in Constant Contact with newsletter signup forms.
|
241 |
* <a href="https://formidableforms.com/features/form-entries-to-getresponse/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">GetResponse Forms</a>. Collect leads in WordPress forms, add them to GetResponse, and trigger GetResponse marketing automations.
|
242 |
* <a href="https://formidableforms.com/features/aweber-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">AWeber Forms</a>. Subscribe users to an AWeber mailing list when a newsletter signup form is submitted.
|
357 |
To get access to more features, integrations, and support, <a href="https://formidableforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">upgrade to Formidable Forms Pro</a>. A Pro license gives you access to the full version of Formidable Forms for more advanced forms, Formidable Views, graphs and stats, priority support, and Formidable Add-ons!
|
358 |
|
359 |
== Changelog ==
|
360 |
+
= 4.04 =
|
361 |
+
* New: Show a warning if a WordPress parameter is used in the redirect URL to prevent unintented results.
|
362 |
+
* New: Added frm_is_field_type hook to set if an individual field is shown as radio or checkbox
|
363 |
+
* New: Show the new pricing fields in the builder for product education.
|
364 |
+
|
365 |
= 4.03.07 =
|
366 |
* Project Delight: Make admin-side tooltips more enjoyable and helpful.
|
367 |
* Add several missing countries to the country list.
|
368 |
* Fix: Prevent duplicate localization strings from showing in the page source.
|
369 |
|
|
|
|
|
|
|
|
|
|
|
370 |
<a href="https://raw.githubusercontent.com/Strategy11/formidable-forms/master/changelog.txt">See changelog for all versions</a>
|