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

Version Description

  • Removal: Long Text field "Rows" control has been removed.
  • Removal: "Add other choice" control has been deprecated.
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.12
Comparing to
See all releases

Code changes from version 1.13.11 to 1.13.12

core/assets/css/color.css CHANGED
@@ -492,38 +492,38 @@
492
  }
493
 
494
  /* notices */
495
- .happyforms-styles .happyforms-flex > .happyforms-message-notices .happyforms-message-notice {
496
  padding: 20px 15px;
497
  border-radius: 6px;
498
  background-color: transparent;
499
  color: #454545;
500
  }
501
 
502
- .happyforms-styles.happyforms-form--part-border-radius-square .happyforms-flex > .happyforms-message-notices .happyforms-message-notice {
503
  border-radius: 0;
504
  }
505
 
506
- .happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-flex > .happyforms-message-notices .happyforms-message-notice {
507
  padding: 20px 25px;
508
  border-radius: 25px;
509
  }
510
 
511
- .happyforms-styles .happyforms-flex > .happyforms-message-notices .success {
512
  background-color: #ebf9f0;
513
  background-color: var(--happyforms-color-success-notice);
514
  }
515
 
516
- .happyforms-styles .happyforms-flex > .happyforms-message-notices .success h2 {
517
  color: #1eb452 !important;
518
  color: var(--happyforms-color-success-notice-text) !important;
519
  }
520
 
521
- .happyforms-styles .happyforms-flex > .happyforms-message-notices .error {
522
  background-color: #ffeeea;
523
  background-color: var(--happyforms-color-error-notice);
524
  }
525
 
526
- .happyforms-styles .happyforms-flex > .happyforms-message-notices .error h2 {
527
  color: #f23000 !important;
528
  color: var(--happyforms-color-error-notice-text) !important;
529
  }
492
  }
493
 
494
  /* notices */
495
+ .happyforms-styles .happyforms-message-notices .happyforms-message-notice {
496
  padding: 20px 15px;
497
  border-radius: 6px;
498
  background-color: transparent;
499
  color: #454545;
500
  }
501
 
502
+ .happyforms-styles.happyforms-form--part-border-radius-square .happyforms-message-notices .happyforms-message-notice {
503
  border-radius: 0;
504
  }
505
 
506
+ .happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-message-notices .happyforms-message-notice {
507
  padding: 20px 25px;
508
  border-radius: 25px;
509
  }
510
 
511
+ .happyforms-styles .happyforms-message-notices .success {
512
  background-color: #ebf9f0;
513
  background-color: var(--happyforms-color-success-notice);
514
  }
515
 
516
+ .happyforms-styles .happyforms-message-notices .success h2 {
517
  color: #1eb452 !important;
518
  color: var(--happyforms-color-success-notice-text) !important;
519
  }
520
 
521
+ .happyforms-styles .happyforms-message-notices .error {
522
  background-color: #ffeeea;
523
  background-color: var(--happyforms-color-error-notice);
524
  }
525
 
526
+ .happyforms-styles .happyforms-message-notices .error h2 {
527
  color: #f23000 !important;
528
  color: var(--happyforms-color-error-notice-text) !important;
529
  }
core/assets/css/customize.css CHANGED
@@ -1077,10 +1077,10 @@ ul.happyforms-parts-list li .happyforms-parts-list-item-title {
1077
  position: relative;
1078
  }
1079
 
1080
-
1081
- ul.happyforms-parts-list li.happyforms-parts-list-item--dummy .happyforms-parts-list-item-title {
1082
- display: flex;
1083
- align-items: center;
1084
  }
1085
 
1086
  ul.happyforms-parts-list li.happyforms-parts-list-item--dummy .happyforms-parts-list-item-title a {
@@ -1238,6 +1238,11 @@ ul.happyforms-parts-list li[data-part-type="media_dummy"] .happyforms-parts-list
1238
  background-image: url(../svg/icons/media.svg);
1239
  }
1240
 
 
 
 
 
 
1241
  ul.happyforms-parts-list .happyforms-parts-list-item-title {
1242
  padding: 0 0 5px;
1243
  }
1077
  position: relative;
1078
  }
1079
 
1080
+ ul.happyforms-parts-list li.happyforms-parts-list-item--dummy .happyforms-parts-list-item-title h3,
1081
+ ul.happyforms-parts-list li.happyforms-parts-list-item--dummy .happyforms-parts-list-item-title span {
1082
+ display: inline-block;
1083
+ vertical-align: middle;
1084
  }
1085
 
1086
  ul.happyforms-parts-list li.happyforms-parts-list-item--dummy .happyforms-parts-list-item-title a {
1238
  background-image: url(../svg/icons/media.svg);
1239
  }
1240
 
1241
+ ul.happyforms-parts-list li[data-part-type="scrollable_terms_dummy"] .happyforms-parts-list-item-title:before {
1242
+ background-image: url(../svg/icons/scrollable-terms.svg);
1243
+ }
1244
+
1245
+
1246
  ul.happyforms-parts-list .happyforms-parts-list-item-title {
1247
  padding: 0 0 5px;
1248
  }
core/assets/js/parts/part-multi-line-text.js CHANGED
@@ -22,7 +22,6 @@
22
  this.listenTo( this.model, 'change:character_limit_mode', this.onCharacterLimitModeChange );
23
  this.listenTo( this.model, 'change:characters_label', this.onLimitWordsCharactersLabelChange );
24
  this.listenTo( this.model, 'change:words_label', this.onLimitWordsCharactersLabelChange );
