Version Description
- Fixed: Some browers allowing unexpected characters inside number input fields
- Fixed: Issue with Dropdown field placeholder text
- Fixed: Select few plugins loading conflicting scripts in form builder
Download this release
Release Info
| Developer | jaredatch |
| Plugin | |
| Version | 1.3.5 |
| Comparing to | |
| See all releases | |
Code changes from version 1.3.3 to 1.3.5
- assets/js/admin-builder.js +1 -1
- assets/js/wpforms.js +13 -0
- includes/admin/builder/class-builder.php +3 -0
- includes/class-frontend.php +6 -3
- includes/class-preview.php +1 -1
- includes/class-smart-tags.php +2 -1
- includes/fields/class-name.php +20 -20
- includes/fields/class-number.php +28 -0
- includes/fields/class-select.php +39 -39
- languages/wpforms.pot +7 -7
- lite/wpforms-lite.php +12 -1
- readme.txt +10 -0
- wpforms.php +2 -2
assets/js/admin-builder.js
CHANGED
|
@@ -2090,7 +2090,7 @@
|
|
| 2090 |
$dest = $(this).parent().parent().find('.key-destination');
|
| 2091 |
name = $dest.data('name');
|
| 2092 |
if (value) {
|
| 2093 |
-
$dest.attr('name', name.replace('{source}', value.replace(/[^0-9a-
|
| 2094 |
}
|
| 2095 |
})
|
| 2096 |
|
| 2090 |
$dest = $(this).parent().parent().find('.key-destination');
|
| 2091 |
name = $dest.data('name');
|
| 2092 |
if (value) {
|
| 2093 |
+
$dest.attr('name', name.replace('{source}', value.replace(/[^0-9a-zA-Z_-]/gi, '')));
|
| 2094 |
}
|
| 2095 |
})
|
| 2096 |
|
assets/js/wpforms.js
CHANGED
|
@@ -430,6 +430,19 @@
|
|
| 430 |
// Other functions
|
| 431 |
//--------------------------------------------------------------------//
|
| 432 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 433 |
/**
|
| 434 |
* Payments: Calculate total.
|
| 435 |
*
|
| 430 |
// Other functions
|
| 431 |
//--------------------------------------------------------------------//
|
| 432 |
|
| 433 |
+
/**
|
| 434 |
+
* Google reCAPTCHA callback.
|
| 435 |
+
*
|
| 436 |
+
* @since 1.3.4
|
| 437 |
+
*/
|
| 438 |
+
recaptchaCallback: function( el ) {
|
| 439 |
+
|
| 440 |
+
var $this = $(el),
|
| 441 |
+
$hidden = $this.parent().find('.wpforms-recaptcha-hidden');
|
| 442 |
+
|
| 443 |
+
$hidden.val('1').valid();
|
| 444 |
+
},
|
| 445 |
+
|
| 446 |
/**
|
| 447 |
* Payments: Calculate total.
|
| 448 |
*
|
includes/admin/builder/class-builder.php
CHANGED
|
@@ -147,6 +147,9 @@ class WPForms_Builder {
|
|
| 147 |
*/
|
| 148 |
public function enqueues() {
|
| 149 |
|
|
|
|
|
|
|
|
|
|
| 150 |
do_action( 'wpforms_builder_enqueues_before', $this->view );
|
| 151 |
|
| 152 |
// CSS
|
| 147 |
*/
|
| 148 |
public function enqueues() {
|
| 149 |
|
| 150 |
+
// Remove conflicting scripts
|
| 151 |
+
wp_deregister_script( 'serialize-object' );
|
| 152 |
+
|
| 153 |
do_action( 'wpforms_builder_enqueues_before', $this->view );
|
| 154 |
|
| 155 |
// CSS
|
includes/class-frontend.php
CHANGED
|
@@ -554,7 +554,7 @@ class WPForms_Frontend {
|
|
| 554 |
|
| 555 |
$pages = wpforms_has_pagebreak( $form_data );
|
| 556 |
$d = '';
|
| 557 |
-
$datas = apply_filters( 'wpforms_frontend_recaptcha', array(
|
| 558 |
|
| 559 |
|
| 560 |
if ( $pages ) {
|
|
@@ -569,6 +569,8 @@ class WPForms_Frontend {
|
|
| 569 |
|
| 570 |
echo '<div class="g-recaptcha" ' . $d . '></div>';
|
| 571 |
|
|
|
|
|
|
|
| 572 |
if ( !empty( wpforms()->process->errors[$form_data['id']]['recaptcha'] ) ) {
|
| 573 |
echo '<label id="wpforms-field_recaptcah-error" class="wpforms-error">' . esc_html( wpforms()->process->errors[$form_data['id']]['recaptcha'] ) . '</label>';
|
| 574 |
}
|
|
@@ -812,16 +814,17 @@ class WPForms_Frontend {
|
|
| 812 |
$site_key = wpforms_setting( 'recaptcha-site-key' );
|
| 813 |
$secret_key = wpforms_setting( 'recaptcha-secret-key' );
|
| 814 |
if ( !empty( $site_key ) && !empty( $secret_key ) ) {
|
|
|
|
| 815 |
wp_enqueue_script(
|
| 816 |
'wpforms-recaptcha',
|
| 817 |
-
|
| 818 |
array( 'jquery' ),
|
| 819 |
'2.0.0',
|
| 820 |
true
|
| 821 |
);
|
| 822 |
$reCAPTCHA_init = 'var wpformsRecaptcha = function(){
|
| 823 |
jQuery(".g-recaptcha").each(function(index, el) {
|
| 824 |
-
grecaptcha.render(el, {sitekey : \'' . $site_key . '\'});
|
| 825 |
});
|
| 826 |
};';
|
| 827 |
wp_add_inline_script( 'wpforms-recaptcha', $reCAPTCHA_init );
|
| 554 |
|
| 555 |
$pages = wpforms_has_pagebreak( $form_data );
|
| 556 |
$d = '';
|
| 557 |
+
$datas = apply_filters( 'wpforms_frontend_recaptcha', array(), $form_data );
|
| 558 |
|
| 559 |
|
| 560 |
if ( $pages ) {
|
| 569 |
|
| 570 |
echo '<div class="g-recaptcha" ' . $d . '></div>';
|
| 571 |
|
| 572 |
+
echo '<input type="text" name="g-recaptcha-hidden" class="wpforms-recaptcha-hidden" style="position:absolute !important;clip:rect(0,0,0,0);height:1px;width:1px;border:0;overflow:hidden;padding:0;margin;" required>';
|
| 573 |
+
|
| 574 |
if ( !empty( wpforms()->process->errors[$form_data['id']]['recaptcha'] ) ) {
|
| 575 |
echo '<label id="wpforms-field_recaptcah-error" class="wpforms-error">' . esc_html( wpforms()->process->errors[$form_data['id']]['recaptcha'] ) . '</label>';
|
| 576 |
}
|
| 814 |
$site_key = wpforms_setting( 'recaptcha-site-key' );
|
| 815 |
$secret_key = wpforms_setting( 'recaptcha-secret-key' );
|
| 816 |
if ( !empty( $site_key ) && !empty( $secret_key ) ) {
|
| 817 |
+
$reCAPTCHA_api = apply_filters( 'wpforms_frontend_recaptcha_url', 'https://www.google.com/recaptcha/api.js?onload=wpformsRecaptcha&render=explicit' );
|
| 818 |
wp_enqueue_script(
|
| 819 |
'wpforms-recaptcha',
|
| 820 |
+
$reCAPTCHA_api,
|
| 821 |
array( 'jquery' ),
|
| 822 |
'2.0.0',
|
| 823 |
true
|
| 824 |
);
|
| 825 |
$reCAPTCHA_init = 'var wpformsRecaptcha = function(){
|
| 826 |
jQuery(".g-recaptcha").each(function(index, el) {
|
| 827 |
+
grecaptcha.render(el, {sitekey : \'' . $site_key . '\',callback:function(){wpforms.recaptchaCallback(el);}});
|
| 828 |
});
|
| 829 |
};';
|
| 830 |
wp_add_inline_script( 'wpforms-recaptcha', $reCAPTCHA_init );
|
includes/class-preview.php
CHANGED
|
@@ -258,7 +258,7 @@ class WPForms_Preview {
|
|
| 258 |
// Customize the page content
|
| 259 |
$title = sanitize_text_field( $form['settings']['form_title'] );
|
| 260 |
$shortcode = '[wpforms id="' . absint( $form['id'] ) . '"]';
|
| 261 |
-
$content = __( 'This is a preview of your form. This page not publically accessible.', 'wpforms' );
|
| 262 |
if ( !empty( $_GET['new_window'] ) ) {
|
| 263 |
$content .= ' <a href="javascript:window.close();">' . __( 'Close this window', 'wpforms' ) . '.</a>';
|
| 264 |
}
|
| 258 |
// Customize the page content
|
| 259 |
$title = sanitize_text_field( $form['settings']['form_title'] );
|
| 260 |
$shortcode = '[wpforms id="' . absint( $form['id'] ) . '"]';
|
| 261 |
+
$content = __( 'This is a preview of your form. This page is not publically accessible.', 'wpforms' );
|
| 262 |
if ( !empty( $_GET['new_window'] ) ) {
|
| 263 |
$content .= ' <a href="javascript:window.close();">' . __( 'Close this window', 'wpforms' ) . '.</a>';
|
| 264 |
}
|
includes/class-smart-tags.php
CHANGED
|
@@ -234,7 +234,8 @@ class WPForms_Smart_Tags {
|
|
| 234 |
|
| 235 |
foreach( $dates[1] as $key => $date ) {
|
| 236 |
|
| 237 |
-
$
|
|
|
|
| 238 |
}
|
| 239 |
}
|
| 240 |
|
| 234 |
|
| 235 |
foreach( $dates[1] as $key => $date ) {
|
| 236 |
|
| 237 |
+
$value = date( $date, time() + ( get_option( 'gmt_offset' ) * 3600 ) );
|
| 238 |
+
$content = str_replace( $dates[0][$key], $value, $content );
|
| 239 |
}
|
| 240 |
}
|
| 241 |
|
includes/fields/class-name.php
CHANGED
|
@@ -38,7 +38,7 @@ class WPForms_Field_Name extends WPForms_Field {
|
|
| 38 |
//--------------------------------------------------------------------//
|
| 39 |
// Basic field options
|
| 40 |
//--------------------------------------------------------------------//
|
| 41 |
-
|
| 42 |
$this->field_option( 'basic-options', $field, array( 'markup' => 'open' ) );
|
| 43 |
$this->field_option( 'label', $field );
|
| 44 |
|
|
@@ -57,14 +57,14 @@ class WPForms_Field_Name extends WPForms_Field {
|
|
| 57 |
$this->field_option( 'description', $field );
|
| 58 |
$this->field_option( 'required', $field );
|
| 59 |
$this->field_option( 'basic-options', $field, array( 'markup' => 'close' ) );
|
| 60 |
-
|
| 61 |
//--------------------------------------------------------------------//
|
| 62 |
// Advanced field options
|
| 63 |
//--------------------------------------------------------------------//
|
| 64 |
-
|
| 65 |
$this->field_option( 'advanced-options', $field, array( 'markup' => 'open' ) );
|
| 66 |
$this->field_option( 'size', $field );
|
| 67 |
-
|
| 68 |
echo '<div class="format-selected-' . $format . ' format-selected">';
|
| 69 |
|
| 70 |
// Simple
|
|
@@ -165,7 +165,7 @@ class WPForms_Field_Name extends WPForms_Field {
|
|
| 165 |
echo '</div>';
|
| 166 |
echo '<div class="wpforms-last-name">';
|
| 167 |
printf( '<input type="text" placeholder="%s" class="primary-input" disabled>', $last_placeholder );
|
| 168 |
-
printf( '<label class="wpforms-sub-label">%s</label>', __( 'Last', 'wpforms' ) );
|
| 169 |
echo '</div>';
|
| 170 |
echo '</div>';
|
| 171 |
|
|
@@ -180,7 +180,7 @@ class WPForms_Field_Name extends WPForms_Field {
|
|
| 180 |
* @param array $form_data
|
| 181 |
*/
|
| 182 |
public function field_display( $field, $field_atts, $form_data ) {
|
| 183 |
-
|
| 184 |
// Setup and sanitize the necessary data
|
| 185 |
$field = apply_filters( 'wpforms_address_field_display', $field, $field_atts, $form_data );
|
| 186 |
$field_required = !empty( $field['required'] ) ? ' required' : '';
|
|
@@ -189,19 +189,19 @@ class WPForms_Field_Name extends WPForms_Field {
|
|
| 189 |
$field_id = implode( ' ', array_map( 'sanitize_html_class', $field_atts['input_id'] ) );
|
| 190 |
$field_sublabel = !empty( $field['sublabel_hide'] ) ? 'wpforms-sublabel-hide' : '';
|
| 191 |
$simple_placeholder = !empty( $field['simple_placeholder'] ) ? esc_attr( $field['simple_placeholder'] ) : '';
|
| 192 |
-
$simple_default = !empty( $field['simple_default'] ) ? esc_attr( $field['simple_default'] ) : '';
|
| 193 |
$first_placeholder = !empty( $field['first_placeholder'] ) ? esc_attr( $field['first_placeholder'] ) : '';
|
| 194 |
-
$first_default = !empty( $field['first_default'] ) ? esc_attr( $field['first_default'] ) : '';
|
| 195 |
$middle_placeholder = !empty( $field['middle_placeholder'] ) ? esc_attr( $field['middle_placeholder'] ) : '';
|
| 196 |
-
$middle_default = !empty( $field['middle_default'] ) ? esc_attr( $field['middle_default'] ) : '';
|
| 197 |
$last_placeholder = !empty( $field['last_placeholder'] ) ? esc_attr( $field['last_placeholder'] ) : '';
|
| 198 |
-
$last_default = !empty( $field['last_default'] ) ? esc_attr( $field['last_default'] ) : '';
|
| 199 |
$form_id = $form_data['id'];
|
| 200 |
|
| 201 |
// Simple name format
|
| 202 |
if ( 'simple' == $field_format ) :
|
| 203 |
|
| 204 |
-
printf(
|
| 205 |
'<input type="text" name="wpforms[fields][%d]" id="%s" class="%s" placeholder="%s" value="%s" %s>',
|
| 206 |
$field['id'],
|
| 207 |
$field_id,
|
|
@@ -225,7 +225,7 @@ class WPForms_Field_Name extends WPForms_Field {
|
|
| 225 |
$first_class .= !empty( $field_required ) ? ' wpforms-field-required' : '';
|
| 226 |
$first_class .= !empty( wpforms()->process->errors[$form_id][$field['id']]['first'] ) ? ' wpforms-error' : '';
|
| 227 |
|
| 228 |
-
printf(
|
| 229 |
'<input type="text" name="wpforms[fields][%d][first]" id="%s" class="%s" placeholder="%s" value="%s" %s>',
|
| 230 |
$field['id'],
|
| 231 |
"wpforms-{$form_id}-field_{$field['id']}",
|
|
@@ -238,7 +238,7 @@ class WPForms_Field_Name extends WPForms_Field {
|
|
| 238 |
if ( !empty( wpforms()->process->errors[$form_id][$field['id']]['first'] ) ) {
|
| 239 |
printf( '<label id="wpforms-%d-field_%d-error" class="wpforms-error" for="wpforms-field_%d">%s</label>', $form_id, $field['id'], $field['id'], esc_html( wpforms()->process->errors[$form_id][$field['id']]['first'] ) );
|
| 240 |
}
|
| 241 |
-
|
| 242 |
printf( '<label for="wpforms-%d-field_%d" class="wpforms-field-sublabel %s">%s</label>', $form_id, $field['id'], $field_sublabel, __( 'First', 'wpforms' ) );
|
| 243 |
|
| 244 |
echo '</div>';
|
|
@@ -248,7 +248,7 @@ class WPForms_Field_Name extends WPForms_Field {
|
|
| 248 |
|
| 249 |
echo '<div class="wpforms-field-row-block wpforms-one-fifth">';
|
| 250 |
|
| 251 |
-
printf(
|
| 252 |
'<input type="text" name="wpforms[fields][%d][middle]" id="%s" class="%s" placeholder="%s" value="%s">',
|
| 253 |
$field['id'],
|
| 254 |
"wpforms-{$form_id}-field_{$field['id']}-middle",
|
|
@@ -256,7 +256,7 @@ class WPForms_Field_Name extends WPForms_Field {
|
|
| 256 |
$middle_placeholder,
|
| 257 |
$middle_default
|
| 258 |
);
|
| 259 |
-
|
| 260 |
printf( '<label for="wpforms-%d-field_%d-middle" class="wpforms-field-sublabel %s">%s</label>', $form_id, $field['id'], $field_sublabel, __( 'Middle', 'wpforms' ) );
|
| 261 |
|
| 262 |
echo '</div>';
|
|
@@ -270,7 +270,7 @@ class WPForms_Field_Name extends WPForms_Field {
|
|
| 270 |
$last_class .= !empty( $field_required ) ? ' wpforms-field-required' : '';
|
| 271 |
$last_class .= !empty( wpforms()->process->errors[$form_id][$field['id']]['last'] ) ? ' wpforms-error' : '';
|
| 272 |
|
| 273 |
-
printf(
|
| 274 |
'<input type="text" name="wpforms[fields][%d][last]" id="%s" class="%s" placeholder="%s" value="%s" %s>',
|
| 275 |
$field['id'],
|
| 276 |
"wpforms-{$form_id}-field_{$field['id']}-last",
|
|
@@ -283,13 +283,13 @@ class WPForms_Field_Name extends WPForms_Field {
|
|
| 283 |
if ( !empty( wpforms()->process->errors[$form_id][$field['id']]['last'] ) ) {
|
| 284 |
printf( '<label id="wpforms-%d-field_%d-error" class="wpforms-error" for="wpforms-field_%d">%s</label>', $form_id, $field['id'], $field['id'], esc_html( wpforms()->process->errors[$form_id][$field['id']]['last'] ) );
|
| 285 |
}
|
| 286 |
-
|
| 287 |
printf( '<label for="wpforms-%d-field_%d-last" class="wpforms-field-sublabel %s">%s</label>', $form_id, $field['id'], $field_sublabel, __( 'Last', 'wpforms' ) );
|
| 288 |
|
| 289 |
echo '</div>';
|
| 290 |
|
| 291 |
echo '</div>';
|
| 292 |
-
|
| 293 |
endif;
|
| 294 |
}
|
| 295 |
|
|
@@ -309,7 +309,7 @@ class WPForms_Field_Name extends WPForms_Field {
|
|
| 309 |
$form_id = $form_data['id'];
|
| 310 |
$format = $form_data['fields'][$field_id]['format'];
|
| 311 |
$required = apply_filters( 'wpforms_required_label', __( 'This field is required', 'wpforms' ) );
|
| 312 |
-
|
| 313 |
if ( 'simple' == $format && empty( $field_submit ) ) {
|
| 314 |
wpforms()->process->errors[$form_id][$field_id] = $required;
|
| 315 |
}
|
|
@@ -338,7 +338,7 @@ class WPForms_Field_Name extends WPForms_Field {
|
|
| 338 |
$first = !empty( $field_submit['first'] ) ? $field_submit['first'] : '';
|
| 339 |
$middle = !empty( $field_submit['middle'] ) ? $field_submit['middle'] : '';
|
| 340 |
$last = !empty( $field_submit['last'] ) ? $field_submit['last'] : '';
|
| 341 |
-
|
| 342 |
if ( is_array( $field_submit ) ) {
|
| 343 |
$value = array( $first, $middle, $last );
|
| 344 |
$value = array_filter( $value );
|
| 38 |
//--------------------------------------------------------------------//
|
| 39 |
// Basic field options
|
| 40 |
//--------------------------------------------------------------------//
|
| 41 |
+
|
| 42 |
$this->field_option( 'basic-options', $field, array( 'markup' => 'open' ) );
|
| 43 |
$this->field_option( 'label', $field );
|
| 44 |
|
| 57 |
$this->field_option( 'description', $field );
|
| 58 |
$this->field_option( 'required', $field );
|
| 59 |
$this->field_option( 'basic-options', $field, array( 'markup' => 'close' ) );
|
| 60 |
+
|
| 61 |
//--------------------------------------------------------------------//
|
| 62 |
// Advanced field options
|
| 63 |
//--------------------------------------------------------------------//
|
| 64 |
+
|
| 65 |
$this->field_option( 'advanced-options', $field, array( 'markup' => 'open' ) );
|
| 66 |
$this->field_option( 'size', $field );
|
| 67 |
+
|
| 68 |
echo '<div class="format-selected-' . $format . ' format-selected">';
|
| 69 |
|
| 70 |
// Simple
|
| 165 |
echo '</div>';
|
| 166 |
echo '<div class="wpforms-last-name">';
|
| 167 |
printf( '<input type="text" placeholder="%s" class="primary-input" disabled>', $last_placeholder );
|
| 168 |
+
printf( '<label class="wpforms-sub-label">%s</label>', __( 'Last', 'wpforms' ) );
|
| 169 |
echo '</div>';
|
| 170 |
echo '</div>';
|
| 171 |
|
| 180 |
* @param array $form_data
|
| 181 |
*/
|
| 182 |
public function field_display( $field, $field_atts, $form_data ) {
|
| 183 |
+
|
| 184 |
// Setup and sanitize the necessary data
|
| 185 |
$field = apply_filters( 'wpforms_address_field_display', $field, $field_atts, $form_data );
|
| 186 |
$field_required = !empty( $field['required'] ) ? ' required' : '';
|
| 189 |
$field_id = implode( ' ', array_map( 'sanitize_html_class', $field_atts['input_id'] ) );
|
| 190 |
$field_sublabel = !empty( $field['sublabel_hide'] ) ? 'wpforms-sublabel-hide' : '';
|
| 191 |
$simple_placeholder = !empty( $field['simple_placeholder'] ) ? esc_attr( $field['simple_placeholder'] ) : '';
|
| 192 |
+
$simple_default = !empty( $field['simple_default'] ) ? esc_attr( apply_filters( 'wpforms_process_smart_tags', $field['simple_default'], $form_data ) ) : '';
|
| 193 |
$first_placeholder = !empty( $field['first_placeholder'] ) ? esc_attr( $field['first_placeholder'] ) : '';
|
| 194 |
+
$first_default = !empty( $field['first_default'] ) ? esc_attr( apply_filters( 'wpforms_process_smart_tags', $field['first_default'], $form_data ) ) : '';
|
| 195 |
$middle_placeholder = !empty( $field['middle_placeholder'] ) ? esc_attr( $field['middle_placeholder'] ) : '';
|
| 196 |
+
$middle_default = !empty( $field['middle_default'] ) ? esc_attr( apply_filters( 'wpforms_process_smart_tags', $field['middle_default'], $form_data ) ) : '';
|
| 197 |
$last_placeholder = !empty( $field['last_placeholder'] ) ? esc_attr( $field['last_placeholder'] ) : '';
|
| 198 |
+
$last_default = !empty( $field['last_default'] ) ? esc_attr( apply_filters( 'wpforms_process_smart_tags', $field['last_default'], $form_data ) ) : '';
|
| 199 |
$form_id = $form_data['id'];
|
| 200 |
|
| 201 |
// Simple name format
|
| 202 |
if ( 'simple' == $field_format ) :
|
| 203 |
|
| 204 |
+
printf(
|
| 205 |
'<input type="text" name="wpforms[fields][%d]" id="%s" class="%s" placeholder="%s" value="%s" %s>',
|
| 206 |
$field['id'],
|
| 207 |
$field_id,
|
| 225 |
$first_class .= !empty( $field_required ) ? ' wpforms-field-required' : '';
|
| 226 |
$first_class .= !empty( wpforms()->process->errors[$form_id][$field['id']]['first'] ) ? ' wpforms-error' : '';
|
| 227 |
|
| 228 |
+
printf(
|
| 229 |
'<input type="text" name="wpforms[fields][%d][first]" id="%s" class="%s" placeholder="%s" value="%s" %s>',
|
| 230 |
$field['id'],
|
| 231 |
"wpforms-{$form_id}-field_{$field['id']}",
|
| 238 |
if ( !empty( wpforms()->process->errors[$form_id][$field['id']]['first'] ) ) {
|
| 239 |
printf( '<label id="wpforms-%d-field_%d-error" class="wpforms-error" for="wpforms-field_%d">%s</label>', $form_id, $field['id'], $field['id'], esc_html( wpforms()->process->errors[$form_id][$field['id']]['first'] ) );
|
| 240 |
}
|
| 241 |
+
|
| 242 |
printf( '<label for="wpforms-%d-field_%d" class="wpforms-field-sublabel %s">%s</label>', $form_id, $field['id'], $field_sublabel, __( 'First', 'wpforms' ) );
|
| 243 |
|
| 244 |
echo '</div>';
|
| 248 |
|
| 249 |
echo '<div class="wpforms-field-row-block wpforms-one-fifth">';
|
| 250 |
|
| 251 |
+
printf(
|
| 252 |
'<input type="text" name="wpforms[fields][%d][middle]" id="%s" class="%s" placeholder="%s" value="%s">',
|
| 253 |
$field['id'],
|
| 254 |
"wpforms-{$form_id}-field_{$field['id']}-middle",
|
| 256 |
$middle_placeholder,
|
| 257 |
$middle_default
|
| 258 |
);
|
| 259 |
+
|
| 260 |
printf( '<label for="wpforms-%d-field_%d-middle" class="wpforms-field-sublabel %s">%s</label>', $form_id, $field['id'], $field_sublabel, __( 'Middle', 'wpforms' ) );
|
| 261 |
|
| 262 |
echo '</div>';
|
| 270 |
$last_class .= !empty( $field_required ) ? ' wpforms-field-required' : '';
|
| 271 |
$last_class .= !empty( wpforms()->process->errors[$form_id][$field['id']]['last'] ) ? ' wpforms-error' : '';
|
| 272 |
|
| 273 |
+
printf(
|
| 274 |
'<input type="text" name="wpforms[fields][%d][last]" id="%s" class="%s" placeholder="%s" value="%s" %s>',
|
| 275 |
$field['id'],
|
| 276 |
"wpforms-{$form_id}-field_{$field['id']}-last",
|
| 283 |
if ( !empty( wpforms()->process->errors[$form_id][$field['id']]['last'] ) ) {
|
| 284 |
printf( '<label id="wpforms-%d-field_%d-error" class="wpforms-error" for="wpforms-field_%d">%s</label>', $form_id, $field['id'], $field['id'], esc_html( wpforms()->process->errors[$form_id][$field['id']]['last'] ) );
|
| 285 |
}
|
| 286 |
+
|
| 287 |
printf( '<label for="wpforms-%d-field_%d-last" class="wpforms-field-sublabel %s">%s</label>', $form_id, $field['id'], $field_sublabel, __( 'Last', 'wpforms' ) );
|
| 288 |
|
| 289 |
echo '</div>';
|
| 290 |
|
| 291 |
echo '</div>';
|
| 292 |
+
|
| 293 |
endif;
|
| 294 |
}
|
| 295 |
|
| 309 |
$form_id = $form_data['id'];
|
| 310 |
$format = $form_data['fields'][$field_id]['format'];
|
| 311 |
$required = apply_filters( 'wpforms_required_label', __( 'This field is required', 'wpforms' ) );
|
| 312 |
+
|
| 313 |
if ( 'simple' == $format && empty( $field_submit ) ) {
|
| 314 |
wpforms()->process->errors[$form_id][$field_id] = $required;
|
| 315 |
}
|
| 338 |
$first = !empty( $field_submit['first'] ) ? $field_submit['first'] : '';
|
| 339 |
$middle = !empty( $field_submit['middle'] ) ? $field_submit['middle'] : '';
|
| 340 |
$last = !empty( $field_submit['last'] ) ? $field_submit['last'] : '';
|
| 341 |
+
|
| 342 |
if ( is_array( $field_submit ) ) {
|
| 343 |
$value = array( $first, $middle, $last );
|
| 344 |
$value = array_filter( $value );
|
includes/fields/class-number.php
CHANGED
|
@@ -122,6 +122,11 @@ class WPForms_Field_Number extends WPForms_Field {
|
|
| 122 |
|
| 123 |
$form_id = $form_data['id'];
|
| 124 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 125 |
// Basic required check - If field is marked as required, check for entry data
|
| 126 |
if ( !empty( $form_data['fields'][$field_id]['required'] ) && empty( $field_submit ) && '0' != $field_submit ) {
|
| 127 |
wpforms()->process->errors[$form_id][$field_id] = apply_filters( 'wpforms_required_label', __('This field is required', 'wpforms' ) );
|
|
@@ -132,5 +137,28 @@ class WPForms_Field_Number extends WPForms_Field {
|
|
| 132 |
wpforms()->process->errors[$form_id][$field_id] = apply_filters( 'wpforms_valid_number_label', __('Please enter a valid number.', 'wpforms' ) );
|
| 133 |
}
|
| 134 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 135 |
}
|
| 136 |
new WPForms_Field_Number;
|
| 122 |
|
| 123 |
$form_id = $form_data['id'];
|
| 124 |
|
| 125 |
+
// Some browsers allow other non-digit/decimal characters to be submitted
|
| 126 |
+
// with the num input, which then trips the is_numeric validation below.
|
| 127 |
+
// To get around this we remove all chars that are not expected.
|
| 128 |
+
$field_submit = preg_replace( '/[^0-9.]/', '', $field_submit );
|
| 129 |
+
|
| 130 |
// Basic required check - If field is marked as required, check for entry data
|
| 131 |
if ( !empty( $form_data['fields'][$field_id]['required'] ) && empty( $field_submit ) && '0' != $field_submit ) {
|
| 132 |
wpforms()->process->errors[$form_id][$field_id] = apply_filters( 'wpforms_required_label', __('This field is required', 'wpforms' ) );
|
| 137 |
wpforms()->process->errors[$form_id][$field_id] = apply_filters( 'wpforms_valid_number_label', __('Please enter a valid number.', 'wpforms' ) );
|
| 138 |
}
|
| 139 |
}
|
| 140 |
+
|
| 141 |
+
/**
|
| 142 |
+
* Formats and sanitizes field.
|
| 143 |
+
*
|
| 144 |
+
* @since 1.3.5
|
| 145 |
+
* @param int $field_id
|
| 146 |
+
* @param array $field_submit
|
| 147 |
+
* @param array $form_data
|
| 148 |
+
*/
|
| 149 |
+
public function format( $field_id, $field_submit, $form_data ) {
|
| 150 |
+
|
| 151 |
+
$name = !empty( $form_data['fields'][$field_id]['label'] ) ? sanitize_text_field( $form_data['fields'][$field_id]['label'] ) : '';
|
| 152 |
+
|
| 153 |
+
// Remove non-numerical characters
|
| 154 |
+
$value = preg_replace( '/[^0-9.]/', '', $field_submit );
|
| 155 |
+
|
| 156 |
+
wpforms()->process->fields[$field_id] = array(
|
| 157 |
+
'name' => $name,
|
| 158 |
+
'value' => $value,
|
| 159 |
+
'id' => absint( $field_id ),
|
| 160 |
+
'type' => $this->type,
|
| 161 |
+
);
|
| 162 |
+
}
|
| 163 |
}
|
| 164 |
new WPForms_Field_Number;
|
includes/fields/class-select.php
CHANGED
|
@@ -52,16 +52,16 @@ class WPForms_Field_Select extends WPForms_Field {
|
|
| 52 |
//--------------------------------------------------------------------//
|
| 53 |
// Basic field options
|
| 54 |
//--------------------------------------------------------------------//
|
| 55 |
-
|
| 56 |
// Options open markup
|
| 57 |
$this->field_option( 'basic-options', $field, array( 'markup' => 'open' ) );
|
| 58 |
-
|
| 59 |
// Label
|
| 60 |
$this->field_option( 'label', $field );
|
| 61 |
-
|
| 62 |
// Choices
|
| 63 |
-
$this->field_option( 'choices', $field );
|
| 64 |
-
|
| 65 |
// Description
|
| 66 |
$this->field_option( 'description', $field );
|
| 67 |
|
|
@@ -70,11 +70,11 @@ class WPForms_Field_Select extends WPForms_Field {
|
|
| 70 |
|
| 71 |
// Options close markup
|
| 72 |
$this->field_option( 'basic-options', $field, array( 'markup' => 'close' ) );
|
| 73 |
-
|
| 74 |
//--------------------------------------------------------------------//
|
| 75 |
// Advanced field options
|
| 76 |
//--------------------------------------------------------------------//
|
| 77 |
-
|
| 78 |
// Options open markup
|
| 79 |
$this->field_option( 'advanced-options', $field, array( 'markup' => 'open' ) );
|
| 80 |
|
|
@@ -123,22 +123,22 @@ class WPForms_Field_Select extends WPForms_Field {
|
|
| 123 |
|
| 124 |
// Field select element
|
| 125 |
echo '<select class="primary-input" disabled>';
|
| 126 |
-
|
| 127 |
// Optional placeholder
|
| 128 |
if ( !empty( $placeholder ) ) {
|
| 129 |
printf( '<option value="" class="placeholder">%s</option>', $placeholder );
|
| 130 |
}
|
| 131 |
|
| 132 |
-
// Check to see if this field is configured for Dynamic Choices,
|
| 133 |
// either auto populating from a post type or a taxonomy.
|
| 134 |
if ( 'post_type' == $dynamic && !empty( $field['dynamic_post_type'] ) ) {
|
| 135 |
-
|
| 136 |
// Post type dynamic populating
|
| 137 |
$source = $field['dynamic_post_type'];
|
| 138 |
-
$args = array(
|
| 139 |
-
'post_type' => $source,
|
| 140 |
-
'posts_per_page' => 1,
|
| 141 |
-
'orderby' => 'title',
|
| 142 |
'order' => 'ASC' ,
|
| 143 |
);
|
| 144 |
$posts = get_posts( apply_filters( 'wpforms_dynamic_choice_post_type_args', $args, $field, $this->form_id ) );
|
|
@@ -152,11 +152,11 @@ class WPForms_Field_Select extends WPForms_Field {
|
|
| 152 |
|
| 153 |
// Taxonomy dynamic populating
|
| 154 |
$source = $field['dynamic_taxonomy'];
|
| 155 |
-
$args = array(
|
| 156 |
-
'taxonomy' => $source,
|
| 157 |
-
'hide_empty' => false,
|
| 158 |
'number' => 1
|
| 159 |
-
);
|
| 160 |
$terms = get_terms( apply_filters( 'wpforms_dynamic_choice_taxonomy_args', $args, $field, $this->form_id ) );
|
| 161 |
$values = array();
|
| 162 |
|
|
@@ -169,7 +169,7 @@ class WPForms_Field_Select extends WPForms_Field {
|
|
| 169 |
if ( empty( $values ) ) {
|
| 170 |
$values = array( 'label' => __( '(empty)', 'wpforms' ) );
|
| 171 |
}
|
| 172 |
-
|
| 173 |
// Build the select options (even though user can only see 1st option)
|
| 174 |
foreach ( $values as $key => $value ) {
|
| 175 |
|
|
@@ -178,7 +178,7 @@ class WPForms_Field_Select extends WPForms_Field {
|
|
| 178 |
|
| 179 |
printf( '<option %s>%s</option>', $selected, $value['label'] );
|
| 180 |
}
|
| 181 |
-
|
| 182 |
echo '</select>';
|
| 183 |
|
| 184 |
// Description
|
|
@@ -230,26 +230,26 @@ class WPForms_Field_Select extends WPForms_Field {
|
|
| 230 |
|
| 231 |
// Optional placeholder
|
| 232 |
if ( !empty( $field_placeholder ) ) {
|
| 233 |
-
printf('<option value="" class="placeholder" disabled %s>%s</option>', selected( false, $has_default,
|
| 234 |
}
|
| 235 |
|
| 236 |
-
// Check to see if this field is configured for Dynamic Choices,
|
| 237 |
// either auto populating from a post type or a taxonomy.
|
| 238 |
if ( 'post_type' == $dynamic && !empty( $field['dynamic_post_type'] ) ) {
|
| 239 |
-
|
| 240 |
// Post type dynamic populating
|
| 241 |
$source = $field['dynamic_post_type'];
|
| 242 |
-
$args = array(
|
| 243 |
-
'post_type' => $source,
|
| 244 |
-
'posts_per_page' => -1,
|
| 245 |
-
'orderby' => 'title',
|
| 246 |
'order' => 'ASC' ,
|
| 247 |
);
|
| 248 |
$posts = get_posts( apply_filters( 'wpforms_dynamic_choice_post_type_args', $args, $field, $form_data['id'] ) );
|
| 249 |
$choices = array();
|
| 250 |
|
| 251 |
foreach ( $posts as $post ) {
|
| 252 |
-
$choices[] = array(
|
| 253 |
'value' => $post->ID,
|
| 254 |
'label' => $post->post_title
|
| 255 |
);
|
|
@@ -261,15 +261,15 @@ class WPForms_Field_Select extends WPForms_Field {
|
|
| 261 |
|
| 262 |
// Taxonomy dynamic populating
|
| 263 |
$source = $field['dynamic_taxonomy'];
|
| 264 |
-
$args = array(
|
| 265 |
-
'taxonomy' => $source,
|
| 266 |
-
'hide_empty' => false,
|
| 267 |
-
);
|
| 268 |
$terms = get_terms( apply_filters( 'wpforms_dynamic_choice_taxonomy_args', $args, $field, $form_data['id'] ) );
|
| 269 |
$choices = array();
|
| 270 |
-
|
| 271 |
foreach ( $terms as $term ) {
|
| 272 |
-
$choices[] = array(
|
| 273 |
'value' => $term->term_id,
|
| 274 |
'label' => $term->name
|
| 275 |
);
|
|
@@ -280,10 +280,10 @@ class WPForms_Field_Select extends WPForms_Field {
|
|
| 280 |
|
| 281 |
// Build the select options
|
| 282 |
foreach ( $choices as $key => $choice ) {
|
| 283 |
-
|
| 284 |
$selected = isset( $choice['default'] ) && empty( $field_placeholder ) ? '1' : '0' ;
|
| 285 |
$val = isset( $field['show_values'] ) ? esc_attr( $choice['value'] ) : esc_attr( $choice['label'] );
|
| 286 |
-
|
| 287 |
printf( '<option value="%s" %s>%s</option>', $val, selected( '1', $selected, false ), $choice['label'] );
|
| 288 |
}
|
| 289 |
|
|
@@ -337,7 +337,7 @@ class WPForms_Field_Select extends WPForms_Field {
|
|
| 337 |
if ( ! is_wp_error( $term ) && !empty( $term ) ) {
|
| 338 |
$data['value'] = esc_html( $term->name );
|
| 339 |
}
|
| 340 |
-
|
| 341 |
} else {
|
| 342 |
|
| 343 |
// Normal processing, dynamic population is off
|
|
@@ -345,7 +345,7 @@ class WPForms_Field_Select extends WPForms_Field {
|
|
| 345 |
// If show_values is true, that means values posted are the raw values
|
| 346 |
// and not the labels. So we need to get the label values.
|
| 347 |
if ( !empty( $field['show_values'] ) && '1' == $field['show_values'] ) {
|
| 348 |
-
|
| 349 |
foreach ( $field['choices'] as $choice ) {
|
| 350 |
if ( $choice['value'] === $field_submit ) {
|
| 351 |
$value = $choice['label'];
|
|
@@ -359,7 +359,7 @@ class WPForms_Field_Select extends WPForms_Field {
|
|
| 359 |
$data['value'] = $value_raw;
|
| 360 |
}
|
| 361 |
}
|
| 362 |
-
|
| 363 |
// Push field details to be saved
|
| 364 |
wpforms()->process->fields[$field_id] = $data;
|
| 365 |
}
|
| 52 |
//--------------------------------------------------------------------//
|
| 53 |
// Basic field options
|
| 54 |
//--------------------------------------------------------------------//
|
| 55 |
+
|
| 56 |
// Options open markup
|
| 57 |
$this->field_option( 'basic-options', $field, array( 'markup' => 'open' ) );
|
| 58 |
+
|
| 59 |
// Label
|
| 60 |
$this->field_option( 'label', $field );
|
| 61 |
+
|
| 62 |
// Choices
|
| 63 |
+
$this->field_option( 'choices', $field );
|
| 64 |
+
|
| 65 |
// Description
|
| 66 |
$this->field_option( 'description', $field );
|
| 67 |
|
| 70 |
|
| 71 |
// Options close markup
|
| 72 |
$this->field_option( 'basic-options', $field, array( 'markup' => 'close' ) );
|
| 73 |
+
|
| 74 |
//--------------------------------------------------------------------//
|
| 75 |
// Advanced field options
|
| 76 |
//--------------------------------------------------------------------//
|
| 77 |
+
|
| 78 |
// Options open markup
|
| 79 |
$this->field_option( 'advanced-options', $field, array( 'markup' => 'open' ) );
|
| 80 |
|
| 123 |
|
| 124 |
// Field select element
|
| 125 |
echo '<select class="primary-input" disabled>';
|
| 126 |
+
|
| 127 |
// Optional placeholder
|
| 128 |
if ( !empty( $placeholder ) ) {
|
| 129 |
printf( '<option value="" class="placeholder">%s</option>', $placeholder );
|
| 130 |
}
|
| 131 |
|
| 132 |
+
// Check to see if this field is configured for Dynamic Choices,
|
| 133 |
// either auto populating from a post type or a taxonomy.
|
| 134 |
if ( 'post_type' == $dynamic && !empty( $field['dynamic_post_type'] ) ) {
|
| 135 |
+
|
| 136 |
// Post type dynamic populating
|
| 137 |
$source = $field['dynamic_post_type'];
|
| 138 |
+
$args = array(
|
| 139 |
+
'post_type' => $source,
|
| 140 |
+
'posts_per_page' => 1,
|
| 141 |
+
'orderby' => 'title',
|
| 142 |
'order' => 'ASC' ,
|
| 143 |
);
|
| 144 |
$posts = get_posts( apply_filters( 'wpforms_dynamic_choice_post_type_args', $args, $field, $this->form_id ) );
|
| 152 |
|
| 153 |
// Taxonomy dynamic populating
|
| 154 |
$source = $field['dynamic_taxonomy'];
|
| 155 |
+
$args = array(
|
| 156 |
+
'taxonomy' => $source,
|
| 157 |
+
'hide_empty' => false,
|
| 158 |
'number' => 1
|
| 159 |
+
);
|
| 160 |
$terms = get_terms( apply_filters( 'wpforms_dynamic_choice_taxonomy_args', $args, $field, $this->form_id ) );
|
| 161 |
$values = array();
|
| 162 |
|
| 169 |
if ( empty( $values ) ) {
|
| 170 |
$values = array( 'label' => __( '(empty)', 'wpforms' ) );
|
| 171 |
}
|
| 172 |
+
|
| 173 |
// Build the select options (even though user can only see 1st option)
|
| 174 |
foreach ( $values as $key => $value ) {
|
| 175 |
|
| 178 |
|
| 179 |
printf( '<option %s>%s</option>', $selected, $value['label'] );
|
| 180 |
}
|
| 181 |
+
|
| 182 |
echo '</select>';
|
| 183 |
|
| 184 |
// Description
|
| 230 |
|
| 231 |
// Optional placeholder
|
| 232 |
if ( !empty( $field_placeholder ) ) {
|
| 233 |
+
printf('<option value="" class="placeholder" disabled %s>%s</option>', selected( false, $has_default, false ), $field_placeholder );
|
| 234 |
}
|
| 235 |
|
| 236 |
+
// Check to see if this field is configured for Dynamic Choices,
|
| 237 |
// either auto populating from a post type or a taxonomy.
|
| 238 |
if ( 'post_type' == $dynamic && !empty( $field['dynamic_post_type'] ) ) {
|
| 239 |
+
|
| 240 |
// Post type dynamic populating
|
| 241 |
$source = $field['dynamic_post_type'];
|
| 242 |
+
$args = array(
|
| 243 |
+
'post_type' => $source,
|
| 244 |
+
'posts_per_page' => -1,
|
| 245 |
+
'orderby' => 'title',
|
| 246 |
'order' => 'ASC' ,
|
| 247 |
);
|
| 248 |
$posts = get_posts( apply_filters( 'wpforms_dynamic_choice_post_type_args', $args, $field, $form_data['id'] ) );
|
| 249 |
$choices = array();
|
| 250 |
|
| 251 |
foreach ( $posts as $post ) {
|
| 252 |
+
$choices[] = array(
|
| 253 |
'value' => $post->ID,
|
| 254 |
'label' => $post->post_title
|
| 255 |
);
|
| 261 |
|
| 262 |
// Taxonomy dynamic populating
|
| 263 |
$source = $field['dynamic_taxonomy'];
|
| 264 |
+
$args = array(
|
| 265 |
+
'taxonomy' => $source,
|
| 266 |
+
'hide_empty' => false,
|
| 267 |
+
);
|
| 268 |
$terms = get_terms( apply_filters( 'wpforms_dynamic_choice_taxonomy_args', $args, $field, $form_data['id'] ) );
|
| 269 |
$choices = array();
|
| 270 |
+
|
| 271 |
foreach ( $terms as $term ) {
|
| 272 |
+
$choices[] = array(
|
| 273 |
'value' => $term->term_id,
|
| 274 |
'label' => $term->name
|
| 275 |
);
|
| 280 |
|
| 281 |
// Build the select options
|
| 282 |
foreach ( $choices as $key => $choice ) {
|
| 283 |
+
|
| 284 |
$selected = isset( $choice['default'] ) && empty( $field_placeholder ) ? '1' : '0' ;
|
| 285 |
$val = isset( $field['show_values'] ) ? esc_attr( $choice['value'] ) : esc_attr( $choice['label'] );
|
| 286 |
+
|
| 287 |
printf( '<option value="%s" %s>%s</option>', $val, selected( '1', $selected, false ), $choice['label'] );
|
| 288 |
}
|
| 289 |
|
| 337 |
if ( ! is_wp_error( $term ) && !empty( $term ) ) {
|
| 338 |
$data['value'] = esc_html( $term->name );
|
| 339 |
}
|
| 340 |
+
|
| 341 |
} else {
|
| 342 |
|
| 343 |
// Normal processing, dynamic population is off
|
| 345 |
// If show_values is true, that means values posted are the raw values
|
| 346 |
// and not the labels. So we need to get the label values.
|
| 347 |
if ( !empty( $field['show_values'] ) && '1' == $field['show_values'] ) {
|
| 348 |
+
|
| 349 |
foreach ( $field['choices'] as $choice ) {
|
| 350 |
if ( $choice['value'] === $field_submit ) {
|
| 351 |
$value = $choice['label'];
|
| 359 |
$data['value'] = $value_raw;
|
| 360 |
}
|
| 361 |
}
|
| 362 |
+
|
| 363 |
// Push field details to be saved
|
| 364 |
wpforms()->process->fields[$field_id] = $data;
|
| 365 |
}
|
languages/wpforms.pot
CHANGED
|
@@ -2,9 +2,9 @@
|
|
| 2 |
# This file is distributed under the same license as the WPForms package.
|
| 3 |
msgid ""
|
| 4 |
msgstr ""
|
| 5 |
-
"Project-Id-Version: WPForms 1.3.
|
| 6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wpforms\n"
|
| 7 |
-
"POT-Creation-Date: 2017-02-
|
| 8 |
"MIME-Version: 1.0\n"
|
| 9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
| 10 |
"Content-Transfer-Encoding: 8bit\n"
|
|
@@ -529,9 +529,9 @@ msgid ""
|
|
| 529 |
"a>?"
|
| 530 |
msgstr ""
|
| 531 |
|
| 532 |
-
#. #-#-#-#-# wpforms.pot (WPForms 1.3.
|
| 533 |
#. Plugin Name of the plugin/theme
|
| 534 |
-
#. #-#-#-#-# wpforms.pot (WPForms 1.3.
|
| 535 |
#. Author of the plugin/theme
|
| 536 |
#: includes/admin/class-menu.php:36 includes/admin/class-menu.php:37
|
| 537 |
#: includes/admin/class-menu.php:48 includes/integrations.php:34
|
|
@@ -774,7 +774,7 @@ msgid "WPForms Preview"
|
|
| 774 |
msgstr ""
|
| 775 |
|
| 776 |
#: includes/class-preview.php:261
|
| 777 |
-
msgid "This is a preview of your form. This page not publically accessible."
|
| 778 |
msgstr ""
|
| 779 |
|
| 780 |
#: includes/class-preview.php:263
|
|
@@ -3185,9 +3185,9 @@ msgstr ""
|
|
| 3185 |
msgid "Please deactivate WPForms Lite before activating WPForms"
|
| 3186 |
msgstr ""
|
| 3187 |
|
| 3188 |
-
#. #-#-#-#-# wpforms.pot (WPForms 1.3.
|
| 3189 |
#. Plugin URI of the plugin/theme
|
| 3190 |
-
#. #-#-#-#-# wpforms.pot (WPForms 1.3.
|
| 3191 |
#. Author URI of the plugin/theme
|
| 3192 |
msgid "https://wpforms.com"
|
| 3193 |
msgstr ""
|
| 2 |
# This file is distributed under the same license as the WPForms package.
|
| 3 |
msgid ""
|
| 4 |
msgstr ""
|
| 5 |
+
"Project-Id-Version: WPForms 1.3.4\n"
|
| 6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wpforms\n"
|
| 7 |
+
"POT-Creation-Date: 2017-02-09 18:10:00+00:00\n"
|
| 8 |
"MIME-Version: 1.0\n"
|
| 9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
| 10 |
"Content-Transfer-Encoding: 8bit\n"
|
| 529 |
"a>?"
|
| 530 |
msgstr ""
|
| 531 |
|
| 532 |
+
#. #-#-#-#-# wpforms.pot (WPForms 1.3.4) #-#-#-#-#
|
| 533 |
#. Plugin Name of the plugin/theme
|
| 534 |
+
#. #-#-#-#-# wpforms.pot (WPForms 1.3.4) #-#-#-#-#
|
| 535 |
#. Author of the plugin/theme
|
| 536 |
#: includes/admin/class-menu.php:36 includes/admin/class-menu.php:37
|
| 537 |
#: includes/admin/class-menu.php:48 includes/integrations.php:34
|
| 774 |
msgstr ""
|
| 775 |
|
| 776 |
#: includes/class-preview.php:261
|
| 777 |
+
msgid "This is a preview of your form. This page is not publically accessible."
|
| 778 |
msgstr ""
|
| 779 |
|
| 780 |
#: includes/class-preview.php:263
|
| 3185 |
msgid "Please deactivate WPForms Lite before activating WPForms"
|
| 3186 |
msgstr ""
|
| 3187 |
|
| 3188 |
+
#. #-#-#-#-# wpforms.pot (WPForms 1.3.4) #-#-#-#-#
|
| 3189 |
#. Plugin URI of the plugin/theme
|
| 3190 |
+
#. #-#-#-#-# wpforms.pot (WPForms 1.3.4) #-#-#-#-#
|
| 3191 |
#. Author URI of the plugin/theme
|
| 3192 |
msgid "https://wpforms.com"
|
| 3193 |
msgstr ""
|
lite/wpforms-lite.php
CHANGED
|
@@ -232,9 +232,15 @@ class WPForms_Lite {
|
|
| 232 |
return 'https://wpforms.com/lite-upgrade/?utm_source=WordPress&utm_medium=link&utm_campaign=liteplugin';
|
| 233 |
}
|
| 234 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 235 |
// If here, we have a ShareASale ID
|
| 236 |
// Return ShareASale URL with redirect.
|
| 237 |
-
return
|
| 238 |
}
|
| 239 |
|
| 240 |
/**
|
|
@@ -529,6 +535,11 @@ class WPForms_Lite {
|
|
| 529 |
'desc' => 'WPForms custom captcha addon allows you to define custom questions or use random math questions as captcha to combat spam form submissions.',
|
| 530 |
'icon' => 'addon-icon-captcha.png'
|
| 531 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 532 |
array(
|
| 533 |
'name' => 'Geolocation',
|
| 534 |
'desc' => 'WPForms geolocation addon allows you to collect and store your website visitors geolocation data along with their form submission.',
|
| 232 |
return 'https://wpforms.com/lite-upgrade/?utm_source=WordPress&utm_medium=link&utm_campaign=liteplugin';
|
| 233 |
}
|
| 234 |
|
| 235 |
+
// Whether we have a specific redirect URL to use
|
| 236 |
+
$shareasale_redirect = apply_filters( 'wpforms_shareasale_redirect', get_option( 'wpforms_shareasale_redirect', '' ) );
|
| 237 |
+
|
| 238 |
+
// Build final URL
|
| 239 |
+
$shareasale_url = sprintf( 'http://www.shareasale.com/r.cfm?B=837827&U=%s&M=64312&urllink=%s', $shareasale_id, $shareasale_redirect );
|
| 240 |
+
|
| 241 |
// If here, we have a ShareASale ID
|
| 242 |
// Return ShareASale URL with redirect.
|
| 243 |
+
return esc_url( $shareasale_url );
|
| 244 |
}
|
| 245 |
|
| 246 |
/**
|
| 535 |
'desc' => 'WPForms custom captcha addon allows you to define custom questions or use random math questions as captcha to combat spam form submissions.',
|
| 536 |
'icon' => 'addon-icon-captcha.png'
|
| 537 |
),
|
| 538 |
+
array(
|
| 539 |
+
'name' => 'Form Abandonment',
|
| 540 |
+
'desc' => 'Unlock more leads by capturing partial entries from your forms. Easily follow up with interested leads and turn them into loyal customers.',
|
| 541 |
+
'icon' => 'addon-icon-form-abandonment.png'
|
| 542 |
+
),
|
| 543 |
array(
|
| 544 |
'name' => 'Geolocation',
|
| 545 |
'desc' => 'WPForms geolocation addon allows you to collect and store your website visitors geolocation data along with their form submission.',
|
readme.txt
CHANGED
|
@@ -163,6 +163,16 @@ Syed Balkhi
|
|
| 163 |
|
| 164 |
== Changelog ==
|
| 165 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 166 |
= 1.3.3 =
|
| 167 |
- Added: Default value support in the email field
|
| 168 |
- Added: Various new hooks and filters for improved extendibility
|
| 163 |
|
| 164 |
== Changelog ==
|
| 165 |
|
| 166 |
+
= 1.3.5 =
|
| 167 |
+
- Fixed: Some browers allowing unexpected characters inside number input fields
|
| 168 |
+
- Fixed: Issue with Dropdown field placeholder text
|
| 169 |
+
- Fixed: Select few plugins loading conflicting scripts in form builder
|
| 170 |
+
|
| 171 |
+
= 1.3.4 =
|
| 172 |
+
- Added: reCAPTCHA improvements; reCAPTCHA now required if turned on
|
| 173 |
+
- Fixed: Date/Time Smart Tag not using WordPress time zone settings
|
| 174 |
+
- Fixed: Name field defaults not processing Smart Tags
|
| 175 |
+
|
| 176 |
= 1.3.3 =
|
| 177 |
- Added: Default value support in the email field
|
| 178 |
- Added: Various new hooks and filters for improved extendibility
|
wpforms.php
CHANGED
|
@@ -5,7 +5,7 @@
|
|
| 5 |
* Description: Beginner friendly WordPress contact form plugin. Use our Drag & Drop form builder to create your WordPress forms.
|
| 6 |
* Author: WPForms
|
| 7 |
* Author URI: https://wpforms.com
|
| 8 |
-
* Version: 1.3.
|
| 9 |
* Text Domain: wpforms
|
| 10 |
* Domain Path: languages
|
| 11 |
*
|
|
@@ -81,7 +81,7 @@ final class WPForms {
|
|
| 81 |
* @since 1.0.0
|
| 82 |
* @var sting
|
| 83 |
*/
|
| 84 |
-
public $version = '1.3.
|
| 85 |
|
| 86 |
/**
|
| 87 |
* The form data handler instance.
|
| 5 |
* Description: Beginner friendly WordPress contact form plugin. Use our Drag & Drop form builder to create your WordPress forms.
|
| 6 |
* Author: WPForms
|
| 7 |
* Author URI: https://wpforms.com
|
| 8 |
+
* Version: 1.3.5
|
| 9 |
* Text Domain: wpforms
|
| 10 |
* Domain Path: languages
|
| 11 |
*
|
| 81 |
* @since 1.0.0
|
| 82 |
* @var sting
|
| 83 |
*/
|
| 84 |
+
public $version = '1.3.5';
|
| 85 |
|
| 86 |
/**
|
| 87 |
* The form data handler instance.
|
