Form builder to get in touch with visitors, grow your email list and collect payments — Happyforms - Version 1.13.7

Version Description

  • New feature: Reset buttons allow for resetting fields to defaults in Messages tab.
  • Improvement: Redesigned the sample form to better showcase current features.
  • Improvement: Better forms actions notices.
  • Improvement: Simplified field naming.
  • Bugfix: Date-Time field validation was misbehaving.
  • Bugfix: Validation of fields with "Limit submissions" was misbehaving.
  • Bugfix: Deprecated controls were showing up in Style tab.
Download this release

Release Info

Developer happyforms
Plugin Icon 128x128 Form builder to get in touch with visitors, grow your email list and collect payments — Happyforms
Version 1.13.7
Comparing to
See all releases

Code changes from version 1.13.6 to 1.13.7

core/assets/css/customize.css CHANGED
@@ -640,6 +640,14 @@ a.happyforms-form-part-remove:hover {
640
  width: 100%;
641
  }
642
 
 
 
 
 
 
 
 
 
643
  /**
644
  *
645
  * Form build
@@ -1715,3 +1723,5 @@ p.label-field-group {
1715
  ul.happyforms-parts-list li[data-part-type="rich_text"] {
1716
  display: none;
1717
  }
 
 
640
  width: 100%;
641
  }
642
 
643
+ .customize-control-reset-wrap {
644
+ display: flex;
645
+ }
646
+
647
+ .customize-control-reset-wrap button.reset-default {
648
+ margin-left: 5px;
649
+ }
650
+
651
  /**
652
  *
653
  * Form build
1723
  ul.happyforms-parts-list li[data-part-type="rich_text"] {
1724
  display: none;
1725
  }
1726
+
1727
+
core/assets/svg/icons/signature.svg CHANGED
@@ -1 +1 @@
1
- <svg enable-background="new 0 0 24 24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m0 0h24v24h-24z" fill="none"/><path d="m4.6 6.9c.7-.7 1.4-1.4 1.7-1.2.5.2 0 1-.3 1.5-.2.4-2.9 3.9-2.9 6.3 0 1.3.5 2.3 1.3 3 .8.6 1.7.7 2.6.5 1.1-.3 1.9-1.4 3.1-2.8 1.2-1.5 2.8-3.4 4.1-3.4 1.6 0 1.6 1 1.8 1.8-3.8.6-5.4 3.7-5.4 5.4s1.4 3.1 3.2 3.1c1.6 0 4.3-1.3 4.7-6.1h2.5v-2.5h-2.5c-.1-1.6-1.1-4.2-4-4.2-2.2 0-4.2 1.9-4.9 2.8-.6.7-2.1 2.5-2.3 2.7-.3.2-.7.8-1.1.8s-.7-.8-.4-1.9 1.4-2.9 1.8-3.5c.8-1.2 1.3-2 1.3-3.3 0-2.2-1.6-2.9-2.5-2.9-1.3 0-2.4 1-2.7 1.2-.3.4-.6.7-.9 1zm9.3 11.6c-.3 0-.7-.3-.7-.7 0-.6.7-2.2 2.9-2.8-.4 2.8-1.5 3.5-2.2 3.5z" fill="#32373c"/></svg>
1
+ <svg enable-background="new 0 0 24 24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m.5 0h24v24h-24z" fill="none"/><path d="m1-.2h24v24h-24z" fill="none"/><path d="m18.9 10.4 1.1-1.1c.8-.8.8-2.1 0-2.8l-1.4-1.4c-.8-.8-1.9-.8-2.7 0l-1.1 1.1zm-4.2 1.4-7 7.2h-1.3v-1.4l7-7.2zm-1.3-4.2-8.9 9.2v4.2h4.1l8.9-9.2zm5.6 9.9c0 2.2-2.4 3.5-4.8 3.5-.6 0-1-.5-1-1s.4-1 1-1c1.4 0 2.9-.7 2.9-1.5 0-.5-.5-.9-1.2-1.2l1.4-1.5c1 .6 1.7 1.5 1.7 2.7zm-14-4.1c-1-.6-1.5-1.3-1.5-2.4 0-1.8 1.8-2.6 3.5-3.4 1-.4 2.3-1 2.3-1.6 0-.4-.8-1-1.9-1-1.3 0-1.8.6-1.8.6-.3.4-.9.5-1.3.1-.4-.3-.5-1-.2-1.4.1-.1 1.1-1.3 3.3-1.3s3.9 1.3 3.9 3c0 1.9-1.8 2.7-3.5 3.5-1 .4-2.3 1-2.3 1.5 0 .3.4.6 1.1.9z" fill="#32373c"/></svg>
core/classes/class-admin-notices.php CHANGED
@@ -99,6 +99,7 @@ class HappyForms_Admin_Notices {
99
  if ( current_user_can( $notice['cap'] )
100
  && in_array( $screen_id, $notice['screen'] )
101
  && ! in_array( $id, $dismissed ) ) {
 
102
  $notices[$id] = $notice;
103
  }
104
  }
@@ -111,8 +112,17 @@ class HappyForms_Admin_Notices {
111
  }
112
  }
113
 
 
 
114
  if ( ! empty( $user_notices ) ) {
115
- $transient_id = $this->get_user_transient_id();
 
 
 
 
 
 
 
116
  delete_transient( $transient_id );
117
  }
118
 
@@ -165,6 +175,10 @@ class HappyForms_Admin_Notices {
165
  $classes[] = 'is-dismissible';
166
  }
167
 
 
 
 
 
168
  $classes_string = implode( ' ', $classes );
169
  ?>
170
  <div id="happyforms-notice-<?php echo esc_attr( $id ); ?>" class="<?php echo esc_attr( $classes_string ); ?>"<?php echo $nonce; ?>>
99
  if ( current_user_can( $notice['cap'] )
100
  && in_array( $screen_id, $notice['screen'] )
101
  && ! in_array( $id, $dismissed ) ) {
102
+
103
  $notices[$id] = $notice;
104
  }
105
  }
112
  }
113
  }
114
 
115
+ $transient_id = $this->get_user_transient_id();
116
+
117
  if ( ! empty( $user_notices ) ) {
118
+ foreach( $notices as $id => $notice ) {
119
+ if ( isset( $user_notices[$id] ) ) {
120
+ unset( $user_notices[$id] );
121
+ }
122
+ }
123
+
124
+ set_transient( $transient_id, $user_notices );
125
+ } else {
126
  delete_transient( $transient_id );
127
  }
128
 
175
  $classes[] = 'is-dismissible';
176
  }
177
 
178
+ if ( $onetime ) {
179
+ $classes[] = 'one-time';
180
+ }
181
+
182
  $classes_string = implode( ' ', $classes );
183
  ?>
184
  <div id="happyforms-notice-<?php echo esc_attr( $id ); ?>" class="<?php echo esc_attr( $classes_string ); ?>"<?php echo $nonce; ?>>
core/classes/class-form-admin.php CHANGED
@@ -475,6 +475,7 @@ class HappyForms_Form_Admin {
475
  $notice,
476
  array(
477
  'type' => 'success',
 
478
  'screen' => array( 'edit-happyform' ),
479
  'one-time' => true,
480
  )
475
  $notice,
476
  array(
477
  'type' => 'success',
478
+ 'dismissible' => true,
479
  'screen' => array( 'edit-happyform' ),
480
  'one-time' => true,
481
  )
core/classes/class-form-messages.php CHANGED
@@ -21,8 +21,7 @@ class HappyForms_Form_Messages {
21
 
22
  public function hook() {
23
  add_filter( 'happyforms_meta_fields', array( $this, 'meta_fields' ) );
24
- add_action( 'happyforms_do_messages_control', array( happyforms_get_setup(), 'do_control' ), 10, 3 );
25
- add_filter( 'happyforms_validate_meta_data', array( $this, 'validate_validation_messages' ), 10 );
26
  }
27
 
28
  public function get_fields() {
@@ -213,19 +212,22 @@ class HappyForms_Form_Messages {
213
  return $fields;
214
  }
215
 
216
- public function validate_validation_messages( $meta_data ) {
217
- $meta_fields = wp_list_pluck( $this->get_fields(), 'default' );
218
-
219
- foreach( $meta_fields as $key => $value ) {
220
- if ( empty( $meta_data[ $key ] ) ) {
221
- if ( 'optional_part_label' == $key ) {
222
- continue;
223
- }
224
- $meta_data[ $key ] = $meta_fields[ $key ];
225
- }
 
 
 
 
 
226
  }
227
-
228
- return $meta_data;
229
  }
230
 
231
  public function define_validation_defaults(){
21
 
22
  public function hook() {
23
  add_filter( 'happyforms_meta_fields', array( $this, 'meta_fields' ) );
24
+ add_action( 'happyforms_do_messages_control', array( $this, 'do_control' ), 10, 3 );
 
25
  }
26
 
27
  public function get_fields() {
212
  return $fields;
213
  }
214
 
215
+ public function do_control( $control, $field, $index ) {
216
+ $type = $control['type'];
217
+
218
+ switch( $control['type'] ) {
219
+ case 'text':
220
+ $path = happyforms_get_core_folder() . '/templates/customize-controls/messages';
221
+ require( "{$path}/{$type}.php" );
222
+ break;
223
+ case 'group_start':
224
+ case 'group_end':
225
+ $path = happyforms_get_core_folder() . '/templates/customize-controls/setup';
226
+ require( "{$path}/{$type}.php" );
227
+ break;
228
+ default:
229
+ break;
230
  }
 
 
231
  }
232
 
233
  public function define_validation_defaults(){
core/classes/class-form-styles.php CHANGED
@@ -597,22 +597,22 @@ class HappyForms_Form_Styles {
597
  'field' => 'color_error_notice_text',
598
  ),
599
  1000 => array(
600
- 'type' => 'deprecated-divider',
601
  'label' => __( 'Title', 'happyforms' ),
602
  'id' => 'form_title',
603
  ),
604
  1100 => array(
605
- 'type' => 'buttonset',
606
  'label' => __( 'Display', 'happyforms' ),
607
  'field' => 'form_title',
608
  ),
609
  1200 => array(
610
- 'type' => 'buttonset',
611
  'label' => __( 'Alignment', 'happyforms' ),
612
  'field' => 'form_title_alignment'
613
  ),
614
  1300 => array(
615
- 'type' => 'range',
616
  'label' => __( 'Font size', 'happyforms' ),
617
  'field' => 'form_title_font_size',
618
  ),
@@ -1048,12 +1048,14 @@ class HappyForms_Form_Styles {
1048
 
1049
  require( "{$path}/{$true_type}.php" );
1050
  break;
1051
- case 'deprecated-divider':
 
 
1052
  if( 'happyforms-form--hide-title' == $form['form_title'] ) {
1053
  break;
1054
  }
1055
 
1056
- $true_type = str_replace( 'deprecated-', '', $type );
1057
 
1058
  require( "{$path}/{$true_type}.php" );
1059
  break;
597
  'field' => 'color_error_notice_text',
598
  ),
599
  1000 => array(
600
+ 'type' => 'form_title-divider',
601
  'label' => __( 'Title', 'happyforms' ),
602
  'id' => 'form_title',
603
  ),
604
  1100 => array(
605
+ 'type' => 'form_title-buttonset',
606
  'label' => __( 'Display', 'happyforms' ),
607
  'field' => 'form_title',
608
  ),
609
  1200 => array(
610
+ 'type' => 'form_title-buttonset',
611
  'label' => __( 'Alignment', 'happyforms' ),
612
  'field' => 'form_title_alignment'
613
  ),
614
  1300 => array(
615
+ 'type' => 'form_title-range',
616
  'label' => __( 'Font size', 'happyforms' ),
617
  'field' => 'form_title_font_size',
618
  ),
1048
 
1049
  require( "{$path}/{$true_type}.php" );
1050
  break;
1051
+ case 'form_title-divider':
1052
+ case 'form_title-buttonset':
1053
+ case 'form_title-range':
1054
  if( 'happyforms-form--hide-title' == $form['form_title'] ) {
1055
  break;
1056
  }
1057
 
1058
+ $true_type = str_replace( 'form_title-', '', $type );
1059
 
1060
  require( "{$path}/{$true_type}.php" );
1061
  break;
core/classes/class-wp-customize-form-manager.php CHANGED
@@ -155,46 +155,22 @@ class HappyForms_WP_Customize_Form_Manager {
155
  wp_send_json_error( $data );
156
  }
157
 
158
- $admin_notices = happyforms_get_admin_notices();
159
-
160
- $dismissed_notices = $admin_notices->get_dismissed_notices( get_current_user_id() );
161
- if ( ! in_array( 'happyforms_form_saved_guide', $dismissed_notices ) ) {
162
- $notice_name = 'happyforms_form_saved_guide';
163
- $notice_type = 'custom';
164
- $notice_dismissible = true;
165
- $notice_onetime = false;
166
- $notice_content = '';
167
- $notice_content .= '<h3>' . __( 'Form saved 👏', 'happyforms' ) . '</h3>';
168
- $notice_content .= '<p>' . __( 'There are two ways to embed your form. Here goes…', 'happyforms' ) . '</p>';
169
- $notice_content .= '<h4>' . __( 'Add your form to a page or post', 'happyforms' ) . '</h4>';
170
- $notice_content .= '<ol><li>' . __( 'In your Edit Post / Edit Page screen, click Add Block.', 'happyforms' ) . '</li><li>' . __( 'Select the Forms content block.', 'happyforms' ) . '</li><li>' . __( 'Select a form in the Form dropdown.', 'happyforms' ) . '</li><li> ' . __( 'That\'s it! You\'ll see a basic preview of your form in the editor.', 'happyforms' ) . '</li></ol>';
171
- $notice_content .= '<h4>' . __( 'Use your form in a widget area', 'happyforms' ) . '</h4>';
172
- $notice_content .= '<ol>';
173
- $notice_content .= '<li>' . sprintf( __( 'Head over to Appearance &rarr; <a href="%s">Widgets</a> screen.', 'happyforms' ), get_site_url( NULL, 'wp-admin/widgets.php' ) ) . '</li>';
174
- $notice_content .= '<li>' . __( 'Drag the Forms widget to your sidebar.', 'happyforms' ) .'</li>';
175
- $notice_content .= '<li>' . __( 'Select a form in the Form dropdown.', 'happyforms' ) . '</li>';
176
- $notice_content .= '<li>' . __( 'All done!', 'happyforms' ) . '</li>';
177
- $notice_content .= '</ol>';
178
- $notice_content .= '<p>' . sprintf( __( 'Still have questions? Head over to our <a href="%s" target="_blank">help guide</a>.', 'happyforms' ), 'https://happyforms.io/help-guide' ) . '</p>';
179
- } else {
180
- $notice_name = 'happyforms_form_saved';
181
- $notice_type = 'success';
182
- $notice_dismissible = false;
183
- $notice_onetime = true;
184
- $notice_content = sprintf(
185
- __( 'Form saved. You can add this form to any Page, Post and Widget area. Have questions? <a href="%s" target="_blank">Ask for help in our support forums</a>.', 'happyforms' ),
186
- 'https://wordpress.org/support/plugin/happyforms'
187
- );
188
- }
189
 
190
- $admin_notices->register(
191
- $notice_name,
192
  $notice_content,
193
  array(
194
- 'type' => $notice_type,
195
- 'dismissible' => $notice_dismissible,
196
  'screen' => array( 'edit-happyform' ),
197
- 'one-time' => $notice_onetime
198
  )
199
  );
200
 
155
  wp_send_json_error( $data );
156
  }
157
 
158
+ $is_new_form = ( isset( $form_data['ID'] ) && 0 === $form_data['ID'] );
159
+ $notice_id = $is_new_form ? 'happyforms_form_created' : 'happyforms_form_updated';
160
+ $notice_content = (
161
+ $is_new_form ?
162
+ __( 'Form saved. To publish, add a Forms block to any post, page or widget area.', 'happyforms' ) :
163
+ __( 'Form updated.', 'happyforms' )
164
+ );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
165
 
166
+ happyforms_get_admin_notices()->register(
167
+ $notice_id,
168
  $notice_content,
169
  array(
170
+ 'type' => 'success',
171
+ 'dismissible' => true,
172
  'screen' => array( 'edit-happyform' ),
173
+ 'one-time' => true,
174
  )
175
  );
176
 
core/classes/parts/class-part-checkbox.php CHANGED
@@ -7,7 +7,7 @@ class HappyForms_Part_Checkbox extends HappyForms_Form_Part {
7
  public static $parent;
8
 
9
  public function __construct() {
10
- $this->label = __( 'Multiple Choice', 'happyforms' );
11
  $this->description = __( 'For checkboxes allowing multiple selections.', 'happyforms' );
12
 
13
  $this->hook();
7
  public static $parent;
8
 
9
  public function __construct() {
10
+ $this->label = __( 'Checkbox', 'happyforms' );
11
  $this->description = __( 'For checkboxes allowing multiple selections.', 'happyforms' );
12
 
13
  $this->hook();
core/classes/parts/class-part-email.php CHANGED
@@ -5,7 +5,7 @@ class HappyForms_Part_Email extends HappyForms_Form_Part {
5
  public $type = 'email';
6
 
7
  public function __construct() {
8
- $this->label = __( 'Email Address', 'happyforms' );
9
  $this->description = __( 'For formatted email addresses. The \'@\' symbol is required.', 'happyforms' );
10
 
11
  add_filter( 'happyforms_part_value', array( $this, 'get_part_value' ), 10, 3 );
5
  public $type = 'email';
6
 
7
  public function __construct() {
8
+ $this->label = __( 'Email', 'happyforms' );
9
  $this->description = __( 'For formatted email addresses. The \'@\' symbol is required.', 'happyforms' );
10
 
11
  add_filter( 'happyforms_part_value', array( $this, 'get_part_value' ), 10, 3 );
core/classes/parts/class-part-multi-line-text.php CHANGED
@@ -5,7 +5,7 @@ class HappyForms_Part_MultiLineText extends HappyForms_Form_Part {
5
  public $type = 'multi_line_text';
6
 
7
  public function __construct() {
8
- $this->label = __( 'Long Answer', 'happyforms' );
9
  $this->description = __( 'For paragraph text fields.', 'happyforms' );
10
 
11
  add_filter( 'happyforms_part_value', array( $this, 'get_part_value' ), 10, 3 );
5
  public $type = 'multi_line_text';
6
 
7
  public function __construct() {
8
+ $this->label = __( 'Long Text', 'happyforms' );
9
  $this->description = __( 'For paragraph text fields.', 'happyforms' );
10
 
11
  add_filter( 'happyforms_part_value', array( $this, 'get_part_value' ), 10, 3 );
core/classes/parts/class-part-radio.php CHANGED
@@ -9,7 +9,7 @@ class HappyForms_Part_Radio extends HappyForms_Form_Part {
9
  public static $parent;
10
 
11
  public function __construct() {
12
- $this->label = __( 'Single Choice', 'happyforms' );
13
  $this->description = __( 'For radio buttons allowing one selection.', 'happyforms' );
14
 
15
  $this->hook();
9
  public static $parent;
10
 
11
  public function __construct() {
12
+ $this->label = __( 'Radio', 'happyforms' );
13
  $this->description = __( 'For radio buttons allowing one selection.', 'happyforms' );
14
 
15
  $this->hook();
core/classes/parts/class-part-single-line-text.php CHANGED
@@ -5,7 +5,7 @@ class HappyForms_Part_SingleLineText extends HappyForms_Form_Part {
5
  public $type = 'single_line_text';
6
 
7
  public function __construct() {
8
- $this->label = __( 'Short Answer', 'happyforms' );
9
  $this->description = __( 'For single line text fields.', 'happyforms' );
10
 
11
  add_filter( 'happyforms_part_value', array( $this, 'get_part_value' ), 10, 3 );
5
  public $type = 'single_line_text';
6
 
7
  public function __construct() {
8
+ $this->label = __( 'Text', 'happyforms' );
9
  $this->description = __( 'For single line text fields.', 'happyforms' );
10
 
11
  add_filter( 'happyforms_part_value', array( $this, 'get_part_value' ), 10, 3 );
core/helpers/helper-activation.php CHANGED
@@ -53,7 +53,10 @@ function happyforms_create_samples() {
53
 
54
  require_once( happyforms_get_core_folder() . '/classes/class-form-controller.php' );
55
  require_once( happyforms_get_core_folder() . '/classes/class-form-part-library.php' );
 
56
  require_once( happyforms_get_core_folder() . '/classes/class-form-styles.php' );
 
 
57
  require_once( happyforms_get_core_folder() . '/classes/class-session.php' );
58
  require_once( happyforms_get_core_folder() . '/helpers/helper-form-templates.php' );
59
  require_once( happyforms_get_core_folder() . '/helpers/helper-validation.php' );
@@ -68,66 +71,101 @@ function happyforms_create_samples() {
68
  $form_data = $form_controller->get( $form->ID );
69
 
70
  $form_data['post_title'] = __( 'Sample Form', 'happyforms' );
 
71
 
72
- // Prepare age dropdown options
73
- $age_options = array(
74
- array(
75
- 'label' => '20-24'
76
- ),
77
- array(
78
- 'label' => '25-29'
79
- ),
80
- array(
81
- 'label' => '30-34'
82
- ),
83
- array(
84
- 'label' => '35-39'
85
- ),
86
  array(
87
- 'label' => '40-44'
 
88
  ),
89
  array(
90
- 'label' => '45-49'
 
 
91
  ),
92
  array(
93
- 'label' => '50+'
 
 
 
94
  ),
95
- );
96
-
97
- $form_parts = array(
98
  array(
99
  'type' => 'single_line_text',
100
- 'label' => __( 'First name', 'happyforms' ),
101
  'width' => 'half',
102
  ),
103
  array(
104
- 'type' => 'single_line_text',
105
- 'label' => __( 'Last name', 'happyforms' ),
106
  'width' => 'half',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  ),
108
  array(
109
- 'type' => 'checkbox',
110
- 'label' => __( 'What\'s your reason for contacting us?', 'happyforms' ),
 
 
 
 
 
111
  'options' => array(
112
  array(
113
- 'label' => __( 'Need technical help', 'happyforms' ),
114
  ),
115
  array(
116
- 'label' => __( 'Want to suggest a feature', 'happyforms' ),
117
  ),
118
  array(
119
- 'label' => __( 'Asking about my account', 'happyforms' ),
 
 
 
120
  ),
121
  ),
122
  ),
123
  array(
124
- 'type' => 'select',
125
- 'label' => __( 'What\'s your age?', 'happyforms' ),
126
- 'options' => $age_options
127
  ),
128
  array(
129
- 'type' => 'multi_line_text',
130
- 'label' => __( 'Your message', 'happyforms' ),
 
 
 
 
 
 
131
  ),
132
  );
133
 
53
 
54
  require_once( happyforms_get_core_folder() . '/classes/class-form-controller.php' );
55
  require_once( happyforms_get_core_folder() . '/classes/class-form-part-library.php' );
56
+ require_once( happyforms_get_core_folder() . '/classes/class-form-setup.php' );
57
  require_once( happyforms_get_core_folder() . '/classes/class-form-styles.php' );
58
+ require_once( happyforms_get_core_folder() . '/classes/class-validation-messages.php' );
59
+ require_once( happyforms_get_core_folder() . '/classes/class-form-messages.php' );
60
  require_once( happyforms_get_core_folder() . '/classes/class-session.php' );
61
  require_once( happyforms_get_core_folder() . '/helpers/helper-form-templates.php' );
62
  require_once( happyforms_get_core_folder() . '/helpers/helper-validation.php' );
71
  $form_data = $form_controller->get( $form->ID );
72
 
73
  $form_data['post_title'] = __( 'Sample Form', 'happyforms' );
74
+ $form_data['submit_button_label'] = __( 'Get in touch', 'happyforms' );
75
 
76
+ $form_parts = array(
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  array(
78
+ 'type' => 'single_line_text',
79
+ 'label' => __( 'Full name', 'happyforms' ),
80
  ),
81
  array(
82
+ 'type' => 'email',
83
+ 'label' => __( 'Work email', 'happyforms' ),
84
+ 'width' => 'half',
85
  ),
86
  array(
87
+ 'type' => 'single_line_text',
88
+ 'label' => __( 'Job title', 'happyforms' ),
89
+ 'width' => 'half',
90
+ 'required' => false,
91
  ),
 
 
 
92
  array(
93
  'type' => 'single_line_text',
94
+ 'label' => __( 'Company name', 'happyforms' ),
95
  'width' => 'half',
96
  ),
97
  array(
98
+ 'type' => 'select',
99
+ 'label' => __( 'Industry', 'happyforms' ),
100
  'width' => 'half',
101
+ 'placeholder' => __( 'Choose from this list', 'happyforms' ),
102
+ 'options' => array(
103
+ array(
104
+ 'label' => __( 'Agriculture, animals and food', 'happyforms' ),
105
+ ),
106
+ array(
107
+ 'label' => __( 'Science, environment and construction', 'happyforms' ),
108
+ ),
109
+ array(
110
+ 'label' => __( 'Healthcare, wellbeing and sport', 'happyforms' ),
111
+ ),
112
+ array(
113
+ 'label' => __( 'Creative arts, fashion and media', 'happyforms' ),
114
+ ),
115
+ array(
116
+ 'label' => __( 'Government, law and education', 'happyforms' ),
117
+ ),
118
+ array(
119
+ 'label' => __( 'Accountancy, finance and insurance', 'happyforms' ),
120
+ ),
121
+ array(
122
+ 'label' => __( 'Business, sales and tourism', 'happyforms' ),
123
+ ),
124
+ array(
125
+ 'label' => __( 'Charity, social work and religion', 'happyforms' ),
126
+ ),
127
+ array(
128
+ 'label' => __( 'Something else', 'happyforms' ),
129
+ ),
130
+ ),
131
  ),
132
  array(
133
+ 'type' => 'multi_line_text',
134
+ 'label' => __( 'Tell us about your project', 'happyforms' ),
135
+ 'rows' => 10,
136
+ ),
137
+ array(
138
+ 'type' => 'radio',
139
+ 'label' => __( 'How might you describe your company size?', 'happyforms' ),
140
  'options' => array(
141
  array(
142
+ 'label' => __( 'It\'s just me', 'happyforms' ),
143
  ),
144
  array(
145
+ 'label' => __( 'There\'s two of us', 'happyforms' ),
146
  ),
147
  array(
148
+ 'label' => __( 'We\'re a small group', 'happyforms' ),
149
+ ),
150
+ array(
151
+ 'label' => __( 'We\'re a big team', 'happyforms' ),
152
  ),
153
  ),
154
  ),
155
  array(
156
+ 'type' => 'single_line_text',
157
+ 'label' => __( 'How did you hear about us?', 'happyforms' ),
158
+ 'required' => false,
159
  ),
160
  array(
161
+ 'type' => 'checkbox',
162
+ 'label' => __( 'Privacy compliance', 'happyforms' ),
163
+ 'label_placement' => 'hidden',
164
+ 'options' => array(
165
+ array(
166
+ 'label' => __( 'I agree to the storage and handling of my data by this website', 'happyforms' ),
167
+ ),
168
+ ),
169
  ),
170
  );
171
 
core/templates/customize-controls/messages/text.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="customize-control" id="customize-control-<?php echo $control['field']; ?>">
2
+ <?php do_action( "happyforms_setup_control_{$control['field']}_before", $control ); ?>
3
+
4
+ <label for="<?php echo $control['field']; ?>" class="customize-control-title"><?php echo $control['label']; ?> <?php if ( isset( $control['tooltip'] ) ) : ?><i class="dashicons dashicons-editor-help" aria-hidden="true" data-pointer><span><?php echo $control['tooltip']; ?></span></i><?php endif; ?></label>
5
+ <div class="customize-control-reset-wrap">
6
+ <input type="text" id="<?php echo $control['field']; ?>" value="<%= <?php echo $control['field']; ?> %>" data-attribute="<?php echo $control['field']; ?>" placeholder="<?php echo ( isset( $control['placeholder'] ) ) ? $control['placeholder'] : ''; ?>" data-pointer-target<?php echo ( isset( $control['autocomplete'] ) ) ? ' autocomplete="' . $control['autocomplete'] . '"' : ''; ?> />
7
+ <button type="button" class="reset-default button button-secondary" data-default="<?php echo $field['default']; ?>" data-reset="<?php echo $control['field']; ?>"><?php _e( 'Reset', 'happyforms' ); ?></button>
8
+ </div>
9
+
10
+ <?php do_action( "happyforms_setup_control_{$control['field']}_after", $control ); ?>
11
+ </div>
happyforms.php CHANGED
@@ -5,7 +5,7 @@
5
  * Plugin URI: https://happyforms.io
6
  * Description: We're changin' WordPress forms.
7
  * Author: Happyforms
8
- * Version: 1.13.6
9
  * Author URI: https://happyforms.io
10
  * Upgrade URI: https://happyforms.io/upgrade
11
  */