25
- this.listenTo( this.model, 'change:rows', this.onRowsChange );
26
 
27
  this.listenTo( this.model, 'change:rich_text', this.onRichTextChange );
28
  },
@@ -150,30 +149,8 @@
150
 
151
  happyForms.previewSend( 'happyforms-form-part-refresh', data );
152
  } );
153
- },
154
-
155
- onRowsChange: function( model, value ) {
156
- if ( model.get( 'rich_text' ) ) {
157
- model.fetchHtml( function( response ) {
158
- var data = {
159
- id: model.get( 'id' ),
160
- html: response,
161
- };
162
-
163
- happyForms.previewSend( 'happyforms-form-part-refresh', data );
164
- } );
165
- } else {
166
- var data = {
167
- id: this.model.id,
168
- callback: 'onMultiLineTextRowsChange',
169
- options: {
170
- value: value
171
- }
172
- };
173
-
174
- happyForms.previewSend( 'happyforms-part-dom-update', data );
175
- }
176
  }
 
177
  } );
178
 
179
  happyForms.previewer = _.extend( happyForms.previewer, {
22
  this.listenTo( this.model, 'change:character_limit_mode', this.onCharacterLimitModeChange );
23
  this.listenTo( this.model, 'change:characters_label', this.onLimitWordsCharactersLabelChange );
24
  this.listenTo( this.model, 'change:words_label', this.onLimitWordsCharactersLabelChange );
 
25
 
26
  this.listenTo( this.model, 'change:rich_text', this.onRichTextChange );
27
  },
149
 
150
  happyForms.previewSend( 'happyforms-form-part-refresh', data );
151
  } );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
152
  }
153
+
154
  } );
155
 
156
  happyForms.previewer = _.extend( happyForms.previewer, {
core/assets/svg/icons/scrollable-terms.svg ADDED
@@ -0,0 +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 .1h24v24h-24z" fill="none"/><path d="m0 .1h24v24h-24z" fill="none"/><path d="m6.2 7.1h2.5l-3.5-3.5-3.4 3.5h2.5v10h-2.5l3.5 3.5 3.5-3.5h-2.6zm4-2v2h12v-2zm0 14h12v-2h-12zm0-6h12v-2h-12z" fill="#32373c"/></svg>
core/classes/parts/class-part-multi-line-text.php CHANGED
@@ -76,10 +76,6 @@ class HappyForms_Part_MultiLineText extends HappyForms_Form_Part {
76
  'default' => __( 'Max words', 'happyforms' ),
77
  'sanitize' => 'sanitize_text_field',
78
  ),
79
- 'rows' => array(
80
- 'default' => 5,
81
- 'sanitize' => 'intval',
82
- ),
83
  'width' => array(
84
  'default' => 'full',
85
  'sanitize' => 'sanitize_key'
76
  'default' => __( 'Max words', 'happyforms' ),
77
  'sanitize' => 'sanitize_text_field',
78
  ),
 
 
 
 
79
  'width' => array(
80
  'default' => 'full',
81
  'sanitize' => 'sanitize_key'
core/templates/parts/customize-checkbox.php CHANGED
@@ -65,21 +65,24 @@
65
  <input type="text" id="<%= instance.id %>_select_all_label" maxlength="30" class="widefat title" value="<%= instance.select_all_label %>" data-bind="select_all_label" />
66
  </p>
67
  </div>
68
- <p>
69
- <label>
70
- <input type="checkbox" class="checkbox" value="1" <% if ( instance.other_option ) { %>checked="checked"<% } %> data-bind="other_option" /> <?php _e( 'Add \'other\' choice', 'happyforms' ); ?>
71
- </label>
72
- </p>
73
- <div class="happyforms-nested-settings" data-trigger="other_option" style="display: <%= ( instance.other_option ) ? 'block' : 'none' %>">
74
- <p>
75
- <label for="<%= instance.id %>_other_option_label"><?php _e( '\'Other\' label', 'happyforms' ); ?></label>
76
- <input type="text" id="<%= instance.id %>_other_option_label" maxlength="30" class="widefat title" value="<%= instance.other_option_label %>" data-bind="other_option_label" />
77
- </p>
78
  <p>
79
- <label for="<%= instance.id %>_other_option_placeholder"><?php _e( '\'Other\' placeholder', 'happyforms' ); ?></label>
80
- <input type="text" id="<%= instance.id %>_other_option_placeholder" maxlength="50" class="widefat title" value="<%= instance.other_option_placeholder %>" data-bind="other_option_placeholder" />
 
81
  </p>
82
- </div>
 
 
 
 
 
 
 
 
 
 
83
  <p>
84
  <label>
85
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.shuffle_options ) { %>checked="checked"<% } %> data-bind="shuffle_options" /> <?php _e( 'Randomize choices to prevent bias', 'happyforms' ); ?>
65
  <input type="text" id="<%= instance.id %>_select_all_label" maxlength="30" class="widefat title" value="<%= instance.select_all_label %>" data-bind="select_all_label" />
66
  </p>
67
  </div>
68
+
69
+ <% if ( instance.other_option ) { %>
 
 
 
 
 
 
 
 
70
  <p>
71
+ <label>
72
+ <input type="checkbox" class="checkbox" value="1" data-bind="other_option" checked /> <?php _e( 'Add \'other\' choice', 'happyforms' ); ?>
73
+ </label>
74
  </p>
75
+ <div class="happyforms-nested-settings" data-trigger="other_option" style="display: <%= ( instance.other_option ) ? 'block' : 'none' %>">
76
+ <p>
77
+ <label for="<%= instance.id %>_other_option_label"><?php _e( '\'Other\' label', 'happyforms' ); ?></label>
78
+ <input type="text" id="<%= instance.id %>_other_option_label" maxlength="30" class="widefat title" value="<%= instance.other_option_label %>" data-bind="other_option_label" />
79
+ </p>
80
+ <p>
81
+ <label for="<%= instance.id %>_other_option_placeholder"><?php _e( '\'Other\' placeholder', 'happyforms' ); ?></label>
82
+ <input type="text" id="<%= instance.id %>_other_option_placeholder" maxlength="50" class="widefat title" value="<%= instance.other_option_placeholder %>" data-bind="other_option_placeholder" />
83
+ </p>
84
+ </div>
85
+ <% } %>
86
  <p>
87
  <label>
88
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.shuffle_options ) { %>checked="checked"<% } %> data-bind="shuffle_options" /> <?php _e( 'Randomize choices to prevent bias', 'happyforms' ); ?>
core/templates/parts/customize-multi-line-text.php CHANGED
@@ -69,11 +69,6 @@
69
  </label>
70
  </p>
71
 
72
- <p>
73
- <label for="<%= instance.id %>_rows"><?php _e( 'Rows', 'happyforms' ); ?></label>
74
- <input type="number" id="<%= instance.id %>_rows" min="2" max="20" class="widefat title" value="<%= instance.rows %>" data-bind="rows" />
75
- </p>
76
-
77
  <?php happyforms_customize_part_width_control(); ?>
78
 
79
  <?php do_action( 'happyforms_part_customize_multi_line_text_after_advanced_options' ); ?>
69
  </label>
70
  </p>
71
 
 
 
 
 
 
72
  <?php happyforms_customize_part_width_control(); ?>
73
 
74
  <?php do_action( 'happyforms_part_customize_multi_line_text_after_advanced_options' ); ?>
core/templates/parts/customize-radio.php CHANGED
@@ -54,21 +54,23 @@
54
 
55
  <?php do_action( 'happyforms_part_customize_radio_before_advanced_options' ); ?>
56
 
57
- <p>
58
- <label>
59
- <input type="checkbox" class="checkbox" value="1" <% if ( instance.other_option ) { %>checked="checked"<% } %> data-bind="other_option" /> <?php _e( 'Add \'other\' choice', 'happyforms' ); ?>
60
- </label>
61
- </p>
62
- <div class="happyforms-nested-settings" data-trigger="other_option" style="display: <%= ( instance.other_option ) ? 'block' : 'none' %>">
63
- <p>
64
- <label for="<%= instance.id %>_other_option_label"><?php _e( '\'Other\' label', 'happyforms' ); ?></label>
65
- <input type="text" id="<%= instance.id %>_other_option_label" maxlength="30" class="widefat title" value="<%= instance.other_option_label %>" data-bind="other_option_label" />
66
- </p>
67
  <p>
68
- <label for="<%= instance.id %>_other_option_placeholder"><?php _e( '\'Other\' placeholder', 'happyforms' ); ?></label>
69
- <input type="text" id="<%= instance.id %>_other_option_placeholder" maxlength="50" class="widefat title" value="<%= instance.other_option_placeholder %>" data-bind="other_option_placeholder" />
 
70
  </p>
71
- </div>
 
 
 
 
 
 
 
 
 
 
72
  <p>
73
  <label>
74
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.shuffle_options ) { %>checked="checked"<% } %> data-bind="shuffle_options" /> <?php _e( 'Randomize choices to prevent bias', 'happyforms' ); ?>
54
 
