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

Version Description

  • Improvement: New Advanced link to reveal more advanced settings for each part and achieve cleaner look when part is first opened in form builder.
  • Improvement: Better compatibility with themes.
  • Improvement: Current user's email address is now pre-filled in Your email address field in Step 2.
  • Bug fix: Front end placeholder behavior when "Display as placeholder" title placement is selected.
  • Bug fix: Responses screen was showing just the first letter of each submitted part.
  • Bug fix: PHP notices when HappyForms widget was added to a page in Customizer.
Download this release

Release Info

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

Code changes from version 1.4.3 to 1.4.4

assets/css/customize.css CHANGED
@@ -255,6 +255,28 @@ p.happyforms-step-progress-counter {
255
  padding-bottom: 5px;
256
  }
257
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
258
  a.happyforms-form-remove,
259
  a.happyforms-form-part-remove {
260
  color: #a00;
@@ -285,7 +307,7 @@ a.happyforms-form-part-remove:hover {
285
  */
286
  .happyforms-parts-placeholder {
287
  display: block;
288
- border: 2px dashed #a1a1a1;
289
  padding: 30px 30px 40px;
290
  box-sizing: border-box;
291
  text-align: center;
@@ -313,7 +335,7 @@ a.happyforms-form-part-remove:hover {
313
  .happyforms-parts-placeholder__placeholder {
314
  margin-bottom: 20px;
315
  padding: 20px;
316
- border: 2px dashed #a1a1a1;
317
  }
318
 
319
  .happyforms-parts-placeholder__placeholder:last-child {
255
  padding-bottom: 5px;
256
  }
257
 
258
+ .happyforms-part-advanced-settings-wrap {
259
+ display: none;
260
+ overflow: hidden;
261
+ border-top: 1px solid #eee;
262
+ }
263
+
264
+ a.happyforms-form-part-advanced-settings {
265
+ float: right;
266
+ }
267
+
268
+ a.happyforms-form-part-advanced-settings:before {
269
+ position: relative;
270
+ top: 2px;
271
+ display: inline-block;
272
+ content: "\f346";
273
+ font-family: dashicons;
274
+ }
275
+
276
+ a.happyforms-form-part-advanced-settings.opened:before {
277
+ content: "\f342";
278
+ }
279
+
280
  a.happyforms-form-remove,
281
  a.happyforms-form-part-remove {
282
  color: #a00;
307
  */
308
  .happyforms-parts-placeholder {
309
  display: block;
310
+ border: 1px dashed #b4b9be;
311
  padding: 30px 30px 40px;
312
  box-sizing: border-box;
313
  text-align: center;
335
  .happyforms-parts-placeholder__placeholder {
336
  margin-bottom: 20px;
337
  padding: 20px;
338
+ border: 1px dashed #b4b9be;
339
  }
340
 
341
  .happyforms-parts-placeholder__placeholder:last-child {
assets/css/frontend.css CHANGED
@@ -103,7 +103,10 @@ h3.happyforms-form__title {
103
  }
104
 
105
  .happyforms-part__label .label {
 
106
  font-weight: bold;
 
 
107
  color: #000;
108
  color: var(--happyforms-color-part-title);
109
  }
@@ -422,6 +425,10 @@ h3.happyforms-form__title {
422
  display: inline-block;
423
  margin-right: 15px;
424
  padding: 0 10px;
 
 
 
 
425
  }
426
 
427
  .happyforms-form--direction-rtl .happyforms-part--radio .option-label .label,
103
  }
104
 
105
  .happyforms-part__label .label {
106
+ padding: 0;
107
  font-weight: bold;
108
+ font-size: 16px;
109
+ font-size: var(--happyforms-part-title-font-size);
110
  color: #000;
111
  color: var(--happyforms-color-part-title);
112
  }
425
  display: inline-block;
426
  margin-right: 15px;
427
  padding: 0 10px;
428
+ font-size: 16px;
429
+ font-size: var(--happyforms-part-value-font-size);
430
+ color: #000;
431
+ color: var(--happyforms-color-part-value);
432
  }
433
 
434
  .happyforms-form--direction-rtl .happyforms-part--radio .option-label .label,
assets/js/customize.js CHANGED
@@ -731,7 +731,8 @@
731
  'change [data-bind]': 'onInputChange',
732
  'mouseover': 'onMouseOver',
733
  'mouseout': 'onMouseOut',
734
- 'change .apply-all-check': 'applyOptionGlobally'
 
735
  },
736
 
737
  initialize: function( options ) {
@@ -1081,6 +1082,21 @@
1081
  $descriptionWrap.fadeOut(200, function() {
1082
  $descriptionWrap.find('input').prop('checked', false);
1083
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1084
  }
1085
  } );
1086
 
731
  'change [data-bind]': 'onInputChange',
732
  'mouseover': 'onMouseOver',
733
  'mouseout': 'onMouseOut',
734
+ 'change .apply-all-check': 'applyOptionGlobally',
735
+ 'click .happyforms-form-part-advanced-settings': 'onAdvancedSettingsClick'
736
  },
737
 
738
  initialize: function( options ) {
1082
  $descriptionWrap.fadeOut(200, function() {
1083
  $descriptionWrap.find('input').prop('checked', false);
1084
  });
1085
+ },
1086
+
1087
+ onAdvancedSettingsClick: function(e) {
1088
+ var $link = $(e.target);
1089
+ var $advancedSettingsWrap = this.$el.find('.happyforms-part-advanced-settings-wrap');
1090
+
1091
+ if ( $advancedSettingsWrap.is(':hidden') ) {
1092
+ $advancedSettingsWrap.slideDown(300, function() {
1093
+ $link.addClass('opened');
1094
+ });
1095
+ } else {
1096
+ $advancedSettingsWrap.slideUp(300, function() {
1097
+ $link.removeClass('opened');
1098
+ });
1099
+ }
1100
  }
1101
  } );
1102
 
assets/js/frontend/address.js CHANGED
@@ -35,6 +35,7 @@
35
  // Validation
36
  this.$input.on( 'keyup', this.triggerChange.bind( this ) );
37
  this.$input.on( 'change', this.triggerChange.bind( this ) );
 
38
 
39
  if ( 'simple' !== this.mode ) {
40
  var $input = $( '.happyforms-part--address__autocomplete', this.$el );
@@ -123,6 +124,22 @@
123
 
124
  $( 'span', this.$geolocation ).text( this.$geolocation.data( 'idle' ) );
125
  this.$geolocation.removeClass( 'disabled' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
126
  },
127
  }
128
 
35
  // Validation
36
  this.$input.on( 'keyup', this.triggerChange.bind( this ) );
37
  this.$input.on( 'change', this.triggerChange.bind( this ) );
38
+ this.$input.on( 'blur', this.onBlur.bind( this ) );
39
 
40
  if ( 'simple' !== this.mode ) {
41
  var $input = $( '.happyforms-part--address__autocomplete', this.$el );
124
 
125
  $( 'span', this.$geolocation ).text( this.$geolocation.data( 'idle' ) );
126
  this.$geolocation.removeClass( 'disabled' );
127
+ },
128
+
129
+ getValue: function () {
130
+ var value = this.$input.val();
131
+
132
+ return value;
133
+ },
134
+
135
+ onBlur: function () {
136
+ if (this.$el.is('.happyforms-part--label-as_placeholder')) {
137
+ if (this.getValue()) {
138
+ this.$el.addClass('happyforms-part--filled');
139
+ } else {
140
+ this.$el.removeClass('happyforms-part--filled');
141
+ }
142
+ }
143
  },
144
  }
145
 
assets/js/frontend/number.js CHANGED
@@ -11,6 +11,7 @@
11
 
12
  this.$input.on( 'keyup', this.triggerChange.bind( this ) );
13
  this.$input.on( 'change', this.triggerChange.bind( this ) );
 
14
 
15
  if ( masked ) {
16
  var numeralDecimalMark = this.$el.attr( 'data-decimal-mark' ) || '.';
@@ -45,6 +46,16 @@
45
 
46
  this.init();
47
  },
 
 
 
 
 
 
 
 
 
 
48
  };
49
 
50
  } )( jQuery );
11
 
12
  this.$input.on( 'keyup', this.triggerChange.bind( this ) );
13
  this.$input.on( 'change', this.triggerChange.bind( this ) );
14
+ this.$input.on( 'blur', this.onBlur.bind( this ) );
15
 
16
  if ( masked ) {
17
  var numeralDecimalMark = this.$el.attr( 'data-decimal-mark' ) || '.';
46
 
47
  this.init();
48
  },
49
+
50
+ onBlur: function () {
51
+ if (this.$el.is('.happyforms-part--label-as_placeholder')) {
52
+ if (this.getValue()) {
53
+ this.$el.addClass('happyforms-part--filled');
54
+ } else {
55
+ this.$el.removeClass('happyforms-part--filled');
56
+ }
57
+ }
58
+ },
59
  };
60
 
61
  } )( jQuery );
assets/js/frontend/phone.js CHANGED
@@ -11,6 +11,7 @@
11
 
12
  this.$input.on( 'keyup', this.triggerChange.bind( this ) );
13
  this.$input.on( 'change', this.triggerChange.bind( this ) );
 
14
 
15
  if ( masked ) {
16
  var regionCode = '+' + this.$el.attr( 'data-country' );
@@ -41,6 +42,16 @@
41
  this.init();
42
  },
43
 
 
 
 
 
 
 
 
 
 
 
