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

Version Description

  • Improvement: Tidied up horizontal and vertical alignment of notices.
  • Improvement: Forms are now sorted by "last modified" date for easier management.
  • Improvement: All instances of a form's navigational controls have been turned into buttons for better accessibility.
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.14.3
Comparing to
See all releases

Code changes from version 1.14.2 to 1.14.3

core/assets/css/admin.css CHANGED
@@ -193,9 +193,8 @@ p.happyforms-message-nav span.divider:last-child {
193
  border-left-color: #00a32a;
194
  }
195
 
196
- .post-type-happyform input[type="number"],
197
- .post-type-happyforms-message input[type="number"] {
198
- padding-right: 0;
199
  }
200
 
201
  /**
@@ -289,4 +288,4 @@ p.happyforms-message-nav span.divider:last-child {
289
  .happyforms-buttongroup input[type='radio']:checked + span:hover,
290
  .happyforms-buttongroup input:focus + span:hover {
291
  background: var(--wp-admin-theme-color-darker-10);
292
- }
193
  border-left-color: #00a32a;
194
  }
195
 
196
+ .post-type-happyform input[type="number"] {
197
+ width: 4em;
 
198
  }
199
 
200
  /**
288
  .happyforms-buttongroup input[type='radio']:checked + span:hover,
289
  .happyforms-buttongroup input:focus + span:hover {
290
  background: var(--wp-admin-theme-color-darker-10);
291
+ }
core/assets/css/layout.css CHANGED
@@ -7,8 +7,6 @@
7
  flex-flow: row wrap;
8
  align-items: flex-start;
9
  max-width: 100%;
10
- margin: 0 -1%;
11
- padding: 25px 0;
12
  }
13
 
14
  .happyforms-form--hide-title .happyforms-flex {
@@ -666,9 +664,7 @@ h3.happyforms-form__title {
666
  }
667
 
668
  /* notices */
669
- .happyforms-flex>.happyforms-message-notices {
670
- display: flex;
671
- width: 100%;
672
  padding: 0 1%;
673
  margin: 0 0 25px 0;
674
  }
@@ -824,6 +820,12 @@ form .happyforms-flex>.happyforms-message-notices .happyforms-message-notice a {
824
  padding: 0 0.5%;
825
  }
826
 
 
 
 
 
 
 
827
  .happyforms-form--part-outer-padding-narrow .happyforms-part__select-wrap {
828
  padding: 0;
829
  }
@@ -845,6 +847,11 @@ form .happyforms-flex>.happyforms-message-notices .happyforms-message-notice a {
845
  padding: 20px 3%;
846
  }
847
 
 
 
 
 
 
848
  .happyforms-form--part-outer-padding-wide .happyforms-part .happyforms-part-option {
849
  margin-right: 15px;
850
  }
7
  flex-flow: row wrap;
8
  align-items: flex-start;
9
  max-width: 100%;
 
 
10
  }
11
 
12
  .happyforms-form--hide-title .happyforms-flex {
664
  }
665
 
666
  /* notices */
667
+ .happyforms-message-notices {
 
 
668
  padding: 0 1%;
669
  margin: 0 0 25px 0;
670
  }
820
  padding: 0 0.5%;
821
  }
822
 
823
+
824
+ .happyforms-form--part-outer-padding-narrow .happyforms-message-notices {
825
+ padding-left: 0.5%;
826
+ padding-right: 0.5%;
827
+ }
828
+
829
  .happyforms-form--part-outer-padding-narrow .happyforms-part__select-wrap {
830
  padding: 0;
831
  }
847
  padding: 20px 3%;
848
  }
849
 
850
+ .happyforms-form--part-outer-padding-wide .happyforms-message-notices {
851
+ padding-left: 3%;
852
+ padding-right: 3%;
853
+ }
854
+
855
  .happyforms-form--part-outer-padding-wide .happyforms-part .happyforms-part-option {
856
  margin-right: 15px;
857
  }