55
  <?php do_action( 'happyforms_part_customize_radio_before_advanced_options' ); ?>
56
 
57
+ <% if ( instance.other_option ) { %>
 
 
 
 
 
 
 
 
 
58
  <p>
59
+ <label>
60
+ <input type="checkbox" class="checkbox" value="1" data-bind="other_option" checked /> <?php _e( 'Add \'other\' choice', 'happyforms' ); ?>
61
+ </label>
62
  </p>
63
+ <div class="happyforms-nested-settings" data-trigger="other_option" style="display: <%= ( instance.other_option ) ? 'block' : 'none' %>">
64
+ <p>
65
+ <label for="<%= instance.id %>_other_option_label"><?php _e( '\'Other\' label', 'happyforms' ); ?></label>
66
+ <input type="text" id="<%= instance.id %>_other_option_label" maxlength="30" class="widefat title" value="<%= instance.other_option_label %>" data-bind="other_option_label" />
67
+ </p>
68
+ <p>
69
+ <label for="<%= instance.id %>_other_option_placeholder"><?php _e( '\'Other\' placeholder', 'happyforms' ); ?></label>
70
+ <input type="text" id="<%= instance.id %>_other_option_placeholder" maxlength="50" class="widefat title" value="<%= instance.other_option_placeholder %>" data-bind="other_option_placeholder" />
71
+ </p>
72
+ </div>
73
+ <% } %>
74
  <p>
75
  <label>
76
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.shuffle_options ) { %>checked="checked"<% } %> data-bind="shuffle_options" /> <?php _e( 'Randomize choices to prevent bias', 'happyforms' ); ?>
core/templates/parts/customize-select.php CHANGED
@@ -54,21 +54,24 @@
54
  </label>
55
  </p>
56
 