@@ -22,7 +22,7 @@ if ( defined( 'HAPPYFORMS_UPGRADE_VERSION' ) ) {
22
  /**
23
  * The current version of the plugin.
24
  */
25
- define( 'HAPPYFORMS_VERSION', '1.13.6' );
26
 
27
  if ( ! function_exists( 'happyforms_plugin_file' ) ):
28
  /**
5
  * Plugin URI: https://happyforms.io
6
  * Description: We're changin' WordPress forms.
7
  * Author: Happyforms
8
+ * Version: 1.13.7
9
  * Author URI: https://happyforms.io
10
  * Upgrade URI: https://happyforms.io/upgrade
11
  */
22
  /**
23
  * The current version of the plugin.
24
  */
25
+ define( 'HAPPYFORMS_VERSION', '1.13.7' );
26
 
27
  if ( ! function_exists( 'happyforms_plugin_file' ) ):
28
  /**
inc/assets/js/customize.js CHANGED
@@ -246,7 +246,7 @@
246
  },
247
 
248
  initilizeGlobalControls: function() {
249
- if( this.form.attributes.ID == 0 ) {
250
  this.form.attributes.part_title_label_placement = 'above';
251
  }
252
  },
@@ -1150,7 +1150,7 @@
1150
  $( '.happyforms-widget-content', this.$el ).slideToggle( 200, function() {
1151
  $el.toggleClass( 'happyforms-widget-expanded' );
1152
 
1153
- if( $el.hasClass( 'happyforms-widget-expanded' ) ) {
1154
  $( 'input[data-bind=label]', $el ).trigger( 'focus' );
1155
  }
1156
 
@@ -1735,8 +1735,9 @@
1735
  'change [data-attribute="characters_label_max"]': 'onCharLimitMaxCharsChange',
1736
  'keyup [data-attribute="no_results_label"]': 'onNoResultsLabelChange',
1737
  'change [data-attribute="no_results_label"]': 'onNoResultsLabelChange',
1738
-
1739
  'keyup [data-attribute="submissions_left_label"]': 'onSubmissionsLeftLabelChange',
 
 
1740
  } ),
1741
 
1742
  editors: {
@@ -1750,10 +1751,53 @@
1750
  this.setElement( this.template( this.model.toJSON() ) );
1751
  classes.views.FormSetup.prototype.render.apply( this, arguments );
1752
  this.applyMsgConditionClasses();
 
1753
 
1754
  return this;
1755
  },
1756
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1757
  applyMsgConditionClasses: function() {
1758
  var self = this;
1759
 
@@ -1809,7 +1853,7 @@
1809
  return false;
1810
  } );
1811
 
1812
- if( hasRequiredSelectionField ) {
1813
  self.$el.addClass( 'has-required-selection-fields' );
1814
  }
1815
 
@@ -1880,8 +1924,8 @@
1880
  var showMsgShortLabel = happyForms.form.get( 'parts' ).find( function( part ) {
1881
  var limit_mode = part.get( 'character_limit_mode' );
1882
 
1883
- if( limit_mode ) {
1884
- if( part.get( 'limit_input' ) == 1 && ( limit_mode == 'character_min' || limit_mode == 'word_min' ) &&
1885
  part.get( 'character_limit' ) > 1 ) {
1886
  return true;
1887
  }
@@ -2248,7 +2292,7 @@
2248
 
2249
  initUISliders: function() {
2250
  var self = this;
2251
- var $container = this.$el.find( '.happyforms-range-control, .happyforms-form-width-range-control' );
2252
 
2253
  $container.each( function( index, el ) {
2254
  var $this = $(this);
246
  },
247
 
248
  initilizeGlobalControls: function() {
249
+ if ( this.form.attributes.ID == 0 ) {
250
  this.form.attributes.part_title_label_placement = 'above';
251
  }
252
  },
1150
  $( '.happyforms-widget-content', this.$el ).slideToggle( 200, function() {
1151
  $el.toggleClass( 'happyforms-widget-expanded' );
1152
 
1153
+ if ( $el.hasClass( 'happyforms-widget-expanded' ) ) {
1154
  $( 'input[data-bind=label]', $el ).trigger( 'focus' );
1155
  }
1156
 
1735
  'change [data-attribute="characters_label_max"]': 'onCharLimitMaxCharsChange',
1736
  'keyup [data-attribute="no_results_label"]': 'onNoResultsLabelChange',
1737
  'change [data-attribute="no_results_label"]': 'onNoResultsLabelChange',
 
1738
  'keyup [data-attribute="submissions_left_label"]': 'onSubmissionsLeftLabelChange',
1739
+ 'click [data-reset]': 'resetDefaultMessage',
1740
+ 'keyup input[data-attribute]': 'onMessageValueChange',
1741
  } ),
1742
 
1743
  editors: {
1751
  this.setElement( this.template( this.model.toJSON() ) );
1752
  classes.views.FormSetup.prototype.render.apply( this, arguments );
1753
  this.applyMsgConditionClasses();
1754
+ this.initializeResetButtons();
1755
 
1756
  return this;
1757
  },
1758
 
1759
+ initializeResetButtons: function() {
1760
+ var self = this;
1761
+ var $el = this.$el;
1762
+
1763
+ $( '[data-reset]', $el ).each( function() {
1764
+ var attribute = $( this ).data( 'reset');
1765
+
1766
+ self.setResetDisabled( attribute );
1767
+ } );
1768
+ },
1769
+
1770
+ onMessageValueChange: function( e ) {
1771
+ var attribute = $( e.target ).data( 'attribute' );
1772
+
1773
+ this.setResetDisabled( attribute );
1774
+ },
1775
+
1776
+ setResetDisabled: function( attribute ) {
1777
+ var $el = this.$el;
1778
+ var $reset = $( '[data-reset="' + attribute + '"]', $el );
1779
+
1780
+ var val_current = $( '[data-attribute="' + attribute + '"]', $el ).val();
1781
+ var val_default = $reset.data( 'default' );
1782
+
1783
+ if ( val_current !== val_default ) {
1784
+ $reset.prop('disabled', false);
1785
+ } else {
1786
+ $reset.prop('disabled', true);
1787
+ }
1788
+ },
1789
+
1790
+ resetDefaultMessage: function( e ) {
1791
+ var $reset = $( e.target );
1792
+ var attribute = $reset.data( 'reset' );
1793
+ var $input = $( '[data-attribute="' + attribute + '"]' );
1794
+
1795
+ $input.val( $reset.data( 'default' ) );
1796
+ $reset.prop( 'disabled', true );
1797
+
1798
+ $input.trigger( 'keyup' );
1799
+ },
1800
+
1801
  applyMsgConditionClasses: function() {
1802
  var self = this;
1803
 
1853
  return false;
1854
  } );
1855
 
1856
+ if ( hasRequiredSelectionField ) {
1857
  self.$el.addClass( 'has-required-selection-fields' );
1858
  }
1859
 
1924
  var showMsgShortLabel = happyForms.form.get( 'parts' ).find( function( part ) {
1925
  var limit_mode = part.get( 'character_limit_mode' );
1926
 
1927
+ if ( limit_mode ) {
1928
+ if ( part.get( 'limit_input' ) == 1 && ( limit_mode == 'character_min' || limit_mode == 'word_min' ) &&
1929
  part.get( 'character_limit' ) > 1 ) {
1930
  return true;
1931
  }
2292
 
2293
  initUISliders: function() {
2294
  var self = this;
2295
+ var $container = this.$el.find( '.happyforms-range-control, .happyforms-form-width-range-control, .happyforms-form_title-range-control' );
2296
 
2297
  $container.each( function( index, el ) {
2298
  var $this = $(this);
inc/classes/class-happyforms.php CHANGED
@@ -71,9 +71,6 @@ class HappyForms extends HappyForms_Core {
71
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-likert-scale-dummy.php' );
72
  $part_library->register_part( 'HappyForms_Part_LikertScale_Dummy', 16 );
73
 
74
- require_once( happyforms_get_include_folder() . '/classes/parts/class-part-rich-text-dummy.php' );
75
- $part_library->register_part( 'HappyForms_Part_RichText_Dummy', 17 );
76
-
77
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-legal-dummy.php' );
78
  $part_library->register_part( 'HappyForms_Part_Legal_Dummy', 18 );
79
 
@@ -167,13 +164,7 @@ class HappyForms extends HappyForms_Core {
167
  $controls[3200] = array(
168
  'type' => 'checkbox_dummy',
169
  'dummy_id' => 'block_emails',
170
- 'label' => __( 'Block these email addresses, email domains and email partials', 'happyforms' ),
171
- );
172
-
173
- $controls[3201] = array(
174
- 'type' => 'checkbox_dummy',
175
- 'dummy_id' => 'block_language',
176
- 'label' => __( 'Block these words, phrases and letters', 'happyforms' ),
177
  );
178
 
179
  return $controls;
71
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-likert-scale-dummy.php' );
72
  $part_library->register_part( 'HappyForms_Part_LikertScale_Dummy', 16 );
73
 
 
 
 
74
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-legal-dummy.php' );
75
  $part_library->register_part( 'HappyForms_Part_Legal_Dummy', 18 );
76
 
164
  $controls[3200] = array(
165
  'type' => 'checkbox_dummy',
166
  'dummy_id' => 'block_emails',
167
+ 'label' => __( 'Show an error message if field contains words in Disallowed Comment Keys', 'happyforms' ),
 
 
 
 
 
 
168
  );
169
 
170
  return $controls;
inc/classes/parts/class-part-divider-dummy.php CHANGED
@@ -5,7 +5,7 @@ class HappyForms_Part_Divider_Dummy extends HappyForms_Form_Part {
5
  public $type = 'divider_dummy';
6
 
7
  public function __construct() {
8
- $this->label = __( 'Divider', 'happyforms' );
9
  $this->description = __( 'For adding a horizontal rule to visually separate fields.', 'happyforms' );
10
  }
11
 
5
  public $type = 'divider_dummy';
6
 
7
  public function __construct() {
8
+ $this->label = __( 'Separator', 'happyforms' );
9
  $this->description = __( 'For adding a horizontal rule to visually separate fields.', 'happyforms' );
10
  }
11
 
inc/classes/parts/class-part-layout-title-dummy.php CHANGED
@@ -5,7 +5,7 @@ class HappyForms_Part_LayoutTitle_Dummy extends HappyForms_Form_Part {
5
  public $type = 'layout_title_dummy';
6
 
7
  public function __construct() {
8
- $this->label = __( 'Title', 'happyforms' );
9
  $this->description = __( 'For adding titles to visually separate fields.', 'happyforms' );
10
  }
11
 
5
  public $type = 'layout_title_dummy';
6
 
7
  public function __construct() {
8
+ $this->label = __( 'Heading', 'happyforms' );
9
  $this->description = __( 'For adding titles to visually separate fields.', 'happyforms' );
10
  }
11
 
inc/classes/parts/class-part-likert-scale-dummy.php CHANGED
@@ -5,7 +5,7 @@ class HappyForms_Part_LikertScale_Dummy extends HappyForms_Form_Part {
5
  public $type = 'likert_scale_dummy';
6
 
7
  public function __construct() {
8
- $this->label = __( 'Number Scale', 'happyforms' );
9
  $this->description = __( 'For collecting ratings using a fixed numeric scale.', 'happyforms' );
10
  }
11
 
5
  public $type = 'likert_scale_dummy';
6
 
7
  public function __construct() {
8
+ $this->label = __( 'Scale', 'happyforms' );
9
  $this->description = __( 'For collecting ratings using a fixed numeric scale.', 'happyforms' );
10
  }
11
 
inc/classes/parts/class-part-phone-dummy.php CHANGED
@@ -5,7 +5,7 @@ class HappyForms_Part_Phone_Dummy extends HappyForms_Form_Part {
5
  public $type = 'phone_dummy';
6
 
7
  public function __construct() {
8
- $this->label = __( 'Phone Number', 'happyforms' );
9
  $this->description = __( 'For phone numbers. Includes country specific formatting.', 'happyforms' );
10
  }
11
 
5
  public $type = 'phone_dummy';
6
 
7
  public function __construct() {
8
+ $this->label = __( 'Phone', 'happyforms' );
9
  $this->description = __( 'For phone numbers. Includes country specific formatting.', 'happyforms' );
10
  }
11
 
inc/classes/parts/class-part-placeholder-dummy.php CHANGED
@@ -5,7 +5,7 @@ class HappyForms_Part_Placeholder_Dummy extends HappyForms_Form_Part {
5
  public $type = 'placeholder_dummy';
6
 
7
  public function __construct() {
8
- $this->label = __( 'Placeholder', 'happyforms' );
9
  $this->description = __( 'For adding helper text, notes and formatted messages.', 'happyforms' );
10
  }
11
 
5
  public $type = 'placeholder_dummy';
6
 
7
  public function __construct() {
8
+ $this->label = __( 'Paragraph', 'happyforms' );
9
  $this->description = __( 'For adding helper text, notes and formatted messages.', 'happyforms' );
10
  }
11
 
inc/classes/parts/class-part-rank-order-dummy.php CHANGED
@@ -5,7 +5,7 @@ class HappyForms_Part_RankOrder_Dummy extends HappyForms_Form_Part {
5
  public $type = 'rank_order_dummy';
6
 
7
  public function __construct() {
8
- $this->label = __( 'Rank Order', 'happyforms' );
9
  $this->description = __( 'For collecting preferences between choices in numeric order.', 'happyforms' );
10
  }
11
 
5
  public $type = 'rank_order_dummy';
6
 
7
  public function __construct() {
8
+ $this->label = __( 'Rank', 'happyforms' );
9
  $this->description = __( 'For collecting preferences between choices in numeric order.', 'happyforms' );
10
  }
11
 
inc/classes/parts/class-part-rating-dummy.php CHANGED
@@ -5,7 +5,7 @@ class HappyForms_Part_Rating_Dummy extends HappyForms_Form_Part {
5
  public $type = 'rating_dummy';
6
 
7
  public function __construct() {
8
- $this->label = __( 'Star Rating', 'happyforms' );
9
  $this->description = __( 'For collecting opinions using stars.', 'happyforms' );
10
  }
11
 
5
  public $type = 'rating_dummy';
6
 
7
  public function __construct() {
8
+ $this->label = __( 'Rate', 'happyforms' );
9
  $this->description = __( 'For collecting opinions using stars.', 'happyforms' );
10
  }
11
 
inc/classes/parts/class-part-rich-text-dummy.php DELETED
@@ -1,12 +0,0 @@
1
- <?php
2
-
3
- class HappyForms_Part_RichText_Dummy extends HappyForms_Form_Part {
4
-
5
- public $type = 'rich_text_dummy';
6
-
7
- public function __construct() {
8
- $this->label = __( 'Text Editor', 'happyforms' );
9
- $this->description = __( 'For formatting text, code blocks, lists and more.', 'happyforms' );
10
- }
11
-
12
- }
 
 
 
 
 
 
 
 
 
 
 
 
inc/classes/parts/class-part-scale-dummy.php CHANGED
@@ -5,7 +5,7 @@ class HappyForms_Part_Scale_Dummy extends HappyForms_Form_Part {
5
  public $type = 'scale_dummy';
6
 
7
  public function __construct() {
8
- $this->label = __( 'Slider Scale', 'happyforms' );
9
  $this->description = __( 'For collecting opinions using a horizontal slider.', 'happyforms' );
10
  }
11
 
5
  public $type = 'scale_dummy';
6
 
7
  public function __construct() {
8
+ $this->label = __( 'Slider', 'happyforms' );
9
  $this->description = __( 'For collecting opinions using a horizontal slider.', 'happyforms' );
10
  }
11
 
inc/classes/parts/class-part-table-dummy.php CHANGED
@@ -5,7 +5,7 @@ class HappyForms_Part_Table_Dummy extends HappyForms_Form_Part {
5
  public $type = 'table_dummy';
6
 
7
  public function __construct() {
8
- $this->label = __( 'Matrix Table', 'happyforms' );
9
  $this->description = __( 'For radios and checkboxes displaying in a grid of rows and columns.', 'happyforms' );
10
  }
11
 
5
  public $type = 'table_dummy';
6
 
7
  public function __construct() {
8
+ $this->label = __( 'Matrix', 'happyforms' );
9
  $this->description = __( 'For radios and checkboxes displaying in a grid of rows and columns.', 'happyforms' );
10
  }
11
 
inc/classes/parts/class-part-website-url-dummy.php CHANGED
@@ -5,7 +5,7 @@ class HappyForms_Part_WebsiteUrl_Dummy extends HappyForms_Form_Part {
5
  public $type = 'website_url_dummy';
6
 
7
  public function __construct() {
8
- $this->label = __( 'Web Address', 'happyforms' );
9
  $this->description = __( 'For formatted site URLs.', 'happyforms' );
10
  }
11
 
5
  public $type = 'website_url_dummy';
6
 
7
  public function __construct() {
8
+ $this->label = __( 'Website', 'happyforms' );
9
  $this->description = __( 'For formatted site URLs.', 'happyforms' );
10
  }
11
 
languages/happyforms.pot CHANGED
@@ -2,14 +2,14 @@
2
  # This file is distributed under the same license as the Happyforms (free) plugin.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Happyforms (free) 1.13.6\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/happyforms/\n"
7
  "Last-Translator: The Theme Foundry\n"
8
  "Language-Team: The Theme Foundry\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: 2021-10-20T14:07:05+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.4.0\n"
15
  "X-Domain: happyforms\n"
@@ -199,133 +199,133 @@ msgstr ""
199
  msgid "Include submitted values"
200
  msgstr ""
201
 
202
- #: core/classes/class-form-messages.php:32
203
  #: core/templates/parts/customize-multi-line-text.php:59
204
  msgid "Min words"
205
  msgstr ""
206
 
207
- #: core/classes/class-form-messages.php:36
208
  #: core/classes/parts/class-part-multi-line-text.php:76
209
  #: core/templates/parts/customize-multi-line-text.php:58
210
  msgid "Max words"
211
  msgstr ""
212
 
213
- #: core/classes/class-form-messages.php:40
214
  #: core/classes/parts/class-part-multi-line-text.php:72
215
  #: core/templates/parts/customize-multi-line-text.php:61
216
  msgid "Min characters"
217
  msgstr ""
218
 
219
- #: core/classes/class-form-messages.php:44
220
  #: core/templates/parts/customize-multi-line-text.php:60
221
  msgid "Max characters"
222
  msgstr ""
223
 
224
- #: core/classes/class-form-messages.php:48
225
  msgid "Nothing found"
226
  msgstr ""
227
 
228
- #: core/classes/class-form-messages.php:52
229
  msgid "Oops. This number isn't big enough."
230
  msgstr ""
231
 
232
- #: core/classes/class-form-messages.php:56
233
  msgid "Oops. This number is too big."
234
  msgstr ""
235
 
236
- #: core/classes/class-form-messages.php:60
237
  msgid "(optional)"
238
  msgstr ""
239
 
240
- #: core/classes/class-form-messages.php:68
241
  msgid "Oops. Too many choices are selected."
242
  msgstr ""
243
 
244
- #: core/classes/class-form-messages.php:72
245
  msgid "Oops. Not enough choices are selected."
246
  msgstr ""
247
 
248
- #: core/classes/class-form-messages.php:76
249
  msgid "Remaining"
250
  msgstr ""
251
 
252
- #: core/classes/class-form-messages.php:93
253
  msgid "Alerts"
254
  msgstr ""
255
 
256
- #: core/classes/class-form-messages.php:94
257
  msgid "These messages are shown to respondents at the very top of the form to communicate the form’s status."
258
  msgstr ""
259
 
260
- #: core/classes/class-form-messages.php:104
261
  msgid "Buttons"
262
  msgstr ""
263
 
264
- #: core/classes/class-form-messages.php:105
265
  msgid "The messages are shown to respondents as they fill out the form to help them trigger an action."
266
  msgstr ""
267
 
268
- #: core/classes/class-form-messages.php:114
269
  msgid "Errors"
270
  msgstr ""
271
 
272
- #: core/classes/class-form-messages.php:115
273
  msgid "These messages are shown to respondents when they try to submit their reply but one or more fields has a mistake."
274
  msgstr ""
275
 
276
- #: core/classes/class-form-messages.php:124
277
  msgid "Hints"
278
  msgstr ""
279
 
280
- #: core/classes/class-form-messages.php:125
281
  msgid "These messages are shown to respondents as they fill out the form to help them avoid mistakes."
282
  msgstr ""
283
 
284
- #: core/classes/class-form-messages.php:132
285
  msgid "Too many choices are selected"
286
  msgstr ""
287
 
288
- #: core/classes/class-form-messages.php:137
289
  msgid "Not enough choices are selected"
290
  msgstr ""
291
 
292
- #: core/classes/class-form-messages.php:144
293
  msgid "Number too small"
294
  msgstr ""
295
 
296
- #: core/classes/class-form-messages.php:149
297
  msgid "Number too big"
298
  msgstr ""
299
 
300
- #: core/classes/class-form-messages.php:154
301
  msgid "Search couldn't find anything"
302
  msgstr ""
303
 
304
- #: core/classes/class-form-messages.php:159
305
  msgid "Minimum characters"
306
  msgstr ""
307
 
308
- #: core/classes/class-form-messages.php:164
309
  msgid "Maximum characters"
310
  msgstr ""
311
 
312
- #: core/classes/class-form-messages.php:169
313
  msgid "Minimum words"
314
  msgstr ""
315
 
316
- #: core/classes/class-form-messages.php:174
317
  msgid "Maximum words"
318
  msgstr ""
319
 
320
- #: core/classes/class-form-messages.php:179
321
  msgid "Question is optional"
322
  msgstr ""
323
 
324
- #: core/classes/class-form-messages.php:184
325
  msgid "Question is required"
326
  msgstr ""
327
 
328
- #: core/classes/class-form-messages.php:189
329
  msgid "Remaining submissions"
330
  msgstr ""
331
 
@@ -394,7 +394,7 @@ msgid "Submit form"
394
  msgstr ""
395
 
396
  #: core/classes/class-form-shuffle.php:43
397
- #: inc/classes/class-happyforms.php:122
398
  msgid "Randomize fields to prevent bias"
399
  msgstr ""
400
 
@@ -601,7 +601,6 @@ msgid "Error message text"
601
  msgstr ""
602
 
603
  #: core/classes/class-form-styles.php:601
604
- #: inc/classes/parts/class-part-layout-title-dummy.php:8
605
  #: inc/classes/parts/class-part-title-dummy.php:8
606
  msgid "Title"
607
  msgstr ""
@@ -730,7 +729,6 @@ msgstr ""
730
  #: core/templates/parts/customize-number.php:20
731
  #: core/templates/parts/customize-select.php:20
732
  #: core/templates/parts/customize-single-line-text.php:20
733
- #: inc/classes/parts/class-part-placeholder-dummy.php:8
734
  msgid "Placeholder"
735
  msgstr ""
736
 
@@ -755,6 +753,7 @@ msgstr ""
755
 
756
  #: core/classes/class-form-styles.php:766
757
  #: core/classes/class-form-styles.php:916
 
758
  msgid "Text"
759
  msgstr ""
760
 
@@ -914,61 +913,16 @@ msgstr ""
914
  msgid "Oops. This answer isn't long enough."
915
  msgstr ""
916
 
917
- #: core/classes/class-wp-customize-form-manager.php:167
918
- msgid "Form saved 👏"
919
- msgstr ""
920
-
921
- #: core/classes/class-wp-customize-form-manager.php:168
922
- msgid "There are two ways to embed your form. Here goes…"
923
- msgstr ""
924
-
925
- #: core/classes/class-wp-customize-form-manager.php:169
926
- msgid "Add your form to a page or post"
927
- msgstr ""
928
-
929
- #: core/classes/class-wp-customize-form-manager.php:170
930
- msgid "In your Edit Post / Edit Page screen, click Add Block."
931
- msgstr ""
932
-
933
- #: core/classes/class-wp-customize-form-manager.php:170
934
- msgid "Select the Forms content block."
935
- msgstr ""
936
-
937
- #: core/classes/class-wp-customize-form-manager.php:170
938
- #: core/classes/class-wp-customize-form-manager.php:175
939
- msgid "Select a form in the Form dropdown."
940
- msgstr ""
941
-
942
- #: core/classes/class-wp-customize-form-manager.php:170
943
- msgid "That's it! You'll see a basic preview of your form in the editor."
944
  msgstr ""
945
 
946
- #: core/classes/class-wp-customize-form-manager.php:171
947
- msgid "Use your form in a widget area"
948
- msgstr ""
949
-
950
- #: core/classes/class-wp-customize-form-manager.php:173
951
- msgid "Head over to Appearance &rarr; <a href=\"%s\">Widgets</a> screen."
952
- msgstr ""
953
-
954
- #: core/classes/class-wp-customize-form-manager.php:174
955
- msgid "Drag the Forms widget to your sidebar."
956
- msgstr ""
957
-
958
- #: core/classes/class-wp-customize-form-manager.php:176
959
- msgid "All done!"
960
- msgstr ""
961
-
962
- #: core/classes/class-wp-customize-form-manager.php:178
963
- msgid "Still have questions? Head over to our <a href=\"%s\" target=\"_blank\">help guide</a>."
964
- msgstr ""
965
-
966
- #: core/classes/class-wp-customize-form-manager.php:185
967
- msgid "Form saved. You can add this form to any Page, Post and Widget area. Have questions? <a href=\"%s\" target=\"_blank\">Ask for help in our support forums</a>."
968
  msgstr ""
969
 
970
  #: core/classes/parts/class-part-checkbox.php:10
971
- msgid "Multiple Choice"
972
  msgstr ""
973
 
974
  #: core/classes/parts/class-part-checkbox.php:11
@@ -986,7 +940,8 @@ msgid "Other"
986
  msgstr ""
987
 
988
  #: core/classes/parts/class-part-email.php:8
989
- msgid "Email Address"
 
990
  msgstr ""
991
 
992
  #: core/classes/parts/class-part-email.php:9
@@ -994,7 +949,7 @@ msgid "For formatted email addresses. The '@' symbol is required."
994
  msgstr ""
995
 
996
  #: core/classes/parts/class-part-multi-line-text.php:8
997
- msgid "Long Answer"
998
  msgstr ""
999
 
1000
  #: core/classes/parts/class-part-multi-line-text.php:9
@@ -1010,7 +965,7 @@ msgid "For numeric fields."
1010
  msgstr ""
1011
 
1012
  #: core/classes/parts/class-part-radio.php:12
1013
- msgid "Single Choice"
1014
  msgstr ""
1015
 
1016
  #: core/classes/parts/class-part-radio.php:13
@@ -1030,48 +985,112 @@ msgstr ""
1030
  msgid "Choose"
1031
  msgstr ""
1032
 
1033
- #: core/classes/parts/class-part-single-line-text.php:8
1034
- msgid "Short Answer"
1035
- msgstr ""
1036
-
1037
  #: core/classes/parts/class-part-single-line-text.php:9
1038
  msgid "For single line text fields."
1039
  msgstr ""
1040
 
1041
- #: core/helpers/helper-activation.php:70
1042
  msgid "Sample Form"
1043
  msgstr ""
1044
 
1045
- #: core/helpers/helper-activation.php:100
1046
- msgid "First name"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1047
  msgstr ""
1048
 
1049
- #: core/helpers/helper-activation.php:105
1050
- msgid "Last name"
1051
  msgstr ""
1052
 
1053
  #: core/helpers/helper-activation.php:110
1054
- msgid "What's your reason for contacting us?"
1055
  msgstr ""
1056
 
1057
  #: core/helpers/helper-activation.php:113
1058
- msgid "Need technical help"
1059
  msgstr ""
1060
 
1061
  #: core/helpers/helper-activation.php:116
1062
- msgid "Want to suggest a feature"
1063
  msgstr ""
1064
 
1065
  #: core/helpers/helper-activation.php:119
1066
- msgid "Asking about my account"
 
 
 
 
1067
  msgstr ""
1068
 
1069
  #: core/helpers/helper-activation.php:125
1070
- msgid "What's your age?"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1071
  msgstr ""
1072
 
1073
- #: core/helpers/helper-activation.php:130
1074
- msgid "Your message"
 
 
 
 
 
 
 
 
1075
  msgstr ""
1076
 
1077
  #: core/helpers/helper-form-templates.php:67
@@ -2996,6 +3015,10 @@ msgstr ""
2996
  msgid "Insert"
2997
  msgstr ""
2998
 
 
 
 
 
2999
  #: core/templates/customize-controls/setup/alert-email-subject.php:4
3000
  msgid "part value is currently used as subject"
3001
  msgstr ""
@@ -3065,7 +3088,7 @@ msgid "Clear Results"
3065
  msgstr ""
3066
 
3067
  #: core/templates/customize-form-parts-drawer.php:38
3068
- #: inc/classes/class-happyforms.php:114
3069
  #: inc/templates/customize-controls/checkbox_dummy.php:7
3070
  #: inc/templates/customize-controls/email-parts-list-dummy.php:11
3071
  msgid "Upgrade"
@@ -3079,10 +3102,6 @@ msgstr ""
3079
  msgid "Build"
3080
  msgstr ""
3081
 
3082
- #: core/templates/customize-form-steps.php:5
3083
- msgid "Email"
3084
- msgstr ""
3085
-
3086
  #: core/templates/customize-form-steps.php:6
3087
  msgid "Messages"
3088
  msgstr ""
@@ -3262,7 +3281,7 @@ msgstr ""
3262
  #: core/templates/parts/customize-checkbox.php:141
3263
  #: core/templates/parts/customize-radio.php:115
3264
  #: core/templates/parts/customize-select.php:113
3265
- #: inc/classes/class-happyforms.php:152
3266
  msgid "Limit submissions"
3267
  msgstr ""
3268
 
@@ -3347,61 +3366,57 @@ msgstr ""
3347
  msgid "Click to edit this part."
3348
  msgstr ""
3349
 
3350
- #: inc/classes/class-happyforms.php:128
3351
  msgid "Use reCAPTCHA"
3352
  msgstr ""
3353
 
3354
- #: inc/classes/class-happyforms.php:134
3355
  msgid "Save incomplete and abandoned submissions"
3356
  msgstr ""
3357
 
3358
- #: inc/classes/class-happyforms.php:140
3359
  msgid "Let respondents save a draft submission and come back to it later"
3360
  msgstr ""
3361
 
3362
- #: inc/classes/class-happyforms.php:146
3363
  msgid "Require respondents to review a submission before submitting"
3364
  msgstr ""
3365
 
3366
- #: inc/classes/class-happyforms.php:158
3367
  msgid "Store replies and attachments in database"
3368
  msgstr ""
3369
 
3370
- #: inc/classes/class-happyforms.php:164
3371
  msgid "Capture user metadata (IP, language, platform, time and timezone)"
3372
  msgstr ""
3373
 
3374
- #: inc/classes/class-happyforms.php:170
3375
- msgid "Block these email addresses, email domains and email partials"
3376
- msgstr ""
3377
-
3378
- #: inc/classes/class-happyforms.php:176
3379
- msgid "Block these words, phrases and letters"
3380
  msgstr ""
3381
 
3382
- #: inc/classes/class-happyforms.php:186
3383
  msgid "Include reply link"
3384
  msgstr ""
3385
 
3386
- #: inc/classes/class-happyforms.php:192
3387
  msgid "Include referral web address"
3388
  msgstr ""
3389
 
3390
- #: inc/classes/class-happyforms.php:198
3391
- #: inc/classes/class-happyforms.php:210
3392
  msgid "Attach .pdf"
3393
  msgstr ""
3394
 
3395
- #: inc/classes/class-happyforms.php:204
3396
  msgid "To email address"
3397
  msgstr ""
3398
 
3399
- #: inc/classes/class-happyforms.php:216
3400
  msgid "Send abandonment email"
3401
  msgstr ""
3402
 
3403
- #: inc/classes/class-happyforms.php:427
3404
- #: inc/classes/class-happyforms.php:445
3405
  msgid "Build your own WordPress form with Happyforms"
3406
  msgstr ""
3407
 
@@ -3471,7 +3486,7 @@ msgid "For formatted day, month, year and or time fields."
3471
  msgstr ""
3472
 
3473
  #: inc/classes/parts/class-part-divider-dummy.php:8
3474
- msgid "Divider"
3475
  msgstr ""
3476
 
3477
  #: inc/classes/parts/class-part-divider-dummy.php:9
@@ -3482,6 +3497,10 @@ msgstr ""
3482
  msgid "Layout"
3483
  msgstr ""
3484
 
 
 
 
 
3485
  #: inc/classes/parts/class-part-layout-title-dummy.php:9
3486
  msgid "For adding titles to visually separate fields."
3487
  msgstr ""
@@ -3495,7 +3514,7 @@ msgid "For requiring permission before accepting submission."
3495
  msgstr ""
3496
 
3497
  #: inc/classes/parts/class-part-likert-scale-dummy.php:8
3498
- msgid "Number Scale"
3499
  msgstr ""
3500
 
3501
  #: inc/classes/parts/class-part-likert-scale-dummy.php:9
@@ -3535,13 +3554,17 @@ msgid "For processing payments using your favorite services."
3535
  msgstr ""
3536
 
3537
  #: inc/classes/parts/class-part-phone-dummy.php:8
3538
- msgid "Phone Number"
3539
  msgstr ""
3540
 
3541
  #: inc/classes/parts/class-part-phone-dummy.php:9
3542
  msgid "For phone numbers. Includes country specific formatting."
3543
  msgstr ""
3544
 
 
 
 
 
3545
  #: inc/classes/parts/class-part-placeholder-dummy.php:9
3546
  msgid "For adding helper text, notes and formatted messages."
3547
  msgstr ""
@@ -3555,7 +3578,7 @@ msgid "For collecting opinions and showing published results in a bar chart."
3555
  msgstr ""
3556
 
3557
  #: inc/classes/parts/class-part-rank-order-dummy.php:8
3558
- msgid "Rank Order"
3559
  msgstr ""
3560
 
3561
  #: inc/classes/parts/class-part-rank-order-dummy.php:9
@@ -3563,23 +3586,15 @@ msgid "For collecting preferences between choices in numeric order."
3563
  msgstr ""
3564
 
3565
  #: inc/classes/parts/class-part-rating-dummy.php:8
3566
- msgid "Star Rating"
3567
  msgstr ""
3568
 
3569
  #: inc/classes/parts/class-part-rating-dummy.php:9
3570
  msgid "For collecting opinions using stars."
3571
  msgstr ""
3572
 
3573
- #: inc/classes/parts/class-part-rich-text-dummy.php:8
3574
- msgid "Text Editor"
3575
- msgstr ""
3576
-
3577
- #: inc/classes/parts/class-part-rich-text-dummy.php:9
3578
- msgid "For formatting text, code blocks, lists and more."
3579
- msgstr ""
3580
-
3581
  #: inc/classes/parts/class-part-scale-dummy.php:8
3582
- msgid "Slider Scale"
3583
  msgstr ""
3584
 
3585
  #: inc/classes/parts/class-part-scale-dummy.php:9
@@ -3595,7 +3610,7 @@ msgid "For requiring a signature before accepting submission."
3595
  msgstr ""
3596
 
3597
  #: inc/classes/parts/class-part-table-dummy.php:8
3598
- msgid "Matrix Table"
3599
  msgstr ""
3600
 
3601
  #: inc/classes/parts/class-part-table-dummy.php:9
@@ -3607,7 +3622,7 @@ msgid "For displaying personal honorifics."
3607
  msgstr ""
3608
 
3609
  #: inc/classes/parts/class-part-website-url-dummy.php:8
3610
- msgid "Web Address"
3611
  msgstr ""
3612
 
3613
  #: inc/classes/parts/class-part-website-url-dummy.php:9
2
  # This file is distributed under the same license as the Happyforms (free) plugin.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Happyforms (free) 1.13.7\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/happyforms/\n"
7
  "Last-Translator: The Theme Foundry\n"
8
  "Language-Team: The Theme Foundry\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: 2021-11-09T14:36:52+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.4.0\n"
15
  "X-Domain: happyforms\n"
199
  msgid "Include submitted values"
200
  msgstr ""
201
 
202
+ #: core/classes/class-form-messages.php:31
203
  #: core/templates/parts/customize-multi-line-text.php:59
204
  msgid "Min words"
205
  msgstr ""
206
 
207
+ #: core/classes/class-form-messages.php:35
208
  #: core/classes/parts/class-part-multi-line-text.php:76
209
  #: core/templates/parts/customize-multi-line-text.php:58
210
  msgid "Max words"
211
  msgstr ""
212
 
213
+ #: core/classes/class-form-messages.php:39
214
  #: core/classes/parts/class-part-multi-line-text.php:72
215
  #: core/templates/parts/customize-multi-line-text.php:61
216
  msgid "Min characters"
217
  msgstr ""
218
 
219
+ #: core/classes/class-form-messages.php:43
220
  #: core/templates/parts/customize-multi-line-text.php:60
221
  msgid "Max characters"
222
  msgstr ""
223
 
224
+ #: core/classes/class-form-messages.php:47
225
  msgid "Nothing found"
226
  msgstr ""
227
 
228
+ #: core/classes/class-form-messages.php:51
229
  msgid "Oops. This number isn't big enough."
230
  msgstr ""
231
 
232
+ #: core/classes/class-form-messages.php:55
233
  msgid "Oops. This number is too big."
234
  msgstr ""
235
 
236
+ #: core/classes/class-form-messages.php:59
237
  msgid "(optional)"
238
  msgstr ""
239
 
240
+ #: core/classes/class-form-messages.php:67
241
  msgid "Oops. Too many choices are selected."
242
  msgstr ""
243
 
244
+ #: core/classes/class-form-messages.php:71
245
  msgid "Oops. Not enough choices are selected."
246
  msgstr ""
247
 
248
+ #: core/classes/class-form-messages.php:75
249
  msgid "Remaining"
250
  msgstr ""
251
 
252
+ #: core/classes/class-form-messages.php:92
253
  msgid "Alerts"
254
  msgstr ""
255
 
256
+ #: core/classes/class-form-messages.php:93
257
  msgid "These messages are shown to respondents at the very top of the form to communicate the form’s status."
258
  msgstr ""
259
 
260
+ #: core/classes/class-form-messages.php:103
261
  msgid "Buttons"
262
  msgstr ""
263
 
264
+ #: core/classes/class-form-messages.php:104
265
  msgid "The messages are shown to respondents as they fill out the form to help them trigger an action."
266
  msgstr ""
267
 
268
+ #: core/classes/class-form-messages.php:113
269
  msgid "Errors"
270
  msgstr ""
271
 
272
+ #: core/classes/class-form-messages.php:114
273
  msgid "These messages are shown to respondents when they try to submit their reply but one or more fields has a mistake."
274
  msgstr ""
275
 
276
+ #: core/classes/class-form-messages.php:123
277
  msgid "Hints"
278
  msgstr ""
279
 
280
+ #: core/classes/class-form-messages.php:124
281
  msgid "These messages are shown to respondents as they fill out the form to help them avoid mistakes."
282
  msgstr ""
283
 
284
+ #: core/classes/class-form-messages.php:131
285
  msgid "Too many choices are selected"
286
  msgstr ""
287
 
288
+ #: core/classes/class-form-messages.php:136
289
  msgid "Not enough choices are selected"
290
  msgstr ""
291
 
292
+ #: core/classes/class-form-messages.php:143
293
  msgid "Number too small"
294
  msgstr ""
295
 
296
+ #: core/classes/class-form-messages.php:148
297
  msgid "Number too big"
298
  msgstr ""
299
 
300
+ #: core/classes/class-form-messages.php:153
301
  msgid "Search couldn't find anything"
302
  msgstr ""
303
 
304
+ #: core/classes/class-form-messages.php:158
305
  msgid "Minimum characters"
306
  msgstr ""
307
 
308
+ #: core/classes/class-form-messages.php:163
309
  msgid "Maximum characters"
310
  msgstr ""
311
 
312
+ #: core/classes/class-form-messages.php:168
313
  msgid "Minimum words"
314
  msgstr ""
315
 
316
+ #: core/classes/class-form-messages.php:173
317
  msgid "Maximum words"
318
  msgstr ""
319
 
320
+ #: core/classes/class-form-messages.php:178
321
  msgid "Question is optional"
322
  msgstr ""
323
 
324
+ #: core/classes/class-form-messages.php:183
325
  msgid "Question is required"
326
  msgstr ""
327
 
328
+ #: core/classes/class-form-messages.php:188
329
  msgid "Remaining submissions"
330
  msgstr ""
331
 
394
  msgstr ""
395
 
396
  #: core/classes/class-form-shuffle.php:43
397
+ #: inc/classes/class-happyforms.php:119
398
  msgid "Randomize fields to prevent bias"
399
  msgstr ""
400
 
601
  msgstr ""
602
 
603
  #: core/classes/class-form-styles.php:601
 
604
  #: inc/classes/parts/class-part-title-dummy.php:8
605
  msgid "Title"
606
  msgstr ""
729
  #: core/templates/parts/customize-number.php:20
730
  #: core/templates/parts/customize-select.php:20
731
  #: core/templates/parts/customize-single-line-text.php:20
 
732
  msgid "Placeholder"
733
  msgstr ""
734
 
753
 
754
  #: core/classes/class-form-styles.php:766
755
  #: core/classes/class-form-styles.php:916
756
+ #: core/classes/parts/class-part-single-line-text.php:8
757
  msgid "Text"
758
  msgstr ""
759
 
913
  msgid "Oops. This answer isn't long enough."
914
  msgstr ""
915
 
916
+ #: core/classes/class-wp-customize-form-manager.php:162
917
+ msgid "Form saved. To publish, add a Forms block to any post, page or widget area."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
918
  msgstr ""
919
 
920
+ #: core/classes/class-wp-customize-form-manager.php:163
921
+ msgid "Form updated."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
922
  msgstr ""
923
 
924
  #: core/classes/parts/class-part-checkbox.php:10
925
+ msgid "Checkbox"
926
  msgstr ""
927
 
928
  #: core/classes/parts/class-part-checkbox.php:11
940
  msgstr ""
941
 
942
  #: core/classes/parts/class-part-email.php:8
943
+ #: core/templates/customize-form-steps.php:5
944
+ msgid "Email"
945
  msgstr ""
946
 
947
  #: core/classes/parts/class-part-email.php:9
949
  msgstr ""
950
 
951
  #: core/classes/parts/class-part-multi-line-text.php:8
952
+ msgid "Long Text"
953
  msgstr ""
954
 
955
  #: core/classes/parts/class-part-multi-line-text.php:9
965
  msgstr ""
966
 
967
  #: core/classes/parts/class-part-radio.php:12
968
+ msgid "Radio"
969
  msgstr ""
970
 
971
  #: core/classes/parts/class-part-radio.php:13
985
  msgid "Choose"
986
  msgstr ""
987
 
 
 
 
 
988
  #: core/classes/parts/class-part-single-line-text.php:9
989
  msgid "For single line text fields."
990
  msgstr ""
991
 
992
+ #: core/helpers/helper-activation.php:73
993
  msgid "Sample Form"
994
  msgstr ""
995
 
996
+ #: core/helpers/helper-activation.php:74
997
+ msgid "Get in touch"
998
+ msgstr ""
999
+
1000
+ #: core/helpers/helper-activation.php:79
1001
+ msgid "Full name"
1002
+ msgstr ""
1003
+
1004
+ #: core/helpers/helper-activation.php:83
1005
+ msgid "Work email"
1006
+ msgstr ""
1007
+
1008
+ #: core/helpers/helper-activation.php:88
1009
+ msgid "Job title"
1010
+ msgstr ""
1011
+
1012
+ #: core/helpers/helper-activation.php:94
1013
+ msgid "Company name"
1014
+ msgstr ""
1015
+
1016
+ #: core/helpers/helper-activation.php:99
1017
+ msgid "Industry"
1018
+ msgstr ""
1019
+
1020
+ #: core/helpers/helper-activation.php:101
1021
+ msgid "Choose from this list"
1022
+ msgstr ""
1023
+
1024
+ #: core/helpers/helper-activation.php:104
1025
+ msgid "Agriculture, animals and food"
1026
  msgstr ""
1027
 
1028
+ #: core/helpers/helper-activation.php:107
1029
+ msgid "Science, environment and construction"
1030
  msgstr ""
1031
 
1032
  #: core/helpers/helper-activation.php:110
1033
+ msgid "Healthcare, wellbeing and sport"
1034
  msgstr ""
1035
 
1036
  #: core/helpers/helper-activation.php:113
1037
+ msgid "Creative arts, fashion and media"
1038
  msgstr ""
1039
 
1040
  #: core/helpers/helper-activation.php:116
1041
+ msgid "Government, law and education"
1042
  msgstr ""
1043
 
1044
  #: core/helpers/helper-activation.php:119
1045
+ msgid "Accountancy, finance and insurance"
1046
+ msgstr ""
1047
+
1048
+ #: core/helpers/helper-activation.php:122
1049
+ msgid "Business, sales and tourism"
1050
  msgstr ""
1051
 
1052
  #: core/helpers/helper-activation.php:125
1053
+ msgid "Charity, social work and religion"
1054
+ msgstr ""
1055
+
1056
+ #: core/helpers/helper-activation.php:128
1057
+ msgid "Something else"
1058
+ msgstr ""
1059
+
1060
+ #: core/helpers/helper-activation.php:134
1061
+ msgid "Tell us about your project"
1062
+ msgstr ""
1063
+
1064
+ #: core/helpers/helper-activation.php:139
1065
+ msgid "How might you describe your company size?"
1066
+ msgstr ""
1067
+
1068
+ #: core/helpers/helper-activation.php:142
1069
+ msgid "It's just me"
1070
+ msgstr ""
1071
+
1072
+ #: core/helpers/helper-activation.php:145
1073
+ msgid "There's two of us"
1074
+ msgstr ""
1075
+
1076
+ #: core/helpers/helper-activation.php:148
1077
+ msgid "We're a small group"
1078
+ msgstr ""
1079
+
1080
+ #: core/helpers/helper-activation.php:151
1081
+ msgid "We're a big team"
1082
  msgstr ""
1083
 
1084
+ #: core/helpers/helper-activation.php:157
1085
+ msgid "How did you hear about us?"
1086
+ msgstr ""
1087
+
1088
+ #: core/helpers/helper-activation.php:162
1089
+ msgid "Privacy compliance"
1090
+ msgstr ""
1091
+
1092
+ #: core/helpers/helper-activation.php:166
1093
+ msgid "I agree to the storage and handling of my data by this website"
1094
  msgstr ""
1095
 
1096
  #: core/helpers/helper-form-templates.php:67
3015
  msgid "Insert"
3016
  msgstr ""
3017
 
3018
+ #: core/templates/customize-controls/messages/text.php:7
3019
+ msgid "Reset"
3020
+ msgstr ""
3021
+
3022
  #: core/templates/customize-controls/setup/alert-email-subject.php:4
3023
  msgid "part value is currently used as subject"
3024
  msgstr ""
3088
  msgstr ""
3089
 
3090
  #: core/templates/customize-form-parts-drawer.php:38
3091
+ #: inc/classes/class-happyforms.php:111
3092
  #: inc/templates/customize-controls/checkbox_dummy.php:7
3093
  #: inc/templates/customize-controls/email-parts-list-dummy.php:11
3094
  msgid "Upgrade"
3102
  msgid "Build"
3103
  msgstr ""
3104
 
 
 
 
 
3105
  #: core/templates/customize-form-steps.php:6
3106
  msgid "Messages"
3107
  msgstr ""
3281
  #: core/templates/parts/customize-checkbox.php:141
3282
  #: core/templates/parts/customize-radio.php:115
3283
  #: core/templates/parts/customize-select.php:113
3284
+ #: inc/classes/class-happyforms.php:149
3285
  msgid "Limit submissions"
3286
  msgstr ""
3287
 
3366
  msgid "Click to edit this part."
3367
  msgstr ""
3368
 
3369
+ #: inc/classes/class-happyforms.php:125
3370
  msgid "Use reCAPTCHA"
3371
  msgstr ""
3372
 
3373
+ #: inc/classes/class-happyforms.php:131
3374
  msgid "Save incomplete and abandoned submissions"
3375
  msgstr ""
3376
 
3377
+ #: inc/classes/class-happyforms.php:137
3378
  msgid "Let respondents save a draft submission and come back to it later"
3379
  msgstr ""
3380
 
3381
+ #: inc/classes/class-happyforms.php:143
3382
  msgid "Require respondents to review a submission before submitting"
3383
  msgstr ""
3384
 
3385
+ #: inc/classes/class-happyforms.php:155
3386
  msgid "Store replies and attachments in database"
3387
  msgstr ""
3388
 
3389
+ #: inc/classes/class-happyforms.php:161
3390
  msgid "Capture user metadata (IP, language, platform, time and timezone)"
3391
  msgstr ""
3392
 
3393
+ #: inc/classes/class-happyforms.php:167
3394
+ msgid "Show an error message if field contains words in Disallowed Comment Keys"
 
 
 
 
3395
  msgstr ""
3396
 
3397
+ #: inc/classes/class-happyforms.php:177
3398
  msgid "Include reply link"
3399
  msgstr ""
3400
 
3401
+ #: inc/classes/class-happyforms.php:183
3402
  msgid "Include referral web address"
3403
  msgstr ""
3404
 
3405
+ #: inc/classes/class-happyforms.php:189
3406
+ #: inc/classes/class-happyforms.php:201
3407
  msgid "Attach .pdf"
3408
  msgstr ""
3409
 
3410
+ #: inc/classes/class-happyforms.php:195
3411
  msgid "To email address"
3412
  msgstr ""
3413
 
3414
+ #: inc/classes/class-happyforms.php:207
3415
  msgid "Send abandonment email"
3416
  msgstr ""
3417
 
3418
+ #: inc/classes/class-happyforms.php:418
3419
+ #: inc/classes/class-happyforms.php:436
3420
  msgid "Build your own WordPress form with Happyforms"
3421
  msgstr ""
3422
 
3486
  msgstr ""
3487
 
3488
  #: inc/classes/parts/class-part-divider-dummy.php:8
3489
+ msgid "Separator"
3490
  msgstr ""
3491
 
3492
  #: inc/classes/parts/class-part-divider-dummy.php:9
3497
  msgid "Layout"
3498
  msgstr ""
3499
 
3500
+ #: inc/classes/parts/class-part-layout-title-dummy.php:8
3501
+ msgid "Heading"
3502
+ msgstr ""
3503
+
3504
  #: inc/classes/parts/class-part-layout-title-dummy.php:9
3505
  msgid "For adding titles to visually separate fields."
3506
  msgstr ""
3514
  msgstr ""
3515
 
3516
  #: inc/classes/parts/class-part-likert-scale-dummy.php:8
3517
+ msgid "Scale"
3518
  msgstr ""
3519
 
3520
  #: inc/classes/parts/class-part-likert-scale-dummy.php:9
3554
  msgstr ""
3555
 
3556
  #: inc/classes/parts/class-part-phone-dummy.php:8
3557
+ msgid "Phone"
3558
  msgstr ""
3559
 
3560
  #: inc/classes/parts/class-part-phone-dummy.php:9
3561
  msgid "For phone numbers. Includes country specific formatting."
3562
  msgstr ""
3563
 
3564
+ #: inc/classes/parts/class-part-placeholder-dummy.php:8
3565
+ msgid "Paragraph"
3566
+ msgstr ""
3567
+
3568
  #: inc/classes/parts/class-part-placeholder-dummy.php:9
3569
  msgid "For adding helper text, notes and formatted messages."
3570
  msgstr ""
3578
  msgstr ""
3579
 
3580
  #: inc/classes/parts/class-part-rank-order-dummy.php:8
3581
+ msgid "Rank"
3582
  msgstr ""
3583
 
3584
  #: inc/classes/parts/class-part-rank-order-dummy.php:9
3586
  msgstr ""
3587
 
3588
  #: inc/classes/parts/class-part-rating-dummy.php:8
3589
+ msgid "Rate"
3590
  msgstr ""
3591
 
3592
  #: inc/classes/parts/class-part-rating-dummy.php:9
3593
  msgid "For collecting opinions using stars."
3594
  msgstr ""
3595
 
 
 
 
 
 
 
 
 
3596
  #: inc/classes/parts/class-part-scale-dummy.php:8
3597
+ msgid "Slider"
3598
  msgstr ""
3599
 
3600
  #: inc/classes/parts/class-part-scale-dummy.php:9
3610
  msgstr ""
3611
 
3612
  #: inc/classes/parts/class-part-table-dummy.php:8
3613
+ msgid "Matrix"
3614
  msgstr ""
3615
 
3616
  #: inc/classes/parts/class-part-table-dummy.php:9
3622
  msgstr ""
3623
 
3624
  #: inc/classes/parts/class-part-website-url-dummy.php:8
3625
+ msgid "Website"
3626
  msgstr ""
3627
 
3628
  #: inc/classes/parts/class-part-website-url-dummy.php:9
readme.txt CHANGED
@@ -5,7 +5,7 @@ Tags: contact form, contact form plugin, forms, form builder, custom form, intak
5
  Requires at least: 5.0
6
  Tested up to: 5.8
7
  Requires PHP: 7.0
8
- Stable tag: 1.13.6
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -151,6 +151,15 @@ Aw, honestly, the thought that you're writing about our contact form builder is
151
 
152
  == Changelog ==
153
 
 
 
 
 
 
 
 
 
 
154
  = 1.13.6 =
155
  * Improvement: Legacy Forms widgets can now be transformed into blocks.
156
 
@@ -866,6 +875,9 @@ Aw, honestly, the thought that you're writing about our contact form builder is
866
 
867
  == Upgrade Notice ==
868
 
 
 
 
869
  = 1.13.6 =
870
  * Legacy widget block transforms.
871
 
5
  Requires at least: 5.0
6
  Tested up to: 5.8
7
  Requires PHP: 7.0
8
+ Stable tag: 1.13.7
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
151
 
152
  == Changelog ==
153
 
154
+ = 1.13.7 =
155
+ * New feature: Reset buttons allow for resetting fields to defaults in Messages tab.
156
+ * Improvement: Redesigned the sample form to better showcase current features.
157
+ * Improvement: Better forms actions notices.
158
+ * Improvement: Simplified field naming.
159
+ * Bugfix: Date-Time field validation was misbehaving.
160
+ * Bugfix: Validation of fields with "Limit submissions" was misbehaving.
161
+ * Bugfix: Deprecated controls were showing up in Style tab.
162
+
163
  = 1.13.6 =
164
  * Improvement: Legacy Forms widgets can now be transformed into blocks.
165
 
875
 
876
  == Upgrade Notice ==
877
 
878
+ = 1.13.7 =
879
+ * Messages tab field reset, better dashboard notices, miscellaneous improvements and bugfixes.
880
+
881
  = 1.13.6 =
882
  * Legacy widget block transforms.
883