44
  getValue: function() {
45
  var regionCode = this.$el.attr( 'data-country' );
46
  var value = this.$input.val();
11
 
12
  this.$input.on( 'keyup', this.triggerChange.bind( this ) );
13
  this.$input.on( 'change', this.triggerChange.bind( this ) );
14
+ this.$input.on( 'blur', this.onBlur.bind(this) );
15
 
16
  if ( masked ) {
17
  var regionCode = '+' + this.$el.attr( 'data-country' );
42
  this.init();
43
  },
44
 
45
+ onBlur: function () {
46
+ if (this.$el.is('.happyforms-part--label-as_placeholder')) {
47
+ if (this.getValue()) {
48
+ this.$el.addClass('happyforms-part--filled');
49
+ } else {
50
+ this.$el.removeClass('happyforms-part--filled');
51
+ }
52
+ }
53
+ },
54
+
55
  getValue: function() {
56
  var regionCode = this.$el.attr( 'data-country' );
57
  var value = this.$input.val();
assets/js/parts/part-address.js CHANGED
@@ -43,13 +43,19 @@
43
  api.previewer.send( 'happyforms-part-dom-update', data );
44
  },
45
 
46
- onModeChange: function( e ) {
47
- var self = this;
48
- var model = this.model;
49
-
50
  this.toggleApiKey();
51
 
52
- this.model.fetchHtml( function( response ) {
 
 
 
 
 
 
 
 
 
53
  var data = {
54
  id: model.get( 'id' ),
55
  html: response,
43
  api.previewer.send( 'happyforms-part-dom-update', data );
44
  },
45
 
46
+ onModeChange: function( model, value ) {
 
 
 
47
  this.toggleApiKey();
48
 
49
+ var $labelPlacementSelect = this.$el.find('[data-bind=label_placement]');
50
+
51
+ if ( 'country-city' === value ) {
52
+ $labelPlacementSelect.val('above').attr('disabled', 'disabled');
53
+ model.set('label_placement', 'above', { silent: true });
54
+ } else {
55
+ $labelPlacementSelect.removeAttr('disabled');
56
+ }
57
+
58
+ model.fetchHtml( function( response ) {
59
  var data = {
60
  id: model.get( 'id' ),
61
  html: response,
happyforms.php CHANGED
@@ -5,7 +5,7 @@
5
  * Plugin URI: https://happyforms.me
6
  * Description: Your friendly drag and drop contact form builder for creating contact forms, lead generation forms, feedback forms, quote forms, survey forms and more!
7
  * Author: The Theme Foundry
8
- * Version: 1.4.3
9
  * Author URI: https://thethemefoundry.com
10
  * Upgrade URI: https://thethemefoundry.com
11
  */
@@ -13,7 +13,7 @@
13
  /**
14
  * The current version of the plugin.
15
  */
16
- define( 'HAPPYFORMS_VERSION', '1.4.3' );
17
 
18
  if ( ! function_exists( 'happyforms_plugin_file' ) ):
19
  /**
5
  * Plugin URI: https://happyforms.me
6
  * Description: Your friendly drag and drop contact form builder for creating contact forms, lead generation forms, feedback forms, quote forms, survey forms and more!
7
  * Author: The Theme Foundry
8
+ * Version: 1.4.4
9
  * Author URI: https://thethemefoundry.com
10
  * Upgrade URI: https://thethemefoundry.com
11
  */
13
  /**
14
  * The current version of the plugin.
15
  */
16
+ define( 'HAPPYFORMS_VERSION', '1.4.4' );
17
 
18
  if ( ! function_exists( 'happyforms_plugin_file' ) ):
19
  /**
inc/classes/class-form-controller.php CHANGED
@@ -177,9 +177,11 @@ class HappyForms_Form_Controller {
177
  }
178
 
179
  public function get_meta_fields() {
 
 
180
  $fields = array(
181
  'email_recipient' => array(
182
- 'default' => '',
183
  'sanitize' => 'happyforms_sanitize_emails',
184
  ),
185
  'alert_email_subject' => array(
177
  }
178
 
179
  public function get_meta_fields() {
180
+ global $current_user;
181
+
182
  $fields = array(
183
  'email_recipient' => array(
184
+ 'default' => ( $current_user->user_email ) ? $current_user->user_email : '',
185
  'sanitize' => 'happyforms_sanitize_emails',
186
  ),
187
  'alert_email_subject' => array(
inc/classes/class-happyforms-plugin.php CHANGED
@@ -158,8 +158,8 @@ class HappyForms_Plugin {
158
 
159
  add_submenu_page(
160
  'happyforms',
161
- __( 'Messages', 'happyforms' ),
162
- __( 'Messages', 'happyforms' ) . happyforms_unread_messages_badge(),
163
  'manage_options',
164
  '/edit.php?post_type=happyforms-message'
165
  );
158
 
159
  add_submenu_page(
160
  'happyforms',
161
+ __( 'Responses', 'happyforms' ),
162
+ __( 'Responses', 'happyforms' ) . happyforms_unread_messages_badge(),
163
  'manage_options',
164
  '/edit.php?post_type=happyforms-message'
165
  );
inc/classes/class-happyforms-widget.php CHANGED
@@ -27,8 +27,11 @@ class HappyForms_Widget extends WP_Widget {
27
  *
28
  */
29
  public function widget( $args, $instance ) {
30
- $title = apply_filters( 'widget_title', $instance[ 'title' ] );
31
- $form_id = $instance[ 'form_id' ];
 
 
 
32
 
33
  echo $args[ 'before_widget' ];
34
 
27
  *
28
  */
29
  public function widget( $args, $instance ) {
30
+ $title = ( isset( $instance['title'] ) ) ? $instance['title'] : '';
31
+ $form_id = ( isset( $instance['form_id'] ) ) ? $instance['form_id'] : '';
32
+
33
+ $title = apply_filters( 'widget_title', $title );
34
+
35
 
36
  echo $args[ 'before_widget' ];
37
 
inc/classes/class-message-admin.php CHANGED
@@ -157,7 +157,7 @@ class HappyForms_Message_Admin {
157
  $post_type = happyforms_get_message_controller()->post_type;
158
 
159
  if ( 'post.php' === $pagenow && $post_type === get_post_type() ) {
160
- $title = __( 'View message #') . $post->ID;
161
  }
162
  }
163
 
@@ -179,26 +179,26 @@ class HappyForms_Message_Admin {
179
  $view_form_link_html = sprintf(
180
  ' <a href="%1$s">%2$s</a>',
181
  esc_url( $permalink ),
182
- __( 'View message' )
183
  );
184
  $preview_post_link_html = sprintf(
185
  ' <a target="_blank" href="%1$s">%2$s</a>',
186
  esc_url( $preview_url ),
187
- __( 'Preview message' )
188
  );
189
 
190
  $messages[$post_type] = array(
191
  '',
192
- __( 'Message updated.' ) . $view_form_link_html,
193
  __( 'Custom field updated.' ),
194
  __( 'Custom field deleted.' ),
195
- __( 'Message updated.' ),
196
- isset($_GET['revision']) ? sprintf( __( 'Message restored to revision from %s.' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
197
- __( 'Message published.' ) . $view_form_link_html,
198
- __( 'Message saved.' ),
199
- __( 'Message submitted.' ),
200
- __( 'Message scheduled.' ),
201
- __( 'Message draft updated.' ) . $preview_post_link_html,
202
  );
203
 
204
  return $messages;
@@ -221,11 +221,11 @@ class HappyForms_Message_Admin {
221
  $post_type = happyforms_get_message_controller()->post_type;
222
 
223
  $messages[$post_type] = array(
224
- 'updated' => _n( '%s message updated.', '%s messages updated.', $count['updated'] ),
225
- 'locked' => _n( '%s message not updated, somebody is editing it.', '%s messages not updated, somebody is editing them.', $count['locked'] ),
226
- 'deleted' => _n( '%s message permanently deleted.', '%s messages permanently deleted.', $count['deleted'] ),
227
- 'trashed' => _n( '%s message moved to the Trash.', '%s messages moved to the Trash.', $count['trashed'] ),
228
- 'untrashed' => _n( '%s message restored from the Trash.', '%s messages restored from the Trash.', $count['untrashed'] ),
229
  );
230
 
231
  return $messages;
@@ -274,7 +274,7 @@ class HappyForms_Message_Admin {
274
  ob_start(); ?>
275
  <fieldset class="screen-options">
276
  <legend><?php _e( 'Fields' ); ?></legend>
277
- <label for=""><?php _e( 'Number of message fields to show:' ); ?></label>
278
  <input type="number" min="1" max="99" maxlength="2" name="<?php echo $this->column_count_option; ?>" value="<?php echo esc_attr( $this->column_count ); ?>">
279
  <input type="hidden" name="wp_screen_options[option]" value="<?php echo $this->column_count_option; ?>">
280
  <input type="hidden" name="wp_screen_options[value]" value="1">
@@ -373,7 +373,7 @@ class HappyForms_Message_Admin {
373
  $part_id = $form['parts'][$column_index]['id'];
374
 
375
  if ( isset( $message['parts'][$part_id] ) ) {
376
- echo $message['parts'][$part_id]['value'];
377
  }
378
  }
379
  }
@@ -442,8 +442,7 @@ class HappyForms_Message_Admin {
442
  }
443
 
444
  $first_form_part = $form['parts'][0];
445
- $part_id = $first_form_part['id'];
446
- $title = $message['parts'][$part_id]['label'];
447
 
448
  return $title;
449
  }
157
  $post_type = happyforms_get_message_controller()->post_type;
158
 
159
  if ( 'post.php' === $pagenow && $post_type === get_post_type() ) {
160
+ $title = __( 'View response #') . $post->ID;
161
  }
162
  }
163
 
179
  $view_form_link_html = sprintf(
180
  ' <a href="%1$s">%2$s</a>',
181
  esc_url( $permalink ),
182
+ __( 'View response' )
183
  );
184
  $preview_post_link_html = sprintf(
185
  ' <a target="_blank" href="%1$s">%2$s</a>',
186
  esc_url( $preview_url ),
187
+ __( 'Preview response' )
188
  );
189
 
190
  $messages[$post_type] = array(
191
  '',
192
+ __( 'Response updated.' ) . $view_form_link_html,
193
  __( 'Custom field updated.' ),
194
  __( 'Custom field deleted.' ),
195
+ __( 'Response updated.' ),
196
+ isset($_GET['revision']) ? sprintf( __( 'Response restored to revision from %s.' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
197
+ __( 'Response published.' ) . $view_form_link_html,
198
+ __( 'Response saved.' ),
199
+ __( 'Response submitted.' ),
200
+ __( 'Response scheduled.' ),
201
+ __( 'Response draft updated.' ) . $preview_post_link_html,
202
  );
203
 
204
  return $messages;
221
  $post_type = happyforms_get_message_controller()->post_type;
222
 
223
  $messages[$post_type] = array(
224
+ 'updated' => _n( '%s response updated.', '%s responses updated.', $count['updated'] ),
225
+ 'locked' => _n( '%s response not updated, somebody is editing it.', '%s responses not updated, somebody is editing them.', $count['locked'] ),
226
+ 'deleted' => _n( '%s response permanently deleted.', '%s responses permanently deleted.', $count['deleted'] ),
227
+ 'trashed' => _n( '%s response moved to the Trash.', '%s responses moved to the Trash.', $count['trashed'] ),
228
+ 'untrashed' => _n( '%s response restored from the Trash.', '%s responses restored from the Trash.', $count['untrashed'] ),
229
  );
230
 
231
  return $messages;
274
  ob_start(); ?>
275
  <fieldset class="screen-options">
276
  <legend><?php _e( 'Fields' ); ?></legend>
277
+ <label for=""><?php _e( 'Number of response fields to show:' ); ?></label>
278
  <input type="number" min="1" max="99" maxlength="2" name="<?php echo $this->column_count_option; ?>" value="<?php echo esc_attr( $this->column_count ); ?>">
279
  <input type="hidden" name="wp_screen_options[option]" value="<?php echo $this->column_count_option; ?>">
280
  <input type="hidden" name="wp_screen_options[value]" value="1">
373
  $part_id = $form['parts'][$column_index]['id'];
374
 
375
  if ( isset( $message['parts'][$part_id] ) ) {
376
+ echo happyforms_get_message_part_value( $message['parts'][$part_id] );
377
  }
378
  }
379
  }
442
  }
443
 
444
  $first_form_part = $form['parts'][0];
445
+ $title = $first_form_part['label'];
 
446
 
447
  return $title;
448
  }
inc/classes/class-message-controller.php CHANGED
@@ -150,15 +150,15 @@ class HappyForms_Message_Controller {
150
  */
151
  public function register_post_type() {
152
  $labels = array(
153
- 'name' => __( 'All Messages', 'happyforms' ),
154
- 'singular_name' => __( 'Message', 'happyforms' ),
155
- 'edit_item' => __( 'Edit message', 'happyforms' ),
156
- 'view_item' => __( 'View message', 'happyforms' ),
157
- 'view_items' => __( 'View messages', 'happyforms' ),
158
- 'search_items' => __( 'Search Messages', 'happyforms' ),
159
- 'not_found' => __( 'No message found', 'happyforms' ),
160
- 'not_found_in_trash' => __( 'No message found in Trash', 'happyforms' ),
161
- 'all_items' => __( 'All Messages', 'happyforms' ),
162
  );
163
 
164
  $args = array(
150
  */
151
  public function register_post_type() {
152
  $labels = array(
153
+ 'name' => __( 'All Responses', 'happyforms' ),
154
+ 'singular_name' => __( 'Response', 'happyforms' ),
155
+ 'edit_item' => __( 'Edit response', 'happyforms' ),
156
+ 'view_item' => __( 'View response', 'happyforms' ),
157
+ 'view_items' => __( 'View Responses', 'happyforms' ),
158
+ 'search_items' => __( 'Search Responses', 'happyforms' ),
159
+ 'not_found' => __( 'No response found', 'happyforms' ),
160
+ 'not_found_in_trash' => __( 'No response found in Trash', 'happyforms' ),
161
+ 'all_items' => __( 'All Responses', 'happyforms' ),
162
  );
163
 
164
  $args = array(
inc/templates/admin-message-edit.php CHANGED
@@ -7,16 +7,16 @@ if ( ! $form ) {
7
  ?>
8
  <table class="form-table happyforms-message-data-table">
9
  <tbody>
10
- <?php $tr = 0; foreach ( $message['parts'] as $part_id => $part_data ): ?>
11
- <tr <?php if ($tr % 2 == 0) : ?>class="alternate"<?php endif; ?>>
12
- <th scope="row"><?php echo esc_html( $part_data['label'] ); ?></th>
13
- <td><?php echo esc_html( $part_data['value'] ); ?></td>
14
  </tr>
15
- <?php $tr ++; endforeach; ?>
16
  </tbody>
17
  </table>
18
  <p class="happyforms-message-nav">
19
- <?php happyforms_previous_message_edit_link( $post->ID, __( 'Previous message' ) ); ?>
20
  <span class="divider">|</span>
21
- <?php happyforms_next_message_edit_link( $post->ID, __( 'Next message' ) ); ?>
22
  </p>
7
  ?>
8
  <table class="form-table happyforms-message-data-table">
9
  <tbody>
10
+ <?php $index = 0; foreach ( $message['parts'] as $part_id => $part_value ): ?>
11
+ <tr <?php if ($index % 2 == 0) : ?>class="alternate"<?php endif; ?>>
12
+ <th scope="row"><?php echo esc_html( $form['parts'][$index]['label'] ); ?></th>
13
+ <td><?php echo happyforms_get_message_part_value( $part_value ); ?></td>
14
  </tr>
15
+ <?php $index ++; endforeach; ?>
16
  </tbody>
17
  </table>
18
  <p class="happyforms-message-nav">
19
+ <?php happyforms_previous_message_edit_link( $post->ID, __( 'Previous response' ) ); ?>
20
  <span class="divider">|</span>
21
+ <?php happyforms_next_message_edit_link( $post->ID, __( 'Next response' ) ); ?>
22
  </p>
inc/templates/customize-form-part-footer.php CHANGED
@@ -2,7 +2,8 @@
2
  <div class="happyforms-widget-actions">
3
  <a href="#" class="happyforms-form-part-remove"><?php _e( 'Delete', 'happyforms' ); ?></a> |
4
  <a href="#" class="happyforms-form-part-duplicate"><?php _e( 'Duplicate', 'happyforms' ); ?></a> |
5
- <a href="#" class="happyforms-form-part-close"><?php _e( 'Close', 'happyforms' ); ?></a>
 
6
  </div>
7
  </div>
8
  </div>
2
  <div class="happyforms-widget-actions">
3
  <a href="#" class="happyforms-form-part-remove"><?php _e( 'Delete', 'happyforms' ); ?></a> |
4
  <a href="#" class="happyforms-form-part-duplicate"><?php _e( 'Duplicate', 'happyforms' ); ?></a> |
5
+ <a href="#" class="happyforms-form-part-close"><?php _e( 'Done', 'happyforms' ); ?></a>
6
+ <a href="#" class="happyforms-form-part-advanced-settings"><?php _e( 'Advanced', 'happyforms' ); ?></a>
7
  </div>
8
  </div>
9
  </div>
inc/templates/parts/customize-address.php CHANGED
@@ -6,7 +6,7 @@
6
  </p>
7
  <p>
8
  <label for="<%= instance.id %>_label_placement"><?php _e( 'Title placement', 'happyforms' ); ?></label>
9
- <select id="<%= instance.id %>_label_placement" data-bind="label_placement">
10
  <option value="above"<%= (instance.label_placement == 'above') ? ' selected' : '' %>><?php _e( 'Above', 'happyforms' ); ?></option>
11
  <option value="left"<%= (instance.label_placement == 'left') ? ' selected' : '' %>><?php _e( 'Left', 'happyforms' ); ?></option>
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
@@ -32,14 +32,6 @@
32
  <label for="<%= instance.id %>_placeholder"><?php _e( 'Placeholder', 'happyforms' ); ?></label>
33
  <input type="text" id="<%= instance.id %>_placeholder" class="widefat title" value="<%= instance.placeholder %>" data-bind="placeholder" />
34
  </p>
35
- <p>
36
- <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
37
- <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
38
- <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
39
- <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
40
- <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
41
- </select>
42
- </p>
43
  <p>
44
  <label for="<%= instance.id %>_mode"><?php _e( 'Mode', 'happyforms' ); ?></label>
45
  <select id="<%= instance.id %>_mode" name="mode" data-bind="mode" class="widefat">
@@ -72,14 +64,24 @@
72
  ); ?>
73
  </p>
74
  </div>
75
- <p>
76
- <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
77
- <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
78
- </p>
79
  <p>
80
  <label>
81
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
82
  </label>
83
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
85
  </script>
6
  </p>
7
  <p>
8
  <label for="<%= instance.id %>_label_placement"><?php _e( 'Title placement', 'happyforms' ); ?></label>
9
+ <select id="<%= instance.id %>_label_placement" data-bind="label_placement"<%= ( instance.mode == 'country-city' ) ? ' disabled="disabled"' : '' %>>
10
  <option value="above"<%= (instance.label_placement == 'above') ? ' selected' : '' %>><?php _e( 'Above', 'happyforms' ); ?></option>
11
  <option value="left"<%= (instance.label_placement == 'left') ? ' selected' : '' %>><?php _e( 'Left', 'happyforms' ); ?></option>
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
32
  <label for="<%= instance.id %>_placeholder"><?php _e( 'Placeholder', 'happyforms' ); ?></label>
33
  <input type="text" id="<%= instance.id %>_placeholder" class="widefat title" value="<%= instance.placeholder %>" data-bind="placeholder" />
34
  </p>
 
 
 
 
 
 
 
 
35
  <p>
36
  <label for="<%= instance.id %>_mode"><?php _e( 'Mode', 'happyforms' ); ?></label>
37
  <select id="<%= instance.id %>_mode" name="mode" data-bind="mode" class="widefat">
64
  ); ?>
65
  </p>
66
  </div>
 
 
 
 
67
  <p>
68
  <label>
69
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
70
  </label>
71
  </p>
72
+ <div class="happyforms-part-advanced-settings-wrap">
73
+ <p>
74
+ <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
75
+ <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
76
+ <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
77
+ <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
78
+ <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
79
+ </select>
80
+ </p>
81
+ <p>
82
+ <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
83
+ <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
84
+ </p>
85
+ </div>
86
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
87
  </script>
inc/templates/parts/customize-checkbox.php CHANGED
@@ -26,30 +26,6 @@
26
  <input type="checkbox" class="checkbox" value="1" data-bind="tooltip_description" <% if ( instance.tooltip_description ) { %>checked="checked"<% } %> /> <?php _e( 'Show description in a tooltip', 'happyforms' ); ?>
27
  </label>
28
  </p>
29
- <p>
30
- <label for="<%= instance.id %>_display_type"><?php _e( 'Display options', 'happyforms' ); ?></label>
31
- <select id="<%= instance.id %>_display_type" name="display_type" data-bind="display_type" class="widefat">
32
- <option value="inline"<%= (instance.display_type == 'inline') ? ' selected' : '' %>><?php _e( 'Horizontal', 'happyforms' ); ?></option>
33
- <option value="block"<%= (instance.display_type == 'block') ? ' selected' : '' %>><?php _e( 'Vertical', 'happyforms' ); ?></option>
34
- </select>
35
- </p>
36
- <p>
37
- <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
38
- <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
39
- <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
40
- <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
41
- <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
42
- </select>
43
- </p>
44
- <p class="width-options" style="display: none">
45
- <label>
46
- <input type="checkbox" class="checkbox apply-all-check" value="" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
47
- </label>
48
- </p>
49
- <p>
50
- <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
51
- <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
52
- </p>
53
  <p>
54
  <label>
55
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
@@ -63,6 +39,32 @@
63
  <p class="links">
64
  <a href="#" class="add-option"><?php _e( 'Add option', 'happyforms' ); ?></a>
65
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
67
  </script>
68
  <script type="text/template" id="customize-happyforms-checkbox-item-template">
26
  <input type="checkbox" class="checkbox" value="1" data-bind="tooltip_description" <% if ( instance.tooltip_description ) { %>checked="checked"<% } %> /> <?php _e( 'Show description in a tooltip', 'happyforms' ); ?>
27
  </label>
28
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  <p>
30
  <label>
31
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
39
  <p class="links">
40
  <a href="#" class="add-option"><?php _e( 'Add option', 'happyforms' ); ?></a>
41
  </p>
42
+ <div class="happyforms-part-advanced-settings-wrap">
43
+ <p>
44
+ <label for="<%= instance.id %>_display_type"><?php _e( 'Display options', 'happyforms' ); ?></label>
45
+ <select id="<%= instance.id %>_display_type" name="display_type" data-bind="display_type" class="widefat">
46
+ <option value="inline"<%= (instance.display_type == 'inline') ? ' selected' : '' %>><?php _e( 'Horizontal', 'happyforms' ); ?></option>
47
+ <option value="block"<%= (instance.display_type == 'block') ? ' selected' : '' %>><?php _e( 'Vertical', 'happyforms' ); ?></option>
48
+ </select>
49
+ </p>
50
+ <p>
51
+ <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
52
+ <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
53
+ <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
54
+ <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
55
+ <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
56
+ </select>
57
+ </p>
58
+ <p class="width-options" style="display: none">
59
+ <label>
60
+ <input type="checkbox" class="checkbox apply-all-check" value="" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
61
+ </label>
62
+ </p>
63
+ <p>
64
+ <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
65
+ <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
66
+ </p>
67
+ </div>
68
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
69
  </script>
70
  <script type="text/template" id="customize-happyforms-checkbox-item-template">
inc/templates/parts/customize-date.php CHANGED
@@ -41,58 +41,60 @@
41
  <option value="current"<%= (instance.default_datetime == 'current') ? ' selected' : '' %>><?php _e( 'Current date and time', 'happyforms' ); ?></option>
42
  </select>
43
  </p>
44
- <div class="date-options happyforms-customize-controls-wrap--side-by-side"<%= (instance.date_type == 'time') ? ' style="display: none"' : '' %>>
45
- <p>
46
- <label for="<%= instance.id %>min_year"><?php _e( 'Min year', 'happyforms' ); ?></label>
47
- <input type="number" id="<%= instance.id %>min_year" data-bind="min_year" value="<%= instance.min_year %>">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  </p>
49
- <p>
50
- <label for="<%= instance.id %>_max_year"><?php _e( 'Max year', 'happyforms' ); ?></label>
51
- <input type="number" id="<%= instance.id %>_max_year" data-bind="max_year" min="<%= instance.min_year %>" max="<?php echo date( 'Y' ) + 2; ?>" value="<%= instance.max_year %>">
 
 
 
52
  </p>
53
- </div>
54
- <div class="time-options happyforms-customize-controls-wrap--side-by-side"<%= (instance.date_type == 'date') ? ' style="display: none"' : '' %>>
55
  <p>
56
- <label for="<%= instance.id %>_min_hour"><?php _e( 'Min hour', 'happyforms' ); ?></label>
57
- <input type="number" id="<%= instance.id %>_min_hour" data-bind="min_hour" value="<%= instance.min_hour %>">
 
 
 
 
 
 
 
 
 
58
  </p>
59
  <p>
60
- <label for="<%= instance.id %>_max_hour"><?php _e( 'Max hour', 'happyforms' ); ?></label>
61
- <input type="number" id="<%= instance.id %>_max_hour" data-bind="max_hour" min="<%= instance.max_hour %>" max="<?php echo date( 'Y' ) + 2; ?>" value="<%= instance.max_hour %>">
62
  </p>
63
  </div>
64
- <p class="time-options">
65
- <label for="<%= instance.id %>_minute_step"><?php _e( 'Minute step', 'happyforms' ); ?></label>
66
- <input type="number" id="<%= instance.id %>_minute_step" min="0" max="30" step="15" data-bind="minute_step" value="<%= instance.minute_step %>">
67
- </p>
68
- <p class="time-options"<%= (instance.date_type == 'date') ? ' style="display: none"' : '' %>>
69
- <label for="<%= instance.id %>_time_format"><?php _e( 'Time format', 'happyforms' ); ?></label>
70
- <select id="<%= instance.id %>_time_format" name="time_format" data-bind="time_format" class="widefat">
71
- <option value="12"<%= (instance.time_format == '12') ? ' selected' : '' %>><?php _e( '12h', 'happyforms' ); ?></option>
72
- <option value="24"<%= (instance.time_format == '24') ? ' selected' : '' %>><?php _e( '24h', 'happyforms' ); ?></option>
73
- </select>
74
- </p>
75
- <p>
76
- <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
77
- <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
78
- <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
79
- <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
80
- <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
81
- </select>
82
- </p>
83
- <p class="width-options" style="display: none">
84
- <label>
85
- <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
86
- </label>
87
- </p>
88
- <p>
89
- <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
90
- <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
91
- </p>
92
- <p>
93
- <label>
94
- <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
95
- </label>
96
- </p>
97
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
98
  </script>
41
  <option value="current"<%= (instance.default_datetime == 'current') ? ' selected' : '' %>><?php _e( 'Current date and time', 'happyforms' ); ?></option>
42
  </select>
43
  </p>
44
+ <p>
45
+ <label>
46
+ <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
47
+ </label>
48
+ </p>
49
+ <div class="happyforms-part-advanced-settings-wrap">
50
+ <div class="date-options happyforms-customize-controls-wrap--side-by-side"<%= (instance.date_type == 'time') ? ' style="display: none"' : '' %>>
51
+ <p>
52
+ <label for="<%= instance.id %>min_year"><?php _e( 'Min year', 'happyforms' ); ?></label>
53
+ <input type="number" id="<%= instance.id %>min_year" data-bind="min_year" value="<%= instance.min_year %>">
54
+ </p>
55
+ <p>
56
+ <label for="<%= instance.id %>_max_year"><?php _e( 'Max year', 'happyforms' ); ?></label>
57
+ <input type="number" id="<%= instance.id %>_max_year" data-bind="max_year" min="<%= instance.min_year %>" max="<?php echo date( 'Y' ) + 2; ?>" value="<%= instance.max_year %>">
58
+ </p>
59
+ </div>
60
+ <div class="time-options happyforms-customize-controls-wrap--side-by-side"<%= (instance.date_type == 'date') ? ' style="display: none"' : '' %>>
61
+ <p>
62
+ <label for="<%= instance.id %>_min_hour"><?php _e( 'Min hour', 'happyforms' ); ?></label>
63
+ <input type="number" id="<%= instance.id %>_min_hour" data-bind="min_hour" value="<%= instance.min_hour %>">
64
+ </p>
65
+ <p>
66
+ <label for="<%= instance.id %>_max_hour"><?php _e( 'Max hour', 'happyforms' ); ?></label>
67
+ <input type="number" id="<%= instance.id %>_max_hour" data-bind="max_hour" min="<%= instance.max_hour %>" max="<?php echo date( 'Y' ) + 2; ?>" value="<%= instance.max_hour %>">
68
+ </p>
69
+ </div>
70
+ <p class="time-options">
71
+ <label for="<%= instance.id %>_minute_step"><?php _e( 'Minute step', 'happyforms' ); ?></label>
72
+ <input type="number" id="<%= instance.id %>_minute_step" min="0" max="30" step="15" data-bind="minute_step" value="<%= instance.minute_step %>">
73
  </p>
74
+ <p class="time-options"<%= (instance.date_type == 'date') ? ' style="display: none"' : '' %>>
75
+ <label for="<%= instance.id %>_time_format"><?php _e( 'Time format', 'happyforms' ); ?></label>
76
+ <select id="<%= instance.id %>_time_format" name="time_format" data-bind="time_format" class="widefat">
77
+ <option value="12"<%= (instance.time_format == '12') ? ' selected' : '' %>><?php _e( '12h', 'happyforms' ); ?></option>
78
+ <option value="24"<%= (instance.time_format == '24') ? ' selected' : '' %>><?php _e( '24h', 'happyforms' ); ?></option>
79
+ </select>
80
  </p>
 
 
81
  <p>
82
+ <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
83
+ <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
84
+ <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
85
+ <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
86
+ <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
87
+ </select>
88
+ </p>
89
+ <p class="width-options" style="display: none">
90
+ <label>
91
+ <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
92
+ </label>
93
  </p>
94
  <p>
95
+ <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
96
+ <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
97
  </p>
98
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
100
  </script>
inc/templates/parts/customize-email.php CHANGED
@@ -32,36 +32,38 @@
32
  <label for="<%= instance.id %>_placeholder"><?php _e( 'Placeholder', 'happyforms' ); ?></label>
33
  <input type="text" id="<%= instance.id %>_placeholder" class="widefat title" value="<%= instance.placeholder %>" data-bind="placeholder" />
34
  </p>
35
- <p>
36
- <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
37
- <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
38
- <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
39
- <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
40
- <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
41
- </select>
42
- </p>
43
- <p class="width-options" style="display: none">
44
- <label>
45
- <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
46
- </label>
47
- </p>
48
- <p>
49
- <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
50
- <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
51
- </p>
52
- <p>
53
- <label>
54
- <input type="checkbox" class="checkbox confirmation-checkbox" value="1" <% if ( instance.confirmation_field ) { %>checked="checked"<% } %> data-bind="confirmation_field" /> <?php _e( 'Require confirmation of the value', 'happyforms' ); ?>
55
- </label>
56
- </p>
57
- <p class="confirmation-field-setting" style="display: <%= (instance.confirmation_field == 1) ? 'block' : 'none' %>">
58
- <label for="<%= instance.id %>_confirmation_field_label"><?php _e( 'Confirmation field title', 'happyforms' ); ?></label>
59
- <input type="text" id="<%= instance.id %>_confirmation_field_label" class="widefat title" value="<%= instance.confirmation_field_label %>" data-bind="confirmation_field_label" />
60
- </p>
61
  <p>
62
  <label>
63
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
64
  </label>
65
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
67
  </script>
32
  <label for="<%= instance.id %>_placeholder"><?php _e( 'Placeholder', 'happyforms' ); ?></label>
33
  <input type="text" id="<%= instance.id %>_placeholder" class="widefat title" value="<%= instance.placeholder %>" data-bind="placeholder" />
34
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  <p>
36
  <label>
37
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
38
  </label>
39
  </p>
40
+ <div class="happyforms-part-advanced-settings-wrap">
41
+ <p>
42
+ <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
43
+ <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
44
+ <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
45
+ <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
46
+ <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
47
+ </select>
48
+ </p>
49
+ <p class="width-options" style="display: none">
50
+ <label>
51
+ <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
52
+ </label>
53
+ </p>
54
+ <p>
55
+ <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
56
+ <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
57
+ </p>
58
+ <p>
59
+ <label>
60
+ <input type="checkbox" class="checkbox confirmation-checkbox" value="1" <% if ( instance.confirmation_field ) { %>checked="checked"<% } %> data-bind="confirmation_field" /> <?php _e( 'Require confirmation of the value', 'happyforms' ); ?>
61
+ </label>
62
+ </p>
63
+ <p class="confirmation-field-setting" style="display: <%= (instance.confirmation_field == 1) ? 'block' : 'none' %>">
64
+ <label for="<%= instance.id %>_confirmation_field_label"><?php _e( 'Confirmation field title', 'happyforms' ); ?></label>
65
+ <input type="text" id="<%= instance.id %>_confirmation_field_label" class="widefat title" value="<%= instance.confirmation_field_label %>" data-bind="confirmation_field_label" />
66
+ </p>
67
+ </div>
68
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
69
  </script>
inc/templates/parts/customize-legal.php CHANGED
@@ -11,10 +11,12 @@
11
  <p>
12
  <label for="<%= instance.id %>_legal_text"><?php _e( 'Legal text', 'happyforms' ); ?></label>
13
  <textarea id="<%= instance.id %>_legal_text" rows="5" name="legal_text" data-bind="legal_text" class="widefat"><%= instance.legal_text %></textarea>
14
- </p>
15
- <p>
16
- <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
17
- <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
18
  </p>
 
 
 
 
 
 
19
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
20
  </script>
11
  <p>
12
  <label for="<%= instance.id %>_legal_text"><?php _e( 'Legal text', 'happyforms' ); ?></label>
13
  <textarea id="<%= instance.id %>_legal_text" rows="5" name="legal_text" data-bind="legal_text" class="widefat"><%= instance.legal_text %></textarea>
 
 
 
 
14
  </p>
15
+ <div class="happyforms-part-advanced-settings-wrap">
16
+ <p>
17
+ <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
18
+ <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
19
+ </p>
20
+ </div>
21
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
22
  </script>
inc/templates/parts/customize-multi-line-text.php CHANGED
@@ -32,27 +32,29 @@
32
  <label for="<%= instance.id %>_placeholder"><?php _e( 'Placeholder', 'happyforms' ); ?></label>
33
  <input type="text" id="<%= instance.id %>_placeholder" class="widefat title" value="<%= instance.placeholder %>" data-bind="placeholder" />
34
  </p>
35
- <p>
36
- <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
37
- <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
38
- <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
39
- <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
40
- <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
41
- </select>
42
- </p>
43
- <p class="width-options" style="display: none">
44
- <label>
45
- <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
46
- </label>
47
- </p>
48
- <p>
49
- <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
50
- <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
51
- </p>
52
  <p>
53
  <label>
54
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
55
  </label>
56
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
58
  </script>
32
  <label for="<%= instance.id %>_placeholder"><?php _e( 'Placeholder', 'happyforms' ); ?></label>
33
  <input type="text" id="<%= instance.id %>_placeholder" class="widefat title" value="<%= instance.placeholder %>" data-bind="placeholder" />
34
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  <p>
36
  <label>
37
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
38
  </label>
39
  </p>
40
+ <div class="happyforms-part-advanced-settings-wrap">
41
+ <p>
42
+ <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
43
+ <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
44
+ <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
45
+ <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
46
+ <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
47
+ </select>
48
+ </p>
49
+ <p class="width-options" style="display: none">
50
+ <label>
51
+ <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
52
+ </label>
53
+ </p>
54
+ <p>
55
+ <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
56
+ <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
57
+ </p>
58
+ </div>
59
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
60
  </script>
inc/templates/parts/customize-number.php CHANGED
@@ -32,7 +32,7 @@
32
  <label for="<%= instance.id %>_placeholder"><?php _e( 'Placeholder', 'happyforms' ); ?></label>
33
  <input type="text" id="<%= instance.id %>_placeholder" class="widefat title" value="<%= instance.placeholder %>" data-bind="placeholder" />
34
  </p>
35
- <div class="min-max-wrapper" style="display: <%= (instance.masked == 0) ? 'block' : 'none' %>">
36
  <p>
37
  <label for="<%= instance.id %>_min_value"><?php _e( 'Minimum accepted value', 'happyforms' ); ?></label>
38
  <input type="text" id="<%= instance.id %>_min_value" class="widefat title" value="<%= instance.min_value %>" data-bind="min_value" />
@@ -44,53 +44,55 @@
44
  </div>
45
  <p>
46
  <label>
47
- <input type="checkbox" name="masked" class="checkbox" value="1" <% if ( instance.masked ) { %>checked="checked"<% } %> data-bind="masked" /> <?php _e( 'Mask this input', 'happyforms' ); ?>
48
  </label>
49
  </p>
50
- <div class="mask-wrapper number-options number-options--numeric" style="display: <%= (instance.masked == 1) ? 'block' : 'none' %>">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  <p>
52
- <label for="<%= instance.id %>_mask_numeric_thousands_delimiter"><?php _e( 'Thousands delimiter', 'happyforms' ); ?></label>
53
- <input type="text" id="<%= instance.id %>_mask_numeric_thousands_delimiter" class="widefat title" value="<%= instance.mask_numeric_thousands_delimiter %>" data-bind="mask_numeric_thousands_delimiter" />
 
 
 
 
 
 
 
 
 
54
  </p>
55
  <p>
56
- <label for="<%= instance.id %>_mask_numeric_decimal_mark"><?php _e( 'Decimal mark', 'happyforms' ); ?></label>
57
- <input type="text" id="<%= instance.id %>_mask_numeric_decimal_mark" class="widefat title" value="<%= instance.mask_numeric_decimal_mark %>" data-bind="mask_numeric_decimal_mark" />
58
  </p>
59
  <p>
60
- <label for="<%= instance.id %>_mask_numeric_prefix"><?php _e( 'Prefix', 'happyforms' ); ?></label>
61
- <input type="text" id="<%= instance.id %>_mask_numeric_prefix" class="widefat title" value="<%= instance.mask_numeric_prefix %>" data-bind="mask_numeric_prefix" />
 
 
 
 
 
62
  </p>
63
  </div>
64
- <p>
65
- <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
66
- <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
67
- <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
68
- <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
69
- <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
70
- </select>
71
- </p>
72
- <p class="width-options" style="display: none">
73
- <label>
74
- <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
75
- </label>
76
- </p>
77
- <p>
78
- <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
79
- <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
80
- </p>
81
- <p>
82
- <label>
83
- <input type="checkbox" class="checkbox confirmation-checkbox" value="1" <% if ( instance.confirmation_field ) { %>checked="checked"<% } %> data-bind="confirmation_field" /> <?php _e( 'Require confirmation of the value', 'happyforms' ); ?>
84
- </label>
85
- </p>
86
- <p class="confirmation-field-setting" style="display: <%= (instance.confirmation_field == 1) ? 'block' : 'none' %>">
87
- <label for="<%= instance.id %>_confirmation_field_label"><?php _e( 'Confirmation field title', 'happyforms' ); ?></label>
88
- <input type="text" id="<%= instance.id %>_confirmation_field_label" class="widefat title" value="<%= instance.confirmation_field_label %>" data-bind="confirmation_field_label" />
89
- </p>
90
- <p>
91
- <label>
92
- <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
93
- </label>
94
- </p>
95
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
96
  </script>
32
  <label for="<%= instance.id %>_placeholder"><?php _e( 'Placeholder', 'happyforms' ); ?></label>
33
  <input type="text" id="<%= instance.id %>_placeholder" class="widefat title" value="<%= instance.placeholder %>" data-bind="placeholder" />
34
  </p>
35
+ <div class="min-max-wrapper happyforms-customize-controls-wrap--side-by-side" style="display: <%= (instance.masked == 0) ? 'flex' : 'none' %>">
36
  <p>
37
  <label for="<%= instance.id %>_min_value"><?php _e( 'Minimum accepted value', 'happyforms' ); ?></label>
38
  <input type="text" id="<%= instance.id %>_min_value" class="widefat title" value="<%= instance.min_value %>" data-bind="min_value" />
44
  </div>
45
  <p>
46
  <label>
47
+ <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
48
  </label>
49
  </p>
50
+ <div class="happyforms-part-advanced-settings-wrap">
51
+ <p>
52
+ <label>
53
+ <input type="checkbox" name="masked" class="checkbox" value="1" <% if ( instance.masked ) { %>checked="checked"<% } %> data-bind="masked" /> <?php _e( 'Mask this input', 'happyforms' ); ?>
54
+ </label>
55
+ </p>
56
+ <div class="mask-wrapper number-options number-options--numeric" style="display: <%= (instance.masked == 1) ? 'block' : 'none' %>">
57
+ <p>
58
+ <label for="<%= instance.id %>_mask_numeric_thousands_delimiter"><?php _e( 'Thousands delimiter', 'happyforms' ); ?></label>
59
+ <input type="text" id="<%= instance.id %>_mask_numeric_thousands_delimiter" class="widefat title" value="<%= instance.mask_numeric_thousands_delimiter %>" data-bind="mask_numeric_thousands_delimiter" />
60
+ </p>
61
+ <p>
62
+ <label for="<%= instance.id %>_mask_numeric_decimal_mark"><?php _e( 'Decimal mark', 'happyforms' ); ?></label>
63
+ <input type="text" id="<%= instance.id %>_mask_numeric_decimal_mark" class="widefat title" value="<%= instance.mask_numeric_decimal_mark %>" data-bind="mask_numeric_decimal_mark" />
64
+ </p>
65
+ <p>
66
+ <label for="<%= instance.id %>_mask_numeric_prefix"><?php _e( 'Prefix', 'happyforms' ); ?></label>
67
+ <input type="text" id="<%= instance.id %>_mask_numeric_prefix" class="widefat title" value="<%= instance.mask_numeric_prefix %>" data-bind="mask_numeric_prefix" />
68
+ </p>
69
+ </div>
70
  <p>
71
+ <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
72
+ <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
73
+ <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
74
+ <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
75
+ <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
76
+ </select>
77
+ </p>
78
+ <p class="width-options" style="display: none">
79
+ <label>
80
+ <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
81
+ </label>
82
  </p>
83
  <p>
84
+ <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
85
+ <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
86
  </p>
87
  <p>
88
+ <label>
89
+ <input type="checkbox" class="checkbox confirmation-checkbox" value="1" <% if ( instance.confirmation_field ) { %>checked="checked"<% } %> data-bind="confirmation_field" /> <?php _e( 'Require confirmation of the value', 'happyforms' ); ?>
90
+ </label>
91
+ </p>
92
+ <p class="confirmation-field-setting" style="display: <%= (instance.confirmation_field == 1) ? 'block' : 'none' %>">
93
+ <label for="<%= instance.id %>_confirmation_field_label"><?php _e( 'Confirmation field title', 'happyforms' ); ?></label>
94
+ <input type="text" id="<%= instance.id %>_confirmation_field_label" class="widefat title" value="<%= instance.confirmation_field_label %>" data-bind="confirmation_field_label" />
95
  </p>
96
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
98
  </script>
inc/templates/parts/customize-phone.php CHANGED
@@ -34,54 +34,56 @@
34
  </p>
35
  <p>
36
  <label>
37
- <input type="checkbox" name="masked" class="checkbox" value="1" <% if ( instance.masked ) { %>checked="checked"<% } %> data-bind="masked" /> <?php _e( 'Mask this input', 'happyforms' ); ?>
38
  </label>
39
  </p>
40
- <div class="number-options number-options--phone" style="display: <%= (instance.masked == 1) ? 'block' : 'none' %>">
41
  <p>
42
- <label for="<%= instance.id %>_mask_phone_country"><?php _e( 'Pre-format phone number region', 'happyforms' ); ?></label>
43
- <select id="<%= instance.id %>_mask_phone_country" class="widefat title" data-bind="mask_phone_country">
44
- <option value="">- <?php _e( 'Select', 'happyforms' ); ?> -</option>
45
- <?php
46
- $phone_countries = $this->get_phone_countries_array();
 
 
 
 
 
 
47
 
48
- foreach ( $phone_countries as $country_code => $country ) {
49
- echo '<option value="'. $country['code'] .'"<% if (instance.mask_phone_country == "'. $country['code'] .'") { %> selected<% } %>>'. ucwords( strtolower( $country['name'] ) ) .'</option>';
50
- }
51
- ?>
 
 
 
 
 
 
 
 
 
52
  </select>
53
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  </div>
55
- <p>
56
- <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
57
- <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
58
- <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
59
- <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
60
- <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
61
- </select>
62
- </p>
63
- <p class="width-options" style="display: none">
64
- <label>
65
- <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
66
- </label>
67
- </p>
68
- <p>
69
- <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
70
- <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
71
- </p>
72
- <p>
73
- <label>
74
- <input type="checkbox" class="checkbox confirmation-checkbox" value="1" <% if ( instance.confirmation_field ) { %>checked="checked"<% } %> data-bind="confirmation_field" /> <?php _e( 'Require confirmation of the value', 'happyforms' ); ?>
75
- </label>
76
- </p>
77
- <p class="confirmation-field-setting" style="display: <%= (instance.confirmation_field == 1) ? 'block' : 'none' %>">
78
- <label for="<%= instance.id %>_confirmation_field_label"><?php _e( 'Confirmation field title', 'happyforms' ); ?></label>
79
- <input type="text" id="<%= instance.id %>_confirmation_field_label" class="widefat title" value="<%= instance.confirmation_field_label %>" data-bind="confirmation_field_label" />
80
- </p>
81
- <p>
82
- <label>
83
- <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
84
- </label>
85
- </p>
86
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
87
  </script>
34
  </p>
35
  <p>
36
  <label>
37
+ <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
38
  </label>
39
  </p>
40
+ <div class="happyforms-part-advanced-settings-wrap">
41
  <p>
42
+ <label>
43
+ <input type="checkbox" name="masked" class="checkbox" value="1" <% if ( instance.masked ) { %>checked="checked"<% } %> data-bind="masked" /> <?php _e( 'Mask this input', 'happyforms' ); ?>
44
+ </label>
45
+ </p>
46
+ <div class="number-options number-options--phone" style="display: <%= (instance.masked == 1) ? 'block' : 'none' %>">
47
+ <p>
48
+ <label for="<%= instance.id %>_mask_phone_country"><?php _e( 'Pre-format phone number region', 'happyforms' ); ?></label>
49
+ <select id="<%= instance.id %>_mask_phone_country" class="widefat title" data-bind="mask_phone_country">
50
+ <option value="">- <?php _e( 'Select', 'happyforms' ); ?> -</option>
51
+ <?php
52
+ $phone_countries = $this->get_phone_countries_array();
53
 
54
+ foreach ( $phone_countries as $country_code => $country ) {
55
+ echo '<option value="'. $country['code'] .'"<% if (instance.mask_phone_country == "'. $country['code'] .'") { %> selected<% } %>>'. ucwords( strtolower( $country['name'] ) ) .'</option>';
56
+ }
57
+ ?>
58
+ </select>
59
+ </p>
60
+ </div>
61
+ <p>
62
+ <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
63
+ <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
64
+ <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
65
+ <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
66
+ <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
67
  </select>
68
  </p>
69
+ <p class="width-options" style="display: none">
70
+ <label>
71
+ <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
72
+ </label>
73
+ </p>
74
+ <p>
75
+ <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
76
+ <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
77
+ </p>
78
+ <p>
79
+ <label>
80
+ <input type="checkbox" class="checkbox confirmation-checkbox" value="1" <% if ( instance.confirmation_field ) { %>checked="checked"<% } %> data-bind="confirmation_field" /> <?php _e( 'Require confirmation of the value', 'happyforms' ); ?>
81
+ </label>
82
+ </p>
83
+ <p class="confirmation-field-setting" style="display: <%= (instance.confirmation_field == 1) ? 'block' : 'none' %>">
84
+ <label for="<%= instance.id %>_confirmation_field_label"><?php _e( 'Confirmation field title', 'happyforms' ); ?></label>
85
+ <input type="text" id="<%= instance.id %>_confirmation_field_label" class="widefat title" value="<%= instance.confirmation_field_label %>" data-bind="confirmation_field_label" />
86
+ </p>
87
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
89
  </script>
inc/templates/parts/customize-placeholder.php CHANGED
@@ -21,22 +21,24 @@
21
  <label for="<%= instance.id %>_placeholder_text"><?php _e( 'Text', 'happyforms' ); ?></label>
22
  <textarea id="<%= instance.id %>_placeholder_text" class="widefat title" name="placeholder_text" data-bind="placeholder_text"><%= instance.placeholder_text %></textarea>
23
  </p>
24
- <p>
25
- <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
26
- <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
27
- <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
28
- <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
29
- <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
30
- </select>
31
- </p>
32
- <p class="width-options" style="display: none">
33
- <label>
34
- <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
35
- </label>
36
- </p>
37
- <p>
38
- <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
39
- <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
40
- </p>
 
 
41
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
42
  </script>
21
  <label for="<%= instance.id %>_placeholder_text"><?php _e( 'Text', 'happyforms' ); ?></label>
22
  <textarea id="<%= instance.id %>_placeholder_text" class="widefat title" name="placeholder_text" data-bind="placeholder_text"><%= instance.placeholder_text %></textarea>
23
  </p>
24
+ <div class="happyforms-part-advanced-settings-wrap">
25
+ <p>
26
+ <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
27
+ <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
28
+ <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
29
+ <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
30
+ <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
31
+ </select>
32
+ </p>
33
+ <p class="width-options" style="display: none">
34
+ <label>
35
+ <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
36
+ </label>
37
+ </p>
38
+ <p>
39
+ <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
40
+ <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
41
+ </p>
42
+ </div>
43
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
44
  </script>
inc/templates/parts/customize-radio.php CHANGED
@@ -26,30 +26,6 @@
26
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.tooltip_description ) { %>checked="checked"<% } %> data-bind="tooltip_description" /> <?php _e( 'Show description in a tooltip', 'happyforms' ); ?>
27
  </label>
28
  </p>
29
- <p>
30
- <label for="<%= instance.id %>_display_type"><?php _e( 'Display options', 'happyforms' ); ?></label>
31
- <select id="<%= instance.id %>_display_type" name="display_type" data-bind="display_type" class="widefat">
32
- <option value="inline"<%= (instance.display_type == 'inline') ? ' selected' : '' %>><?php _e( 'Horizontal', 'happyforms' ); ?></option>
33
- <option value="block"<%= (instance.display_type == 'block') ? ' selected' : '' %>><?php _e( 'Vertical', 'happyforms' ); ?></option>
34
- </select>
35
- </p>
36
- <p>
37
- <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
38
- <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
39
- <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
40
- <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
41
- <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
42
- </select>
43
- </p>
44
- <p class="width-options" style="display: none">
45
- <label>
46
- <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
47
- </label>
48
- </p>
49
- <p>
50
- <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
51
- <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
52
- </p>
53
  <p>
54
  <label>
55
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
@@ -63,6 +39,32 @@
63
  <p class="links">
64
  <a href="#" class="add-option"><?php _e( 'Add option', 'happyforms' ); ?></a>
65
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
67
  </script>
68
  <script type="text/template" id="customize-happyforms-radio-item-template">
26
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.tooltip_description ) { %>checked="checked"<% } %> data-bind="tooltip_description" /> <?php _e( 'Show description in a tooltip', 'happyforms' ); ?>
27
  </label>
28
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  <p>
30
  <label>
31
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
39
  <p class="links">
40
  <a href="#" class="add-option"><?php _e( 'Add option', 'happyforms' ); ?></a>
41
  </p>
42
+ <div class="happyforms-part-advanced-settings-wrap">
43
+ <p>
44
+ <label for="<%= instance.id %>_display_type"><?php _e( 'Display options', 'happyforms' ); ?></label>
45
+ <select id="<%= instance.id %>_display_type" name="display_type" data-bind="display_type" class="widefat">
46
+ <option value="inline"<%= (instance.display_type == 'inline') ? ' selected' : '' %>><?php _e( 'Horizontal', 'happyforms' ); ?></option>
47
+ <option value="block"<%= (instance.display_type == 'block') ? ' selected' : '' %>><?php _e( 'Vertical', 'happyforms' ); ?></option>
48
+ </select>
49
+ </p>
50
+ <p>
51
+ <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
52
+ <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
53
+ <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
54
+ <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
55
+ <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
56
+ </select>
57
+ </p>
58
+ <p class="width-options" style="display: none">
59
+ <label>
60
+ <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
61
+ </label>
62
+ </p>
63
+ <p>
64
+ <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
65
+ <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
66
+ </p>
67
+ </div>
68
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
69
  </script>
70
  <script type="text/template" id="customize-happyforms-radio-item-template">
inc/templates/parts/customize-rating.php CHANGED
@@ -26,27 +26,29 @@
26
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.tooltip_description ) { %>checked="checked"<% } %> data-bind="tooltip_description" /> <?php _e( 'Show description in a tooltip', 'happyforms' ); ?>
27
  </label>
28
  </p>
29
- <p>
30
- <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
31
- <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
32
- <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
33
- <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
34
- <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
35
- </select>
36
- </p>
37
- <p class="width-options" style="display: none">
38
- <label>
39
- <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
40
- </label>
41
- </p>
42
- <p>
43
- <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
44
- <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
45
- </p>
46
  <p>
47
  <label>
48
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
49
  </label>
50
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
52
  </script>
26
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.tooltip_description ) { %>checked="checked"<% } %> data-bind="tooltip_description" /> <?php _e( 'Show description in a tooltip', 'happyforms' ); ?>
27
  </label>
28
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  <p>
30
  <label>
31
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
32
  </label>
33
  </p>
34
+ <div class="happyforms-part-advanced-settings-wrap">
35
+ <p>
36
+ <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
37
+ <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
38
+ <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
39
+ <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
40
+ <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
41
+ </select>
42
+ </p>
43
+ <p class="width-options" style="display: none">
44
+ <label>
45
+ <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
46
+ </label>
47
+ </p>
48
+ <p>
49
+ <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
50
+ <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
51
+ </p>
52
+ </div>
53
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
54
  </script>
inc/templates/parts/customize-scale.php CHANGED
@@ -27,54 +27,60 @@
27
  </label>
28
  </p>
29
  <p>
30
- <label for="<%= instance.id %>_min_label"><?php _e( 'Minimum value label', 'happyforms' ); ?></label>
31
- <input type="text" id="<%= instance.id %>_min_label" class="widefat title" value="<%= instance.min_label %>" data-bind="min_label" />
32
- </p>
33
- <p>
34
- <label for="<%= instance.id %>_max_label"><?php _e( 'Maximum value label', 'happyforms' ); ?></label>
35
- <input type="text" id="<%= instance.id %>_max_label" class="widefat title" value="<%= instance.max_label %>" data-bind="max_label" />
36
- </p>
37
- <p>
38
- <label for="<%= instance.id %>_max_value"><?php _e( 'Minimum accepted value', 'happyforms' ); ?></label>
39
- <input type="text" id="<%= instance.id %>_max_value" class="widefat title" value="<%= instance.min_value %>" data-bind="min_value" />
40
- </p>
41
- <p>
42
- <label for="<%= instance.id %>_max_value"><?php _e( 'Maximum accepted value', 'happyforms' ); ?></label>
43
- <input type="text" id="<%= instance.id %>_max_value" class="widefat title" value="<%= instance.max_value %>" data-bind="max_value" />
44
- </p>
45
- <p>
46
- <label for="<%= instance.id %>_default_value"><?php _e( 'Default value', 'happyforms' ); ?></label>
47
- <input type="text" id="<%= instance.id %>_default_value" class="widefat title" value="<%= instance.default_value %>" data-bind="default_value" />
48
- </p>
49
- <p>
50
- <label for="<%= instance.id %>_step"><?php _e( 'Step', 'happyforms' ); ?></label>
51
- <select id="<%= instance.id %>_step" data-bind="step" class="widefat">
52
- <option value="1"<%= (instance.step == '1') ? ' selected' : '' %>>1</option>
53
- <option value="0.1"<%= (instance.width == '0.1') ? ' selected' : '' %>>0.1</option>
54
- <option value="10"<%= (instance.width == '10') ? ' selected' : '' %>>10</option>
55
- </select>
56
- </p>
57
- <p>
58
- <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
59
- <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
60
- <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
61
- <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
62
- <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
63
- </select>
64
- </p>
65
- <p class="width-options" style="display: none">
66
- <label>
67
- <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
68
- </label>
69
- </p>
70
- <p>
71
- <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
72
- <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
73
  </p>
 
 
 
 
 
 
 
 
 
 
74
  <p>
75
  <label>
76
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
77
  </label>
78
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
80
  </script>
27
  </label>
28
  </p>
29
  <p>
30
+ <label for="<%= instance.id %>_default_value"><?php _e( 'Default value', 'happyforms' ); ?></label>
31
+ <input type="text" id="<%= instance.id %>_default_value" class="widefat title" value="<%= instance.default_value %>" data-bind="default_value" />
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  </p>
33
+ <div class="happyforms-customize-controls-wrap--side-by-side">
34
+ <p>
35
+ <label for="<%= instance.id %>_max_value"><?php _e( 'Minimum accepted value', 'happyforms' ); ?></label>
36
+ <input type="text" id="<%= instance.id %>_max_value" class="widefat title" value="<%= instance.min_value %>" data-bind="min_value" />
37
+ </p>
38
+ <p>
39
+ <label for="<%= instance.id %>_max_value"><?php _e( 'Maximum accepted value', 'happyforms' ); ?></label>
40
+ <input type="text" id="<%= instance.id %>_max_value" class="widefat title" value="<%= instance.max_value %>" data-bind="max_value" />
41
+ </p>
42
+ </div>
43
  <p>
44
  <label>
45
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
46
  </label>
47
  </p>
48
+ <div class="happyforms-part-advanced-settings-wrap">
49
+ <div class="happyforms-customize-controls-wrap--side-by-side">
50
+ <p>
51
+ <label for="<%= instance.id %>_min_label"><?php _e( 'Minimum value label', 'happyforms' ); ?></label>
52
+ <input type="text" id="<%= instance.id %>_min_label" class="widefat title" value="<%= instance.min_label %>" data-bind="min_label" />
53
+ </p>
54
+ <p>
55
+ <label for="<%= instance.id %>_max_label"><?php _e( 'Maximum value label', 'happyforms' ); ?></label>
56
+ <input type="text" id="<%= instance.id %>_max_label" class="widefat title" value="<%= instance.max_label %>" data-bind="max_label" />
57
+ </p>
58
+ </div>
59
+ <p>
60
+ <label for="<%= instance.id %>_step"><?php _e( 'Step', 'happyforms' ); ?></label>
61
+ <select id="<%= instance.id %>_step" data-bind="step" class="widefat">
62
+ <option value="1"<%= (instance.step == '1') ? ' selected' : '' %>>1</option>
63
+ <option value="0.1"<%= (instance.width == '0.1') ? ' selected' : '' %>>0.1</option>
64
+ <option value="10"<%= (instance.width == '10') ? ' selected' : '' %>>10</option>
65
+ </select>
66
+ </p>
67
+ <p>
68
+ <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
69
+ <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
70
+ <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
71
+ <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
72
+ <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
73
+ </select>
74
+ </p>
75
+ <p class="width-options" style="display: none">
76
+ <label>
77
+ <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
78
+ </label>
79
+ </p>
80
+ <p>
81
+ <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
82
+ <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
83
+ </p>
84
+ </div>
85
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
86
  </script>
inc/templates/parts/customize-select.php CHANGED
@@ -26,23 +26,6 @@
26
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.tooltip_description ) { %>checked="checked"<% } %> data-bind="tooltip_description" /> <?php _e( 'Show description in a tooltip', 'happyforms' ); ?>
27
  </label>
28
  </p>
29
- <p>
30
- <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
31
- <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
32
- <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
33
- <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
34
- <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
35
- </select>
36
- </p>
37
- <p class="width-options" style="display: none">
38
- <label>
39
- <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
40
- </label>
41
- </p>
42
- <p>
43
- <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
44
- <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
45
- </p>
46
  <p>
47
  <label>
48
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
@@ -57,6 +40,25 @@
57
  <a href="#" class="show-all-options" style="display: none"><?php _e( 'Show all', 'happyforms' ); ?> <span></span> <?php _e( 'options', 'happyforms' ); ?></a>
58
  <a href="#" class="add-option"><?php _e( 'Add option', 'happyforms' ); ?></a>
59
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
61
  </script>
62
  <script type="text/template" id="customize-happyforms-select-item-template">
26
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.tooltip_description ) { %>checked="checked"<% } %> data-bind="tooltip_description" /> <?php _e( 'Show description in a tooltip', 'happyforms' ); ?>
27
  </label>
28
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  <p>
30
  <label>
31
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
40
  <a href="#" class="show-all-options" style="display: none"><?php _e( 'Show all', 'happyforms' ); ?> <span></span> <?php _e( 'options', 'happyforms' ); ?></a>
41
  <a href="#" class="add-option"><?php _e( 'Add option', 'happyforms' ); ?></a>
42
  </p>
43
+ <div class="happyforms-part-advanced-settings-wrap">
44
+ <p>
45
+ <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
46
+ <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
47
+ <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
48
+ <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
49
+ <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
50
+ </select>
51
+ </p>
52
+ <p class="width-options" style="display: none">
53
+ <label>
54
+ <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
55
+ </label>
56
+ </p>
57
+ <p>
58
+ <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
59
+ <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
60
+ </p>
61
+ </div>
62
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
63
  </script>
64
  <script type="text/template" id="customize-happyforms-select-item-template">
inc/templates/parts/customize-single-line-text.php CHANGED
@@ -32,27 +32,29 @@
32
  <label for="<%= instance.id %>_placeholder"><?php _e( 'Placeholder', 'happyforms' ); ?></label>
33
  <input type="text" id="<%= instance.id %>_placeholder" class="widefat title" value="<%= instance.placeholder %>" data-bind="placeholder" />
34
  </p>
35
- <p>
36
- <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
37
- <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
38
- <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
39
- <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
40
- <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
41
- </select>
42
- </p>
43
- <p class="width-options" style="display: none">
44
- <label>
45
- <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
46
- </label>
47
- </p>
48
- <p>
49
- <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
50
- <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
51
- </p>
52
  <p>
53
  <label>
54
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
55
  </label>
56
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
58
  </script>
32
  <label for="<%= instance.id %>_placeholder"><?php _e( 'Placeholder', 'happyforms' ); ?></label>
33
  <input type="text" id="<%= instance.id %>_placeholder" class="widefat title" value="<%= instance.placeholder %>" data-bind="placeholder" />
34
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  <p>
36
  <label>
37
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
38
  </label>
39
  </p>
40
+ <div class="happyforms-part-advanced-settings-wrap">
41
+ <p>
42
+ <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
43
+ <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
44
+ <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
45
+ <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
46
+ <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
47
+ </select>
48
+ </p>
49
+ <p class="width-options" style="display: none">
50
+ <label>
51
+ <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
52
+ </label>
53
+ </p>
54
+ <p>
55
+ <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
56
+ <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
57
+ </p>
58
+ </div>
59
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
60
  </script>
inc/templates/parts/customize-title.php CHANGED
@@ -26,27 +26,29 @@
26
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.tooltip_description ) { %>checked="checked"<% } %> data-bind="tooltip_description" /> <?php _e( 'Show description in a tooltip', 'happyforms' ); ?>
27
  </label>
28
  </p>
29
- <p>
30
- <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
31
- <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
32
- <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
33
- <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
34
- <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
35
- </select>
36
- </p>
37
- <p class="width-options" style="display: none">
38
- <label>
39
- <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
40
- </label>
41
- </p>
42
- <p>
43
- <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
44
- <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
45
- </p>
46
  <p>
47
  <label>
48
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
49
  </label>
50
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
52
  </script>
26
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.tooltip_description ) { %>checked="checked"<% } %> data-bind="tooltip_description" /> <?php _e( 'Show description in a tooltip', 'happyforms' ); ?>
27
  </label>
28
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  <p>
30
  <label>
31
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
32
  </label>
33
  </p>
34
+ <div class="happyforms-part-advanced-settings-wrap">
35
+ <p>
36
+ <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
37
+ <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
38
+ <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
39
+ <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
40
+ <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
41
+ </select>
42
+ </p>
43
+ <p class="width-options" style="display: none">
44
+ <label>
45
+ <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
46
+ </label>
47
+ </p>
48
+ <p>
49
+ <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
50
+ <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
51
+ </p>
52
+ </div>
53
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
54
  </script>
inc/templates/parts/customize-website-url.php CHANGED
@@ -32,27 +32,29 @@
32
  <label for="<%= instance.id %>_placeholder"><?php _e( 'Placeholder', 'happyforms' ); ?></label>
33
  <input type="text" id="<%= instance.id %>_placeholder" class="widefat title" value="<%= instance.placeholder %>" data-bind="placeholder" />
34
  </p>
35
- <p>
36
- <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
37
- <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
38
- <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
39
- <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
40
- <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
41
- </select>
42
- </p>
43
- <p class="width-options" style="display: none">
44
- <label>
45
- <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
46
- </label>
47
- </p>
48
- <p>
49
- <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
50
- <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
51
- </p>
52
  <p>
53
  <label>
54
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
55
  </label>
56
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
58
  </script>
32
  <label for="<%= instance.id %>_placeholder"><?php _e( 'Placeholder', 'happyforms' ); ?></label>
33
  <input type="text" id="<%= instance.id %>_placeholder" class="widefat title" value="<%= instance.placeholder %>" data-bind="placeholder" />
34
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  <p>
36
  <label>
37
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
38
  </label>
39
  </p>
40
+ <div class="happyforms-part-advanced-settings-wrap">
41
+ <p>
42
+ <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
43
+ <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
44
+ <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
45
+ <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
46
+ <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
47
+ </select>
48
+ </p>
49
+ <p class="width-options" style="display: none">
50
+ <label>
51
+ <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
52
+ </label>
53
+ </p>
54
+ <p>
55
+ <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
56
+ <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
57
+ </p>
58
+ </div>
59
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
60
  </script>
inc/templates/parts/frontend-address.php CHANGED
@@ -12,6 +12,9 @@
12
  <div class="happyforms-part__dummy-input">
13
  <input id="<?php happyforms_the_part_id( $part, $form ); ?>" name="<?php happyforms_the_part_name( $part, $form ); ?>[full]" class="address-full" type="text" value="<?php happyforms_the_part_value( $part, $form ); ?>" placeholder="<?php echo esc_attr( $part['placeholder'] ); ?>" <?php if ( 1 === $part['required'] ) : ?>required aria-required="true"<?php endif; ?> />
14
  <?php happyforms_geolocation_link( $part ); ?>
 
 
 
15
  </div>
16
  </div>
17
  </div>
@@ -21,6 +24,9 @@
21
  <div class="happyforms-part__dummy-input">
22
  <input id="<?php happyforms_the_part_id( $part, $form ); ?>" name="<?php happyforms_the_part_name( $part, $form ); ?>[full]" class="happyforms-part--address__autocomplete address-full" type="text" value="<?php happyforms_the_part_value( $part, $form ); ?>" placeholder="<?php echo esc_attr( $part['placeholder'] ); ?>" <?php if ( 1 === $part['required'] ) : ?>required aria-required="true"<?php endif; ?> autocomplete="off" />
23
  <?php happyforms_geolocation_link( $part ); ?>
 
 
 
24
  </div>
25
  <div class="happyforms-part--address__results happyforms-part--address__results--google"></div>
26
  </div>
@@ -31,6 +37,9 @@
31
  <div class="happyforms-part__dummy-input">
32
  <input id="<?php happyforms_the_part_id( $part, $form ); ?>" name="<?php happyforms_the_part_name( $part, $form ); ?>[country]" class="happyforms-part--address__autocomplete address-country" type="text" value="<?php happyforms_the_part_value( $part, $form, 'country' ); ?>" placeholder="<?php _e( 'Country', 'happyforms' ); ?>" <?php if ( 1 === $part['required'] ) : ?>required aria-required="true"<?php endif; ?> autocomplete="off" />
33
  <?php happyforms_geolocation_link( $part ); ?>
 
 
 
34
  </div>
35
  <div class="happyforms-part--address__results"></div>
36
  </div>
@@ -49,9 +58,6 @@
49
  </div>
50
  </div>
51
  <?php endif; ?>
52
- <?php if ( 'inside' === $part['label_placement'] ) : ?>
53
- <?php happyforms_the_part_label( $part, $form ); ?>
54
- <?php endif; ?>
55
  <?php happyforms_print_part_description( $part ); ?>
56
  <?php if ( 'happyforms-form--part-error-notices-below' === happyforms_get_form_property( $form, 'part_error_notices_location' ) || ( '' === happyforms_get_form_property( $form, 'part_error_notices_location' ) ) ) : ?>
57
  <?php happyforms_message_notices( $form, happyforms_get_part_name( $part, $form ) ); ?>
12
  <div class="happyforms-part__dummy-input">
13
  <input id="<?php happyforms_the_part_id( $part, $form ); ?>" name="<?php happyforms_the_part_name( $part, $form ); ?>[full]" class="address-full" type="text" value="<?php happyforms_the_part_value( $part, $form ); ?>" placeholder="<?php echo esc_attr( $part['placeholder'] ); ?>" <?php if ( 1 === $part['required'] ) : ?>required aria-required="true"<?php endif; ?> />
14
  <?php happyforms_geolocation_link( $part ); ?>
15
+ <?php if ( 'as_placeholder' === $part['label_placement'] ) : ?>
16
+ <?php happyforms_the_part_label( $part, $form ); ?>
17
+ <?php endif; ?>
18
  </div>
19
  </div>
20
  </div>
24
  <div class="happyforms-part__dummy-input">
25
  <input id="<?php happyforms_the_part_id( $part, $form ); ?>" name="<?php happyforms_the_part_name( $part, $form ); ?>[full]" class="happyforms-part--address__autocomplete address-full" type="text" value="<?php happyforms_the_part_value( $part, $form ); ?>" placeholder="<?php echo esc_attr( $part['placeholder'] ); ?>" <?php if ( 1 === $part['required'] ) : ?>required aria-required="true"<?php endif; ?> autocomplete="off" />
26
  <?php happyforms_geolocation_link( $part ); ?>
27
+ <?php if ( 'as_placeholder' === $part['label_placement'] ) : ?>
28
+ <?php happyforms_the_part_label( $part, $form ); ?>
29
+ <?php endif; ?>
30
  </div>
31
  <div class="happyforms-part--address__results happyforms-part--address__results--google"></div>
32
  </div>
37
  <div class="happyforms-part__dummy-input">
38
  <input id="<?php happyforms_the_part_id( $part, $form ); ?>" name="<?php happyforms_the_part_name( $part, $form ); ?>[country]" class="happyforms-part--address__autocomplete address-country" type="text" value="<?php happyforms_the_part_value( $part, $form, 'country' ); ?>" placeholder="<?php _e( 'Country', 'happyforms' ); ?>" <?php if ( 1 === $part['required'] ) : ?>required aria-required="true"<?php endif; ?> autocomplete="off" />
39
  <?php happyforms_geolocation_link( $part ); ?>
40
+ <?php if ( 'as_placeholder' === $part['label_placement'] ) : ?>
41
+ <?php happyforms_the_part_label( $part, $form ); ?>
42
+ <?php endif; ?>
43
  </div>
44
  <div class="happyforms-part--address__results"></div>
45
  </div>
58
  </div>
59
  </div>
60
  <?php endif; ?>
 
 
 
61
  <?php happyforms_print_part_description( $part ); ?>
62
  <?php if ( 'happyforms-form--part-error-notices-below' === happyforms_get_form_property( $form, 'part_error_notices_location' ) || ( '' === happyforms_get_form_property( $form, 'part_error_notices_location' ) ) ) : ?>
63
  <?php happyforms_message_notices( $form, happyforms_get_part_name( $part, $form ) ); ?>
readme.txt CHANGED
@@ -1,11 +1,11 @@
1
- === Manage and respond to conversations with customers — HappyForms ===
2
 
3
  Contributors: thethemefoundry
4
  Tags: contact, contact form, email, feedback form, form, form builder, custom form, lead generation, survey form, quote form
5
  Requires at least: 4.8
6
  Tested up to: 4.9.6
7
  Requires PHP: 5.2.4
8
- Stable tag: 1.4.3
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -74,6 +74,14 @@ Absolutely! HappyForms gets out of the way and is designed to work with any them
74
 
75
  == Changelog ==
76
 
 
 
 
 
 
 
 
 
77
  = 1.4.3 =
78
  * Improvement: Date part is renamed to Date & Time and offers a lot more options, including minimum and maximum value for year and hour inputs, and an option to set inputs to current date and time by default.
79
  * Improvement: Added option to specify the subject of email alerts sent to site owners.
@@ -131,6 +139,9 @@ Absolutely! HappyForms gets out of the way and is designed to work with any them
131
 
132
  == Upgrade Notice ==
133
 
 
 
 
134
  = 1.4.3 =
135
  * Address, email and visual improvements and bug fixes.
136
 
1
+ === Contact Form to Manage and respond to conversations with customers — HappyForms ===
2
 
3
  Contributors: thethemefoundry
4
  Tags: contact, contact form, email, feedback form, form, form builder, custom form, lead generation, survey form, quote form
5
  Requires at least: 4.8
6
  Tested up to: 4.9.6
7
  Requires PHP: 5.2.4
8
+ Stable tag: 1.4.4
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
74
 
75
  == Changelog ==
76
 
77
+ = 1.4.4 =
78
+ * Improvement: New Advanced link to reveal more advanced settings for each part and achieve cleaner look when part is first opened in form builder.
79
+ * Improvement: Better compatibility with themes.
80
+ * Improvement: Current user's email address is now pre-filled in Your email address field in Step 2.
81
+ * Bug fix: Front end placeholder behavior when "Display as placeholder" title placement is selected.
82
+ * Bug fix: Responses screen was showing just the first letter of each submitted part.
83
+ * Bug fix: PHP notices when HappyForms widget was added to a page in Customizer.
84
+
85
  = 1.4.3 =
86
  * Improvement: Date part is renamed to Date & Time and offers a lot more options, including minimum and maximum value for year and hour inputs, and an option to set inputs to current date and time by default.
87
  * Improvement: Added option to specify the subject of email alerts sent to site owners.
139
 
140
  == Upgrade Notice ==
141
 
142
+ = 1.4.4 =
143
+ * Various bug fixes and improvements.
144
+
145
  = 1.4.3 =
146
  * Address, email and visual improvements and bug fixes.
147