57
- <p>
58
- <label>
59
- <input type="checkbox" class="checkbox" value="1" <% if ( instance.other_option ) { %>checked="checked"<% } %> data-bind="other_option" /> <?php _e( 'Add \'other\' choice', 'happyforms' ); ?>
60
- </label>
61
- </p>
62
- <div class="happyforms-nested-settings" data-trigger="other_option" style="display: <%= ( instance.other_option ) ? 'block' : 'none' %>">
63
- <p>
64
- <label for="<%= instance.id %>_other_option_label"><?php _e( '\'Other\' label', 'happyforms' ); ?></label>
65
- <input type="text" id="<%= instance.id %>_other_option_label" maxlength="30" class="widefat title" value="<%= instance.other_option_label %>" data-bind="other_option_label" />
66
- </p>
67
  <p>
68
- <label for="<%= instance.id %>_other_option_placeholder"><?php _e( '\'Other\' placeholder', 'happyforms' ); ?></label>
69
- <input type="text" id="<%= instance.id %>_other_option_placeholder" maxlength="50" class="widefat title" value="<%= instance.other_option_placeholder %>" data-bind="other_option_placeholder" />
 
70
  </p>
71
- </div>
 
 
 
 
 
 
 
 
 
 
 
72
 
73
  <?php do_action( 'happyforms_part_customize_select_after_options' ); ?>
74
 
54
  </label>
55
  </p>
56
 
57
+ <% if ( instance.other_option ) { %>
 
 
 
 
 
 
 
 
 
58
  <p>
59
+ <label>
60
+ <input type="checkbox" class="checkbox" value="1" data-bind="other_option" checked /> <?php _e( 'Add \'other\' choice', 'happyforms' ); ?>
61
+ </label>
62
  </p>
63
+
64
+ <div class="happyforms-nested-settings" data-trigger="other_option" style="display: <%= ( instance.other_option ) ? 'block' : 'none' %>">
65
+ <p>
66
+ <label for="<%= instance.id %>_other_option_label"><?php _e( '\'Other\' label', 'happyforms' ); ?></label>
67
+ <input type="text" id="<%= instance.id %>_other_option_label" maxlength="30" class="widefat title" value="<%= instance.other_option_label %>" data-bind="other_option_label" />
68
+ </p>
69
+ <p>
70
+ <label for="<%= instance.id %>_other_option_placeholder"><?php _e( '\'Other\' placeholder', 'happyforms' ); ?></label>
71
+ <input type="text" id="<%= instance.id %>_other_option_placeholder" maxlength="50" class="widefat title" value="<%= instance.other_option_placeholder %>" data-bind="other_option_placeholder" />
72
+ </p>
73
+ </div>
74
+ <% } %>
75
 
76
  <?php do_action( 'happyforms_part_customize_select_after_options' ); ?>
77
 
core/templates/parts/frontend-multi-line-text.php CHANGED
@@ -14,8 +14,10 @@
14
  <?php if ( 1 == $part['rich_text'] ) : ?>
15
  <div class="happyforms-visual-editor">
16
  <?php endif; ?>
17
-
18
- <textarea id="<?php happyforms_the_part_id( $part, $form ); ?>" name="<?php happyforms_the_part_name( $part, $form ); ?>" rows="<?php echo $part['rows']; ?>" placeholder="<?php echo esc_attr( $part['placeholder'] ); ?>" <?php happyforms_the_part_attributes( $part, $form ); ?> <?php happyforms_parts_autocorrect_attribute( $part ); ?> ><?php happyforms_the_part_value( $part, $form ); ?></textarea>
 
 
19
  <?php if ( 'as_placeholder' === $part['label_placement'] ) : ?>
20
  <?php happyforms_the_part_label( $part, $form ); ?>
21
  <?php endif; ?>
14
  <?php if ( 1 == $part['rich_text'] ) : ?>
15
  <div class="happyforms-visual-editor">
16
  <?php endif; ?>
17
+ <?php
18
+ $textarea_rows = apply_filters( 'happyforms_long_text_field_rows', 5, $part, $form );
19
+ ?>
20
+ <textarea id="<?php happyforms_the_part_id( $part, $form ); ?>" name="<?php happyforms_the_part_name( $part, $form ); ?>" rows="<?php echo $textarea_rows; ?>" placeholder="<?php echo esc_attr( $part['placeholder'] ); ?>" <?php happyforms_the_part_attributes( $part, $form ); ?> <?php happyforms_parts_autocorrect_attribute( $part ); ?> ><?php happyforms_the_part_value( $part, $form ); ?></textarea>
21
  <?php if ( 'as_placeholder' === $part['label_placement'] ) : ?>
22
  <?php happyforms_the_part_label( $part, $form ); ?>
23
  <?php endif; ?>
core/templates/single-form.php CHANGED
@@ -1,5 +1,6 @@
1
  <div class="happyforms-form <?php happyforms_the_form_class( $form ); ?>" id="<?php happyforms_the_form_container_id( $form ); ?>">
2
  <?php do_action( 'happyforms_form_before', $form ); ?>
 
3
 
4
  <form action="<?php happyforms_form_action( $form['ID'] ); ?>" id="<?php happyforms_the_form_id( $form ); ?>" method="post" <?php happyforms_the_form_attributes( $form ); ?>>
5
  <?php do_action( 'happyforms_form_open', $form ); ?>
@@ -10,7 +11,6 @@
10
  <?php happyforms_step_field( $form ); ?>
11
 
12
  <div class="happyforms-flex">
13
- <?php happyforms_message_notices( $form['ID'] ); ?>
14
  <?php happyforms_honeypot( $form ); ?>