core/classes/class-form-admin.php CHANGED
@@ -232,7 +232,7 @@ class HappyForms_Form_Admin {
232
 
233
  /**
234
  *
235
- * Filters the months list in the "All dates"
236
  * filter dropdown.
237
  *
238
  */
@@ -244,7 +244,7 @@ class HappyForms_Form_Admin {
244
  global $wpdb, $wp_locale;
245
 
246
  $extra_checks = "AND post_status != 'auto-draft'";
247
-
248
  if ( ! isset( $_GET['post_status'] ) ) {
249
  $extra_checks .= " AND post_status != 'trash' AND post_status != 'archive'";
250
  } elseif ( $_GET['post_status'] !== 'all' ) {
@@ -307,7 +307,7 @@ class HappyForms_Form_Admin {
307
  *
308
  */
309
  public function sortable_columns( $columns ) {
310
- $columns['modified'] = 'modified';
311
 
312
  return $columns;
313
  }
@@ -379,13 +379,20 @@ class HappyForms_Form_Admin {
379
  *
380
  */
381
  public function pre_get_posts( $query ) {
382
- if ( ! is_admin()
383
- || ! $query->is_main_query()
384
  || $query->get( 'post_type' ) !== happyforms_get_form_controller()->post_type ) {
385
 
386
  return;
387
  }
388
 
 
 
 
 
 
 
 
389
  $m = $query->get( 'm' );
390
 
391
  if ( empty( $m ) ) {
232
 
233
  /**
234
  *
235
+ * Filters the months list in the "All dates"
236
  * filter dropdown.
237
  *
238
  */
244
  global $wpdb, $wp_locale;
245
 
246
  $extra_checks = "AND post_status != 'auto-draft'";
247
+
248
  if ( ! isset( $_GET['post_status'] ) ) {
249
  $extra_checks .= " AND post_status != 'trash' AND post_status != 'archive'";
250
  } elseif ( $_GET['post_status'] !== 'all' ) {
307
  *
308
  */
309
  public function sortable_columns( $columns ) {
310
+ $columns['modified'] = array( 'modified', true );
311
 
312
  return $columns;
313
  }
379
  *
380
  */
381
  public function pre_get_posts( $query ) {
382
+ if ( ! is_admin()
383
+ || ! $query->is_main_query()
384
  || $query->get( 'post_type' ) !== happyforms_get_form_controller()->post_type ) {
385
 
386
  return;
387
  }
388
 
389
+ $orderby = $query->get( 'orderby' );
390
+
391
+ if ( empty( $orderby ) ) {
392
+ $query->set( 'orderby', 'modified' );
393
+ $query->set( 'order', 'desc' );
394
+ }
395
+
396
  $m = $query->get( 'm' );
397
 
398
  if ( empty( $m ) ) {
core/templates/parts/customize-checkbox.php CHANGED
@@ -139,7 +139,7 @@
139
  <input type="checkbox" name="is_default" value="1" <% if (is_default == 1) { %> checked="checked"<% } %>> <?php _e( 'Make this choice default', 'happyforms' ); ?>
140
  </label><br>
141
  <label>
142
- <input type="checkbox" name="limit_submissions" value="1" class="default-option-switch"<% if ( typeof limit_submissions !== 'undefined' && limit_submissions == 1) { %> checked="checked"<% } %>> <?php _e( 'Limit submissions', 'happyforms' ); ?>
143
  </label>
144
  <div class="happyforms-nested-settings happyforms-part-item-limit-submission-settings" <% if ( typeof limit_submissions === 'undefined' || limit_submissions != 1 ) { %>style="display: none;"<% } %>>
145
  <label>
@@ -147,7 +147,7 @@
147
  <input type="number" class="widefat" name="limit_submissions_amount" min="1" value="<%= typeof limit_submissions_amount !== 'undefined' ? limit_submissions_amount : '1' %>">
148
  </label>
149
  <label>
150
- <input type="checkbox" name="show_submissions_amount" class="" <% if ( typeof show_submissions_amount !== 'undefined' && show_submissions_amount == 1) { %> checked="checked"<% } %>> <?php _e( 'Show remaining submissions', 'happyforms' ); ?>
151
  </label><br>
152
  </div>
153
  </div>
139
  <input type="checkbox" name="is_default" value="1" <% if (is_default == 1) { %> checked="checked"<% } %>> <?php _e( 'Make this choice default', 'happyforms' ); ?>
140
  </label><br>
141
  <label>
142
+ <input type="checkbox" name="limit_submissions" value="1" class="default-option-switch"<% if ( typeof limit_submissions !== 'undefined' && limit_submissions == 1) { %> checked="checked"<% } %>> <?php _e( 'Limit how many times this choice can be submitted', 'happyforms' ); ?>
143
  </label>
144
  <div class="happyforms-nested-settings happyforms-part-item-limit-submission-settings" <% if ( typeof limit_submissions === 'undefined' || limit_submissions != 1 ) { %>style="display: none;"<% } %>>
145
  <label>
147
  <input type="number" class="widefat" name="limit_submissions_amount" min="1" value="<%= typeof limit_submissions_amount !== 'undefined' ? limit_submissions_amount : '1' %>">
148
  </label>
149
  <label>
150
+ <input type="checkbox" name="show_submissions_amount" class="" <% if ( typeof show_submissions_amount !== 'undefined' && show_submissions_amount == 1) { %> checked="checked"<% } %>> <?php _e( 'Show respondents how many remain', 'happyforms' ); ?>
151
  </label><br>
152
  </div>
153
  </div>
core/templates/parts/customize-radio.php CHANGED
@@ -124,7 +124,7 @@
124
  <input type="checkbox" name="is_default" value="1" class="default-option-switch"<% if (is_default == 1) { %> checked="checked"<% } %>> <?php _e( 'Make this choice default', 'happyforms' ); ?>
125
  </label><br>
126
  <label>
127
- <input type="checkbox" name="limit_submissions" value="1" class="default-option-switch"<% if ( typeof limit_submissions !== 'undefined' && limit_submissions == 1) { %> checked="checked"<% } %>> <?php _e( 'Limit submissions', 'happyforms' ); ?>
128
  </label>
129
  <div class="happyforms-nested-settings happyforms-part-item-limit-submission-settings" <% if ( typeof limit_submissions === 'undefined' || limit_submissions != 1 ) { %>style="display: none;"<% } %>>
130
  <label>
@@ -132,7 +132,7 @@
132
  <input type="number" class="widefat" name="limit_submissions_amount" min="1" value="<%= typeof limit_submissions_amount !== 'undefined' ? limit_submissions_amount : '1' %>">
133
  </label>
134
  <label>
135
- <input type="checkbox" name="show_submissions_amount" class="" <% if ( typeof show_submissions_amount !== 'undefined' && show_submissions_amount == 1) { %> checked="checked"<% } %>> <?php _e( 'Show remaining submissions', 'happyforms' ); ?>
136
  </label><br>
137
  </div>
138
  </div>
124
  <input type="checkbox" name="is_default" value="1" class="default-option-switch"<% if (is_default == 1) { %> checked="checked"<% } %>> <?php _e( 'Make this choice default', 'happyforms' ); ?>
125
  </label><br>
126
  <label>
127
+ <input type="checkbox" name="limit_submissions" value="1" class="default-option-switch"<% if ( typeof limit_submissions !== 'undefined' && limit_submissions == 1) { %> checked="checked"<% } %>> <?php _e( 'Limit how many times this choice can be submitted', 'happyforms' ); ?>
128
  </label>
129
  <div class="happyforms-nested-settings happyforms-part-item-limit-submission-settings" <% if ( typeof limit_submissions === 'undefined' || limit_submissions != 1 ) { %>style="display: none;"<% } %>>
130
  <label>
132
  <input type="number" class="widefat" name="limit_submissions_amount" min="1" value="<%= typeof limit_submissions_amount !== 'undefined' ? limit_submissions_amount : '1' %>">
133
  </label>
134
  <label>
135
+ <input type="checkbox" name="show_submissions_amount" class="" <% if ( typeof show_submissions_amount !== 'undefined' && show_submissions_amount == 1) { %> checked="checked"<% } %>> <?php _e( 'Show respondents how many remain', 'happyforms' ); ?>
136
  </label><br>
137
  </div>
138
  </div>
core/templates/parts/customize-select.php CHANGED
@@ -113,7 +113,7 @@
113
  <input type="checkbox" name="is_default" value="1" class="default-option-switch"<% if (is_default == 1) { %> checked="checked"<% } %>> <?php _e( 'Make this choice default', 'happyforms' ); ?>
114
  </label><br>
115
  <label>
116
- <input type="checkbox" name="limit_submissions" value="1" class="default-option-switch"<% if ( typeof limit_submissions !== 'undefined' && limit_submissions == 1) { %> checked="checked"<% } %>> <?php _e( 'Limit submissions', 'happyforms' ); ?>
117
  </label>
118
  <div class="happyforms-nested-settings happyforms-part-item-limit-submission-settings" <% if ( typeof limit_submissions === 'undefined' || limit_submissions != 1 ) { %>style="display: none;"<% } %>>
119
  <label>
@@ -121,7 +121,7 @@
121
  <input type="number" class="widefat" name="limit_submissions_amount" min="1" value="<%= typeof limit_submissions_amount !== 'undefined' ? limit_submissions_amount : '1' %>">
122
  </label>
123
  <label>
124
- <input type="checkbox" name="show_submissions_amount" class="" <% if ( typeof show_submissions_amount !== 'undefined' && show_submissions_amount == 1) { %> checked="checked"<% } %>> <?php _e( 'Show remaining submissions', 'happyforms' ); ?>
125
  </label><br>
126
  </div>
127
  </div>
113
  <input type="checkbox" name="is_default" value="1" class="default-option-switch"<% if (is_default == 1) { %> checked="checked"<% } %>> <?php _e( 'Make this choice default', 'happyforms' ); ?>
114
  </label><br>
115
  <label>
116
+ <input type="checkbox" name="limit_submissions" value="1" class="default-option-switch"<% if ( typeof limit_submissions !== 'undefined' && limit_submissions == 1) { %> checked="checked"<% } %>> <?php _e( 'Limit how many times this choice can be submitted', 'happyforms' ); ?>
117
  </label>
118
  <div class="happyforms-nested-settings happyforms-part-item-limit-submission-settings" <% if ( typeof limit_submissions === 'undefined' || limit_submissions != 1 ) { %>style="display: none;"<% } %>>
119
  <label>
121
  <input type="number" class="widefat" name="limit_submissions_amount" min="1" value="<%= typeof limit_submissions_amount !== 'undefined' ? limit_submissions_amount : '1' %>">
122
  </label>
123
  <label>
124
+ <input type="checkbox" name="show_submissions_amount" class="" <% if ( typeof show_submissions_amount !== 'undefined' && show_submissions_amount == 1) { %> checked="checked"<% } %>> <?php _e( 'Show respondents how many remain', 'happyforms' ); ?>
125
  </label><br>
126
  </div>
127
  </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.14.2
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.14.2' );
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.14.3
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.14.3' );
26
 
27
  if ( ! function_exists( 'happyforms_plugin_file' ) ):
28
  /**
inc/assets/js/customize.js CHANGED
@@ -1042,6 +1042,7 @@
1042
  'click .apply-all-check': 'applyOptionGlobally',
1043
  'click .happyforms-form-part-advanced-settings': 'onAdvancedSettingsClick',
1044
  'click .happyforms-form-part-logic': 'openUpgradeModal',
 
1045
  },
1046
 
1047
  initialize: function( options ) {
1042
  'click .apply-all-check': 'applyOptionGlobally',
1043
  'click .happyforms-form-part-advanced-settings': 'onAdvancedSettingsClick',
1044
  'click .happyforms-form-part-logic': 'openUpgradeModal',
1045
+ 'click .checkbox_dummy': 'openUpgradeModal',
1046
  },
1047
 
1048
  initialize: function( options ) {
inc/classes/class-answer-limiter-dummy.php ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class HappyForms_Answer_Limiter_Dummy {
3
+ private static $instance;
4
+
5
+ public static function instance() {
6
+ if ( is_null( self::$instance ) ) {
7
+ self::$instance = new self();
8
+ }
9
+
10
+ self::$instance->hook();
11
+
12
+ return self::$instance;
13
+ }
14
+
15
+ public function hook() {
16
+ $supported_parts = $this->get_supported_parts();
17
+
18
+ foreach ( $supported_parts as $part ) {
19
+ add_action( "happyforms_part_customize_{$part}_before_advanced_options", array( $this, 'add_part_controls' ) );
20
+ }
21
+
22
+ }
23
+
24
+ public function get_supported_parts() {
25
+ $parts = array(
26
+ 'single_line_text',
27
+ 'multi_line_text',
28
+ 'email',
29
+ 'number',
30
+ );
31
+
32
+ return $parts;
33
+ }
34
+
35
+ public function add_part_controls() {
36
+ ?>
37
+ <p class="checkbox_dummy">
38
+ <label>
39
+ <input type="checkbox"/> <?php _e( 'Limit how many times the same answer can be submitted', 'happyforms' ); ?>
40
+ </label>
41
+ <span class="members-only"><?php _e( 'Members Only', 'happyforms') ?></span>
42
+ </p>
43
+ <?php
44
+ }
45
+
46
+ }
47
+
48
+ if ( ! function_exists( 'happyforms_answer_limiter' ) ) :
49
+
50
+ function happyforms_answer_limiter_dummy() {
51
+ return HappyForms_Answer_Limiter_Dummy::instance();
52
+ }
53
+
54
+ endif;
55
+
56
+ happyforms_answer_limiter_dummy();
inc/classes/class-happyforms.php CHANGED
@@ -94,6 +94,8 @@ class HappyForms extends HappyForms_Core {
94
 
95
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-page-break-dummy.php' );
96
  $part_library->register_part( 'HappyForms_Part_PageBreak_Dummy', 30 );
 
 
97
  }
98
 
99
  public function add_dummy_setup_controls( $controls ) {
94
 
95
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-page-break-dummy.php' );
96
  $part_library->register_part( 'HappyForms_Part_PageBreak_Dummy', 30 );
97
+
98
+ require_once( happyforms_get_include_folder() . '/classes/class-answer-limiter-dummy.php' );
99
  }
100
 
101
  public function add_dummy_setup_controls( $controls ) {
inc/classes/class-message-controller.php CHANGED
@@ -291,6 +291,7 @@ class HappyForms_Message_Controller {
291
  $part_name = happyforms_get_part_name( $part, $form );
292
  $sanitized_value = $part_class->sanitize_value( $part, $form, $request );
293
  $validated_value = $part_class->validate_value( $sanitized_value, $part, $form );
 
294
 
295
  $session = happyforms_get_session();
296
  $session->add_value( $part_name, $sanitized_value );
291
  $part_name = happyforms_get_part_name( $part, $form );
292
  $sanitized_value = $part_class->sanitize_value( $part, $form, $request );
293
  $validated_value = $part_class->validate_value( $sanitized_value, $part, $form );
294
+ $validated_value = apply_filters( 'happyforms_validate_part_submission', $validated_value, $part, $form, $request );
295
 
296
  $session = happyforms_get_session();
297
  $session->add_value( $part_name, $sanitized_value );
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.14.2\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: 2022-02-28T14:27:07+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"
@@ -73,26 +73,26 @@ msgstr ""
73
  msgid "Last modified"
74
  msgstr ""
75
 
76
- #: core/classes/class-form-admin.php:443
77
  msgid "Edit"
78
  msgstr ""
79
 
80
- #: core/classes/class-form-admin.php:447
81
  #: core/templates/customize-form-item.php:27
82
  #: core/templates/customize-form-part-footer.php:4
83
  msgid "Duplicate"
84
  msgstr ""
85
 
86
- #: core/classes/class-form-admin.php:451
87
  #: inc/classes/class-message-admin.php:83
88
  msgid "Trash"
89
  msgstr ""
90
 
91
- #: core/classes/class-form-admin.php:495
92
  msgid "1 form duplicated."
93
  msgstr ""
94
 
95
- #: core/classes/class-form-admin.php:497
96
  msgid "Undo"
97
  msgstr ""
98
 
@@ -402,7 +402,7 @@ msgid "Submit form"
402
  msgstr ""
403
 
404
  #: core/classes/class-form-shuffle.php:43
405
- #: inc/classes/class-happyforms.php:110
406
  msgid "Shuffle order of fields"
407
  msgstr ""
408
 
@@ -828,8 +828,8 @@ msgstr ""
828
 
829
  #: core/classes/class-happyforms-core.php:209
830
  #: core/classes/class-happyforms-core.php:210
831
- #: inc/classes/class-message-controller.php:543
832
  #: inc/classes/class-message-controller.php:544
 
833
  msgid "Activity"
834
  msgstr ""
835
 
@@ -3001,6 +3001,7 @@ msgstr ""
3001
  #: core/templates/customize-controls/setup/upsell.php:2
3002
  #: core/templates/customize-form-part-footer.php:5
3003
  #: core/templates/customize-form-parts-drawer.php:37
 
3004
  #: inc/templates/customize-controls/checkbox_dummy.php:7
3005
  #: inc/templates/customize-controls/email-parts-list-dummy.php:2
3006
  msgid "Members Only"
@@ -3248,8 +3249,7 @@ msgstr ""
3248
  #: core/templates/parts/customize-checkbox.php:142
3249
  #: core/templates/parts/customize-radio.php:127
3250
  #: core/templates/parts/customize-select.php:116
3251
- #: inc/classes/class-happyforms.php:140
3252
- msgid "Limit submissions"
3253
  msgstr ""
3254
 
3255
  #: core/templates/parts/customize-checkbox.php:146
@@ -3261,7 +3261,7 @@ msgstr ""
3261
  #: core/templates/parts/customize-checkbox.php:150
3262
  #: core/templates/parts/customize-radio.php:135
3263
  #: core/templates/parts/customize-select.php:124
3264
- msgid "Show remaining submissions"
3265
  msgstr ""
3266
 
3267
  #: core/templates/parts/customize-checkbox.php:156
@@ -3329,51 +3329,59 @@ msgstr ""
3329
  msgid "Click to edit this part."
3330
  msgstr ""
3331
 
3332
- #: inc/classes/class-happyforms.php:102
 
 
 
 
3333
  msgid "Upgrade"
3334
  msgstr ""
3335
 
3336
- #: inc/classes/class-happyforms.php:116
3337
  msgid "Use reCAPTCHA"
3338
  msgstr ""
3339
 
3340
- #: inc/classes/class-happyforms.php:122
3341
  msgid "Save incomplete and abandoned submissions"
3342
  msgstr ""
3343
 
3344
- #: inc/classes/class-happyforms.php:128
3345
  msgid "Let respondents save a draft submission and come back to it later"
3346
  msgstr ""
3347
 
3348
- #: inc/classes/class-happyforms.php:134
3349
  msgid "Require respondents to review a submission before submitting"
3350
  msgstr ""
3351
 
3352
- #: inc/classes/class-happyforms.php:146
 
 
 
 
3353
  msgid "Delete permanently replies and attachments after set number of days"
3354
  msgstr ""
3355
 
3356
- #: inc/classes/class-happyforms.php:152
3357
  msgid "Capture user metadata (IP, language, platform, time and timezone)"
3358
  msgstr ""
3359
 
3360
- #: inc/classes/class-happyforms.php:158
3361
  msgid "Show an error message if field contains words in Disallowed Comment Keys"
3362
  msgstr ""
3363
 
3364
- #: inc/classes/class-happyforms.php:168
3365
  msgid "Include reply link"
3366
  msgstr ""
3367
 
3368
- #: inc/classes/class-happyforms.php:174
3369
  msgid "Include referral web address"
3370
  msgstr ""
3371
 
3372
- #: inc/classes/class-happyforms.php:180
3373
  msgid "To email address"
3374
  msgstr ""
3375
 
3376
- #: inc/classes/class-happyforms.php:186
3377
  msgid "Send abandonment email"
3378
  msgstr ""
3379
 
@@ -3409,12 +3417,12 @@ msgstr ""
3409
  msgid "Spam"
3410
  msgstr ""
3411
 
3412
- #: inc/classes/class-message-controller.php:545
3413
  #: inc/classes/class-message-controller.php:546
 
3414
  msgid "All Activity"
3415
  msgstr ""
3416
 
3417
- #: inc/classes/class-message-controller.php:547
3418
  msgid "No activity found."
3419
  msgstr ""
3420
 
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.14.3\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: 2022-03-21T07:58:03+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"
73
  msgid "Last modified"
74
  msgstr ""
75
 
76
+ #: core/classes/class-form-admin.php:450
77
  msgid "Edit"
78
  msgstr ""
79
 
80
+ #: core/classes/class-form-admin.php:454
81
  #: core/templates/customize-form-item.php:27
82
  #: core/templates/customize-form-part-footer.php:4
83
  msgid "Duplicate"
84
  msgstr ""
85
 
86
+ #: core/classes/class-form-admin.php:458
87
  #: inc/classes/class-message-admin.php:83
88
  msgid "Trash"
89
  msgstr ""
90
 
91
+ #: core/classes/class-form-admin.php:502
92
  msgid "1 form duplicated."
93
  msgstr ""
94
 
95
+ #: core/classes/class-form-admin.php:504
96
  msgid "Undo"
97
  msgstr ""
98
 
402
  msgstr ""
403
 
404
  #: core/classes/class-form-shuffle.php:43
405
+ #: inc/classes/class-happyforms.php:112
406
  msgid "Shuffle order of fields"
407
  msgstr ""
408
 
828
 
829
  #: core/classes/class-happyforms-core.php:209
830
  #: core/classes/class-happyforms-core.php:210
 
831
  #: inc/classes/class-message-controller.php:544
832
+ #: inc/classes/class-message-controller.php:545
833
  msgid "Activity"
834
  msgstr ""
835
 
3001
  #: core/templates/customize-controls/setup/upsell.php:2
3002
  #: core/templates/customize-form-part-footer.php:5
3003
  #: core/templates/customize-form-parts-drawer.php:37
3004
+ #: inc/classes/class-answer-limiter-dummy.php:41
3005
  #: inc/templates/customize-controls/checkbox_dummy.php:7
3006
  #: inc/templates/customize-controls/email-parts-list-dummy.php:2
3007
  msgid "Members Only"
3249
  #: core/templates/parts/customize-checkbox.php:142
3250
  #: core/templates/parts/customize-radio.php:127
3251
  #: core/templates/parts/customize-select.php:116
3252
+ msgid "Limit how many times this choice can be submitted"
 
3253
  msgstr ""
3254
 
3255
  #: core/templates/parts/customize-checkbox.php:146
3261
  #: core/templates/parts/customize-checkbox.php:150
3262
  #: core/templates/parts/customize-radio.php:135
3263
  #: core/templates/parts/customize-select.php:124
3264
+ msgid "Show respondents how many remain"
3265
  msgstr ""
3266
 
3267
  #: core/templates/parts/customize-checkbox.php:156
3329
  msgid "Click to edit this part."
3330
  msgstr ""
3331
 
3332
+ #: inc/classes/class-answer-limiter-dummy.php:39
3333
+ msgid "Limit how many times the same answer can be submitted"
3334
+ msgstr ""
3335
+
3336
+ #: inc/classes/class-happyforms.php:104
3337
  msgid "Upgrade"
3338
  msgstr ""
3339
 
3340
+ #: inc/classes/class-happyforms.php:118
3341
  msgid "Use reCAPTCHA"
3342
  msgstr ""
3343
 
3344
+ #: inc/classes/class-happyforms.php:124
3345
  msgid "Save incomplete and abandoned submissions"
3346
  msgstr ""
3347
 
3348
+ #: inc/classes/class-happyforms.php:130
3349
  msgid "Let respondents save a draft submission and come back to it later"
3350
  msgstr ""
3351
 
3352
+ #: inc/classes/class-happyforms.php:136
3353
  msgid "Require respondents to review a submission before submitting"
3354
  msgstr ""
3355
 
3356
+ #: inc/classes/class-happyforms.php:142
3357
+ msgid "Limit submissions"
3358
+ msgstr ""
3359
+
3360
+ #: inc/classes/class-happyforms.php:148
3361
  msgid "Delete permanently replies and attachments after set number of days"
3362
  msgstr ""
3363
 
3364
+ #: inc/classes/class-happyforms.php:154
3365
  msgid "Capture user metadata (IP, language, platform, time and timezone)"
3366
  msgstr ""
3367
 
3368
+ #: inc/classes/class-happyforms.php:160
3369
  msgid "Show an error message if field contains words in Disallowed Comment Keys"
3370
  msgstr ""
3371
 
3372
+ #: inc/classes/class-happyforms.php:170
3373
  msgid "Include reply link"
3374
  msgstr ""
3375
 
3376
+ #: inc/classes/class-happyforms.php:176
3377
  msgid "Include referral web address"
3378
  msgstr ""
3379
 
3380
+ #: inc/classes/class-happyforms.php:182
3381
  msgid "To email address"
3382
  msgstr ""
3383
 
3384
+ #: inc/classes/class-happyforms.php:188
3385
  msgid "Send abandonment email"
3386
  msgstr ""
3387
 
3417
  msgid "Spam"
3418
  msgstr ""
3419
 
 
3420
  #: inc/classes/class-message-controller.php:546
3421
+ #: inc/classes/class-message-controller.php:547
3422
  msgid "All Activity"
3423
  msgstr ""
3424
 
3425
+ #: inc/classes/class-message-controller.php:548
3426
  msgid "No activity found."
3427
  msgstr ""
3428
 
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.9.1
7
  Requires PHP: 7.0
8
- Stable tag: 1.14.2
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -151,6 +151,11 @@ Aw, honestly, the thought that you're writing about our contact form builder is
151
 
152
  == Changelog ==
153
 
 
 
 
 
 
154
  = 1.14.2 =
155
  * New feature: "Step Interval" control allows for fine tuning the incrementing interval of Number field.
156
  * Improvement: "Make this choice default" control now supports multiple choices in Checkbox field.
@@ -913,6 +918,9 @@ Aw, honestly, the thought that you're writing about our contact form builder is
913
 
914
  == Upgrade Notice ==
915
 
 
 
 
916
  = 1.14.2 =
917
  * New "Step Interval" control for Number field, miscellaneous improvements and bugfixes.
918
 
5
  Requires at least: 5.0
6
  Tested up to: 5.9.1
7
  Requires PHP: 7.0
8
+ Stable tag: 1.14.3
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
151
 
152
  == Changelog ==
153
 
154
+ = 1.14.3 =
155
+ * Improvement: Tidied up horizontal and vertical alignment of notices.
156
+ * Improvement: Forms are now sorted by "last modified" date for easier management.
157
+ * Improvement: All instances of a form's navigational controls have been turned into buttons for better accessibility.
158
+
159
  = 1.14.2 =
160
  * New feature: "Step Interval" control allows for fine tuning the incrementing interval of Number field.
161
  * Improvement: "Make this choice default" control now supports multiple choices in Checkbox field.
918
 
919
  == Upgrade Notice ==
920
 
921
+ = 1.14.3 =
922
+ * Forms screen usability improvements, better notice alignment, miscellaneous style improvements.
923
+
924
  = 1.14.2 =
925
  * New "Step Interval" control for Number field, miscellaneous improvements and bugfixes.
926