15
  <?php $parts = apply_filters( 'happyforms_get_form_parts', $form['parts'], $form ); ?>
16
  <?php do_action( 'happyforms_parts_before', $form ); ?>
@@ -25,4 +25,4 @@
25
  </form>
26
 
27
  <?php do_action( 'happyforms_form_after', $form ); ?>
28
- </div>
1
  <div class="happyforms-form <?php happyforms_the_form_class( $form ); ?>" id="<?php happyforms_the_form_container_id( $form ); ?>">
2
  <?php do_action( 'happyforms_form_before', $form ); ?>
3
+ <?php happyforms_message_notices( $form['ID'] ); ?>
4
 
5
  <form action="<?php happyforms_form_action( $form['ID'] ); ?>" id="<?php happyforms_the_form_id( $form ); ?>" method="post" <?php happyforms_the_form_attributes( $form ); ?>>
6
  <?php do_action( 'happyforms_form_open', $form ); ?>
11
  <?php happyforms_step_field( $form ); ?>
12
 
13
  <div class="happyforms-flex">
 
14
  <?php happyforms_honeypot( $form ); ?>
15
  <?php $parts = apply_filters( 'happyforms_get_form_parts', $form['parts'], $form ); ?>
16
  <?php do_action( 'happyforms_parts_before', $form ); ?>
25
  </form>
26
 
27
  <?php do_action( 'happyforms_form_after', $form ); ?>
28
+ </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.11
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.11' );
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.12
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.12' );
26
 
27
  if ( ! function_exists( 'happyforms_plugin_file' ) ):
28
  /**
inc/assets/js/frontend.js CHANGED
@@ -347,11 +347,13 @@
347
 
348
  this.detach();
349
 
350
- var $form = $( 'form', $el );
351
- $( 'form', this.$el ).replaceWith( $form );
352
 
353
  this.$el.happyForm();
354
 
 
 
355
  // User filterable
356
  if ( $form.attr( 'data-happyforms-scroll-disabled' ) ) {
357
  return;
347
 
348
  this.detach();
349
 
350
+ this.$el.replaceWith( $el );
351
+ this.$el = $el;
352
 
353
  this.$el.happyForm();
354
 
355
+ var $form = $( 'form', this.$el );
356
+
357
  // User filterable
358
  if ( $form.attr( 'data-happyforms-scroll-disabled' ) ) {
359
  return;
inc/classes/class-happyforms.php CHANGED
@@ -70,9 +70,6 @@ class HappyForms extends HappyForms_Core {
70
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-likert-scale-dummy.php' );
71
  $part_library->register_part( 'HappyForms_Part_LikertScale_Dummy', 16 );
72
 
73
- require_once( happyforms_get_include_folder() . '/classes/parts/class-part-legal-dummy.php' );
74
- $part_library->register_part( 'HappyForms_Part_Legal_Dummy', 18 );
75
-
76
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-signature-dummy.php' );
77
  $part_library->register_part( 'HappyForms_Part_Signature_Dummy', 19 );
78
 
@@ -82,26 +79,29 @@ class HappyForms extends HappyForms_Core {
82
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-optin-dummy.php' );
83
  $part_library->register_part( 'HappyForms_Part_OptIn_Dummy', 22 );
84
 
 
 
 
85
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-payments-dummy.php' );
86
- $part_library->register_part( 'HappyForms_Part_Payments_Dummy', 23 );
87
 
88
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-layout-drawer-group.php' );
89
- $part_library->register_part( 'HappyForms_Part_LayoutDrawerGroup', 24 );
90
 
91
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-layout-title-dummy.php' );
92
- $part_library->register_part( 'HappyForms_Part_LayoutTitle_Dummy', 25 );
93
 
94
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-placeholder-dummy.php' );
95
- $part_library->register_part( 'HappyForms_Part_Placeholder_Dummy', 26 );
96
 
97
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-media-dummy.php' );
98
- $part_library->register_part( 'HappyForms_Part_Media_Dummy', 27 );
99
 
100
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-divider-dummy.php' );
101
- $part_library->register_part( 'HappyForms_Part_Divider_Dummy', 28 );
102
 
103
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-page-break-dummy.php' );
104
- $part_library->register_part( 'HappyForms_Part_PageBreak_Dummy', 29 );
105
  }
106
 
107
  public function add_dummy_setup_controls( $controls ) {
70
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-likert-scale-dummy.php' );
71
  $part_library->register_part( 'HappyForms_Part_LikertScale_Dummy', 16 );
72
 
 
 
 
73
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-signature-dummy.php' );
74
  $part_library->register_part( 'HappyForms_Part_Signature_Dummy', 19 );
75
 
79
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-optin-dummy.php' );
80
  $part_library->register_part( 'HappyForms_Part_OptIn_Dummy', 22 );
81
 
82
+ require_once( happyforms_get_include_folder() . '/classes/parts/class-part-scrollable-terms-dummy.php' );
83
+ $part_library->register_part( 'HappyForms_Part_ScrollableTerms_Dummy', 23 );
84
+
85
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-payments-dummy.php' );
86
+ $part_library->register_part( 'HappyForms_Part_Payments_Dummy', 24 );
87
 
88
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-layout-drawer-group.php' );
89
+ $part_library->register_part( 'HappyForms_Part_LayoutDrawerGroup', 25 );
90
 
91
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-layout-title-dummy.php' );
92
+ $part_library->register_part( 'HappyForms_Part_LayoutTitle_Dummy', 26 );
93
 
94
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-placeholder-dummy.php' );
95
+ $part_library->register_part( 'HappyForms_Part_Placeholder_Dummy', 27 );
96
 
97
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-media-dummy.php' );
98
+ $part_library->register_part( 'HappyForms_Part_Media_Dummy', 28 );
99
 
100
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-divider-dummy.php' );
101
+ $part_library->register_part( 'HappyForms_Part_Divider_Dummy', 29 );
102
 
103
  require_once( happyforms_get_include_folder() . '/classes/parts/class-part-page-break-dummy.php' );
104
+ $part_library->register_part( 'HappyForms_Part_PageBreak_Dummy', 30 );
105
  }
106
 
107
  public function add_dummy_setup_controls( $controls ) {
inc/classes/parts/class-part-legal-dummy.php DELETED
@@ -1,12 +0,0 @@
1
- <?php
2
-
3
- class HappyForms_Part_Legal_Dummy extends HappyForms_Form_Part {
4
-
5
- public $type = 'legal_dummy';
6
-
7
- public function __construct() {
8
- $this->label = __( 'Consent Choice', 'happyforms' );
9
- $this->description = __( 'For requiring permission before accepting submission.', 'happyforms' );
10
- }
11
-
12
- }
 
 
 
 
 
 
 
 
 
 
 
 
inc/classes/parts/class-part-scrollable-terms-dummy.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class HappyForms_Part_ScrollableTerms_Dummy extends HappyForms_Form_Part {
4
+
5
+ public $type = 'scrollable_terms_dummy';
6
+
7
+ public function __construct() {
8
+ $this->label = __( 'Scrollable Terms', 'happyforms' );
9
+ $this->description = __( 'For adding terms of service text and similar that requires user to scroll to bottom.', 'happyforms' );
10
+ }
11
+
12
+ }
languages/happyforms.pot CHANGED
@@ -1,15 +1,15 @@
1
- # Copyright (C) 2021 Happyforms
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.11\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-12-14T14:06:22+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"
@@ -715,14 +715,14 @@ msgstr ""
715
 
716
  #: core/classes/class-form-styles.php:731
717
  #: core/templates/parts/customize-checkbox.php:4
718
- #: core/templates/parts/customize-checkbox.php:133
719
  #: core/templates/parts/customize-email.php:4
720
  #: core/templates/parts/customize-multi-line-text.php:4
721
  #: core/templates/parts/customize-number.php:4
722
  #: core/templates/parts/customize-radio.php:4
723
- #: core/templates/parts/customize-radio.php:107
724
  #: core/templates/parts/customize-select.php:4
725
- #: core/templates/parts/customize-select.php:105
726
  #: core/templates/parts/customize-single-line-text.php:4
727
  msgid "Label"
728
  msgstr ""
@@ -3075,9 +3075,9 @@ msgstr ""
3075
 
3076
  #: core/templates/customize-form-item.php:33
3077
  #: core/templates/customize-form-part-footer.php:3
3078
- #: core/templates/parts/customize-checkbox.php:154
3079
- #: core/templates/parts/customize-radio.php:128
3080
- #: core/templates/parts/customize-select.php:126
3081
  msgid "Delete"
3082
  msgstr ""
3083
 
@@ -3219,95 +3219,95 @@ msgstr ""
3219
  msgid "'Select all' label"
3220
  msgstr ""
3221
 
3222
- #: core/templates/parts/customize-checkbox.php:70
3223
- #: core/templates/parts/customize-radio.php:59
3224
- #: core/templates/parts/customize-select.php:59
3225
  msgid "Add 'other' choice"
3226
  msgstr ""
3227
 
3228
- #: core/templates/parts/customize-checkbox.php:75
3229
- #: core/templates/parts/customize-radio.php:64
3230
- #: core/templates/parts/customize-select.php:64
3231
  msgid "'Other' label"
3232
  msgstr ""
3233
 
3234
- #: core/templates/parts/customize-checkbox.php:79
3235
- #: core/templates/parts/customize-radio.php:68
3236
- #: core/templates/parts/customize-select.php:68
3237
  msgid "'Other' placeholder"
3238
  msgstr ""
3239
 
3240
- #: core/templates/parts/customize-checkbox.php:85
3241
- #: core/templates/parts/customize-radio.php:74
3242
- #: core/templates/parts/customize-select.php:79
3243
  msgid "Randomize choices to prevent bias"
3244
  msgstr ""
3245
 
3246
- #: core/templates/parts/customize-checkbox.php:90
3247
  msgid "Limit choices"
3248
  msgstr ""
3249
 
3250
- #: core/templates/parts/customize-checkbox.php:95
3251
  msgid "Min choices"
3252
  msgstr ""
3253
 
3254
- #: core/templates/parts/customize-checkbox.php:99
3255
  msgid "Max choices"
3256
  msgstr ""
3257
 
3258
- #: core/templates/parts/customize-checkbox.php:104
3259
- #: core/templates/parts/customize-radio.php:78
3260
  msgid "Choices display"
3261
  msgstr ""
3262
 
3263
- #: core/templates/parts/customize-checkbox.php:106
3264
- #: core/templates/parts/customize-radio.php:80
3265
  msgid "Horizontal"
3266
  msgstr ""
3267
 
3268
- #: core/templates/parts/customize-checkbox.php:107
3269
- #: core/templates/parts/customize-radio.php:81
3270
  msgid "Vertical"
3271
  msgstr ""
3272
 
3273
- #: core/templates/parts/customize-checkbox.php:116
3274
  #: core/templates/parts/customize-email.php:58
3275
- #: core/templates/parts/customize-multi-line-text.php:82
3276
  #: core/templates/parts/customize-number.php:81
3277
- #: core/templates/parts/customize-radio.php:88
3278
- #: core/templates/parts/customize-select.php:86
3279
  #: core/templates/parts/customize-single-line-text.php:57
3280
  msgid "Additional CSS class(es)"
3281
  msgstr ""
3282
 
3283
- #: core/templates/parts/customize-checkbox.php:138
3284
- #: core/templates/parts/customize-radio.php:112
3285
- #: core/templates/parts/customize-select.php:110
3286
  msgid "Make this choice default"
3287
  msgstr ""
3288
 
3289
- #: core/templates/parts/customize-checkbox.php:141
3290
- #: core/templates/parts/customize-radio.php:115
3291
- #: core/templates/parts/customize-select.php:113
3292
  #: inc/classes/class-happyforms.php:148
3293
  msgid "Limit submissions"
3294
  msgstr ""
3295
 
3296
- #: core/templates/parts/customize-checkbox.php:145
3297
- #: core/templates/parts/customize-radio.php:119
3298
- #: core/templates/parts/customize-select.php:117
3299
  msgid "Max submissions"
3300
  msgstr ""
3301
 
3302
- #: core/templates/parts/customize-checkbox.php:149
3303
- #: core/templates/parts/customize-radio.php:123
3304
- #: core/templates/parts/customize-select.php:121
3305
  msgid "Show remaining submissions"
3306
  msgstr ""
3307
 
3308
- #: core/templates/parts/customize-checkbox.php:155
3309
- #: core/templates/parts/customize-radio.php:129
3310
- #: core/templates/parts/customize-select.php:127
3311
  msgid "More"
3312
  msgstr ""
3313
 
@@ -3346,10 +3346,6 @@ msgstr ""
3346
  msgid "Add rich-text editor toolbar"
3347
  msgstr ""
3348
 
3349
- #: core/templates/parts/customize-multi-line-text.php:73
3350
- msgid "Rows"
3351
- msgstr ""
3352
-
3353
  #: core/templates/parts/customize-number.php:36
3354
  msgid "Min number"
3355
  msgstr ""
@@ -3517,14 +3513,6 @@ msgstr ""
3517
  msgid "For adding titles to visually separate fields."
3518
  msgstr ""
3519
 
3520
- #: inc/classes/parts/class-part-legal-dummy.php:8
3521
- msgid "Consent Choice"
3522
- msgstr ""
3523
-
3524
- #: inc/classes/parts/class-part-legal-dummy.php:9
3525
- msgid "For requiring permission before accepting submission."
3526
- msgstr ""
3527
-
3528
  #: inc/classes/parts/class-part-likert-scale-dummy.php:8
3529
  msgid "Scale"
3530
  msgstr ""
@@ -3613,6 +3601,14 @@ msgstr ""
3613
  msgid "For collecting opinions using a horizontal slider."
3614
  msgstr ""
3615
 
 
 
 
 
 
 
 
 
3616
  #: inc/classes/parts/class-part-signature-dummy.php:8
3617
  msgid "Signature"
3618
  msgstr ""
1
+ # Copyright (C) 2022 Happyforms
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.12\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-01-06T11:12:57+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"
715
 
716
  #: core/classes/class-form-styles.php:731
717
  #: core/templates/parts/customize-checkbox.php:4
718
+ #: core/templates/parts/customize-checkbox.php:136
719
  #: core/templates/parts/customize-email.php:4
720
  #: core/templates/parts/customize-multi-line-text.php:4
721
  #: core/templates/parts/customize-number.php:4
722
  #: core/templates/parts/customize-radio.php:4
723
+ #: core/templates/parts/customize-radio.php:109
724
  #: core/templates/parts/customize-select.php:4
725
+ #: core/templates/parts/customize-select.php:108
726
  #: core/templates/parts/customize-single-line-text.php:4
727
  msgid "Label"
728
  msgstr ""
3075
 
3076
  #: core/templates/customize-form-item.php:33
3077
  #: core/templates/customize-form-part-footer.php:3
3078
+ #: core/templates/parts/customize-checkbox.php:157
3079
+ #: core/templates/parts/customize-radio.php:130
3080
+ #: core/templates/parts/customize-select.php:129
3081
  msgid "Delete"
3082
  msgstr ""
3083
 
3219
  msgid "'Select all' label"
3220
  msgstr ""
3221
 
3222
+ #: core/templates/parts/customize-checkbox.php:72
3223
+ #: core/templates/parts/customize-radio.php:60
3224
+ #: core/templates/parts/customize-select.php:60
3225
  msgid "Add 'other' choice"
3226
  msgstr ""
3227
 
3228
+ #: core/templates/parts/customize-checkbox.php:77
3229
+ #: core/templates/parts/customize-radio.php:65
3230
+ #: core/templates/parts/customize-select.php:66
3231
  msgid "'Other' label"
3232
  msgstr ""
3233
 
3234
+ #: core/templates/parts/customize-checkbox.php:81
3235
+ #: core/templates/parts/customize-radio.php:69
3236
+ #: core/templates/parts/customize-select.php:70
3237
  msgid "'Other' placeholder"
3238
  msgstr ""
3239
 
3240
+ #: core/templates/parts/customize-checkbox.php:88
3241
+ #: core/templates/parts/customize-radio.php:76
3242
+ #: core/templates/parts/customize-select.php:82
3243
  msgid "Randomize choices to prevent bias"
3244
  msgstr ""
3245
 
3246
+ #: core/templates/parts/customize-checkbox.php:93
3247
  msgid "Limit choices"
3248
  msgstr ""
3249
 
3250
+ #: core/templates/parts/customize-checkbox.php:98
3251
  msgid "Min choices"
3252
  msgstr ""
3253
 
3254
+ #: core/templates/parts/customize-checkbox.php:102
3255
  msgid "Max choices"
3256
  msgstr ""
3257
 
3258
+ #: core/templates/parts/customize-checkbox.php:107
3259
+ #: core/templates/parts/customize-radio.php:80
3260
  msgid "Choices display"
3261
  msgstr ""
3262
 
3263
+ #: core/templates/parts/customize-checkbox.php:109
3264
+ #: core/templates/parts/customize-radio.php:82
3265
  msgid "Horizontal"
3266
  msgstr ""
3267
 
3268
+ #: core/templates/parts/customize-checkbox.php:110
3269
+ #: core/templates/parts/customize-radio.php:83
3270
  msgid "Vertical"
3271
  msgstr ""
3272
 
3273
+ #: core/templates/parts/customize-checkbox.php:119
3274
  #: core/templates/parts/customize-email.php:58
3275
+ #: core/templates/parts/customize-multi-line-text.php:77
3276
  #: core/templates/parts/customize-number.php:81
3277
+ #: core/templates/parts/customize-radio.php:90
3278
+ #: core/templates/parts/customize-select.php:89
3279
  #: core/templates/parts/customize-single-line-text.php:57
3280
  msgid "Additional CSS class(es)"
3281
  msgstr ""
3282
 
3283
+ #: core/templates/parts/customize-checkbox.php:141
3284
+ #: core/templates/parts/customize-radio.php:114
3285
+ #: core/templates/parts/customize-select.php:113
3286
  msgid "Make this choice default"
3287
  msgstr ""
3288
 
3289
+ #: core/templates/parts/customize-checkbox.php:144
3290
+ #: core/templates/parts/customize-radio.php:117
3291
+ #: core/templates/parts/customize-select.php:116
3292
  #: inc/classes/class-happyforms.php:148
3293
  msgid "Limit submissions"
3294
  msgstr ""
3295
 
3296
+ #: core/templates/parts/customize-checkbox.php:148
3297
+ #: core/templates/parts/customize-radio.php:121
3298
+ #: core/templates/parts/customize-select.php:120
3299
  msgid "Max submissions"
3300
  msgstr ""
3301
 
3302
+ #: core/templates/parts/customize-checkbox.php:152
3303
+ #: core/templates/parts/customize-radio.php:125
3304
+ #: core/templates/parts/customize-select.php:124
3305
  msgid "Show remaining submissions"
3306
  msgstr ""
3307
 
3308
+ #: core/templates/parts/customize-checkbox.php:158
3309
+ #: core/templates/parts/customize-radio.php:131
3310
+ #: core/templates/parts/customize-select.php:130
3311
  msgid "More"
3312
  msgstr ""
3313
 
3346
  msgid "Add rich-text editor toolbar"
3347
  msgstr ""
3348
 
 
 
 
 
3349
  #: core/templates/parts/customize-number.php:36
3350
  msgid "Min number"
3351
  msgstr ""
3513
  msgid "For adding titles to visually separate fields."
3514
  msgstr ""
3515
 
 
 
 
 
 
 
 
 
3516
  #: inc/classes/parts/class-part-likert-scale-dummy.php:8
3517
  msgid "Scale"
3518
  msgstr ""
3601
  msgid "For collecting opinions using a horizontal slider."
3602
  msgstr ""
3603
 
3604
+ #: inc/classes/parts/class-part-scrollable-terms-dummy.php:8
3605
+ msgid "Scrollable Terms"
3606
+ msgstr ""
3607
+
3608
+ #: inc/classes/parts/class-part-scrollable-terms-dummy.php:9
3609
+ msgid "For adding terms of service text and similar that requires user to scroll to bottom."
3610
+ msgstr ""
3611
+
3612
  #: inc/classes/parts/class-part-signature-dummy.php:8
3613
  msgid "Signature"
3614
  msgstr ""
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.11
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -151,6 +151,10 @@ Aw, honestly, the thought that you're writing about our contact form builder is
151
 
152
  == Changelog ==
153
 
 
 
 
 
154
  = 1.13.11 =
155
  * Improvement: Miscellaneous improvements to Forms screen.
156
  * Improvement: New filter allows finer control of assets loading.
@@ -889,6 +893,9 @@ Aw, honestly, the thought that you're writing about our contact form builder is
889
 
890
  == Upgrade Notice ==
891
 
 
 
 
892
  = 1.13.11 =
893
  * Miscellaneous improvements.
894
 
5
  Requires at least: 5.0
6
  Tested up to: 5.8
7
  Requires PHP: 7.0
8
+ Stable tag: 1.13.12
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.12 =
155
+ * Removal: Long Text field "Rows" control has been removed.
156
+ * Removal: "Add other choice" control has been deprecated.
157
+
158
  = 1.13.11 =
159
  * Improvement: Miscellaneous improvements to Forms screen.
160
  * Improvement: New filter allows finer control of assets loading.
893
 
894
  == Upgrade Notice ==
895
 
896
+ = 1.13.12 =
897
+ * Feature deprecations.
898
+
899
  = 1.13.11 =
900
  * Miscellaneous improvements.
901