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

Version Description

  • Improvement: Better support for emails display name.
  • Improvement: Form title now highlights when Build step is opened for easier renaming.
  • Improvement: Optional part label is only displayed when some part is made optional.
  • Improvement: Updated copy and labels of some options in Setup and Style step.
  • Improvement: Updated readme and screenshots.
  • Bugfix: Expand / Collapse all button was not working properly on existing forms.
  • Bugfix: Phone part was not displaying correctly in certain padding and border configurations.
  • Bugfix: Minor bugfixes related to styles.
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.6.20
Comparing to
See all releases

Code changes from version 1.6.19 to 1.6.20

Files changed (69) hide show
  1. happyforms.php +6 -4
  2. inc/assets/css/admin.css +14 -0
  3. inc/assets/js/admin/dashboard.js +24 -0
  4. inc/classes/class-happyforms.php +82 -0
  5. inc/core/assets/css/admin.css +26 -6
  6. inc/core/assets/css/customize.css +115 -10
  7. inc/core/assets/css/frontend.css +34 -2
  8. inc/core/assets/css/preview.css +82 -0
  9. inc/core/assets/js/admin/dashboard.js +97 -83
  10. inc/core/assets/js/admin/shortcode.js +3 -3
  11. inc/core/assets/js/customize.js +181 -76
  12. inc/core/assets/js/frontend/phone.js +13 -17
  13. inc/core/assets/js/preview.js +24 -3
  14. inc/core/classes/class-admin-notices.php +31 -15
  15. inc/core/classes/class-email-message.php +38 -16
  16. inc/core/classes/class-form-admin.php +2 -2
  17. inc/core/classes/class-form-controller.php +42 -281
  18. inc/core/classes/class-form-setup.php +498 -0
  19. inc/core/classes/class-form-styles.php +120 -104
  20. inc/core/classes/class-happyforms-core.php +74 -50
  21. inc/core/classes/class-message-admin.php +5 -4
  22. inc/core/classes/class-message-controller.php +81 -35
  23. inc/core/classes/class-wp-customize-form-manager.php +12 -11
  24. inc/core/classes/parts/class-part-address.php +7 -2
  25. inc/core/classes/parts/class-part-checkbox.php +7 -2
  26. inc/core/classes/parts/class-part-date.php +7 -2
  27. inc/core/classes/parts/class-part-email.php +25 -2
  28. inc/core/classes/parts/class-part-legal.php +7 -2
  29. inc/core/classes/parts/class-part-multi-line-text.php +7 -2
  30. inc/core/classes/parts/class-part-narrative.php +7 -2
  31. inc/core/classes/parts/class-part-number.php +7 -2
  32. inc/core/classes/parts/class-part-phone.php +7 -2
  33. inc/core/classes/parts/class-part-placeholder.php +7 -2
  34. inc/core/classes/parts/class-part-radio.php +7 -2
  35. inc/core/classes/parts/class-part-rating.php +8 -3
  36. inc/core/classes/parts/class-part-rich-text.php +7 -2
  37. inc/core/classes/parts/class-part-scale.php +26 -21
  38. inc/core/classes/parts/class-part-select.php +7 -2
  39. inc/core/classes/parts/class-part-single-line-text.php +7 -2
  40. inc/core/classes/parts/class-part-table.php +9 -2
  41. inc/core/classes/parts/class-part-title.php +7 -2
  42. inc/core/classes/parts/class-part-website-url.php +7 -2
  43. inc/core/helpers/helper-activation.php +34 -3
  44. inc/core/helpers/helper-form-templates.php +29 -4
  45. inc/core/helpers/helper-misc.php +40 -6
  46. inc/core/helpers/helper-validation.php +40 -0
  47. inc/core/templates/admin-message-edit.php +7 -1
  48. inc/core/templates/admin-tracking.php +2 -2
  49. inc/core/templates/customize-controls/setup/checkbox.php +6 -0
  50. inc/core/templates/customize-controls/setup/editor.php +6 -0
  51. inc/core/templates/customize-controls/setup/number.php +7 -0
  52. inc/core/templates/customize-controls/setup/text.php +4 -0
  53. inc/core/templates/customize-controls/style/buttonset.php +13 -0
  54. inc/core/templates/customize-controls/style/checkbox.php +7 -0
  55. inc/core/templates/customize-controls/style/color.php +6 -0
  56. inc/core/templates/customize-controls/style/divider.php +15 -0
  57. inc/core/templates/customize-controls/style/heading.php +3 -0
  58. inc/core/templates/customize-controls/style/range.php +15 -0
  59. inc/core/templates/customize-controls/style/select.php +11 -0
  60. inc/core/templates/customize-controls/style/text.php +6 -0
  61. inc/core/templates/customize-form-build.php +1 -1
  62. inc/core/templates/customize-form-parts-drawer.php +4 -1
  63. inc/core/templates/customize-form-setup.php +15 -165
  64. inc/core/templates/customize-form-style.php +12 -120
  65. inc/core/templates/partials/form-submit.php +1 -1
  66. inc/core/templates/preview-form-edit.php +0 -4
  67. inc/core/templates/single-form.php +2 -1
  68. languages/happyforms.pot +970 -945
  69. readme.txt +36 -4
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.6.19
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.6.19' );
17
 
18
  if ( ! function_exists( 'happyforms_plugin_file' ) ):
19
  /**
@@ -85,6 +85,8 @@ require_once( happyforms_get_include_folder() . '/core/helpers/helper-activation
85
  */
86
  require_once( happyforms_get_include_folder() . '/core/classes/class-happyforms-core.php' );
87
 
 
 
88
  /**
89
  * Main handler
90
  */
@@ -92,13 +94,13 @@ if ( ! function_exists( 'HappyForms' ) ):
92
  /**
93
  * Get the global HappyForms class.
94
  *
95
- * @return HappyForms_Core
96
  */
97
  function HappyForms() {
98
  global $happyforms;
99
 
100
  if ( is_null( $happyforms ) ) {
101
- $happyforms = new HappyForms_Core();
102
  }
103
 
104
  return $happyforms;
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.6.20
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.6.20' );
17
 
18
  if ( ! function_exists( 'happyforms_plugin_file' ) ):
19
  /**
85
  */
86
  require_once( happyforms_get_include_folder() . '/core/classes/class-happyforms-core.php' );
87
 
88
+ require_once( happyforms_get_include_folder() . '/classes/class-happyforms.php' );
89
+
90
  /**
91
  * Main handler
92
  */
94
  /**
95
  * Get the global HappyForms class.
96
  *
97
+ * @return HappyForms
98
  */
99
  function HappyForms() {
100
  global $happyforms;
101
 
102
  if ( is_null( $happyforms ) ) {
103
+ $happyforms = new HappyForms();
104
  }
105
 
106
  return $happyforms;
inc/assets/css/admin.css ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #adminmenu #toplevel_page_happyforms ul li:last-child a,
2
+ #adminmenu #toplevel_page_happyforms ul li:last-child a:hover {
3
+ color: #FFB900;
4
+ }
5
+
6
+ #adminmenu #toplevel_page_happyforms ul li:last-child a:after {
7
+ content: '\f504';
8
+ position: relative;
9
+ top: 2px;
10
+ display: inline-block;
11
+ padding-left: 5px;
12
+ font-family: dashicons;
13
+ text-decoration: none;
14
+ }
inc/assets/js/admin/dashboard.js ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ( function( $ ) {
2
+
3
+ var happyForms = window.happyForms || {};
4
+ window.happyForms = happyForms;
5
+
6
+ happyForms.freeDashboard = {
7
+ init: function() {
8
+ $( document ).on( 'click', '#adminmenu #toplevel_page_happyforms li:last-child a', this.handleUpgradeClick.bind(this) );
9
+ },
10
+
11
+ handleUpgradeClick: function( e ) {
12
+ e.preventDefault();
13
+
14
+ var $link = $(e.target);
15
+
16
+ window.open( $link.attr('href') );
17
+ }
18
+ };
19
+
20
+ $( document ).ready( function() {
21
+ happyForms.freeDashboard.init();
22
+ } );
23
+
24
+ } )( jQuery );
inc/classes/class-happyforms.php ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class HappyForms extends HappyForms_Core {
3
+ public $default_notice;
4
+
5
+ public function initialize_plugin() {
6
+ parent::initialize_plugin();
7
+
8
+ add_action( 'admin_menu', array( $this, 'admin_menu' ) );
9
+ add_action( 'happyforms_form_before', array( $this, 'add_preview_notices' ) );
10
+ }
11
+
12
+ public function add_preview_notices( $form ) {
13
+ if ( happyforms_is_preview() ) {
14
+ $admin_notices = happyforms_get_admin_notices();
15
+ $form_controller = happyforms_get_form_controller();
16
+
17
+ $upgrade_notice_args = array(
18
+ 'classes' => array(
19
+ 'happyforms-notice--upgrade'
20
+ ),
21
+ 'cap' => $form_controller->capability,
22
+ 'type' => 'custom',
23
+ 'title' => __( 'Don\'t miss out on these advanced features 🎉', 'happyforms' ),
24
+ 'screen' => array( 'happyforms-preview' ),
25
+ 'dismissible' => true,
26
+ );
27
+
28
+ if ( 0 === $form['ID'] ) {
29
+ $upgrade_notice_args['dismissible'] = false;
30
+ }
31
+
32
+ $admin_notices->register(
33
+ 'happyforms_form_' . $form['ID'] . '_upgrade',
34
+ sprintf(
35
+ '<ul>
36
+ <li>' . __( 'Allow folks to easily upload files to your forms.', 'happyforms' ) . '</li>
37
+ <li>' . __( 'Show and hide forms using a date and time scheduler.', 'happyforms' ) . '</li>
38
+ <li>' . __( 'Display your forms in a custom overlay / modal window.', 'happyforms' ) . '</li>
39
+ <li>' . __( 'Shuffle your form questions to create randomized surveys.', 'happyforms' ) . '</li>
40
+ <li>' . __( 'Secure individual forms with strong password protection.', 'happyforms' ) . '</li>
41
+ <li>' . __( 'Limit the number of responses each of your forms get.', 'happyforms' ) . '</li>
42
+ </ul>
43
+ <p><a href="%s">' . __( 'Discover more benefits of upgrading', 'happyforms' ) . '</a></p>',
44
+ 'https://happyforms.me/upgrade'
45
+ ),
46
+ $upgrade_notice_args
47
+ );
48
+ }
49
+ }
50
+
51
+ public function admin_menu() {
52
+ parent::admin_menu();
53
+
54
+ $form_controller = happyforms_get_form_controller();
55
+
56
+ add_submenu_page(
57
+ 'happyforms',
58
+ __( 'HappyForms Upgrade', 'happyforms' ),
59
+ __( 'Upgrade', 'happyforms' ),
60
+ $form_controller->capability,
61
+ 'https://happyforms.me/upgrade'
62
+ );
63
+ }
64
+
65
+ public function admin_enqueue_scripts() {
66
+ parent::admin_enqueue_scripts();
67
+
68
+ wp_enqueue_style(
69
+ 'happyforms-free-admin',
70
+ happyforms_get_plugin_url() . 'inc/assets/css/admin.css',
71
+ array(), HAPPYFORMS_VERSION
72
+ );
73
+
74
+ wp_register_script(
75
+ 'happyforms-free-admin',
76
+ happyforms_get_plugin_url() . 'inc/assets/js/admin/dashboard.js',
77
+ array(), HAPPYFORMS_VERSION, true
78
+ );
79
+
80
+ wp_enqueue_script( 'happyforms-free-admin' );
81
+ }
82
+ }
inc/core/assets/css/admin.css CHANGED
@@ -3,10 +3,6 @@
3
  * Admin menus
4
  *
5
  */
6
- #toplevel_page_happyforms ul.wp-submenu li:nth-child(5) {
7
- display: none;
8
- }
9
-
10
  #wp-admin-bar-happyforms .ab-icon svg {
11
  width: 20px;
12
  margin-top: 2px;
@@ -26,6 +22,10 @@ i.mce-i-happyforms-form-picker:before, i.mce-i-happyforms-form-picker:before {
26
  background-position: center;
27
  }
28
 
 
 
 
 
29
  /**
30
  *
31
  * Form admin screen
@@ -179,16 +179,36 @@ p.happyforms-message-nav span.divider:last-child {
179
  max-width: 460px;
180
  }
181
 
182
- .happyforms-welcome-panel .welcome-panel-content input[type="email"] {
 
 
183
  width: 96%;
184
  padding: 10px;
 
 
 
 
 
185
  }
186
 
187
  .happyforms-welcome-panel .welcome-panel-content .button-hero {
188
- width: 96%;
189
  text-align: center;
190
  }
191
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
192
  p.welcome-panel-footer {
193
  max-width: 760px;
194
  color: #72777c;
3
  * Admin menus
4
  *
5
  */
 
 
 
 
6
  #wp-admin-bar-happyforms .ab-icon svg {
7
  width: 20px;
8
  margin-top: 2px;
22
  background-position: center;
23
  }
24
 
25
+ #toplevel_page_happyforms ul.wp-submenu li:nth-child(5) {
26
+ display: none;
27
+ }
28
+
29
  /**
30
  *
31
  * Form admin screen
179
  max-width: 460px;
180
  }
181
 
182
+ .happyforms-welcome-panel .welcome-panel-content input[type="email"],
183
+ .happyforms-welcome-panel .welcome-panel-content input[type="password"],
184
+ .happyforms-welcome-panel .welcome-panel-content input[type="text"] {
185
  width: 96%;
186
  padding: 10px;
187
+ margin-bottom: 15px;
188
+ }
189
+
190
+ .happyforms-welcome-panel .welcome-panel-content .button.button-hero {
191
+ margin: 0;
192
  }
193
 
194
  .happyforms-welcome-panel .welcome-panel-content .button-hero {
 
195
  text-align: center;
196
  }
197
 
198
+ .happyforms-welcome-panel .welcome-panel-content .button-hero.button-block {
199
+ width: 96%;
200
+ }
201
+
202
+ .happyforms-welcome-panel .welcome-panel-content .button.button-hero svg {
203
+ height: 12px;
204
+ vertical-align: middle;
205
+ }
206
+
207
+ .happyforms-welcome-panel .welcome-panel-content .button.button-hero svg {
208
+ -webkit-filter: drop-shadow(0 0 2px #006799);
209
+ filter: drop-shadow(0 0 2px #006799);
210
+ }
211
+
212
  p.welcome-panel-footer {
213
  max-width: 760px;
214
  color: #72777c;
inc/core/assets/css/customize.css CHANGED
@@ -304,19 +304,62 @@ a.happyforms-form-part-remove:hover {
304
  margin-top: 0;
305
  }
306
 
 
 
 
 
307
  /**
308
  *
309
  * Form edit
310
  *
311
  */
312
- #happyforms-captcha-settings,
313
- #happyforms-alert-email-settings,
314
- #happyforms-confirmation-email-settings,
315
- #happyforms-review-button-label-settings,
316
- #happyforms-unique-id-settings {
 
 
 
 
 
 
 
 
 
317
  display: none;
318
  }
319
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
320
  /**
321
  *
322
  * Form build
@@ -608,10 +651,6 @@ body.adding-happyforms-parts .wp-full-overlay-main {
608
  border-right: 1px solid #ddd;
609
  }
610
 
611
- .happyforms-parts-drawer-header {
612
- border-bottom: 1px solid #ddd;
613
- }
614
-
615
  .happyforms-parts-drawer-header-search {
616
  padding: 13px 15px;
617
  }
@@ -643,8 +682,36 @@ body.adding-happyforms-parts .wp-full-overlay-main {
643
  -webkit-font-smoothing: antialiased;
644
  }
645
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
646
  input#part-search::placeholder {
647
- color: #aaa;
648
  }
649
 
650
  ul.happyforms-parts-list {
@@ -665,6 +732,10 @@ ul.happyforms-parts-list li.happyforms-parts-list-item {
665
  cursor: pointer;
666
  }
667
 
 
 
 
 
668
  ul.happyforms-parts-list li.happyforms-parts-list-item:hover {
669
  background: #f3f3f5;
670
  border-bottom-color: #ccc;
@@ -785,6 +856,15 @@ ul.happyforms-parts-list .happyforms-parts-list-item-description {
785
  font-size: 12px;
786
  }
787
 
 
 
 
 
 
 
 
 
 
788
  .happyforms-part-widget .happyforms-widget-content {
789
  display: none;
790
  }
@@ -1026,6 +1106,31 @@ li.customize-control.happyforms-buttonset-control + .customize-control h2 {
1026
  display: none;
1027
  }
1028
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1029
  /**
1030
  *
1031
  * Narrative part
304
  margin-top: 0;
305
  }
306
 
307
+ .customize-control i span {
308
+ display: none;
309
+ }
310
+
311
  /**
312
  *
313
  * Form edit
314
  *
315
  */
316
+ #customize-control-email_recipient,
317
+ #customize-control-alert_email_subject,
318
+ #customize-control-email_mark_and_reply,
319
+ #customize-control-confirmation_email_from_name,
320
+ #customize-control-confirmation_email_subject,
321
+ #customize-control-confirmation_email_content,
322
+ #customize-control-captcha_site_key,
323
+ #customize-control-captcha_secret_key,
324
+ #customize-control-review_button_label,
325
+ #customize-control-unique_id_start_from,
326
+ #customize-control-unique_id_prefix,
327
+ #customize-control-unique_id_suffix,
328
+ #customize-control-redirect_url,
329
+ #customize-control-optional_part_label {
330
  display: none;
331
  }
332
 
333
+ #customize-control-receive_email_alerts.checked ~ #customize-control-email_recipient,
334
+ #customize-control-receive_email_alerts.checked ~ #customize-control-alert_email_subject,
335
+ #customize-control-receive_email_alerts.checked ~ #customize-control-email_mark_and_reply,
336
+ #customize-control-send_confirmation_email.checked ~ #customize-control-confirmation_email_from_name,
337
+ #customize-control-send_confirmation_email.checked ~ #customize-control-confirmation_email_subject,
338
+ #customize-control-send_confirmation_email.checked ~ #customize-control-confirmation_email_content,
339
+ #customize-control-captcha.checked ~ #customize-control-captcha_site_key,
340
+ #customize-control-captcha.checked ~ #customize-control-captcha_secret_key,
341
+ #customize-control-preview_before_submit.checked ~ #customize-control-review_button_label,
342
+ #customize-control-unique_id.checked ~ #customize-control-unique_id_start_from,
343
+ #customize-control-unique_id.checked ~ #customize-control-unique_id_prefix,
344
+ #customize-control-unique_id.checked ~ #customize-control-unique_id_suffix,
345
+ #customize-control-redirect_on_complete.checked ~ #customize-control-redirect_url {
346
+ display: block;
347
+ }
348
+
349
+ #customize-control-unique_id_prefix,
350
+ #customize-control-unique_id_suffix {
351
+ width: 47%;
352
+ }
353
+
354
+ #customize-control-unique_id_prefix {
355
+ float: left;
356
+ }
357
+
358
+ #customize-control-unique_id_suffix {
359
+ float: right;
360
+ clear: right;
361
+ }
362
+
363
  /**
364
  *
365
  * Form build
651
  border-right: 1px solid #ddd;
652
  }
653
 
 
 
 
 
654
  .happyforms-parts-drawer-header-search {
655
  padding: 13px 15px;
656
  }
682
  -webkit-font-smoothing: antialiased;
683
  }
684
 
685
+ button.happyforms-clear-search {
686
+ display: none;
687
+ position: absolute;
688
+ top: 15px;
689
+ right: 16px;
690
+ width: 30px;
691
+ height: 30px;
692
+ padding: 0;
693
+ border: 0;
694
+ cursor: pointer;
695
+ background: transparent;
696
+ color: #a00;
697
+ text-decoration: none;
698
+ outline: 0;
699
+ }
700
+
701
+ button.happyforms-clear-search:before {
702
+ content: "\f335";
703
+ line-height: 1;
704
+ font-family: dashicons;
705
+ font-size: 20px;
706
+ vertical-align: middle;
707
+ }
708
+
709
+ button.happyforms-clear-search.active {
710
+ display: block;
711
+ }
712
+
713
  input#part-search::placeholder {
714
+ color: #72777c;
715
  }
716
 
717
  ul.happyforms-parts-list {
732
  cursor: pointer;
733
  }
734
 
735
+ ul.happyforms-parts-list li.happyforms-parts-list-item:first-child {
736
+ border-top: 1px solid #ddd;
737
+ }
738
+
739
  ul.happyforms-parts-list li.happyforms-parts-list-item:hover {
740
  background: #f3f3f5;
741
  border-bottom-color: #ccc;
856
  font-size: 12px;
857
  }
858
 
859
+ .happyforms-parts-drawer-not-found {
860
+ position: absolute;
861
+ top: 50px;
862
+ z-index: -1;
863
+ left: 0;
864
+ width: calc(100% - 30px);
865
+ padding: 0 15px;
866
+ }
867
+
868
  .happyforms-part-widget .happyforms-widget-content {
869
  display: none;
870
  }
1106
  display: none;
1107
  }
1108
 
1109
+ #customize-control-html_id input {
1110
+ padding-top: 6px;
1111
+ font-family: Consolas, Monaco, monospace;
1112
+ direction: ltr;
1113
+ unicode-bidi: embed;
1114
+ }
1115
+
1116
+ #customize-control-part_toggle_placeholders,
1117
+ #customize-control-dropdowns,
1118
+ #customize-control-checkboxes-radios,
1119
+ #customize-control-rating,
1120
+ #customize-control-tables,
1121
+ #customize-control-submit_button_part_of_last_input {
1122
+ display: none;
1123
+ }
1124
+
1125
+ .happyforms-style-view.has-placeholder #customize-control-part_toggle_placeholders,
1126
+ .happyforms-style-view.has-dropdowns #customize-control-dropdowns,
1127
+ .happyforms-style-view.has-checkbox-radio #customize-control-checkboxes-radios,
1128
+ .happyforms-style-view.has-rating #customize-control-rating,
1129
+ .happyforms-style-view.has-table #customize-control-tables,
1130
+ .happyforms-style-view.has-submit-inline #customize-control-submit_button_part_of_last_input {
1131
+ display: block;
1132
+ }
1133
+
1134
  /**
1135
  *
1136
  * Narrative part
inc/core/assets/css/frontend.css CHANGED
@@ -137,6 +137,7 @@ h3.happyforms-form__title {
137
  align-self: flex-start;
138
  flex-grow: 1;
139
  width: auto;
 
140
  }
141
 
142
  .happyforms-part--width-auto + .happyforms-part--submit,
@@ -292,6 +293,7 @@ h3.happyforms-form__title {
292
  }
293
 
294
  .happyforms-part input[type=text],
 
295
  .happyforms-part input[type=email],
296
  .happyforms-part input[type=tel],
297
  .happyforms-part input[type=number],
@@ -323,6 +325,7 @@ h3.happyforms-form__title {
323
  }
324
 
325
  .happyforms-part input[type=text],
 
326
  .happyforms-part input[type=email],
327
  .happyforms-part input[type=tel],
328
  .happyforms-part input[type=number],
@@ -331,6 +334,7 @@ h3.happyforms-form__title {
331
  }
332
 
333
  .happyforms-form--part-value-text-align-center .happyforms-part input[type=text],
 
334
  .happyforms-form--part-value-text-align-center .happyforms-part input[type=email],
335
  .happyforms-form--part-value-text-align-center .happyforms-part input[type=tel],
336
  .happyforms-form--part-value-text-align-center .happyforms-part input[type=number],
@@ -344,6 +348,7 @@ h3.happyforms-form__title {
344
  }
345
 
346
  .happyforms-form--part-value-text-align-right .happyforms-part input[type=text],
 
347
  .happyforms-form--part-value-text-align-right .happyforms-part input[type=email],
348
  .happyforms-form--part-value-text-align-right .happyforms-part input[type=tel],
349
  .happyforms-form--part-value-text-align-right .happyforms-part input[type=number],
@@ -357,6 +362,7 @@ h3.happyforms-form__title {
357
  }
358
 
359
  .happyforms-form--part-border-off .happyforms-part input[type=text],
 
360
  .happyforms-form--part-border-off .happyforms-part input[type=email],
361
  .happyforms-form--part-border-off .happyforms-part input[type=tel],
362
  .happyforms-form--part-border-off .happyforms-part input[type=number],
@@ -366,6 +372,7 @@ h3.happyforms-form__title {
366
  }
367
 
368
  .happyforms-part input[type=text]:focus,
 
369
  .happyforms-part input[type=email]:focus,
370
  .happyforms-part input[type=tel]:focus,
371
  .happyforms-part input[type=number]:focus,
@@ -386,6 +393,7 @@ h3.happyforms-form__title {
386
  }
387
 
388
  .happyforms-form--part-border-off .happyforms-part input[type=text]:focus,
 
389
  .happyforms-form--part-border-off .happyforms-part input[type=email]:focus,
390
  .happyforms-form--part-border-off .happyforms-part input[type=tel]:focus,
391
  .happyforms-form--part-border-off .happyforms-part input[type=number]:focus,
@@ -394,6 +402,7 @@ h3.happyforms-form__title {
394
  }
395
 
396
  .happyforms-part.happyforms-part--error input[type=text],
 
397
  .happyforms-part.happyforms-part--error input[type=email],
398
  .happyforms-part.happyforms-part--error input[type=tel],
399
  .happyforms-part.happyforms-part--error input[type=number],
@@ -623,6 +632,10 @@ h3.happyforms-form__title {
623
  margin-bottom: 20px;
624
  }
625
 
 
 
 
 
626
  .happyforms-part-option__description {
627
  display: block;
628
  width: 100%;
@@ -845,7 +858,7 @@ h3.happyforms-form__title {
845
  }
846
 
847
  .happyforms-part--choice.display-type--block {
848
- margin-bottom: 20px;
849
  }
850
 
851
  .happyforms-part--choice.display-type--block .happyforms-part__el {
@@ -1828,6 +1841,7 @@ form .happyforms-flex > .happyforms-message-notices .error {
1828
 
1829
  /* umbrella classes */
1830
  .happyforms-form--part-border-radius-square .happyforms-part input[type=text],
 
1831
  .happyforms-form--part-border-radius-square .happyforms-part input[type=email],
1832
  .happyforms-form--part-border-radius-square .happyforms-part input[type=tel],
1833
  .happyforms-form--part-border-radius-square .happyforms-part input[type=number],
@@ -1844,6 +1858,7 @@ form .happyforms-flex > .happyforms-message-notices .error {
1844
  }
1845
 
1846
  .happyforms-form--part-border-radius-pill .happyforms-part input[type=text],
 
1847
  .happyforms-form--part-border-radius-pill .happyforms-part input[type=email],
1848
  .happyforms-form--part-border-radius-pill .happyforms-part input[type=tel],
1849
  .happyforms-form--part-border-radius-pill .happyforms-part input[type=number],
@@ -1985,6 +2000,7 @@ form .happyforms-flex > .happyforms-message-notices .error {
1985
 
1986
  /* part borders */
1987
  .happyforms-form--part-borders-bottom-only .happyforms-part input[type=text],
 
1988
  .happyforms-form--part-borders-bottom-only .happyforms-part input[type=email],
1989
  .happyforms-form--part-borders-bottom-only .happyforms-part input[type=number],
1990
  .happyforms-form--part-borders-bottom-only .happyforms-part textarea {
@@ -1996,6 +2012,7 @@ form .happyforms-flex > .happyforms-message-notices .error {
1996
 
1997
  /* part border transitions */
1998
  .happyforms-form--part-disable-transitions .happyforms-part input[type=text],
 
1999
  .happyforms-form--part-disable-transitions .happyforms-part input[type=email],
2000
  .happyforms-form--part-disable-transitions .happyforms-part input[type=number],
2001
  .happyforms-form--part-disable-transitions .happyforms-part textarea {
@@ -2003,6 +2020,7 @@ form .happyforms-flex > .happyforms-message-notices .error {
2003
  }
2004
 
2005
  .happyforms-part input[type=text],
 
2006
  .happyforms-part input[type=email],
2007
  .happyforms-part input[type=number],
2008
  .happyforms-part textarea {
@@ -2488,10 +2506,25 @@ form .happyforms-flex > .happyforms-message-notices .error {
2488
  border-bottom: 0;
2489
  border-top: 0;
2490
  }
 
 
 
 
 
 
 
2491
  .happyforms-country-select.focus {
2492
  border: 2px solid var(--happyforms-color-part-border-focus);
2493
  border-right: 0;
2494
  }
 
 
 
 
 
 
 
 
2495
  .happyforms-country-select-trigger {
2496
  display: none;
2497
  position: absolute;
@@ -2580,7 +2613,6 @@ form .happyforms-flex > .happyforms-message-notices .error {
2580
  white-space: nowrap;
2581
  width: 100%;
2582
  max-height: 250px;
2583
- overflow-x: hidden;
2584
  overflow-y: scroll;
2585
  box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2)
2586
  }
137
  align-self: flex-start;
138
  flex-grow: 1;
139
  width: auto;
140
+ max-width: 75%;
141
  }
142
 
143
  .happyforms-part--width-auto + .happyforms-part--submit,
293
  }
294
 
295
  .happyforms-part input[type=text],
296
+ .happyforms-part input[type=password],
297
  .happyforms-part input[type=email],
298
  .happyforms-part input[type=tel],
299
  .happyforms-part input[type=number],
325
  }
326
 
327
  .happyforms-part input[type=text],
328
+ .happyforms-part input[type=password],
329
  .happyforms-part input[type=email],
330
  .happyforms-part input[type=tel],
331
  .happyforms-part input[type=number],
334
  }
335
 
336
  .happyforms-form--part-value-text-align-center .happyforms-part input[type=text],
337
+ .happyforms-form--part-value-text-align-center .happyforms-part input[type=password],
338
  .happyforms-form--part-value-text-align-center .happyforms-part input[type=email],
339
  .happyforms-form--part-value-text-align-center .happyforms-part input[type=tel],
340
  .happyforms-form--part-value-text-align-center .happyforms-part input[type=number],
348
  }
349
 
350
  .happyforms-form--part-value-text-align-right .happyforms-part input[type=text],
351
+ .happyforms-form--part-value-text-align-right .happyforms-part input[type=password],
352
  .happyforms-form--part-value-text-align-right .happyforms-part input[type=email],
353
  .happyforms-form--part-value-text-align-right .happyforms-part input[type=tel],
354
  .happyforms-form--part-value-text-align-right .happyforms-part input[type=number],
362
  }
363
 
364
  .happyforms-form--part-border-off .happyforms-part input[type=text],
365
+ .happyforms-form--part-border-off .happyforms-part input[type=password],
366
  .happyforms-form--part-border-off .happyforms-part input[type=email],
367
  .happyforms-form--part-border-off .happyforms-part input[type=tel],
368
  .happyforms-form--part-border-off .happyforms-part input[type=number],
372
  }
373
 
374
  .happyforms-part input[type=text]:focus,
375
+ .happyforms-part input[type=password]:focus,
376
  .happyforms-part input[type=email]:focus,
377
  .happyforms-part input[type=tel]:focus,
378
  .happyforms-part input[type=number]:focus,
393
  }
394
 
395
  .happyforms-form--part-border-off .happyforms-part input[type=text]:focus,
396
+ .happyforms-form--part-border-off .happyforms-part input[type=password]:focus,
397
  .happyforms-form--part-border-off .happyforms-part input[type=email]:focus,
398
  .happyforms-form--part-border-off .happyforms-part input[type=tel]:focus,
399
  .happyforms-form--part-border-off .happyforms-part input[type=number]:focus,
402
  }
403
 
404
  .happyforms-part.happyforms-part--error input[type=text],
405
+ .happyforms-part.happyforms-part--error input[type=password],
406
  .happyforms-part.happyforms-part--error input[type=email],
407
  .happyforms-part.happyforms-part--error input[type=tel],
408
  .happyforms-part.happyforms-part--error input[type=number],
632
  margin-bottom: 20px;
633
  }
634
 
635
+ .happyforms-part-option:last-of-type {
636
+ margin-bottom: 0;
637
+ }
638
+
639
  .happyforms-part-option__description {
640
  display: block;
641
  width: 100%;
858
  }
859
 
860
  .happyforms-part--choice.display-type--block {
861
+ margin-bottom: 15px;
862
  }
863
 
864
  .happyforms-part--choice.display-type--block .happyforms-part__el {
1841
 
1842
  /* umbrella classes */
1843
  .happyforms-form--part-border-radius-square .happyforms-part input[type=text],
1844
+ .happyforms-form--part-border-radius-square .happyforms-part input[type=password],
1845
  .happyforms-form--part-border-radius-square .happyforms-part input[type=email],
1846
  .happyforms-form--part-border-radius-square .happyforms-part input[type=tel],
1847
  .happyforms-form--part-border-radius-square .happyforms-part input[type=number],
1858
  }
1859
 
1860
  .happyforms-form--part-border-radius-pill .happyforms-part input[type=text],
1861
+ .happyforms-form--part-border-radius-pill .happyforms-part input[type=password],
1862
  .happyforms-form--part-border-radius-pill .happyforms-part input[type=email],
1863
  .happyforms-form--part-border-radius-pill .happyforms-part input[type=tel],
1864
  .happyforms-form--part-border-radius-pill .happyforms-part input[type=number],
2000
 
2001
  /* part borders */
2002
  .happyforms-form--part-borders-bottom-only .happyforms-part input[type=text],
2003
+ .happyforms-form--part-borders-bottom-only .happyforms-part input[type=password],
2004
  .happyforms-form--part-borders-bottom-only .happyforms-part input[type=email],
2005
  .happyforms-form--part-borders-bottom-only .happyforms-part input[type=number],
2006
  .happyforms-form--part-borders-bottom-only .happyforms-part textarea {
2012
 
2013
  /* part border transitions */
2014
  .happyforms-form--part-disable-transitions .happyforms-part input[type=text],
2015
+ .happyforms-form--part-disable-transitions .happyforms-part input[type=password],
2016
  .happyforms-form--part-disable-transitions .happyforms-part input[type=email],
2017
  .happyforms-form--part-disable-transitions .happyforms-part input[type=number],
2018
  .happyforms-form--part-disable-transitions .happyforms-part textarea {
2020
  }
2021
 
2022
  .happyforms-part input[type=text],
2023
+ .happyforms-part input[type=password],
2024
  .happyforms-part input[type=email],
2025
  .happyforms-part input[type=number],
2026
  .happyforms-part textarea {
2506
  border-bottom: 0;
2507
  border-top: 0;
2508
  }
2509
+ .happyforms-form--part-border-off .happyforms-country-select {
2510
+ border-width: 0;
2511
+ }
2512
+ .happyforms-form--part-borders-bottom-only .happyforms-country-select {
2513
+ border-top-width: 0;
2514
+ border-left-width: 0;
2515
+ }
2516
  .happyforms-country-select.focus {
2517
  border: 2px solid var(--happyforms-color-part-border-focus);
2518
  border-right: 0;
2519
  }
2520
+ .happyforms-form--part-border-off .happyforms-country-select.focus {
2521
+ border-width: 0;
2522
+ }
2523
+ .happyforms-form--part-borders-bottom-only .happyforms-country-select.focus {
2524
+ border-top-width: 0;
2525
+ border-left-width: 0;
2526
+ border-bottom-width: 1px;
2527
+ }
2528
  .happyforms-country-select-trigger {
2529
  display: none;
2530
  position: absolute;
2613
  white-space: nowrap;
2614
  width: 100%;
2615
  max-height: 250px;
 
2616
  overflow-y: scroll;
2617
  box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2)
2618
  }
inc/core/assets/css/preview.css CHANGED
@@ -80,4 +80,86 @@ a.happyforms-ask-link.customize-unpreviewable {
80
 
81
  .preview-hidden {
82
  display: none !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  }
80
 
81
  .preview-hidden {
82
  display: none !important;
83
+ }
84
+
85
+ .happyforms-notice {
86
+ position: relative;
87
+ margin-bottom: 15px;
88
+ padding: 25px;
89
+ border-left: 6px solid #FFB900;
90
+ background-color: #FFF8E5;
91
+ box-shadow: 0 1px 1px 0 rgba(0,0,0,.1);
92
+ }
93
+
94
+ .happyforms-notice h2.happyforms-notice__title {
95
+ margin: 0 0 20px !important;
96
+ padding: 0 !important;
97
+ font-weight: bold !important;
98
+ font-size: 16px !important;
99
+ }
100
+
101
+ .happyforms-notice p {
102
+ margin-bottom: 0 !important;
103
+ color: #444 !important;
104
+ }
105
+
106
+ .happyforms-notice ul {
107
+ list-style: disc !important;
108
+ display: flex !important;
109
+ flex-flow: column wrap !important;
110
+ justify-content: space-between !important;
111
+ margin: 0 0 15px !important;
112
+ padding: 0 0 0 20px !important;
113
+ }
114
+
115
+ .happyforms-notice ul li {
116
+ flex: 1;
117
+ width: 100%;
118
+ }
119
+
120
+ @media screen and (min-width: 800px) {
121
+ .happyforms-notice ul {
122
+ flex-flow: row wrap !important;
123
+ }
124
+ .happyforms-notice ul li {
125
+ flex: 0 1 49%;
126
+ width: 49%;
127
+ }
128
+ }
129
+
130
+ .happyforms-notice p, .happyforms-notice ul li {
131
+ font-size: 16px !important;
132
+ }
133
+
134
+ .happyforms-notice p a {
135
+ display: inline-block;
136
+ cursor: pointer !important;
137
+ font-weight: bold !important;
138
+ font-size: 16px !important;
139
+ color: #0073aa !important;
140
+ text-decoration: underline !important;
141
+ }
142
+
143
+ .happyforms-notice p a:after {
144
+ content: '\f504';
145
+ position: relative;
146
+ top: 2px;
147
+ display: inline-block;
148
+ padding-left: 5px;
149
+ font-family: dashicons;
150
+ text-decoration: none;
151
+ }
152
+
153
+ .happyforms-notice .happyforms-dismiss-notice {
154
+ position: absolute;
155
+ top: 10px;
156
+ right: 10px;
157
+ }
158
+
159
+ .happyforms-notice .happyforms-dismiss-notice:before {
160
+ content: "\f153";
161
+ font-family: dashicons;
162
+ font-size: 18px;
163
+ color: #333;
164
+ text-decoration: none;
165
  }
inc/core/assets/js/admin/dashboard.js CHANGED
@@ -1,94 +1,108 @@
1
- ( function( $ ) {
2
- // Dismissible notices
3
- $( '.happyforms-notice:not(.one-time)' ).on( 'click', '.notice-dismiss', function( e ) {
4
- e.preventDefault();
5
-
6
- var $target = $( e.target );
7
- var $parent = $target.parents( '.notice' ).first();
8
- var id = $parent.attr( 'id' ).replace( 'happyforms-notice-', '' );
9
- var nonce = $parent.data( 'nonce' );
10
-
11
- $.post( ajaxurl, {
12
- action: 'happyforms_hide_notice',
13
- nid: id,
14
- nonce: nonce
15
- }
16
- );
17
- } );
18
 
19
- // Messages edit screen
20
- $( 'form#post' ).on( 'click', '#happyforms-message-status-toggle', function( e ) {
21
- e.preventDefault();
22
 
23
- var $target = $( e.target );
24
- var $form = $( 'form#post' );
25
- var $field = $form.find( '[name="message-status"]' );
 
 
 
 
26
 
27
- if ( 1 == $field.val() ) {
28
- $field.val( 0 );
29
- } else {
30
- $field.val( 1 );
31
- }
32
 
33
- $form.submit();
34
- } );
 
 
 
 
 
 
 
 
 
 
 
 
 
35
 
36
- function getCurrentEditor() {
37
- var editor,
38
- hasTinymce = typeof tinymce !== 'undefined',
39
- hasQuicktags = typeof QTags !== 'undefined';
40
 
41
- if ( ! wpActiveEditor ) {
42
- if ( hasTinymce && tinymce.activeEditor ) {
43
- editor = tinymce.activeEditor;
44
- wpActiveEditor = editor.id;
45
- } else if ( ! hasQuicktags ) {
46
  return false;
47
  }
48
- } else if ( hasTinymce ) {
49
- editor = tinymce.get( wpActiveEditor );
50
- }
51
-
52
- return editor;
53
- }
54
-
55
- // Shortcode popup insert button
56
- $( '.happyforms-dialog__button' ).on( 'click', function(e) {
57
- e.preventDefault();
58
- e.stopImmediatePropagation();
59
-
60
- var selectedForm = $( '#happyforms-dialog-select' ).val();
61
- if ( ! selectedForm ) {
62
- return false;
63
- }
64
-
65
- var shortcode = '[happyforms id="' + selectedForm + '" /]';
66
- window.parent.send_to_editor( shortcode );
67
- $( '#happyforms-modal' ).dialog( 'close' );
68
- $( '#happyforms-dialog-select' ).val( '' );
69
-
70
- if ( editor = getCurrentEditor() ) {
71
- editor.focus();
72
- }
73
- } );
74
 
75
- // Shortcode popup
76
- $( document ).on( 'click', '.happyforms-editor-button', function( e ) {
77
- var title = $( e.currentTarget ).attr( 'data-title' );
78
-
79
- $('#happyforms-modal').dialog( {
80
- title: title,
81
- dialogClass: 'happyforms-dialog wp-dialog',
82
- draggable: false,
83
- width: 'auto',
84
- modal: true,
85
- resizable: false,
86
- closeOnEscape: true,
87
- position: {
88
- my: 'center',
89
- at: 'center',
90
- of: $(window)
91
  }
92
- } );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
93
  } );
94
- } )( jQuery );
 
1
+ ( function( $, settings ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
 
3
+ var happyForms = window.happyForms || {};
4
+ window.happyForms = happyForms;
 
5
 
6
+ happyForms.dashboard = {
7
+ init: function() {
8
+ $( '.happyforms-editor-button' ).on( 'click', this.onEditorButton.bind( this ) );
9
+ $( '.happyforms-dialog__button' ).on( 'click', this.onDialogButton.bind( this ) );
10
+ $( '.happyforms-notice:not(.one-time)' ).on( 'click', '.notice-dismiss', this.onNoticeDismiss.bind( this ) );
11
+ $( 'form#post' ).on( 'click', '#happyforms-message-status-toggle', this.onFormMessageStatusToggle.bind( this ) );
12
+ },
13
 
14
+ onEditorButton: function( e ) {
15
+ var title = $( e.currentTarget ).attr( 'data-title' );
 
 
 
16
 
17
+ $('#happyforms-modal').dialog( {
18
+ title: title,
19
+ dialogClass: 'happyforms-dialog wp-dialog',
20
+ draggable: false,
21
+ width: 'auto',
22
+ modal: true,
23
+ resizable: false,
24
+ closeOnEscape: true,
25
+ position: {
26
+ my: 'center',
27
+ at: 'center',
28
+ of: $(window)
29
+ }
30
+ } );
31
+ },
32
 
33
+ onDialogButton: function( e ) {
34
+ e.preventDefault();
35
+ e.stopImmediatePropagation();
 
36
 
37
+ var formId = $( '#happyforms-dialog-select' ).val();
38
+ if ( ! formId ) {
 
 
 
39
  return false;
40
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
 
42
+ var shortcode = settings.shortcode.replace( 'ID', formId );
43
+ window.parent.send_to_editor( shortcode );
44
+ $( '#happyforms-modal' ).dialog( 'close' );
45
+ $( '#happyforms-dialog-select' ).val( '' );
46
+
47
+ if ( editor = this.getCurrentEditor() ) {
48
+ editor.focus();
 
 
 
 
 
 
 
 
 
49
  }
50
+ },
51
+
52
+ getCurrentEditor: function() {
53
+ var editor,
54
+ hasTinymce = typeof tinymce !== 'undefined',
55
+ hasQuicktags = typeof QTags !== 'undefined';
56
+
57
+ if ( ! wpActiveEditor ) {
58
+ if ( hasTinymce && tinymce.activeEditor ) {
59
+ editor = tinymce.activeEditor;
60
+ wpActiveEditor = editor.id;
61
+ } else if ( ! hasQuicktags ) {
62
+ return false;
63
+ }
64
+ } else if ( hasTinymce ) {
65
+ editor = tinymce.get( wpActiveEditor );
66
+ }
67
+
68
+ return editor;
69
+ },
70
+
71
+ onNoticeDismiss: function( e ) {
72
+ e.preventDefault();
73
+
74
+ var $target = $( e.target );
75
+ var $parent = $target.parents( '.notice' ).first();
76
+ var id = $parent.attr( 'id' ).replace( 'happyforms-notice-', '' );
77
+ var nonce = $parent.data( 'nonce' );
78
+
79
+ $.post( ajaxurl, {
80
+ action: 'happyforms_hide_notice',
81
+ nid: id,
82
+ nonce: nonce
83
+ }
84
+ );
85
+ },
86
+
87
+ onFormMessageStatusToggle: function( e ) {
88
+ e.preventDefault();
89
+
90
+ var $target = $( e.target );
91
+ var $form = $( 'form#post' );
92
+ var $field = $form.find( '[name="message-status"]' );
93
+
94
+ if ( 1 == $field.val() ) {
95
+ $field.val( 0 );
96
+ } else {
97
+ $field.val( 1 );
98
+ }
99
+
100
+ $form.submit();
101
+ },
102
+ };
103
+
104
+ $( document ).ready( function() {
105
+ happyForms.dashboard.init();
106
  } );
107
+
108
+ } )( jQuery, _happyFormsAdmin );
inc/core/assets/js/admin/shortcode.js CHANGED
@@ -7,7 +7,7 @@
7
  var title = '';
8
 
9
  if ( settings.forms[id] ) {
10
- title = '"' + settings.forms[id] + '" - ';
11
  }
12
 
13
  return title;
@@ -30,7 +30,7 @@
30
  edit: function() {
31
  var id = this.getId();
32
  var returnUrl = encodeURIComponent( document.location.href );
33
- var link = settings.edit_link.replace( 'ID', id ).replace( 'URL', returnUrl );
34
 
35
  document.location.href = link;
36
  },
@@ -38,4 +38,4 @@
38
 
39
  views.register( 'happyforms', _.extend( {}, happyforms ) );
40
 
41
- } )( window, window.wp.mce.views, window.jQuery, HappyForms.admin );
7
  var title = '';
8
 
9
  if ( settings.forms[id] ) {
10
+ title = '"' + settings.forms[id].post_title + '" - ';
11
  }
12
 
13
  return title;
30
  edit: function() {
31
  var id = this.getId();
32
  var returnUrl = encodeURIComponent( document.location.href );
33
+ var link = settings.editLink.replace( 'ID', id ).replace( 'URL', returnUrl );
34
 
35
  document.location.href = link;
36
  },
38
 
39
  views.register( 'happyforms', _.extend( {}, happyforms ) );
40
 
41
+ } )( window, window.wp.mce.views, window.jQuery, _happyFormsAdmin );
inc/core/assets/js/customize.js CHANGED
@@ -22,13 +22,15 @@
22
  },
23
 
24
  isNew: function() {
25
- return '0' === this.id;
26
  },
27
 
28
  initialize: function( attrs, options ) {
29
  Backbone.Model.prototype.initialize.apply( this, arguments );
30
 
31
  this.attributes.parts = new classes.collections.Parts( this.get( 'parts' ), options );
 
 
32
  },
33
 
34
  toJSON: function() {
@@ -68,6 +70,17 @@
68
  request.fail( function( response ) {
69
  // noop
70
  } );
 
 
 
 
 
 
 
 
 
 
 
71
  }
72
  } );
73
 
@@ -280,13 +293,13 @@
280
 
281
  $helpTriggers.each( function() {
282
  var $trigger = $( this );
283
- var pointerId = $trigger.data( 'pointer' );
284
- var $target = $trigger.parents( '.customize-control' ).find( '[data-pointer-target]' );
285
- var $pointerTemplate = $( '#happyforms-pointer-' + pointerId );
286
 
287
  var $pointer = $target.pointer( {
288
  pointerClass: 'wp-pointer happyforms-help-pointer',
289
- content: $pointerTemplate.html(),
290
  position: {
291
  edge: 'left',
292
  align: 'center',
@@ -306,7 +319,8 @@
306
 
307
  onHelpMouseOver: function( e ) {
308
  var $target = $( e.target );
309
- var pointerId = $target.data( 'pointer' );
 
310
  var $pointer = this.pointers[pointerId];
311
 
312
  if ( $pointer ) {
@@ -316,7 +330,8 @@
316
 
317
  onHelpMouseOut: function( e ) {
318
  var $target = $( e.target );
319
- var pointerId = $target.data( 'pointer' );
 
320
  var $pointer = this.pointers[pointerId];
321
 
322
  if ( $pointer ) {
@@ -519,6 +534,7 @@
519
 
520
  events: {
521
  'keyup #happyforms-form-name': 'onNameChange',
 
522
  'change #happyforms-form-name': 'onNameChange',
523
  'click .expand-collapse-all': 'onExpandCollapseAllClick',
524
  'global-attribute-set': 'onSetGlobalAttribute',
@@ -586,7 +602,13 @@
586
  'left': '0px',
587
  }, 200 );
588
 
589
- $( '#happyforms-form-name', this.$el ).focus();
 
 
 
 
 
 
590
  },
591
 
592
  onNameChange: function( e ) {
@@ -696,18 +718,20 @@
696
  addViewPart: function( partModel, options ) {
697
  var settings = happyForms.parts.findWhere( { type: partModel.get( 'type' ) } );
698
 
699
- var partView = PartFactory.view( _.extend( {
700
- type: settings.get( 'type' ),
701
- model: partModel,
702
- settings: settings,
703
- }, options ) );
 
704
 
705
- var partViewModel = new Backbone.Model( {
706
- id: partModel.id,
707
- view: partView,
708
- } );
709
 
710
- this.partViews.add( partViewModel, options );
 
711
  },
712
 
713
  onPartViewAdd: function( viewModel, collection, options ) {
@@ -816,6 +840,8 @@
816
  events: {
817
  'click .happyforms-parts-list-item': 'onListItemClick',
818
  'keyup #part-search': 'onPartSearch',
 
 
819
  },
820
 
821
  render: function() {
@@ -830,10 +856,14 @@
830
 
831
  onPartSearch: function( e ) {
832
  var search = $( e.target ).val().toLowerCase();
 
833
  var $partEls = $( '.happyforms-parts-list-item', this.$el );
834
 
835
  if ( '' === search ) {
836
  $partEls.show();
 
 
 
837
  }
838
 
839
  var results = happyForms.parts.filter( function( part ) {
@@ -848,7 +878,10 @@
848
  results.forEach( function( part ) {
849
  $( '.happyforms-parts-list-item[data-part-type="' + part.get( 'type' ) + '"]', this.$el ).show();
850
  } );
 
851
 
 
 
852
  }
853
  } );
854
 
@@ -862,6 +895,7 @@
862
  'click .happyforms-form-part-duplicate': 'onPartDuplicateClick',
863
  'keyup [data-bind]': 'onInputChange',
864
  'change [data-bind]': 'onInputChange',
 
865
  'mouseover': 'onMouseOver',
866
  'mouseout': 'onMouseOut',
867
  'click .apply-all-check': 'applyOptionGlobally',
@@ -1250,7 +1284,26 @@
1250
  $( '.happyforms-part-advanced-settings-wrap', this.$el ).slideToggle( 300, function() {
1251
  $( e.target ).toggleClass( 'opened' );
1252
  } );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1253
  }
 
1254
  } );
1255
 
1256
  classes.views.FormSetup = classes.views.Base.extend( {
@@ -1259,26 +1312,24 @@
1259
  events: _.extend( {}, classes.views.Base.prototype.events, {
1260
  'keyup [data-attribute]': 'onInputChange',
1261
  'change [data-attribute]': 'onInputChange',
 
 
1262
  } ),
1263
 
1264
  pointers: {},
1265
 
1266
  editorIds: [
1267
- 'happyforms-confirmation-message',
1268
- 'happyforms-confirmation-email-content'
1269
  ],
1270
 
1271
  initialize: function() {
1272
  classes.views.Base.prototype.initialize.apply( this, arguments );
1273
 
1274
- this.listenTo( this.model, 'change:receive_email_alerts', this.onReceiveEmailAlertsChange );
1275
- this.listenTo( this.model, 'change:send_confirmation_email', this.onSendEmailConfirmationChange );
1276
  this.listenTo( this.model, 'change:captcha', this.onChangeCaptcha );
1277
  this.listenTo( this.model, 'change:captcha_site_key', this.onChangeCaptchaKey );
1278
  this.listenTo( this.model, 'change:captcha_secret_key', this.onChangeCaptchaKey );
1279
  this.listenTo( this.model, 'change:submit_button_label', this.onSubmitButtonLabelChange );
1280
- this.listenTo( this.model, 'change:preview_before_submit', this.onPreviewBeforeSubmitChange );
1281
- this.listenTo( this.model, 'change:unique_id', this.onUniqueIDChange );
1282
  },
1283
 
1284
  render: function() {
@@ -1298,11 +1349,11 @@
1298
  };
1299
 
1300
  _.each( this.editorIds, function( editorId ) {
1301
- var $textarea = $( '#' + editorId, this.$el );
1302
  wp.editor.initialize( editorId, editorSettings );
1303
  } );
1304
 
1305
  this.onChangeCaptcha();
 
1306
  },
1307
 
1308
  onEditorInit: function( editor ) {
@@ -1324,40 +1375,18 @@
1324
 
1325
  if ( $el.is( ':checkbox' ) ) {
1326
  value = $el.is( ':checked' ) ? value: 0;
1327
- }
1328
 
1329
- this.model.set( attribute, value );
1330
- },
1331
-
1332
- onReceiveEmailAlertsChange: function( model, value ) {
1333
- var $alertEmailSettings = $( '#happyforms-alert-email-settings', this.$el );
1334
-
1335
- if ( value ) {
1336
- $alertEmailSettings.show();
1337
- } else {
1338
- $alertEmailSettings.hide();
1339
  }
1340
- },
1341
 
1342
- onSendEmailConfirmationChange: function( model, value ) {
1343
- var $confirmationEmailSettings = $( '#happyforms-confirmation-email-settings', this.$el );
1344
-
1345
- if ( value ) {
1346
- $confirmationEmailSettings.show();
1347
- } else {
1348
- $confirmationEmailSettings.hide();
1349
- }
1350
  },
1351
 
1352
  onChangeCaptcha: function() {
1353
- var $captchaSettings = $( '#happyforms-captcha-settings', this.$el );
1354
-
1355
- if ( this.model.get( 'captcha' ) ) {
1356
- $captchaSettings.show();
1357
- } else {
1358
- $captchaSettings.hide();
1359
- }
1360
-
1361
  this.onChangeCaptchaKey();
1362
  },
1363
 
@@ -1373,23 +1402,39 @@
1373
  happyForms.previewSend( 'happyforms-submit-button-text-update', value );
1374
  },
1375
 
1376
- onPreviewBeforeSubmitChange: function() {
1377
- var $reviewButtonLabelSettings = $( '#happyforms-review-button-label-settings', this.$el );
 
 
1378
 
1379
- if ( this.model.get( 'preview_before_submit' ) ) {
1380
- $reviewButtonLabelSettings.show();
1381
- } else {
1382
- $reviewButtonLabelSettings.hide();
 
 
 
 
 
 
1383
  }
1384
  },
1385
 
1386
- onUniqueIDChange: function() {
1387
- var $uniqueIDSettings = $( '#happyforms-unique-id-settings', this.$el );
 
 
 
 
 
 
 
 
 
1388
 
1389
- if ( this.model.get( 'unique_id' ) ) {
1390
- $uniqueIDSettings.show();
1391
- } else {
1392
- $uniqueIDSettings.hide();
1393
  }
1394
  },
1395
 
@@ -1413,7 +1458,6 @@
1413
  'change [data-target="form_class"] input[type="checkbox"]': 'onFormClassCheckboxChange',
1414
  'change [data-target="css_var"] input[type=radio]': 'onButtonSetCssVarChange',
1415
  'keyup [data-target="attribute"] input[type=text]': 'onAttributeChange',
1416
- 'keyup input[data-attribute="optional_part_label"]': 'onOptionalPartLabelChange',
1417
  } ),
1418
 
1419
  pointers: {},
@@ -1426,9 +1470,78 @@
1426
 
1427
  render: function() {
1428
  this.setElement( this.template( this.model.toJSON() ) );
 
1429
  return this;
1430
  },
1431
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1432
  ready: function() {
1433
  this.initColorPickers();
1434
  this.initUISliders();
@@ -1504,14 +1617,6 @@
1504
  happyForms.form.set( attribute, value );
1505
  },
1506
 
1507
- onOptionalPartLabelChange: function( e ) {
1508
- var data = {
1509
- callback: 'onOptionalPartLabelChangeCallback',
1510
- };
1511
-
1512
- happyForms.previewSend( 'happyforms-form-dom-update', data );
1513
- },
1514
-
1515
  onGroupClick: function( e ) {
1516
  e.preventDefault();
1517
 
@@ -1580,7 +1685,7 @@
1580
 
1581
  initUISliders: function() {
1582
  var self = this;
1583
- var $container = this.$el.find( '.happyforms-range-control:not(.form-width-control)' );
1584
 
1585
  $container.each(function (el, index) {
1586
  var $this = $(this);
@@ -1629,7 +1734,7 @@
1629
  initFormWidthSlider: function(reInit) {
1630
  var self = this;
1631
 
1632
- var $container = this.$el.find( '.happyforms-range-control.form-width-control' );
1633
  var $slider = $( '.happyforms-range-slider', $container );
1634
  var $input = $( 'input', $container );
1635
  var $unitSwitch = $( '.happyforms-unit-switch', $container );
22
  },
23
 
24
  isNew: function() {
25
+ return ( 0 == this.id );
26
  },
27
 
28
  initialize: function( attrs, options ) {
29
  Backbone.Model.prototype.initialize.apply( this, arguments );
30
 
31
  this.attributes.parts = new classes.collections.Parts( this.get( 'parts' ), options );
32
+
33
+ this.changeDocumentTitle();
34
  },
35
 
36
  toJSON: function() {
70
  request.fail( function( response ) {
71
  // noop
72
  } );
73
+ },
74
+
75
+ changeDocumentTitle: function() {
76
+ var title = $( 'title' ).text();
77
+ var newTitle = '';
78
+
79
+ newTitle = title.replace( title.substring( 0, title.indexOf( ':' ) ), 'HappyForms' );
80
+ $( 'title' ).text( newTitle );
81
+
82
+ // change template
83
+ _wpCustomizeSettings.documentTitleTmpl = 'HappyForms: %s';
84
  }
85
  } );
86
 
293
 
294
  $helpTriggers.each( function() {
295
  var $trigger = $( this );
296
+ var $control = $trigger.parents( '.customize-control' );
297
+ var pointerId = $control.attr( 'id' );
298
+ var $target = $control.find( '[data-pointer-target]' );
299
 
300
  var $pointer = $target.pointer( {
301
  pointerClass: 'wp-pointer happyforms-help-pointer',
302
+ content: $( 'span', $trigger ).html(),
303
  position: {
304
  edge: 'left',
305
  align: 'center',
319
 
320
  onHelpMouseOver: function( e ) {
321
  var $target = $( e.target );
322
+ var $control = $target.parents( '.customize-control' );
323
+ var pointerId = $control.attr( 'id' );
324
  var $pointer = this.pointers[pointerId];
325
 
326
  if ( $pointer ) {
330
 
331
  onHelpMouseOut: function( e ) {
332
  var $target = $( e.target );
333
+ var $control = $target.parents( '.customize-control' );
334
+ var pointerId = $control.attr( 'id' );
335
  var $pointer = this.pointers[pointerId];
336
 
337
  if ( $pointer ) {
534
 
535
  events: {
536
  'keyup #happyforms-form-name': 'onNameChange',
537
+ 'click #happyforms-form-name': 'onNameInputClick',
538
  'change #happyforms-form-name': 'onNameChange',
539
  'click .expand-collapse-all': 'onExpandCollapseAllClick',
540
  'global-attribute-set': 'onSetGlobalAttribute',
602
  'left': '0px',
603
  }, 200 );
604
 
605
+ $( '#happyforms-form-name', this.$el ).focus().select();
606
+ },
607
+
608
+ onNameInputClick: function( e ) {
609
+ var $input = $(e.target);
610
+
611
+ $input.select();
612
  },
613
 
614
  onNameChange: function( e ) {
718
  addViewPart: function( partModel, options ) {
719
  var settings = happyForms.parts.findWhere( { type: partModel.get( 'type' ) } );
720
 
721
+ if ( settings ) {
722
+ var partView = PartFactory.view( _.extend( {
723
+ type: settings.get( 'type' ),
724
+ model: partModel,
725
+ settings: settings,
726
+ }, options ) );
727
 
728
+ var partViewModel = new Backbone.Model( {
729
+ id: partModel.id,
730
+ view: partView,
731
+ } );
732
 
733
+ this.partViews.add( partViewModel, options );
734
+ }
735
  },
736
 
737
  onPartViewAdd: function( viewModel, collection, options ) {
840
  events: {
841
  'click .happyforms-parts-list-item': 'onListItemClick',
842
  'keyup #part-search': 'onPartSearch',
843
+ 'change #part-search': 'onPartSearch',
844
+ 'click .happyforms-clear-search': 'onClearSearchClick'
845
  },
846
 
847
  render: function() {
856
 
857
  onPartSearch: function( e ) {
858
  var search = $( e.target ).val().toLowerCase();
859
+ var $clearButton = $( e.target ).nextAll( 'button' );
860
  var $partEls = $( '.happyforms-parts-list-item', this.$el );
861
 
862
  if ( '' === search ) {
863
  $partEls.show();
864
+ $clearButton.removeClass( 'active' );
865
+ } else {
866
+ $clearButton.addClass( 'active' );
867
  }
868
 
869
  var results = happyForms.parts.filter( function( part ) {
878
  results.forEach( function( part ) {
879
  $( '.happyforms-parts-list-item[data-part-type="' + part.get( 'type' ) + '"]', this.$el ).show();
880
  } );
881
+ },
882
 
883
+ onClearSearchClick: function( e ) {
884
+ $( '#part-search', this.$el ).val( '' ).trigger( 'change' );
885
  }
886
  } );
887
 
895
  'click .happyforms-form-part-duplicate': 'onPartDuplicateClick',
896
  'keyup [data-bind]': 'onInputChange',
897
  'change [data-bind]': 'onInputChange',
898
+ 'change input[type=number]': 'onNumberChange',
899
  'mouseover': 'onMouseOver',
900
  'mouseout': 'onMouseOut',
901
  'click .apply-all-check': 'applyOptionGlobally',
1284
  $( '.happyforms-part-advanced-settings-wrap', this.$el ).slideToggle( 300, function() {
1285
  $( e.target ).toggleClass( 'opened' );
1286
  } );
1287
+ },
1288
+
1289
+ onNumberChange: function( e ) {
1290
+ var $input = $( e.target );
1291
+ var value = parseInt( $input.val(), 10 );
1292
+ var min = $input.attr( 'min' );
1293
+ var max = $input.attr( 'max' );
1294
+ var attribute = $input.attr( 'data-bind' );
1295
+
1296
+ if ( value < parseInt( min, 10 ) ) {
1297
+ $input.val( min );
1298
+ this.model.set( attribute, min );
1299
+ }
1300
+
1301
+ if ( value > parseInt( max, 10 ) ) {
1302
+ $input.val( max );
1303
+ this.model.set( attribute, max );
1304
+ }
1305
  }
1306
+
1307
  } );
1308
 
1309
  classes.views.FormSetup = classes.views.Base.extend( {
1312
  events: _.extend( {}, classes.views.Base.prototype.events, {
1313
  'keyup [data-attribute]': 'onInputChange',
1314
  'change [data-attribute]': 'onInputChange',
1315
+ 'change input[type=number]': 'onNumberChange',
1316
+ 'keyup input[data-attribute="optional_part_label"]': 'onOptionalPartLabelChange',
1317
  } ),
1318
 
1319
  pointers: {},
1320
 
1321
  editorIds: [
1322
+ 'confirmation_message',
1323
+ 'confirmation_email_content'
1324
  ],
1325
 
1326
  initialize: function() {
1327
  classes.views.Base.prototype.initialize.apply( this, arguments );
1328
 
 
 
1329
  this.listenTo( this.model, 'change:captcha', this.onChangeCaptcha );
1330
  this.listenTo( this.model, 'change:captcha_site_key', this.onChangeCaptchaKey );
1331
  this.listenTo( this.model, 'change:captcha_secret_key', this.onChangeCaptchaKey );
1332
  this.listenTo( this.model, 'change:submit_button_label', this.onSubmitButtonLabelChange );
 
 
1333
  },
1334
 
1335
  render: function() {
1349
  };
1350
 
1351
  _.each( this.editorIds, function( editorId ) {
 
1352
  wp.editor.initialize( editorId, editorSettings );
1353
  } );
1354
 
1355
  this.onChangeCaptcha();
1356
+ this.setOptionalLabelVisibility();
1357
  },
1358
 
1359
  onEditorInit: function( editor ) {
1375
 
1376
  if ( $el.is( ':checkbox' ) ) {
1377
  value = $el.is( ':checked' ) ? value: 0;
 
1378
 
1379
+ if ( $el.is( ':checked' ) ) {
1380
+ $el.parents( '.customize-control' ).addClass( 'checked' );
1381
+ } else {
1382
+ $el.parents( '.customize-control' ).removeClass( 'checked' );
1383
+ }
 
 
 
 
 
1384
  }
 
1385
 
1386
+ this.model.set( attribute, value );
 
 
 
 
 
 
 
1387
  },
1388
 
1389
  onChangeCaptcha: function() {
 
 
 
 
 
 
 
 
1390
  this.onChangeCaptchaKey();
1391
  },
1392
 
1402
  happyForms.previewSend( 'happyforms-submit-button-text-update', value );
1403
  },
1404
 
1405
+ onOptionalPartLabelChange: function( e ) {
1406
+ var data = {
1407
+ callback: 'onOptionalPartLabelChangeCallback',
1408
+ };
1409
 
1410
+ happyForms.previewSend( 'happyforms-form-dom-update', data );
1411
+ },
1412
+
1413
+ setOptionalLabelVisibility: function() {
1414
+ var optionalParts = this.model.get( 'parts' ).find( function( model, index, parts ) {
1415
+ return 0 === parts[index].get( 'required' ) || '' === parts[index].get( 'required' );
1416
+ } );
1417
+
1418
+ if ( 'undefined' !== typeof optionalParts ) {
1419
+ $( '#customize-control-optional_part_label', this.$el ).show();
1420
  }
1421
  },
1422
 
1423
+ onNumberChange: function( e ) {
1424
+ var $input = $( e.target );
1425
+ var value = parseInt( $input.val(), 10 );
1426
+ var min = $input.attr( 'min' );
1427
+ var max = $input.attr( 'max' );
1428
+ var attribute = $input.attr( 'data-bind' );
1429
+
1430
+ if ( value < parseInt( min, 10 ) ) {
1431
+ $input.val( min );
1432
+ this.model.set( attribute, min );
1433
+ }
1434
 
1435
+ if ( value > parseInt( max, 10 ) ) {
1436
+ $input.val( max );
1437
+ this.model.set( attribute, max );
 
1438
  }
1439
  },
1440
 
1458
  'change [data-target="form_class"] input[type="checkbox"]': 'onFormClassCheckboxChange',
1459
  'change [data-target="css_var"] input[type=radio]': 'onButtonSetCssVarChange',
1460
  'keyup [data-target="attribute"] input[type=text]': 'onAttributeChange',
 
1461
  } ),
1462
 
1463
  pointers: {},
1470
 
1471
  render: function() {
1472
  this.setElement( this.template( this.model.toJSON() ) );
1473
+ this.applyConditionClasses();
1474
  return this;
1475
  },
1476
 
1477
+ applyConditionClasses: function() {
1478
+ var hasPlaceholder =
1479
+ happyForms.form
1480
+ .get( 'parts' )
1481
+ .find( function( model ) {
1482
+ return model.get( 'placeholder' );
1483
+ } );
1484
+
1485
+ if ( hasPlaceholder ) {
1486
+ this.$el.addClass( 'has-placeholder' );
1487
+ }
1488
+
1489
+ var hasDropdowns =
1490
+ happyForms.form
1491
+ .get( 'parts' )
1492
+ .find( function( model ) {
1493
+ var type = model.get( 'type' );
1494
+ return 'select' === type
1495
+ || 'date' === type
1496
+ || 'email' === type
1497
+ || 'address' === type
1498
+ || 'title' === type;
1499
+ } );
1500
+
1501
+ if ( hasDropdowns ) {
1502
+ this.$el.addClass( 'has-dropdowns' );
1503
+ }
1504
+
1505
+ var hasCheckboxRadio =
1506
+ happyForms.form
1507
+ .get( 'parts' )
1508
+ .find( function( model ) {
1509
+ var type = model.get( 'type' );
1510
+ return 'checkbox' === type || 'radio' === type || 'table' === type;
1511
+ } );
1512
+
1513
+ if ( hasCheckboxRadio ) {
1514
+ this.$el.addClass( 'has-checkbox-radio' );
1515
+ }
1516
+
1517
+ var hasRating = happyForms.form
1518
+ .get( 'parts' )
1519
+ .find( function( model ) {
1520
+ var type = model.get( 'type' );
1521
+ return 'rating' === type;
1522
+ } );
1523
+
1524
+ if ( hasRating ) {
1525
+ this.$el.addClass( 'has-rating' );
1526
+ }
1527
+
1528
+ var hasTable = happyForms.form
1529
+ .get( 'parts' )
1530
+ .findWhere( { type: 'table' } )
1531
+ || happyForms.form.get( 'preview_before_submit' );
1532
+
1533
+ if ( hasTable ) {
1534
+ this.$el.addClass( 'has-table' );
1535
+ }
1536
+
1537
+ var hasSubmitInline = ( happyForms.form.get( 'captcha' ) != '1' )
1538
+ && ( happyForms.form.get( 'parts' ).findLastIndex( { width: 'auto' } ) !== -1 );
1539
+
1540
+ if ( hasSubmitInline ) {
1541
+ this.$el.addClass( 'has-submit-inline' );
1542
+ }
1543
+ },
1544
+
1545
  ready: function() {
1546
  this.initColorPickers();
1547
  this.initUISliders();
1617
  happyForms.form.set( attribute, value );
1618
  },
1619
 
 
 
 
 
 
 
 
 
1620
  onGroupClick: function( e ) {
1621
  e.preventDefault();
1622
 
1685
 
1686
  initUISliders: function() {
1687
  var self = this;
1688
+ var $container = this.$el.find( '.happyforms-range-control:not(#customize-control-form_width)' );
1689
 
1690
  $container.each(function (el, index) {
1691
  var $this = $(this);
1734
  initFormWidthSlider: function(reInit) {
1735
  var self = this;
1736
 
1737
+ var $container = this.$el.find( '.happyforms-range-control#customize-control-form_width' );
1738
  var $slider = $( '.happyforms-range-slider', $container );
1739
  var $input = $( 'input', $container );
1740
  var $unitSwitch = $( '.happyforms-unit-switch', $container );
inc/core/assets/js/frontend/phone.js CHANGED
@@ -151,37 +151,33 @@
151
  this.$countryDropdown = $( '.happyforms-custom-select-dropdown', this.$el );
152
  this.$countrySearchField = $( '.happyforms-custom-select-dropdown__search', this.$el );
153
 
154
- this.$countryTrigger.on( 'click', this.showCountryDropdown.bind(this) );
155
  this.$countrySearchField.on( 'keyup', this.searchCountries.bind(this) );
156
 
157
  $( '.happyforms-custom-select-dropdown__item', this.$countryDropdown ).on( 'click keyup', this.onCountrySelect.bind(this) );
158
  $( window ).on( 'click', this.maybeCloseCountryDropdown.bind(this) );
159
  },
160
 
161
- showCountryDropdown: function(e) {
162
  if ( 'undefined' !== typeof e ) {
163
  e.preventDefault();
164
  e.stopPropagation();
165
  }
166
 
167
- $( '.happyforms-custom-select-dropdown' ).hide();
168
- $( '.happyforms-country-select__selected-country' ).removeClass( 'open' );
169
- this.$currentCountry.addClass( 'open' );
170
- this.$countryDropdown.show();
171
- },
172
-
173
- hideCountryDropdown: function() {
174
- this.$currentCountry.removeClass('open');
175
  this.$countryDropdown.scrollTop(0);
176
- this.$countryDropdown.hide();
177
-
178
- this.$countrySearchField.val('');
179
- $( 'li', this.$countryDropdown ).show();
 
 
 
180
  },
181
 
182
  maybeCloseCountryDropdown: function (e) {
183
- if ( this.$countryDropdown.is(':visible') && -1 >= e.target.className.indexOf('happyforms-custom-select') ) {
184
- this.hideCountryDropdown();
185
  }
186
  },
187
 
@@ -220,7 +216,7 @@
220
  this.inputObject.destroyCleave();
221
  this.inputObject.initCleave();
222
 
223
- this.hideCountryDropdown();
224
  },
225
 
226
  searchCountries: function(e) {
151
  this.$countryDropdown = $( '.happyforms-custom-select-dropdown', this.$el );
152
  this.$countrySearchField = $( '.happyforms-custom-select-dropdown__search', this.$el );
153
 
154
+ this.$countryTrigger.on( 'click', this.toggleCountryDropdown.bind(this) );
155
  this.$countrySearchField.on( 'keyup', this.searchCountries.bind(this) );
156
 
157
  $( '.happyforms-custom-select-dropdown__item', this.$countryDropdown ).on( 'click keyup', this.onCountrySelect.bind(this) );
158
  $( window ).on( 'click', this.maybeCloseCountryDropdown.bind(this) );
159
  },
160
 
161
+ toggleCountryDropdown: function(e) {
162
  if ( 'undefined' !== typeof e ) {
163
  e.preventDefault();
164
  e.stopPropagation();
165
  }
166
 
167
+ this.$currentCountry.toggleClass('open');
 
 
 
 
 
 
 
168
  this.$countryDropdown.scrollTop(0);
169
+ this.$countryDropdown.toggleClass('active');
170
+
171
+ // clear search input val and show all items on dropdown close
172
+ if ( ! this.$countryDropdown.hasClass('active') ) {
173
+ this.$countrySearchField.val('');
174
+ $( 'li', this.$countryDropdown ).show();
175
+ }
176
  },
177
 
178
  maybeCloseCountryDropdown: function (e) {
179
+ if ( this.$countryDropdown.hasClass('active') && -1 >= e.target.className.indexOf('happyforms-custom-select') ) {
180
+ this.toggleCountryDropdown();
181
  }
182
  },
183
 
216
  this.inputObject.destroyCleave();
217
  this.inputObject.initCleave();
218
 
219
+ this.toggleCountryDropdown();
220
  },
221
 
222
  searchCountries: function(e) {
inc/core/assets/js/preview.js CHANGED
@@ -1,4 +1,4 @@
1
- ( function( $, _, Backbone, api ) {
2
 
3
  HappyForms.parts = HappyForms.parts || {};
4
 
@@ -212,10 +212,31 @@
212
  handlers.pencilPartClick
213
  );
214
 
215
- $( '.happyforms-ask-link' ).on( 'click', function() {
216
  window.open( $( this ).attr( 'href' ) );
217
  } );
218
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
219
  // Silence unwanted events
220
  $( document.body ).on( 'click', 'button', handlers.silenceEvent );
221
  $( document.body ).on( 'click', 'input[type=submit]', handlers.silenceEvent );
@@ -228,4 +249,4 @@
228
  api.preview.send( 'happyforms-preview-ready' );
229
  } );
230
 
231
- } )( jQuery, _, Backbone, wp.customize );
1
+ ( function( $, _, Backbone, api, settings ) {
2
 
3
  HappyForms.parts = HappyForms.parts || {};
4
 
212
  handlers.pencilPartClick
213
  );
214
 
215
+ $( '.happyforms-ask-link, .happyforms-notice p a' ).on( 'click', function() {
216
  window.open( $( this ).attr( 'href' ) );
217
  } );
218
 
219
+ $( '.happyforms-notice a.happyforms-dismiss-notice' ).on( 'click', function( e ) {
220
+ e.preventDefault();
221
+
222
+ var $target = $( e.target );
223
+ var $parent = $target.parents( '.happyforms-notice' ).first();
224
+
225
+ if ( 0 != parent.happyForms.form.get('ID') ) {
226
+ var id = $parent.attr( 'id' ).replace( 'happyforms-notice-', '' );
227
+ var nonce = $parent.data( 'nonce' );
228
+
229
+ $.post( settings.ajaxurl, {
230
+ action: 'happyforms_hide_notice',
231
+ nid: id,
232
+ nonce: nonce
233
+ }
234
+ );
235
+ }
236
+
237
+ $parent.fadeOut();
238
+ }),
239
+
240
  // Silence unwanted events
241
  $( document.body ).on( 'click', 'button', handlers.silenceEvent );
242
  $( document.body ).on( 'click', 'input[type=submit]', handlers.silenceEvent );
249
  api.preview.send( 'happyforms-preview-ready' );
250
  } );
251
 
252
+ } )( jQuery, _, Backbone, wp.customize, _happyformsPreviewSettings );
inc/core/classes/class-admin-notices.php CHANGED
@@ -45,7 +45,8 @@ class HappyForms_Admin_Notices {
45
  * @return void
46
  */
47
  public function hook() {
48
- add_action( 'admin_notices', array( $this, 'display' ) );
 
49
  add_action( 'wp_ajax_happyforms_hide_notice', array( $this, 'handle_ajax' ) );
50
  }
51
 
@@ -89,19 +90,14 @@ class HappyForms_Admin_Notices {
89
  *
90
  * @return array
91
  */
92
- private function get_notices( WP_Screen $screen = null ) {
93
- if ( is_null( $screen ) ) {
94
- $screen = get_current_screen();
95
- }
96
-
97
  $notices = array();
98
  $dismissed = $this->get_dismissed_notices( get_current_user_id() );
99
 
100
  foreach ( $this->notices as $id => $notice ) {
101
  if ( current_user_can( $notice['cap'] )
102
- && in_array( $screen->id, $notice['screen'] )
103
  && ! in_array( $id, $dismissed ) ) {
104
-
105
  $notices[$id] = $notice;
106
  }
107
  }
@@ -109,7 +105,7 @@ class HappyForms_Admin_Notices {
109
  $user_notices = $this->get_user_notices();
110
 
111
  foreach ( $user_notices as $id => $notice ) {
112
- if ( current_user_can( $notice['cap'] ) && in_array( $screen->id, $notice['screen'] ) ) {
113
  $notices[$id] = $notice;
114
  }
115
  }
@@ -148,13 +144,17 @@ class HappyForms_Admin_Notices {
148
  *
149
  * @return void
150
  */
151
- public function display() {
152
- $screen = get_current_screen();
153
- $notices = $this->get_notices();
154
 
155
  foreach ( $notices as $id => $notice ) {
156
  $type = $notice['type'];
157
- $classes = array( 'happyforms-notice', 'notice', 'notice-' . $type );
 
 
 
 
 
158
  $message = $notice['message'];
159
  $dismissible = wp_validate_boolean( $notice['dismissible'] );
160
  $onetime = wp_validate_boolean( $notice['one-time'] );
@@ -164,9 +164,12 @@ class HappyForms_Admin_Notices {
164
  $classes[] = 'is-dismissible';
165
  }
166
 
167
- $classes = implode( ' ', $classes );
168
  ?>
169
- <div id="happyforms-notice-<?php echo esc_attr( $id ); ?>" class="<?php echo esc_attr( $classes ); ?>"<?php echo $nonce; ?>>
 
 
 
170
  <?php
171
  if ( 'custom' !== $type ) :
172
  echo wpautop( $message );
@@ -174,11 +177,24 @@ class HappyForms_Admin_Notices {
174
  echo $message;
175
  endif;
176
  ?>
 
 
 
177
  </div>
178
  <?php
179
  }
180
  }
181
 
 
 
 
 
 
 
 
 
 
 
182
  /**
183
  * Get the transient ID for the specified user.
184
  *
45
  * @return void
46
  */
47
  public function hook() {
48
+ add_action( 'admin_notices', array( $this, 'display_admin_notices' ) );
49
+ add_action( 'happyforms_preview_notices', array( $this, 'display_preview_notices' ) );
50
  add_action( 'wp_ajax_happyforms_hide_notice', array( $this, 'handle_ajax' ) );
51
  }
52
 
90
  *
91
  * @return array
92
  */
93
+ private function get_notices( $screen_id = '' ) {
 
 
 
 
94
  $notices = array();
95
  $dismissed = $this->get_dismissed_notices( get_current_user_id() );
96
 
97
  foreach ( $this->notices as $id => $notice ) {
98
  if ( current_user_can( $notice['cap'] )
99
+ && in_array( $screen_id, $notice['screen'] )
100
  && ! in_array( $id, $dismissed ) ) {
 
101
  $notices[$id] = $notice;
102
  }
103
  }
105
  $user_notices = $this->get_user_notices();
106
 
107
  foreach ( $user_notices as $id => $notice ) {
108
+ if ( current_user_can( $notice['cap'] ) && in_array( $screen_id, $notice['screen'] ) && ! in_array( $id, $dismissed ) ) {
109
  $notices[$id] = $notice;
110
  }
111
  }
144
  *
145
  * @return void
146
  */
147
+ public function display( $screen_id = '' ) {
148
+ $notices = $this->get_notices( $screen_id );
 
149
 
150
  foreach ( $notices as $id => $notice ) {
151
  $type = $notice['type'];
152
+
153
+ $default_classes = array( 'happyforms-notice' );
154
+ $extra_classes = ( isset( $notice['classes'] ) ) ? $notice['classes'] : array( 'notice', 'notice-' . $type );
155
+
156
+ $classes = array_merge( $default_classes, $extra_classes );
157
+
158
  $message = $notice['message'];
159
  $dismissible = wp_validate_boolean( $notice['dismissible'] );
160
  $onetime = wp_validate_boolean( $notice['one-time'] );
164
  $classes[] = 'is-dismissible';
165
  }
166
 
167
+ $classes_string = implode( ' ', $classes );
168
  ?>
169
+ <div id="happyforms-notice-<?php echo esc_attr( $id ); ?>" class="<?php echo esc_attr( $classes_string ); ?>"<?php echo $nonce; ?>>
170
+ <?php if ( isset( $notice['title'] ) ) : ?>
171
+ <h2 class="happyforms-notice__title"><?php echo $notice['title']; ?></h2>
172
+ <?php endif; ?>
173
  <?php
174
  if ( 'custom' !== $type ) :
175
  echo wpautop( $message );
177
  echo $message;
178
  endif;
179
  ?>
180
+ <?php if ( $dismissible && 'custom' === $type ) : ?>
181
+ <a href="#" class="happyforms-dismiss-notice"></a>
182
+ <?php endif; ?>
183
  </div>
184
  <?php
185
  }
186
  }
187
 
188
+ public function display_admin_notices() {
189
+ $screen = get_current_screen();
190
+ return $this->display( $screen->id );
191
+ }
192
+
193
+ public function display_preview_notices() {
194
+ $screen_id = 'happyforms-preview';
195
+ return $this->display( $screen_id );
196
+ }
197
+
198
  /**
199
  * Get the transient ID for the specified user.
200
  *
inc/core/classes/class-email-message.php CHANGED
@@ -11,6 +11,15 @@ class HappyForms_Email_Message {
11
  */
12
  private $from;
13
 
 
 
 
 
 
 
 
 
 
14
  /**
15
  * The reply-to address.
16
  *
@@ -84,21 +93,21 @@ class HappyForms_Email_Message {
84
  }
85
 
86
  public function set_from( $email, $name = '' ) {
87
- $from = empty( $name ) ? $email : "{$name} <$email>";
 
 
88
 
89
- /**
90
- * Filter the list of senders for this email message.
91
- *
92
- * @since 1.4.3
93
- *
94
- * @param array $senders Current list of senders.
95
- * @param array $message The submission this email was triggered from.
96
- *
97
- * @return array
98
- */
99
- $from = apply_filters( 'happyforms_email_from', $from, $this->message );
100
 
101
- $this->from = $from;
 
 
 
 
 
 
102
  }
103
 
104
  public function set_to( $to ) {
@@ -198,8 +207,6 @@ class HappyForms_Email_Message {
198
  private function get_headers() {
199
  $headers = array();
200
 
201
- array_push( $headers, 'From: ' . $this->from );
202
-
203
  if ( ! empty( $this->reply_to ) ) {
204
  array_push( $headers, 'Reply-To: ' . implode( ', ', $this->reply_to ) );
205
  }
@@ -230,12 +237,27 @@ class HappyForms_Email_Message {
230
  public function send() {
231
  add_filter( 'wp_mail_content_type', array( $this, 'get_content_type' ) );
232
 
233
- $headers = $this->get_headers();
 
 
234
 
 
 
 
 
 
235
  $result = wp_mail( $this->to, $this->subject, $this->content, $headers );
236
 
237
  remove_filter( 'wp_mail_content_type', array( $this, 'get_content_type' ) );
238
 
 
 
 
 
 
 
 
 
239
  return $result;
240
  }
241
 
11
  */
12
  private $from;
13
 
14
+ /**
15
+ * The sender name.
16
+ *
17
+ * @since 1.4.3
18
+ *
19
+ * @var string
20
+ */
21
+ private $from_name;
22
+
23
  /**
24
  * The reply-to address.
25
  *
93
  }
94
 
95
  public function set_from( $email, $name = '' ) {
96
+ $from = apply_filters( 'happyforms_email_from', $email, $this->message );
97
+ $this->from = $from;
98
+ }
99
 
100
+ public function get_from() {
101
+ return $this->from;
102
+ }
 
 
 
 
 
 
 
 
103
 
104
+ public function set_from_name( $name ) {
105
+ $from_name = apply_filters( 'happyforms_email_from_name', $name, $this->message );
106
+ $this->from_name = $from_name;
107
+ }
108
+
109
+ public function get_from_name() {
110
+ return $this->from_name;
111
  }
112
 
113
  public function set_to( $to ) {
207
  private function get_headers() {
208
  $headers = array();
209
 
 
 
210
  if ( ! empty( $this->reply_to ) ) {
211
  array_push( $headers, 'Reply-To: ' . implode( ', ', $this->reply_to ) );
212
  }
237
  public function send() {
238
  add_filter( 'wp_mail_content_type', array( $this, 'get_content_type' ) );
239
 
240
+ if ( $this->from ) {
241
+ add_filter( 'wp_mail_from', array( $this, 'get_from' ) );
242
+ }
243
 
244
+ if ( $this->from_name ) {
245
+ add_filter( 'wp_mail_from_name', array( $this, 'get_from_name' ) );
246
+ }
247
+
248
+ $headers = $this->get_headers();
249
  $result = wp_mail( $this->to, $this->subject, $this->content, $headers );
250
 
251
  remove_filter( 'wp_mail_content_type', array( $this, 'get_content_type' ) );
252
 
253
+ if ( $this->from ) {
254
+ remove_filter( 'wp_mail_from', array( $this, 'get_from' ) );
255
+ }
256
+
257
+ if ( $this->from_name ) {
258
+ remove_filter( 'wp_mail_from_name', array( $this, 'get_from_name' ) );
259
+ }
260
+
261
  return $result;
262
  }
263
 
inc/core/classes/class-form-admin.php CHANGED
@@ -296,10 +296,10 @@ class HappyForms_Form_Admin {
296
  break;
297
 
298
  case 'shortcode':
299
- $shortcode = "[happyforms id=\"{$id}\" /]";
300
  ?>
301
  <div class="happyforms-shortcode-col">
302
- <span><?php echo $shortcode; ?></span>
303
  <input type="text" value="<?php echo esc_attr( $shortcode ); ?>">
304
  <a href="#" class="happyforms-shortcode-clipboard"><?php _e( 'Copy to clipboard', 'happyforms' ); ?></a>
305
  </div>
296
  break;
297
 
298
  case 'shortcode':
299
+ $shortcode = happyforms_get_shortcode( $id );
300
  ?>
301
  <div class="happyforms-shortcode-col">
302
+ <span><?php echo esc_html( $shortcode ); ?></span>
303
  <input type="text" value="<?php echo esc_attr( $shortcode ); ?>">
304
  <a href="#" class="happyforms-shortcode-clipboard"><?php _e( 'Copy to clipboard', 'happyforms' ); ?></a>
305
  </div>
inc/core/classes/class-form-controller.php CHANGED
@@ -58,23 +58,6 @@ class HappyForms_Form_Controller {
58
  add_action( 'trashed_post', array( $this, 'trashed_post' ) );
59
  add_action( 'delete_post', array( $this, 'delete_post' ) );
60
  add_action( 'untrashed_post', array( $this, 'untrashed_post' ) );
61
- add_filter( 'happyforms_frontend_dependencies', array( $this, 'script_dependencies' ), 10, 2 );
62
- add_filter( 'happyforms_form_has_captcha', array( $this, 'has_captcha' ), 10, 2 );
63
- add_filter( 'happyforms_get_steps', array( $this, 'steps_add_preview' ), 10, 2 );
64
- add_action( 'happyforms_response_created', array( $this, 'increment_unique_id' ), 10, 2 );
65
-
66
- add_filter( 'happyforms_get_template_path', array( $this, 'submit_preview_template' ), 10, 2 );
67
- add_filter( 'happyforms_get_template_path', array( $this, 'confirm_preview_partial' ), 20, 2 );
68
- add_filter( 'happyforms_form_class', array( $this, 'form_html_class_preview' ), 10, 2 );
69
- add_action( 'happyforms_after_title', array( $this, 'form_open_preview' ) );
70
- add_filter( 'happyforms_part_attributes', array( $this, 'part_attributes_preview' ), 10, 4 );
71
- add_action( 'happyforms_part_before', array( $this, 'part_before_preview' ), 10, 2 );
72
- add_action( 'happyforms_part_after', array( $this, 'part_after_preview' ), 10, 2 );
73
-
74
- if ( is_customize_preview() ) {
75
- add_filter( 'happyforms_part_class', array( $this, 'part_class' ) );
76
- add_filter( 'happyforms_the_form_title', array( $this, 'form_title' ) );
77
- }
78
  }
79
 
80
  /**
@@ -88,33 +71,33 @@ class HappyForms_Form_Controller {
88
  */
89
  public function register_post_type() {
90
  $labels = array(
91
- 'name' => __( 'Forms', 'happyforms' ),
92
- 'singular_name' => __( 'Form', 'happyforms' ),
93
- 'add_new_item' => __( 'Build form', 'happyforms' ),
94
- 'edit_item' => __( 'Edit form', 'happyforms' ),
95
- 'new_item' => __( 'Build form', 'happyforms' ),
96
- 'view_item' => __( 'View form', 'happyforms' ),
97
- 'view_items' => __( 'View forms', 'happyforms' ),
98
- 'search_items' => __( 'Search Forms', 'happyforms' ),
99
- 'not_found' => __( 'No form found', 'happyforms' ),
100
  'not_found_in_trash' => __( 'No forms found in Trash', 'happyforms' ),
101
- 'all_items' => __( 'All Forms', 'happyforms' ),
102
- 'menu_name' => __( 'All Forms', 'happyforms' ),
103
  );
104
 
105
  $args = array(
106
- 'labels' => $labels,
107
- 'public' => false,
108
- 'publicly_queryable' => is_customize_preview(),
109
  'exclude_from_search' => true,
110
- 'show_ui' => true,
111
- 'show_in_menu' => false,
112
- 'query_var' => true,
113
- 'rewrite' => array( 'slug' => 'happyform' ),
114
- 'capability_type' => 'page',
115
- 'has_archive' => false,
116
- 'hierarchical' => false,
117
- 'supports' => array( 'author', 'custom-fields' ),
118
  );
119
 
120
  register_post_type( $this->post_type, $args );
@@ -224,98 +207,6 @@ class HappyForms_Form_Controller {
224
  'parts' => array(
225
  'default' => array(),
226
  ),
227
- 'confirmation_message' => array(
228
- 'default' => __( 'Your message has been successfully sent. We appreciate you contacting us and we’ll be in touch soon.', 'happyforms' ),
229
- 'sanitize' => 'esc_html',
230
- ),
231
- 'receive_email_alerts' => array(
232
- 'default' => 1,
233
- 'sanitize' => 'happyforms_sanitize_checkbox'
234
- ),
235
- 'email_recipient' => array(
236
- 'default' => ( $current_user->user_email ) ? $current_user->user_email : '',
237
- 'sanitize' => 'happyforms_sanitize_emails',
238
- ),
239
- 'alert_email_subject' => array(
240
- 'default' => __( 'You received a new message', 'happyforms' ),
241
- 'sanitize' => 'sanitize_text_field',
242
- ),
243
- 'send_confirmation_email' => array(
244
- 'default' => 1,
245
- 'sanitize' => 'happyforms_sanitize_checkbox'
246
- ),
247
- 'confirmation_email_from_name' => array(
248
- 'default' => get_bloginfo( 'name' ),
249
- 'sanitize' => 'sanitize_text_field',
250
- ),
251
- 'confirmation_email_subject' => array(
252
- 'default' => __( 'We received your message', 'happyforms' ),
253
- 'sanitize' => 'sanitize_text_field',
254
- ),
255
- 'confirmation_email_content' => array(
256
- 'default' => __( 'Your message has been successfully sent. We appreciate you contacting us and we’ll be in touch soon.', 'happyforms' ),
257
- 'sanitize' => 'esc_html',
258
- ),
259
- 'redirect_url' => array(
260
- 'default' => '',
261
- 'sanitize' => 'sanitize_text_field',
262
- ),
263
- 'spam_prevention' => array(
264
- 'default' => 1,
265
- 'sanitize' => 'happyforms_sanitize_checkbox',
266
- ),
267
- 'submit_button_label' => array(
268
- 'default' => __( 'Submit Form', 'happyforms' ),
269
- 'sanitize' => 'sanitize_text_field',
270
- ),
271
- 'form_expiration_datetime' => array(
272
- 'default' => date( 'Y-m-d H:i:s', time() + 3600 * 24 * 7 ),
273
- 'sanitize' => 'happyforms_sanitize_datetime',
274
- ),
275
- 'save_entries' => array(
276
- 'default' => 1,
277
- 'sanitize' => 'happyforms_sanitize_checkbox',
278
- ),
279
- 'captcha' => array(
280
- 'default' => '',
281
- 'sanitize' => 'happyforms_sanitize_checkbox',
282
- ),
283
- 'captcha_site_key' => array(
284
- 'default' => '',
285
- 'sanitize' => 'sanitize_text_field',
286
- ),
287
- 'captcha_secret_key' => array(
288
- 'default' => '',
289
- 'sanitize' => 'sanitize_text_field',
290
- ),
291
- 'preview_before_submit' => array(
292
- 'default' => 0,
293
- 'sanitize' => 'happyforms_sanitize_checkbox',
294
- ),
295
- 'review_button_label' => array(
296
- 'default' => __( 'Review submission', 'happyforms' ),
297
- 'sanitize' => 'sanitize_text_field',
298
- ),
299
- 'unique_id' => array(
300
- 'default' => 0,
301
- 'sanitize' => 'happyforms_sanitize_checkbox',
302
- ),
303
- 'unique_id_start_from' => array(
304
- 'default' => 1,
305
- 'sanitize' => 'intval',
306
- ),
307
- 'unique_id_prefix' => array(
308
- 'default' => '',
309
- 'sanitize' => 'sanitize_text_field',
310
- ),
311
- 'unique_id_suffix' => array(
312
- 'default' => '',
313
- 'sanitize' => 'sanitize_text_field',
314
- ),
315
- 'email_mark_and_reply' => array(
316
- 'default' => 1,
317
- 'sanitize' => 'happyforms_sanitize_checkbox',
318
- ),
319
  );
320
 
321
  /**
@@ -513,6 +404,8 @@ class HappyForms_Form_Controller {
513
  'meta_input' => $meta
514
  ) );
515
 
 
 
516
  $result = wp_insert_post( wp_slash( $post_data ), true );
517
 
518
  if ( is_wp_error( $result ) ) {
@@ -595,6 +488,8 @@ class HappyForms_Form_Controller {
595
  unset( $form_array[$part_id] );
596
  }
597
 
 
 
598
  return $form_array;
599
  }
600
 
@@ -622,6 +517,8 @@ class HappyForms_Form_Controller {
622
  'meta_input' => $meta_data
623
  ) );
624
 
 
 
625
  $result = wp_update_post( $update_data, true );
626
 
627
  if ( is_wp_error( $result ) ) {
@@ -799,6 +696,17 @@ class HappyForms_Form_Controller {
799
  return false;
800
  }
801
 
 
 
 
 
 
 
 
 
 
 
 
802
  /**
803
  * Get whether or not the given form data has spam prevention on.
804
  *
@@ -862,18 +770,14 @@ class HappyForms_Form_Controller {
862
  happyforms_the_form_styles( $form );
863
  }
864
 
865
- require( happyforms_get_include_folder() . '/core/templates/single-form.php' );
 
 
866
  $form_markup = ob_get_clean();
867
 
868
  return $form_markup;
869
  }
870
 
871
- public function has_captcha( $has_captcha, $form ) {
872
- $has_captcha = $form['captcha'] || happyforms_is_preview();
873
-
874
- return $has_captcha;
875
- }
876
-
877
  public function get_default_steps( $form ) {
878
  $steps = array(
879
  1000 => 'submit',
@@ -882,149 +786,6 @@ class HappyForms_Form_Controller {
882
  return $steps;
883
  }
884
 
885
- public function steps_add_preview( $steps, $form ) {
886
- if ( $this->requires_confirmation( $form ) ) {
887
- $steps[100] = 'preview';
888
- $steps[200] = 'review';
889
- }
890
-
891
- return $steps;
892
- }
893
-
894
- public function increment_unique_id( $response_id, $form ) {
895
- if ( intval( $form['unique_id'] ) ) {
896
- $increment = intval( $form['unique_id_start_from'] );
897
-
898
- happyforms_update_meta( $form['ID'], 'unique_id_start_from', $increment + 1 );
899
- }
900
- }
901
-
902
- public function requires_confirmation( $form ) {
903
- return ( 1 === intval( $form['preview_before_submit'] ) );
904
- }
905
-
906
- /**
907
- * Filter: append -editable class to part templates.
908
- *
909
- * @since 1.0
910
- *
911
- * @hooked filter happyforms_part_class
912
- *
913
- * @return void
914
- */
915
- public function part_class( $classes ) {
916
- $classes[] = 'happyforms-block-editable happyforms-block-editable--part';
917
-
918
- return $classes;
919
- }
920
-
921
- public function form_title( $title ) {
922
- $before = '<div class="happyforms-block-editable happyforms-block-editable--title">';
923
- $after = '</div>';
924
- $title = "{$before}{$title}{$after}";
925
-
926
- return $title;
927
- }
928
-
929
- public function submit_preview_template( $path, $form ) {
930
- if ( happyforms_get_form_property( $form, 'preview_before_submit' )
931
- && ( 'preview' === happyforms_get_current_step( $form ) )
932
- && ( 'partials/form-submit' === $path ) ) {
933
-
934
- $path = 'partials/form-submit-preview';
935
- }
936
-
937
- return $path;
938
- }
939
-
940
- public function confirm_preview_partial( $path, $form ) {
941
- if ( happyforms_get_form_property( $form, 'preview_before_submit' )
942
- && ( 'review' === happyforms_get_current_step( $form ) )
943
- && ( 'partials/form-submit' === $path ) ) {
944
-
945
- $path = 'partials/form-confirm-preview';
946
- }
947
-
948
- return $path;
949
- }
950
-
951
- public function part_attributes_preview( $attributes, $part, $form, $component ) {
952
- if ( happyforms_get_form_property( $form, 'preview_before_submit' )
953
- && ( 'review' === happyforms_get_current_step( $form ) ) ) {
954
-
955
- $attributes[] = 'readonly';
956
- }
957
-
958
- return $attributes;
959
- }
960
-
961
- public function part_before_preview( $part, $form ) {
962
- if ( happyforms_get_form_property( $form, 'preview_before_submit' )
963
- && ( 'review' === happyforms_get_current_step( $form ) ) ) {
964
-
965
- require( happyforms_get_include_folder() . '/core/templates/partials/part-preview.php' );
966
- }
967
- }
968
-
969
- public function part_after_preview( $part, $form ) {
970
- if ( happyforms_get_form_property( $form, 'preview_before_submit' )
971
- && ( 'review' === happyforms_get_current_step( $form ) ) ) {
972
- ?>
973
- </div></div>
974
- <?php
975
- }
976
- }
977
-
978
- public function form_html_class_preview( $classes, $form ) {
979
- if ( happyforms_get_form_property( $form, 'preview_before_submit' )
980
- && ( 'review' === happyforms_get_current_step( $form ) ) ) {
981
-
982
- $classes[] = 'happyforms-form-preview';
983
- }
984
-
985
- return $classes;
986
- }
987
-
988
- public function form_open_preview( $form ) {
989
- if ( happyforms_get_form_property( $form, 'preview_before_submit' )
990
- && ( 'review' === happyforms_get_current_step( $form ) ) ) {
991
- ?>
992
- <p><?php _e( 'Please review your submission...', 'happyforms' ); ?></p>
993
- <?php
994
- }
995
- }
996
-
997
- public function script_dependencies( $deps, $forms ) {
998
- $has_captcha = false;
999
-
1000
- foreach ( $forms as $form ) {
1001
- if ( $form['captcha'] ) {
1002
- $has_captcha = true;
1003
- break;
1004
- }
1005
- }
1006
-
1007
- if ( ! happyforms_is_preview() && ! $has_captcha ) {
1008
- return $deps;
1009
- }
1010
-
1011
- wp_register_script(
1012
- 'google-recaptcha',
1013
- 'https://www.google.com/recaptcha/api.js',
1014
- array(), false, true
1015
- );
1016
-
1017
- wp_register_script(
1018
- 'recaptcha',
1019
- happyforms_get_plugin_url() . 'inc/core/assets/js/frontend/recaptcha.js',
1020
- array( 'google-recaptcha' ), false, true
1021
- );
1022
-
1023
- $deps[] = 'recaptcha';
1024
-
1025
- return $deps;
1026
- }
1027
-
1028
  }
1029
 
1030
  if ( ! function_exists( 'happyforms_get_form_controller' ) ):
58
  add_action( 'trashed_post', array( $this, 'trashed_post' ) );
59
  add_action( 'delete_post', array( $this, 'delete_post' ) );
60
  add_action( 'untrashed_post', array( $this, 'untrashed_post' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  }
62
 
63
  /**
71
  */
72
  public function register_post_type() {
73
  $labels = array(
74
+ 'name' => __( 'Forms', 'happyforms' ),
75
+ 'singular_name' => __( 'Form', 'happyforms' ),
76
+ 'add_new_item' => __( 'Build form', 'happyforms' ),
77
+ 'edit_item' => __( 'Edit form', 'happyforms' ),
78
+ 'new_item' => __( 'Build form', 'happyforms' ),
79
+ 'view_item' => __( 'View form', 'happyforms' ),
80
+ 'view_items' => __( 'View forms', 'happyforms' ),
81
+ 'search_items' => __( 'Search Forms', 'happyforms' ),
82
+ 'not_found' => __( 'No form found', 'happyforms' ),
83
  'not_found_in_trash' => __( 'No forms found in Trash', 'happyforms' ),
84
+ 'all_items' => __( 'All Forms', 'happyforms' ),
85
+ 'menu_name' => __( 'All Forms', 'happyforms' ),
86
  );
87
 
88
  $args = array(
89
+ 'labels' => $labels,
90
+ 'public' => false,
91
+ 'publicly_queryable' => is_customize_preview(),
92
  'exclude_from_search' => true,
93
+ 'show_ui' => true,
94
+ 'show_in_menu' => false,
95
+ 'query_var' => true,
96
+ 'rewrite' => array( 'slug' => 'happyform' ),
97
+ 'capability_type' => 'page',
98
+ 'has_archive' => false,
99
+ 'hierarchical' => false,
100
+ 'supports' => array( 'author', 'custom-fields' ),
101
  );
102
 
103
  register_post_type( $this->post_type, $args );
207
  'parts' => array(
208
  'default' => array(),
209
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
210
  );
211
 
212
  /**
404
  'meta_input' => $meta
405
  ) );
406
 
407
+ $post_data = apply_filters( 'happyforms_create_form_data', $post_data );
408
+
409
  $result = wp_insert_post( wp_slash( $post_data ), true );
410
 
411
  if ( is_wp_error( $result ) ) {
488
  unset( $form_array[$part_id] );
489
  }
490
 
491
+ $form_array = apply_filters( 'happyforms_get_form_data', $form_array );
492
+
493
  return $form_array;
494
  }
495
 
517
  'meta_input' => $meta_data
518
  ) );
519
 
520
+ $update_data = apply_filters( 'happyforms_update_form_data', $update_data );
521
+
522
  $result = wp_update_post( $update_data, true );
523
 
524
  if ( is_wp_error( $result ) ) {
696
  return false;
697
  }
698
 
699
+ public function get_part_by_id( $form_data, $part_id ) {
700
+ $part_ids = wp_list_pluck( $form_data['parts'], 'id' );
701
+ $parts = array_combine( $part_ids, $form_data['parts'] );
702
+
703
+ if ( isset( $parts[$part_id] ) ) {
704
+ return $parts[$part_id];
705
+ }
706
+
707
+ return false;
708
+ }
709
+
710
  /**
711
  * Get whether or not the given form data has spam prevention on.
712
  *
770
  happyforms_the_form_styles( $form );
771
  }
772
 
773
+ $template_path = happyforms_get_include_folder() . '/core/templates/single-form.php';
774
+ $template_path = apply_filters( 'happyforms_form_template_path', $template_path, $form );
775
+ require( $template_path );
776
  $form_markup = ob_get_clean();
777
 
778
  return $form_markup;
779
  }
780
 
 
 
 
 
 
 
781
  public function get_default_steps( $form ) {
782
  $steps = array(
783
  1000 => 'submit',
786
  return $steps;
787
  }
788
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
789
  }
790
 
791
  if ( ! function_exists( 'happyforms_get_form_controller' ) ):
inc/core/classes/class-form-setup.php ADDED
@@ -0,0 +1,498 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class HappyForms_Form_Setup {
4
+
5
+ /**
6
+ * The singleton instance.
7
+ *
8
+ * @var HappyForms_Form_Setup
9
+ */
10
+ private static $instance;
11
+
12
+ /**
13
+ * The singleton constructor.
14
+ *
15
+ * @return HappyForms_Form_Setup
16
+ */
17
+ public static function instance() {
18
+ if ( is_null( self::$instance ) ) {
19
+ self::$instance = new self();
20
+ }
21
+
22
+ self::$instance->hook();
23
+
24
+ return self::$instance;
25
+ }
26
+
27
+ /**
28
+ * Hook into WordPress.
29
+ *
30
+ * @return void
31
+ */
32
+ public function hook() {
33
+ // Common form extensions
34
+ add_filter( 'happyforms_meta_fields', array( $this, 'meta_fields' ) );
35
+ add_filter( 'happyforms_frontend_dependencies', array( $this, 'script_dependencies' ), 10, 2 );
36
+ add_filter( 'happyforms_form_has_captcha', array( $this, 'has_captcha' ), 10, 2 );
37
+ add_filter( 'happyforms_get_steps', array( $this, 'steps_add_preview' ), 10, 2 );
38
+ add_action( 'happyforms_response_created', array( $this, 'increment_unique_id' ), 10, 2 );
39
+
40
+ // Customizer form display
41
+ add_filter( 'happyforms_part_class', array( $this, 'part_class_customizer' ) );
42
+ add_filter( 'happyforms_the_form_title', array( $this, 'form_title_customizer' ) );
43
+
44
+ // Reviewable form display
45
+ add_filter( 'happyforms_get_template_path', array( $this, 'submit_preview_template' ), 10, 2 );
46
+ add_filter( 'happyforms_get_template_path', array( $this, 'confirm_preview_partial' ), 20, 2 );
47
+ add_filter( 'happyforms_form_class', array( $this, 'form_html_class_preview' ), 10, 2 );
48
+ add_action( 'happyforms_after_title', array( $this, 'form_open_preview' ) );
49
+ add_filter( 'happyforms_part_attributes', array( $this, 'part_attributes_preview' ), 10, 4 );
50
+ add_action( 'happyforms_part_before', array( $this, 'part_before_preview' ), 10, 2 );
51
+ add_action( 'happyforms_part_after', array( $this, 'part_after_preview' ), 10, 2 );
52
+ add_action( 'happyforms_do_setup_control', array( $this, 'do_control' ), 10, 3 );
53
+ }
54
+
55
+ public function get_fields() {
56
+ global $current_user;
57
+
58
+ $fields = array(
59
+ 'confirmation_message' => array(
60
+ 'default' => __( 'Your message has been successfully sent. We appreciate you contacting us and we’ll be in touch soon.', 'happyforms' ),
61
+ 'sanitize' => 'esc_html',
62
+ ),
63
+ 'receive_email_alerts' => array(
64
+ 'default' => 1,
65
+ 'sanitize' => 'happyforms_sanitize_checkbox'
66
+ ),
67
+ 'email_recipient' => array(
68
+ 'default' => ( $current_user->user_email ) ? $current_user->user_email : '',
69
+ 'sanitize' => 'happyforms_sanitize_emails',
70
+ ),
71
+ 'alert_email_subject' => array(
72
+ 'default' => __( 'You received a new message', 'happyforms' ),
73
+ 'sanitize' => 'sanitize_text_field',
74
+ ),
75
+ 'send_confirmation_email' => array(
76
+ 'default' => 1,
77
+ 'sanitize' => 'happyforms_sanitize_checkbox'
78
+ ),
79
+ 'confirmation_email_from_name' => array(
80
+ 'default' => get_bloginfo( 'name' ),
81
+ 'sanitize' => 'sanitize_text_field',
82
+ ),
83
+ 'confirmation_email_subject' => array(
84
+ 'default' => __( 'We received your message', 'happyforms' ),
85
+ 'sanitize' => 'sanitize_text_field',
86
+ ),
87
+ 'confirmation_email_content' => array(
88
+ 'default' => __( 'Your message has been successfully sent. We appreciate you contacting us and we’ll be in touch soon.', 'happyforms' ),
89
+ 'sanitize' => 'esc_html',
90
+ ),
91
+ 'redirect_on_complete' => array(
92
+ 'default' => 0,
93
+ 'sanitize' => 'happyforms_sanitize_checkbox',
94
+ ),
95
+ 'redirect_url' => array(
96
+ 'default' => '',
97
+ 'sanitize' => 'sanitize_text_field',
98
+ ),
99
+ 'spam_prevention' => array(
100
+ 'default' => 1,
101
+ 'sanitize' => 'happyforms_sanitize_checkbox',
102
+ ),
103
+ 'optional_part_label' => array(
104
+ 'default' => __( '(optional)', 'happyforms' ),
105
+ 'sanitize' => 'sanitize_text_field',
106
+ ),
107
+ 'submit_button_label' => array(
108
+ 'default' => __( 'Submit Form', 'happyforms' ),
109
+ 'sanitize' => 'sanitize_text_field',
110
+ ),
111
+ 'form_expiration_datetime' => array(
112
+ 'default' => date( 'Y-m-d H:i:s', time() + 3600 * 24 * 7 ),
113
+ 'sanitize' => 'happyforms_sanitize_datetime',
114
+ ),
115
+ 'save_entries' => array(
116
+ 'default' => 1,
117
+ 'sanitize' => 'happyforms_sanitize_checkbox',
118
+ ),
119
+ 'captcha' => array(
120
+ 'default' => '',
121
+ 'sanitize' => 'happyforms_sanitize_checkbox',
122
+ ),
123
+ 'captcha_site_key' => array(
124
+ 'default' => '',
125
+ 'sanitize' => 'sanitize_text_field',
126
+ ),
127
+ 'captcha_secret_key' => array(
128
+ 'default' => '',
129
+ 'sanitize' => 'sanitize_text_field',
130
+ ),
131
+ 'preview_before_submit' => array(
132
+ 'default' => 0,
133
+ 'sanitize' => 'happyforms_sanitize_checkbox',
134
+ ),
135
+ 'review_button_label' => array(
136
+ 'default' => __( 'Review submission', 'happyforms' ),
137
+ 'sanitize' => 'sanitize_text_field',
138
+ ),
139
+ 'unique_id' => array(
140
+ 'default' => 0,
141
+ 'sanitize' => 'happyforms_sanitize_checkbox',
142
+ ),
143
+ 'unique_id_start_from' => array(
144
+ 'default' => 1,
145
+ 'sanitize' => 'intval',
146
+ ),
147
+ 'unique_id_prefix' => array(
148
+ 'default' => '',
149
+ 'sanitize' => 'sanitize_text_field',
150
+ ),
151
+ 'unique_id_suffix' => array(
152
+ 'default' => '',
153
+ 'sanitize' => 'sanitize_text_field',
154
+ ),
155
+ );
156
+
157
+ return $fields;
158
+ }
159
+
160
+ public function get_controls() {
161
+ $controls = array(
162
+ 100 => array(
163
+ 'type' => 'editor',
164
+ 'label' => __( 'Confirmation message', 'happyforms' ),
165
+ 'tooltip' => __( 'This is the message your users will see after succesfully submitting your form.', 'happyforms' ),
166
+ 'field' => 'confirmation_message',
167
+ ),
168
+ 200 => array(
169
+ 'type' => 'checkbox',
170
+ 'label' => __( 'Receive submission alerts', 'happyforms' ),
171
+ 'field' => 'receive_email_alerts',
172
+ ),
173
+ 300 => array(
174
+ 'type' => 'text',
175
+ 'label' => __( 'Email address', 'happyforms' ),
176
+ 'tooltip' => __( 'Add your email address here to receive a confirmation email for each form response. You can add multiple email addresses by separating each address with a comma.', 'happyforms' ),
177
+ 'field' => 'email_recipient',
178
+ ),
179
+ 400 => array(
180
+ 'type' => 'text',
181
+ 'label' => __( 'Email subject', 'happyforms' ),
182
+ 'tooltip' => __( 'Each time a user submits a message, you\'ll receive an email with this subject.', 'happyforms' ),
183
+ 'field' => 'alert_email_subject',
184
+ ),
185
+ 500 => array(
186
+ 'type' => 'checkbox',
187
+ 'label' => __( 'Send confirmation email', 'happyforms' ),
188
+ 'field' => 'send_confirmation_email',
189
+ ),
190
+ 600 => array(
191
+ 'type' => 'text',
192
+ 'label' => __( 'Email display name', 'happyforms' ),
193
+ 'tooltip' => __( 'If your form contains an email field, recipients will receive an email with this sender name.', 'happyforms' ),
194
+ 'field' => 'confirmation_email_from_name',
195
+ ),
196
+ 700 => array(
197
+ 'type' => 'text',
198
+ 'label' => __( 'Email subject', 'happyforms' ),
199
+ 'tooltip' => __( 'If your form contains an email field, recipients will receive an email with this subject.', 'happyforms' ),
200
+ 'field' => 'confirmation_email_subject',
201
+ ),
202
+ 800 => array(
203
+ 'type' => 'editor',
204
+ 'label' => __( 'Email content', 'happyforms' ),
205
+ 'tooltip' => __( 'If your form contains an email field, recipients will receive an email with this content.', 'happyforms' ),
206
+ 'field' => 'confirmation_email_content',
207
+ ),
208
+ 900 => array(
209
+ 'type' => 'text',
210
+ 'label' => __( 'Optional part label', 'happyforms' ),
211
+ 'field' => 'optional_part_label',
212
+ ),
213
+ 1000 => array(
214
+ 'type' => 'text',
215
+ 'label' => __( 'Submit button label', 'happyforms' ),
216
+ 'field' => 'submit_button_label',
217
+ ),
218
+ 1100 => array(
219
+ 'type' => 'checkbox',
220
+ 'label' => __( 'Redirect on complete', 'happyforms' ),
221
+ 'tooltip' => __( 'By default, recipients will be redirected to the post or page displaying this form. To set a custom redirect webpage, add a link here.', 'happyforms' ),
222
+ 'field' => 'redirect_on_complete'
223
+ ),
224
+ 1200 => array(
225
+ 'type' => 'text',
226
+ 'label' => __( 'On complete redirect link', 'happyforms' ),
227
+ 'field' => 'redirect_url',
228
+ ),
229
+ 1300 => array(
230
+ 'type' => 'checkbox',
231
+ 'label' => __( 'Spam prevention', 'happyforms' ),
232
+ 'tooltip' => __( 'Protect your form against bots by using HoneyPot security.', 'happyforms' ),
233
+ 'field' => 'spam_prevention',
234
+ ),
235
+ 1400 => array(
236
+ 'type' => 'checkbox',
237
+ 'label' => sprintf(
238
+ __( 'Use <a href="%s" target="_blank" class="external"> Google ReCaptcha</a>', 'happyforms' ),
239
+ 'https://www.google.com/recaptcha'
240
+ ),
241
+ 'tooltip' => __( 'Protect your form against bots using your Google ReCaptcha credentials.', 'happyforms' ),
242
+ 'field' => 'captcha',
243
+ ),
244
+ 1500 => array(
245
+ 'type' => 'text',
246
+ 'label' => __( 'ReCaptcha site key', 'happyforms' ),
247
+ 'field' => 'captcha_site_key',
248
+ ),
249
+ 1600 => array(
250
+ 'type' => 'text',
251
+ 'label' => __( 'ReCaptcha secret key', 'happyforms' ),
252
+ 'field' => 'captcha_secret_key',
253
+ ),
254
+ 1700 => array(
255
+ 'type' => 'checkbox',
256
+ 'label' => __( 'Save responses', 'happyforms' ),
257
+ 'tooltip' => __( 'Keep recipients responses stored in your WordPress database.', 'happyforms' ),
258
+ 'field' => 'save_entries',
259
+ ),
260
+ 1800 => array(
261
+ 'type' => 'checkbox',
262
+ 'label' => __( 'Give each response an ID number', 'happyforms' ),
263
+ 'tooltip' => __( 'Tag responses with a unique, incremental identifier.', 'happyforms' ),
264
+ 'field' => 'unique_id',
265
+ ),
266
+ 1900 => array(
267
+ 'type' => 'number',
268
+ 'label' => __( 'Start counter from', 'happyforms' ),
269
+ 'tooltip' => __( 'Your next submission will be tagged with this identifier.', 'happyforms' ),
270
+ 'field' => 'unique_id_start_from',
271
+ 'min' => 0
272
+ ),
273
+ 2000 => array(
274
+ 'type' => 'text',
275
+ 'label' => __( 'Prefix', 'happyforms' ),
276
+ 'field' => 'unique_id_prefix',
277
+ ),
278
+ 2100 => array(
279
+ 'type' => 'text',
280
+ 'label' => __( 'Suffix', 'happyforms' ),
281
+ 'field' => 'unique_id_suffix',
282
+ ),
283
+ 2200 => array(
284
+ 'type' => 'checkbox',
285
+ 'label' => __( 'Preview values before submission', 'happyforms' ),
286
+ 'tooltip' => __( 'Let your users review their submission before confirming it.', 'happyforms' ),
287
+ 'field' => 'preview_before_submit',
288
+ ),
289
+ 2300 => array(
290
+ 'type' => 'text',
291
+ 'label' => __( 'Review button text', 'happyforms' ),
292
+ 'field' => 'review_button_label',
293
+ ),
294
+ );
295
+
296
+ $controls = apply_filters( 'happyforms_setup_controls', $controls );
297
+ ksort( $controls, SORT_NUMERIC );
298
+
299
+ return $controls;
300
+ }
301
+
302
+ public function do_control( $control, $field, $index ) {
303
+ $type = $control['type'];
304
+ $path = happyforms_get_include_folder() . '/core/templates/customize-controls/setup';
305
+
306
+ switch( $control['type'] ) {
307
+ case 'editor':
308
+ case 'checkbox':
309
+ case 'text':
310
+ case 'number':
311
+ require( "{$path}/{$type}.php" );
312
+ break;
313
+ default:
314
+ break;
315
+ }
316
+ }
317
+
318
+ /**
319
+ * Filter: add fields to form meta.
320
+ *
321
+ * @hooked filter happyforms_meta_fields
322
+ *
323
+ * @param array $fields Current form meta fields.
324
+ *
325
+ * @return array
326
+ */
327
+ public function meta_fields( $fields ) {
328
+ $fields = array_merge( $fields, $this->get_fields() );
329
+
330
+ return $fields;
331
+ }
332
+
333
+ public function requires_confirmation( $form ) {
334
+ return ( 1 === intval( $form['preview_before_submit'] ) );
335
+ }
336
+
337
+ /**
338
+ * Filter: append -editable class to part templates.
339
+ *
340
+ * @hooked filter happyforms_part_class
341
+ *
342
+ * @return void
343
+ */
344
+ public function part_class_customizer( $classes ) {
345
+ if ( ! is_customize_preview() ) {
346
+ return $classes;
347
+ }
348
+
349
+ $classes[] = 'happyforms-block-editable happyforms-block-editable--part';
350
+
351
+ return $classes;
352
+ }
353
+
354
+ public function form_title_customizer( $title ) {
355
+ if ( ! is_customize_preview() ) {
356
+ return $title;
357
+ }
358
+
359
+ $before = '<div class="happyforms-block-editable happyforms-block-editable--title">';
360
+ $after = '</div>';
361
+ $title = "{$before}{$title}{$after}";
362
+
363
+ return $title;
364
+ }
365
+
366
+ public function part_before_preview( $part, $form ) {
367
+ if ( happyforms_get_form_property( $form, 'preview_before_submit' )
368
+ && ( 'review' === happyforms_get_current_step( $form ) ) ) {
369
+
370
+ require( happyforms_get_include_folder() . '/core/templates/partials/part-preview.php' );
371
+ }
372
+ }
373
+
374
+ public function part_after_preview( $part, $form ) {
375
+ if ( happyforms_get_form_property( $form, 'preview_before_submit' )
376
+ && ( 'review' === happyforms_get_current_step( $form ) ) ) {
377
+ ?>
378
+ </div></div>
379
+ <?php
380
+ }
381
+ }
382
+
383
+ public function part_attributes_preview( $attributes, $part, $form, $component ) {
384
+ if ( happyforms_get_form_property( $form, 'preview_before_submit' )
385
+ && ( 'review' === happyforms_get_current_step( $form ) ) ) {
386
+
387
+ $attributes[] = 'readonly';
388
+ }
389
+
390
+ return $attributes;
391
+ }
392
+
393
+ public function form_open_preview( $form ) {
394
+ if ( happyforms_get_form_property( $form, 'preview_before_submit' )
395
+ && ( 'review' === happyforms_get_current_step( $form ) ) ) {
396
+ ?>
397
+ <p><?php _e( 'Please review your submission...', 'happyforms' ); ?></p>
398
+ <?php
399
+ }
400
+ }
401
+
402
+ public function form_html_class_preview( $classes, $form ) {
403
+ if ( happyforms_get_form_property( $form, 'preview_before_submit' )
404
+ && ( 'review' === happyforms_get_current_step( $form ) ) ) {
405
+
406
+ $classes[] = 'happyforms-form-preview';
407
+ }
408
+
409
+ return $classes;
410
+ }
411
+
412
+ public function confirm_preview_partial( $path, $form ) {
413
+ if ( happyforms_get_form_property( $form, 'preview_before_submit' )
414
+ && ( 'review' === happyforms_get_current_step( $form ) )
415
+ && ( 'partials/form-submit' === $path ) ) {
416
+
417
+ $path = 'partials/form-confirm-preview';
418
+ }
419
+
420
+ return $path;
421
+ }
422
+
423
+ public function submit_preview_template( $path, $form ) {
424
+ if ( happyforms_get_form_property( $form, 'preview_before_submit' )
425
+ && ( 'preview' === happyforms_get_current_step( $form ) )
426
+ && ( 'partials/form-submit' === $path ) ) {
427
+
428
+ $path = 'partials/form-submit-preview';
429
+ }
430
+
431
+ return $path;
432
+ }
433
+
434
+ public function increment_unique_id( $response_id, $form ) {
435
+ if ( intval( $form['unique_id'] ) ) {
436
+ $increment = intval( $form['unique_id_start_from'] );
437
+
438
+ happyforms_update_meta( $form['ID'], 'unique_id_start_from', $increment + 1 );
439
+ }
440
+ }
441
+
442
+ public function steps_add_preview( $steps, $form ) {
443
+ if ( $this->requires_confirmation( $form ) ) {
444
+ $steps[100] = 'preview';
445
+ $steps[200] = 'review';
446
+ }
447
+
448
+ return $steps;
449
+ }
450
+
451
+ public function has_captcha( $has_captcha, $form ) {
452
+ $has_captcha = $form['captcha'] || happyforms_is_preview();
453
+
454
+ return $has_captcha;
455
+ }
456
+
457
+ public function script_dependencies( $deps, $forms ) {
458
+ $has_captcha = false;
459
+
460
+ foreach ( $forms as $form ) {
461
+ if ( $form['captcha'] ) {
462
+ $has_captcha = true;
463
+ break;
464
+ }
465
+ }
466
+
467
+ if ( ! happyforms_is_preview() && ! $has_captcha ) {
468
+ return $deps;
469
+ }
470
+
471
+ wp_register_script(
472
+ 'google-recaptcha',
473
+ 'https://www.google.com/recaptcha/api.js',
474
+ array(), false, true
475
+ );
476
+
477
+ wp_register_script(
478
+ 'recaptcha',
479
+ happyforms_get_plugin_url() . 'inc/core/assets/js/frontend/recaptcha.js',
480
+ array( 'google-recaptcha' ), false, true
481
+ );
482
+
483
+ $deps[] = 'recaptcha';
484
+
485
+ return $deps;
486
+ }
487
+
488
+ }
489
+
490
+ if ( ! function_exists( 'happyforms_get_setup' ) ):
491
+
492
+ function happyforms_get_setup() {
493
+ return HappyForms_Form_Setup::instance();
494
+ }
495
+
496
+ endif;
497
+
498
+ happyforms_get_setup();
inc/core/classes/class-form-styles.php CHANGED
@@ -39,6 +39,7 @@ class HappyForms_Form_Styles {
39
  add_filter( 'happyforms_meta_fields', array( $this, 'meta_fields' ) );
40
  add_filter( 'happyforms_form_class', array( $this, 'form_html_class' ), 10, 2 );
41
  add_filter( 'happyforms_form_id', array( $this, 'form_html_id' ), 10, 2 );
 
42
  }
43
 
44
  public function get_fields() {
@@ -500,392 +501,407 @@ class HappyForms_Form_Styles {
500
  'target' => 'form_class',
501
  'sanitize' => 'sanitize_text_field'
502
  ),
503
- 'optional_part_label' => array(
504
- 'default' => __( '(optional)', 'happyforms' ),
505
- 'sanitize' => 'sanitize_text_field',
506
- 'target' => 'attribute',
507
- ),
508
  );
509
 
510
- return $fields;
511
  }
512
 
513
  public function get_controls() {
514
  $controls = array(
515
- array(
516
  'type' => 'divider',
517
- 'label' => __( 'General', 'happyforms' )
 
518
  ),
519
- array(
520
  'type' => 'range',
521
  'label' => __( 'Width', 'happyforms' ),
522
  'field' => 'form_width'
523
  ),
524
- array(
525
  'type' => 'buttonset',
526
  'label' => __( 'Padding', 'happyforms' ),
527
  'field' => 'form_padding',
528
  ),
529
- array(
530
  'type' => 'buttonset',
531
  'label' => __( 'Direction', 'happyforms' ),
532
  'field' => 'form_direction'
533
  ),
534
- array(
535
  'type' => 'buttonset',
536
  'label' => __( 'Display notices', 'happyforms' ),
537
  'field' => 'notices_position'
538
  ),
539
- array(
540
  'type' => 'checkbox',
541
  'label' => __( 'Disable submit button until form is valid', 'happyforms' ),
542
  'field' => 'disable_submit_until_valid',
543
  ),
544
- array(
545
  'type' => 'text',
546
  'label' => __( 'Form HTML ID', 'happyforms' ),
547
  'field' => 'html_id',
548
- 'class' => 'code',
549
- 'tooltip' => true,
550
  ),
551
- array(
552
  'type' => 'heading',
553
  'label' => __( 'Colors', 'happyforms' )
554
  ),
555
- array(
556
  'type' => 'color',
557
  'label' => __( 'Primary', 'happyforms' ),
558
  'field' => 'color_primary',
559
  ),
560
- array(
561
  'type' => 'color',
562
  'label' => __( 'Success', 'happyforms' ),
563
  'field' => 'color_success',
564
  ),
565
- array(
566
  'type' => 'color',
567
  'label' => __( 'Error', 'happyforms' ),
568
  'field' => 'color_error',
569
  ),
570
- array(
571
  'type' => 'divider',
572
- 'label' => __( 'Form title', 'happyforms' )
 
573
  ),
574
- array(
575
  'type' => 'buttonset',
576
  'label' => __( 'Display', 'happyforms' ),
577
  'field' => 'form_title',
578
  ),
579
- array(
580
  'type' => 'buttonset',
581
  'label' => __( 'Alignment', 'happyforms' ),
582
  'field' => 'form_title_alignment'
583
  ),
584
- array(
585
  'type' => 'range',
586
  'label' => __( 'Font size', 'happyforms' ),
587
  'field' => 'form_title_font_size',
588
  ),
589
- array(
590
  'type' => 'divider',
591
- 'label' => __( 'Part borders & spacing', 'happyforms' )
 
592
  ),
593
- array(
594
  'type' => 'buttonset',
595
  'label' => __( 'Border', 'happyforms' ),
596
  'field' => 'part_border',
597
  ),
598
- array(
599
  'type' => 'buttonset',
600
  'label' => __( 'Border location', 'happyforms' ),
601
  'field' => 'part_border_location',
602
  ),
603
- array(
604
  'type' => 'buttonset',
605
  'label' => __( 'Border radius', 'happyforms' ),
606
  'field' => 'part_border_radius',
607
  ),
608
- array(
609
  'type' => 'buttonset',
610
  'label' => __( 'Outer padding', 'happyforms' ),
611
  'field' => 'part_outer_padding',
612
  ),
613
- array(
614
  'type' => 'buttonset',
615
  'label' => __( 'Inner padding', 'happyforms' ),
616
  'field' => 'part_inner_padding',
617
  ),
618
- array(
619
  'type' => 'heading',
620
  'label' => __( 'Colors', 'happyforms' )
621
  ),
622
- array(
623
  'type' => 'color',
624
  'label' => __( 'Border', 'happyforms' ),
625
  'field' => 'color_part_border',
626
  ),
627
- array(
628
  'type' => 'color',
629
  'label' => __( 'Border on focus', 'happyforms' ),
630
  'field' => 'color_part_border_focus',
631
  ),
632
- array(
633
  'type' => 'color',
634
  'label' => __( 'Background', 'happyforms' ),
635
  'field' => 'color_part_background',
636
  ),
637
- array(
638
  'type' => 'color',
639
  'label' => __( 'Background on focus', 'happyforms' ),
640
  'field' => 'color_part_background_focus',
641
  ),
642
- array(
643
  'type' => 'divider',
644
- 'label' => __( 'Part labels & text', 'happyforms' )
 
645
  ),
646
- array(
647
  'type' => 'checkbox',
648
  'label' => __( 'Toggle placeholder on part focus', 'happyforms' ),
649
  'field' => 'part_toggle_placeholders',
650
- 'condition' => 'happyForms.form.get(\'parts\').find( function( model ) { return model.get( \'placeholder\' ); } )'
651
  ),
652
- array(
653
  'type' => 'buttonset',
654
  'label' => __( 'Title alignment', 'happyforms' ),
655
  'field' => 'part_title_alignment'
656
  ),
657
- array(
658
  'type' => 'range',
659
  'label' => __( 'Title font size', 'happyforms' ),
660
  'field' => 'part_title_font_size',
661
  ),
662
- array(
663
  'type' => 'buttonset',
664
  'label' => __( 'Title font weight', 'happyforms' ),
665
  'field' => 'part_title_font_weight',
666
  ),
667
- array(
668
  'type' => 'buttonset',
669
  'label' => __( 'Description alignment', 'happyforms' ),
670
  'field' => 'part_description_alignment'
671
  ),
672
- array(
673
  'type' => 'range',
674
  'label' => __( 'Description font size', 'happyforms' ),
675
  'field' => 'part_description_font_size',
676
  ),
677
- array(
678
  'type' => 'buttonset',
679
- 'label' => __( 'Placeholder &amp; Value alignment', 'happyforms' ),
680
  'field' => 'part_value_alignment'
681
  ),
682
- array(
683
  'type' => 'range',
684
  'label' => __( 'Value font size', 'happyforms' ),
685
  'field' => 'part_value_font_size',
686
  ),
687
- array(
688
- 'type' => 'text',
689
- 'label' => __( 'Optional part label', 'happyforms' ),
690
- 'field' => 'optional_part_label',
691
- ),
692
- array(
693
  'type' => 'heading',
694
  'label' => __( 'Colors', 'happyforms' )
695
  ),
696
- array(
697
  'type' => 'color',
698
  'label' => __( 'Title', 'happyforms' ),
699
  'field' => 'color_part_title',
700
  ),
701
- array(
702
  'type' => 'color',
703
  'label' => __( 'Value', 'happyforms' ),
704
  'field' => 'color_part_text',
705
  ),
706
- array(
707
  'type' => 'color',
708
  'label' => __( 'Placeholder', 'happyforms' ),
709
  'field' => 'color_part_placeholder',
710
  ),
711
- array(
712
  'type' => 'divider',
713
  'label' => __( 'Dropdowns', 'happyforms' ),
714
- 'condition' => '( happyForms.form.get(\'parts\').findWhere( { type: \'select\' } ) || happyForms.form.get(\'parts\').findWhere( { type: \'date\' } ) || happyForms.form.get(\'parts\').findWhere( { type: \'title\' } ) )'
715
  ),
716
- array(
717
  'type' => 'heading',
718
  'label' => __( 'Items', 'happyforms' )
719
  ),
720
- array(
721
  'type' => 'color',
722
  'label' => __( 'Background', 'happyforms' ),
723
  'field' => 'color_dropdown_item_bg',
724
  ),
725
- array(
726
  'type' => 'color',
727
  'label' => __( 'Text', 'happyforms' ),
728
  'field' => 'color_dropdown_item_text',
729
  ),
730
- array(
731
  'type' => 'color',
732
- 'label' => __( 'Background focused', 'happyforms' ),
733
  'field' => 'color_dropdown_item_bg_hover',
734
  ),
735
- array(
736
  'type' => 'color',
737
  'label' => __( 'Text focused', 'happyforms' ),
738
  'field' => 'color_dropdown_item_text_hover',
739
  ),
740
- array(
741
  'type' => 'divider',
742
  'label' => __( 'Checkboxes & Radios', 'happyforms' ),
743
- 'condition' => '( happyForms.form.get(\'parts\').findWhere( { type: \'checkbox\' } ) || happyForms.form.get(\'parts\').findWhere( { type: \'radio\' } ) || happyForms.form.get(\'parts\').findWhere( { type: \'table\' } ) )'
744
  ),
745
- array(
746
  'type' => 'color',
747
- 'label' => __( 'Checkbox & Radio background', 'happyforms' ),
748
  'field' => 'color_choice_checkmark_bg',
749
  ),
750
- array(
751
  'type' => 'color',
752
- 'label' => __( 'Checkbox & Radio background focused', 'happyforms' ),
753
  'field' => 'color_choice_checkmark_bg_focus',
754
  ),
755
- array(
756
  'type' => 'color',
757
- 'label' => __( 'Checkbox & Radio checkmark', 'happyforms' ),
758
  'field' => 'color_choice_checkmark_color',
759
  ),
760
- array(
761
  'type' => 'divider',
762
  'label' => __( 'Rating', 'happyforms' ),
763
- 'condition' => '( happyForms.form.get(\'parts\').findWhere( { type: \'rating\' } ) )'
764
  ),
765
- array(
766
  'type' => 'color',
767
  'label' => __( 'Rating star color', 'happyforms' ),
768
  'field' => 'color_rating_star',
769
  ),
770
- array(
771
  'type' => 'color',
772
  'label' => __( 'Rating star color on hover', 'happyforms' ),
773
  'field' => 'color_rating_star_hover',
774
  ),
775
- array(
776
  'type' => 'color',
777
  'label' => __( 'Item background', 'happyforms' ),
778
  'field' => 'color_rating_background',
779
  ),
780
- array(
781
  'type' => 'color',
782
  'label' => __( 'Item background on hover', 'happyforms' ),
783
  'field' => 'color_rating_background_hover',
784
  ),
785
- array(
786
  'type' => 'divider',
787
  'label' => __( 'Tables', 'happyforms' ),
788
- 'condition' => '( happyForms.form.get(\'parts\').findWhere( { type: \'table\' } ) || happyForms.form.get(\'preview_before_submit\') )'
789
  ),
790
- array(
791
  'type' => 'color',
792
  'label' => __( 'Odd row primary', 'happyforms' ),
793
  'field' => 'color_table_row_odd',
794
  ),
795
- array(
796
  'type' => 'color',
797
  'label' => __( 'Odd row secondary', 'happyforms' ),
798
  'field' => 'color_table_row_odd_text',
799
  ),
800
- array(
801
  'type' => 'color',
802
  'label' => __( 'Even row primary', 'happyforms' ),
803
  'field' => 'color_table_row_even',
804
  ),
805
- array(
806
  'type' => 'color',
807
  'label' => __( 'Even row secondary', 'happyforms' ),
808
  'field' => 'color_table_row_even_text',
809
  ),
810
- array(
811
  'type' => 'divider',
812
- 'label' => __( 'Submit button', 'happyforms' )
 
813
  ),
814
- array(
815
  'type' => 'buttonset',
816
  'label' => __( 'Border', 'happyforms' ),
817
  'field' => 'submit_button_border',
818
  ),
819
- array(
820
  'type' => 'buttonset',
821
  'label' => __( 'Border radius', 'happyforms' ),
822
  'field' => 'submit_button_border_radius',
823
  ),
824
- array(
825
  'type' => 'buttonset',
826
  'label' => __( 'Width', 'happyforms' ),
827
  'field' => 'submit_button_width',
828
  ),
829
- array(
830
  'type' => 'buttonset',
831
  'label' => __( 'Padding', 'happyforms' ),
832
  'field' => 'submit_button_padding',
833
  ),
834
- array(
835
  'type' => 'range',
836
  'label' => __( 'Font Size', 'happyforms' ),
837
  'field' => 'submit_button_font_size',
838
  ),
839
- array(
840
  'type' => 'buttonset',
841
  'label' => __( 'Font Weight', 'happyforms' ),
842
  'field' => 'submit_button_font_weight',
843
  ),
844
- array(
845
  'type' => 'buttonset',
846
  'label' => __( 'Alignment', 'happyforms' ),
847
  'field' => 'submit_button_alignment',
848
  ),
849
- array(
850
  'type' => 'checkbox',
851
- 'condition' => '( happyForms.form.get(\'captcha\') != \'1\' && happyForms.form.get(\'parts\').findLastIndex({ width: \'auto\' }) !== -1 )',
852
  'label' => __( 'Make button a part of last input', 'happyforms' ),
853
  'field' => 'submit_button_part_of_last_input'
854
  ),
855
- array(
856
  'type' => 'heading',
857
  'label' => __( 'Colors', 'happyforms' )
858
  ),
859
- array(
860
  'type' => 'color',
861
  'label' => __( 'Background', 'happyforms' ),
862
  'field' => 'color_submit_background',
863
  ),
864
- array(
865
  'type' => 'color',
866
- 'label' => __( 'Background focused', 'happyforms' ),
867
  'field' => 'color_submit_background_hover',
868
  ),
869
- array(
870
  'type' => 'color',
871
  'label' => __( 'Border', 'happyforms' ),
872
  'field' => 'color_submit_border',
873
  ),
874
- array(
875
  'type' => 'color',
876
  'label' => __( 'Text', 'happyforms' ),
877
  'field' => 'color_submit_text',
878
  ),
879
- array(
880
  'type' => 'color',
881
  'label' => __( 'Text focused', 'happyforms' ),
882
  'field' => 'color_submit_text_hover',
883
  ),
884
  );
885
 
 
 
 
886
  return $controls;
887
  }
888
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
889
  public function is_class_field( $field ) {
890
  return 'form_class' === $field['target'];
891
  }
39
  add_filter( 'happyforms_meta_fields', array( $this, 'meta_fields' ) );
40
  add_filter( 'happyforms_form_class', array( $this, 'form_html_class' ), 10, 2 );
41
  add_filter( 'happyforms_form_id', array( $this, 'form_html_id' ), 10, 2 );
42
+ add_action( 'happyforms_do_style_control', array( $this, 'do_control' ), 10, 3 );
43
  }
44
 
45
  public function get_fields() {
501
  'target' => 'form_class',
502
  'sanitize' => 'sanitize_text_field'
503
  ),
 
 
 
 
 
504
  );
505
 
506
+ return apply_filters( 'happyforms_style_fields', $fields );
507
  }
508
 
509
  public function get_controls() {
510
  $controls = array(
511
+ 100 => array(
512
  'type' => 'divider',
513
+ 'label' => __( 'General', 'happyforms' ),
514
+ 'id' => 'general',
515
  ),
516
+ 200 => array(
517
  'type' => 'range',
518
  'label' => __( 'Width', 'happyforms' ),
519
  'field' => 'form_width'
520
  ),
521
+ 300 => array(
522
  'type' => 'buttonset',
523
  'label' => __( 'Padding', 'happyforms' ),
524
  'field' => 'form_padding',
525
  ),
526
+ 400 => array(
527
  'type' => 'buttonset',
528
  'label' => __( 'Direction', 'happyforms' ),
529
  'field' => 'form_direction'
530
  ),
531
+ 500 => array(
532
  'type' => 'buttonset',
533
  'label' => __( 'Display notices', 'happyforms' ),
534
  'field' => 'notices_position'
535
  ),
536
+ 600 => array(
537
  'type' => 'checkbox',
538
  'label' => __( 'Disable submit button until form is valid', 'happyforms' ),
539
  'field' => 'disable_submit_until_valid',
540
  ),
541
+ 700 => array(
542
  'type' => 'text',
543
  'label' => __( 'Form HTML ID', 'happyforms' ),
544
  'field' => 'html_id',
545
+ 'tooltip' => __( 'Add a unique HTML ID to your form. Write without a hash (#) character.', 'happyforms' ),
 
546
  ),
547
+ 800 => array(
548
  'type' => 'heading',
549
  'label' => __( 'Colors', 'happyforms' )
550
  ),
551
+ 900 => array(
552
  'type' => 'color',
553
  'label' => __( 'Primary', 'happyforms' ),
554
  'field' => 'color_primary',
555
  ),
556
+ 1000 => array(
557
  'type' => 'color',
558
  'label' => __( 'Success', 'happyforms' ),
559
  'field' => 'color_success',
560
  ),
561
+ 1100 => array(
562
  'type' => 'color',
563
  'label' => __( 'Error', 'happyforms' ),
564
  'field' => 'color_error',
565
  ),
566
+ 1200 => array(
567
  'type' => 'divider',
568
+ 'label' => __( 'Form title', 'happyforms' ),
569
+ 'id' => 'form_title',
570
  ),
571
+ 1300 => array(
572
  'type' => 'buttonset',
573
  'label' => __( 'Display', 'happyforms' ),
574
  'field' => 'form_title',
575
  ),
576
+ 1400 => array(
577
  'type' => 'buttonset',
578
  'label' => __( 'Alignment', 'happyforms' ),
579
  'field' => 'form_title_alignment'
580
  ),
581
+ 1500 => array(
582
  'type' => 'range',
583
  'label' => __( 'Font size', 'happyforms' ),
584
  'field' => 'form_title_font_size',
585
  ),
586
+ 1600 => array(
587
  'type' => 'divider',
588
+ 'label' => __( 'Part borders & spacing', 'happyforms' ),
589
+ 'id' => 'borders-spacing',
590
  ),
591
+ 1700 => array(
592
  'type' => 'buttonset',
593
  'label' => __( 'Border', 'happyforms' ),
594
  'field' => 'part_border',
595
  ),
596
+ 1800 => array(
597
  'type' => 'buttonset',
598
  'label' => __( 'Border location', 'happyforms' ),
599
  'field' => 'part_border_location',
600
  ),
601
+ 1900 => array(
602
  'type' => 'buttonset',
603
  'label' => __( 'Border radius', 'happyforms' ),
604
  'field' => 'part_border_radius',
605
  ),
606
+ 2000 => array(
607
  'type' => 'buttonset',
608
  'label' => __( 'Outer padding', 'happyforms' ),
609
  'field' => 'part_outer_padding',
610
  ),
611
+ 2100 => array(
612
  'type' => 'buttonset',
613
  'label' => __( 'Inner padding', 'happyforms' ),
614
  'field' => 'part_inner_padding',
615
  ),
616
+ 2200 => array(
617
  'type' => 'heading',
618
  'label' => __( 'Colors', 'happyforms' )
619
  ),
620
+ 2300 => array(
621
  'type' => 'color',
622
  'label' => __( 'Border', 'happyforms' ),
623
  'field' => 'color_part_border',
624
  ),
625
+ 2400 => array(
626
  'type' => 'color',
627
  'label' => __( 'Border on focus', 'happyforms' ),
628
  'field' => 'color_part_border_focus',
629
  ),
630
+ 2500 => array(
631
  'type' => 'color',
632
  'label' => __( 'Background', 'happyforms' ),
633
  'field' => 'color_part_background',
634
  ),
635
+ 2600 => array(
636
  'type' => 'color',
637
  'label' => __( 'Background on focus', 'happyforms' ),
638
  'field' => 'color_part_background_focus',
639
  ),
640
+ 2700 => array(
641
  'type' => 'divider',
642
+ 'label' => __( 'Part labels & text', 'happyforms' ),
643
+ 'id' => 'labels-text',
644
  ),
645
+ 2800 => array(
646
  'type' => 'checkbox',
647
  'label' => __( 'Toggle placeholder on part focus', 'happyforms' ),
648
  'field' => 'part_toggle_placeholders',
 
649
  ),
650
+ 2900 => array(
651
  'type' => 'buttonset',
652
  'label' => __( 'Title alignment', 'happyforms' ),
653
  'field' => 'part_title_alignment'
654
  ),
655
+ 3000 => array(
656
  'type' => 'range',
657
  'label' => __( 'Title font size', 'happyforms' ),
658
  'field' => 'part_title_font_size',
659
  ),
660
+ 3100 => array(
661
  'type' => 'buttonset',
662
  'label' => __( 'Title font weight', 'happyforms' ),
663
  'field' => 'part_title_font_weight',
664
  ),
665
+ 3200 => array(
666
  'type' => 'buttonset',
667
  'label' => __( 'Description alignment', 'happyforms' ),
668
  'field' => 'part_description_alignment'
669
  ),
670
+ 3300 => array(
671
  'type' => 'range',
672
  'label' => __( 'Description font size', 'happyforms' ),
673
  'field' => 'part_description_font_size',
674
  ),
675
+ 3400 => array(
676
  'type' => 'buttonset',
677
+ 'label' => __( 'Placeholder &amp; value alignment', 'happyforms' ),
678
  'field' => 'part_value_alignment'
679
  ),
680
+ 3500 => array(
681
  'type' => 'range',
682
  'label' => __( 'Value font size', 'happyforms' ),
683
  'field' => 'part_value_font_size',
684
  ),
685
+ 3600 => array(
 
 
 
 
 
686
  'type' => 'heading',
687
  'label' => __( 'Colors', 'happyforms' )
688
  ),
689
+ 3700 => array(
690
  'type' => 'color',
691
  'label' => __( 'Title', 'happyforms' ),
692
  'field' => 'color_part_title',
693
  ),
694
+ 3800 => array(
695
  'type' => 'color',
696
  'label' => __( 'Value', 'happyforms' ),
697
  'field' => 'color_part_text',
698
  ),
699
+ 3900 => array(
700
  'type' => 'color',
701
  'label' => __( 'Placeholder', 'happyforms' ),
702
  'field' => 'color_part_placeholder',
703
  ),
704
+ 4000 => array(
705
  'type' => 'divider',
706
  'label' => __( 'Dropdowns', 'happyforms' ),
707
+ 'id' => 'dropdowns',
708
  ),
709
+ 4100 => array(
710
  'type' => 'heading',
711
  'label' => __( 'Items', 'happyforms' )
712
  ),
713
+ 4200 => array(
714
  'type' => 'color',
715
  'label' => __( 'Background', 'happyforms' ),
716
  'field' => 'color_dropdown_item_bg',
717
  ),
718
+ 4300 => array(
719
  'type' => 'color',
720
  'label' => __( 'Text', 'happyforms' ),
721
  'field' => 'color_dropdown_item_text',
722
  ),
723
+ 4400 => array(
724
  'type' => 'color',
725
+ 'label' => __( 'Background on focus', 'happyforms' ),
726
  'field' => 'color_dropdown_item_bg_hover',
727
  ),
728
+ 4500 => array(
729
  'type' => 'color',
730
  'label' => __( 'Text focused', 'happyforms' ),
731
  'field' => 'color_dropdown_item_text_hover',
732
  ),
733
+ 4600 => array(
734
  'type' => 'divider',
735
  'label' => __( 'Checkboxes & Radios', 'happyforms' ),
736
+ 'id' => 'checkboxes-radios',
737
  ),
738
+ 4700 => array(
739
  'type' => 'color',
740
+ 'label' => __( 'Background', 'happyforms' ),
741
  'field' => 'color_choice_checkmark_bg',
742
  ),
743
+ 4800 => array(
744
  'type' => 'color',
745
+ 'label' => __( 'Background on focus', 'happyforms' ),
746
  'field' => 'color_choice_checkmark_bg_focus',
747
  ),
748
+ 4900 => array(
749
  'type' => 'color',
750
+ 'label' => __( 'Checkmark', 'happyforms' ),
751
  'field' => 'color_choice_checkmark_color',
752
  ),
753
+ 5000 => array(
754
  'type' => 'divider',
755
  'label' => __( 'Rating', 'happyforms' ),
756
+ 'id' => 'rating',
757
  ),
758
+ 5100 => array(
759
  'type' => 'color',
760
  'label' => __( 'Rating star color', 'happyforms' ),
761
  'field' => 'color_rating_star',
762
  ),
763
+ 5200 => array(
764
  'type' => 'color',
765
  'label' => __( 'Rating star color on hover', 'happyforms' ),
766
  'field' => 'color_rating_star_hover',
767
  ),
768
+ 5300 => array(
769
  'type' => 'color',
770
  'label' => __( 'Item background', 'happyforms' ),
771
  'field' => 'color_rating_background',
772
  ),
773
+ 5400 => array(
774
  'type' => 'color',
775
  'label' => __( 'Item background on hover', 'happyforms' ),
776
  'field' => 'color_rating_background_hover',
777
  ),
778
+ 5500 => array(
779
  'type' => 'divider',
780
  'label' => __( 'Tables', 'happyforms' ),
781
+ 'id' => 'tables',
782
  ),
783
+ 5600 => array(
784
  'type' => 'color',
785
  'label' => __( 'Odd row primary', 'happyforms' ),
786
  'field' => 'color_table_row_odd',
787
  ),
788
+ 5700 => array(
789
  'type' => 'color',
790
  'label' => __( 'Odd row secondary', 'happyforms' ),
791
  'field' => 'color_table_row_odd_text',
792
  ),
793
+ 5800 => array(
794
  'type' => 'color',
795
  'label' => __( 'Even row primary', 'happyforms' ),
796
  'field' => 'color_table_row_even',
797
  ),
798
+ 5900 => array(
799
  'type' => 'color',
800
  'label' => __( 'Even row secondary', 'happyforms' ),
801
  'field' => 'color_table_row_even_text',
802
  ),
803
+ 6000 => array(
804
  'type' => 'divider',
805
+ 'label' => __( 'Submit button', 'happyforms' ),
806
+ 'id' => 'submit',
807
  ),
808
+ 6100 => array(
809
  'type' => 'buttonset',
810
  'label' => __( 'Border', 'happyforms' ),
811
  'field' => 'submit_button_border',
812
  ),
813
+ 6200 => array(
814
  'type' => 'buttonset',
815
  'label' => __( 'Border radius', 'happyforms' ),
816
  'field' => 'submit_button_border_radius',
817
  ),
818
+ 6300 => array(
819
  'type' => 'buttonset',
820
  'label' => __( 'Width', 'happyforms' ),
821
  'field' => 'submit_button_width',
822
  ),
823
+ 6400 => array(
824
  'type' => 'buttonset',
825
  'label' => __( 'Padding', 'happyforms' ),
826
  'field' => 'submit_button_padding',
827
  ),
828
+ 6500 => array(
829
  'type' => 'range',
830
  'label' => __( 'Font Size', 'happyforms' ),
831
  'field' => 'submit_button_font_size',
832
  ),
833
+ 6600 => array(
834
  'type' => 'buttonset',
835
  'label' => __( 'Font Weight', 'happyforms' ),
836
  'field' => 'submit_button_font_weight',
837
  ),
838
+ 6700 => array(
839
  'type' => 'buttonset',
840
  'label' => __( 'Alignment', 'happyforms' ),
841
  'field' => 'submit_button_alignment',
842
  ),
843
+ 6800 => array(
844
  'type' => 'checkbox',
 
845
  'label' => __( 'Make button a part of last input', 'happyforms' ),
846
  'field' => 'submit_button_part_of_last_input'
847
  ),
848
+ 6900 => array(
849
  'type' => 'heading',
850
  'label' => __( 'Colors', 'happyforms' )
851
  ),
852
+ 7000 => array(
853
  'type' => 'color',
854
  'label' => __( 'Background', 'happyforms' ),
855
  'field' => 'color_submit_background',
856
  ),
857
+ 7100 => array(
858
  'type' => 'color',
859
+ 'label' => __( 'Background on focus', 'happyforms' ),
860
  'field' => 'color_submit_background_hover',
861
  ),
862
+ 7200 => array(
863
  'type' => 'color',
864
  'label' => __( 'Border', 'happyforms' ),
865
  'field' => 'color_submit_border',
866
  ),
867
+ 7300 => array(
868
  'type' => 'color',
869
  'label' => __( 'Text', 'happyforms' ),
870
  'field' => 'color_submit_text',
871
  ),
872
+ 7400 => array(
873
  'type' => 'color',
874
  'label' => __( 'Text focused', 'happyforms' ),
875
  'field' => 'color_submit_text_hover',
876
  ),
877
  );
878
 
879
+ $controls = apply_filters( 'happyforms_style_controls', $controls );
880
+ ksort( $controls, SORT_NUMERIC );
881
+
882
  return $controls;
883
  }
884
 
885
+ public function do_control( $control, $field, $index ) {
886
+ $type = $control['type'];
887
+ $path = happyforms_get_include_folder() . '/core/templates/customize-controls/style';
888
+
889
+ switch( $control['type'] ) {
890
+ case 'divider':
891
+ case 'checkbox':
892
+ case 'range':
893
+ case 'buttonset':
894
+ case 'color':
895
+ case 'text':
896
+ case 'select':
897
+ case 'heading':
898
+ require( "{$path}/{$type}.php" );
899
+ break;
900
+ default:
901
+ break;
902
+ }
903
+ }
904
+
905
  public function is_class_field( $field ) {
906
  return 'form_class' === $field['target'];
907
  }
inc/core/classes/class-happyforms-core.php CHANGED
@@ -67,6 +67,7 @@ class HappyForms_Core {
67
  require_once( happyforms_get_include_folder() . '/core/classes/class-email-message.php' );
68
  require_once( happyforms_get_include_folder() . '/core/classes/class-form-part-library.php' );
69
  require_once( happyforms_get_include_folder() . '/core/classes/class-form-styles.php' );
 
70
  require_once( happyforms_get_include_folder() . '/core/classes/class-session.php' );
71
  require_once( happyforms_get_include_folder() . '/core/classes/class-happyforms-widget.php' );
72
  require_once( happyforms_get_include_folder() . '/core/helpers/helper-form-templates.php' );
@@ -79,7 +80,6 @@ class HappyForms_Core {
79
  }
80
 
81
  // Admin hooks
82
- add_action( 'admin_head', array( $this, 'admin_head' ) );
83
  add_action( 'admin_menu', array( $this, 'admin_menu' ) );
84
  add_action( 'admin_bar_menu', array( $this, 'admin_bar_menu' ), 80 );
85
  add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
@@ -100,6 +100,14 @@ class HappyForms_Core {
100
  // Preview scripts and styles
101
  add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_styles_preview' ) );
102
  add_action( 'wp_footer', array( $this, 'enqueue_scripts_preview' ) );
 
 
 
 
 
 
 
 
103
  }
104
 
105
  /**
@@ -126,8 +134,6 @@ class HappyForms_Core {
126
  }
127
 
128
  require_once( happyforms_get_include_folder() . '/core/classes/class-wp-customize-form-manager.php' );
129
- require_once( happyforms_get_include_folder() . '/core/helpers/helper-validation.php' );
130
- require_once( happyforms_get_include_folder() . '/core/helpers/helper-customize-templates.php' );
131
 
132
  $this->customize = new HappyForms_WP_Customize_Form_Manager();
133
 
@@ -182,19 +188,14 @@ class HappyForms_Core {
182
  '/edit.php?post_type=happyforms-message'
183
  );
184
 
185
- $tracking = happyforms_get_tracking();
186
- $status = $tracking->get_status();
187
-
188
- if ( 4 > $status['status'] ) {
189
- add_submenu_page(
190
- 'happyforms',
191
- __( 'Welcome', 'happyforms' ),
192
- __( 'Welcome', 'happyforms' ),
193
- 'manage_options',
194
- 'happyforms-welcome',
195
- array( happyforms_get_tracking(), 'settings_page' )
196
- );
197
- }
198
 
199
  // Remove first duplicate submenu link
200
  remove_submenu_page( 'happyforms', 'happyforms' );
@@ -216,11 +217,37 @@ class HappyForms_Core {
216
  array(), HAPPYFORMS_VERSION
217
  );
218
 
219
- wp_enqueue_script(
220
  'happyforms-admin',
221
  happyforms_get_plugin_url() . 'inc/core/assets/js/admin/dashboard.js',
222
  array(), HAPPYFORMS_VERSION, true
223
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
224
  }
225
 
226
  /**
@@ -351,6 +378,10 @@ class HappyForms_Core {
351
  * @return string
352
  */
353
  public function handle_shortcode( $attrs ) {
 
 
 
 
354
  $form_id = intval( $attrs['id'] );
355
  $form_controller = happyforms_get_form_controller();
356
  $form = $form_controller->get( $form_id );
@@ -359,6 +390,10 @@ class HappyForms_Core {
359
  return '';
360
  }
361
 
 
 
 
 
362
  $output = $form_controller->render( $form, true );
363
  $this->enqueue_form( $form );
364
 
@@ -383,26 +418,6 @@ class HappyForms_Core {
383
  <?php
384
  }
385
 
386
- public function admin_head() {
387
- global $pagenow;
388
-
389
- if ( 'post.php' !== $pagenow && 'post-new.php' !== $pagenow ) {
390
- return;
391
- }
392
-
393
- $forms = happyforms_get_form_controller()->get();
394
- $form_titles = wp_list_pluck( $forms, 'post_title', 'ID' );
395
- ?>
396
- <script type="text/javascript">
397
- HappyForms = {};
398
- HappyForms.admin = {
399
- edit_link: '<?php echo admin_url( happyforms_get_form_edit_link( 'ID', 'URL' ) ); ?>',
400
- forms: <?php echo json_encode( $form_titles ); ?>,
401
- }
402
- </script>
403
- <?php
404
- }
405
-
406
  /**
407
  * Filter: Add HappyForms button markup to a markup above content editor, next to
408
  * Add Media button.
@@ -416,17 +431,17 @@ class HappyForms_Core {
416
  * @return void
417
  */
418
  public function insert_editor_buttons( $context ) {
419
- global $pagenow;
420
 
421
- if ( 'post.php' !== $pagenow && 'post-new.php' !== $pagenow ) {
422
- return $context;
423
- }
424
 
425
- $button_html = '<a href="#" class="button happyforms-editor-button" data-title="' . __( 'Insert HappyForm', 'happyforms' ) . '"><span class="dashicons dashicons-format-status"></span><span>'. __( 'Add HappyForms', 'happyforms' ) .'</span></a>';
426
 
427
  add_action( 'admin_footer', array( $this, 'output_happyforms_modal' ) );
428
 
429
- return $context . ' ' . $button_html;
430
  }
431
 
432
  public function mce_external_plugins( $plugins ) {
@@ -452,17 +467,18 @@ class HappyForms_Core {
452
  require_once( happyforms_get_include_folder() . '/core/templates/admin-form-modal.php' );
453
  }
454
 
455
- public function print_frontend_styles() {
456
  $output = apply_filters( 'happyforms_enqueue_style', true );
457
 
458
- if ( ! $output ) {
459
- return;
 
 
 
 
460
  }
461
 
462
- $url = happyforms_get_plugin_url() . 'inc/core/assets/css/frontend.css?' . HAPPYFORMS_VERSION;
463
- ?>
464
- <link rel="stylesheet" property="stylesheet" href="<?php echo $url; ?>" />
465
- <?php
466
  }
467
 
468
  /**
@@ -563,6 +579,14 @@ class HappyForms_Core {
563
  $preview_deps, HAPPYFORMS_VERSION, true
564
  );
565
 
 
 
 
 
 
 
 
 
566
  require_once( happyforms_get_include_folder() . '/core/templates/preview-form-pencil.php' );
567
  }
568
 
67
  require_once( happyforms_get_include_folder() . '/core/classes/class-email-message.php' );
68
  require_once( happyforms_get_include_folder() . '/core/classes/class-form-part-library.php' );
69
  require_once( happyforms_get_include_folder() . '/core/classes/class-form-styles.php' );
70
+ require_once( happyforms_get_include_folder() . '/core/classes/class-form-setup.php' );
71
  require_once( happyforms_get_include_folder() . '/core/classes/class-session.php' );
72
  require_once( happyforms_get_include_folder() . '/core/classes/class-happyforms-widget.php' );
73
  require_once( happyforms_get_include_folder() . '/core/helpers/helper-form-templates.php' );
80
  }
81
 
82
  // Admin hooks
 
83
  add_action( 'admin_menu', array( $this, 'admin_menu' ) );
84
  add_action( 'admin_bar_menu', array( $this, 'admin_bar_menu' ), 80 );
85
  add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
100
  // Preview scripts and styles
101
  add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_styles_preview' ) );
102
  add_action( 'wp_footer', array( $this, 'enqueue_scripts_preview' ) );
103
+
104
+ add_action( 'customize_preview_init', array( $this, 'customize_preview_init' ) );
105
+ }
106
+
107
+ public function customize_preview_init() {
108
+ require_once( happyforms_get_include_folder() . '/core/classes/class-admin-notices.php' );
109
+
110
+ add_action( 'happyforms_form_before', array( happyforms_get_admin_notices(), 'display_preview_notices' ), 20 );
111
  }
112
 
113
  /**
134
  }
135
 
136
  require_once( happyforms_get_include_folder() . '/core/classes/class-wp-customize-form-manager.php' );
 
 
137
 
138
  $this->customize = new HappyForms_WP_Customize_Form_Manager();
139
 
188
  '/edit.php?post_type=happyforms-message'
189
  );
190
 
191
+ add_submenu_page(
192
+ 'happyforms',
193
+ __( 'Welcome', 'happyforms' ),
194
+ __( 'Welcome', 'happyforms' ),
195
+ 'manage_options',
196
+ 'happyforms-welcome',
197
+ array( happyforms_get_tracking(), 'settings_page' )
198
+ );
 
 
 
 
 
199
 
200
  // Remove first duplicate submenu link
201
  remove_submenu_page( 'happyforms', 'happyforms' );
217
  array(), HAPPYFORMS_VERSION
218
  );
219
 
220
+ wp_register_script(
221
  'happyforms-admin',
222
  happyforms_get_plugin_url() . 'inc/core/assets/js/admin/dashboard.js',
223
  array(), HAPPYFORMS_VERSION, true
224
  );
225
+
226
+ global $pagenow;
227
+
228
+ $data = array(
229
+ 'editLink' => admin_url( happyforms_get_form_edit_link( 'ID', 'URL' ) ),
230
+ 'shortcode' => happyforms_get_shortcode(),
231
+ );
232
+
233
+ if ( 'post.php' === $pagenow || 'post-new.php' === $pagenow ) {
234
+ $forms = happyforms_get_form_controller()->get();
235
+ $fields = array( 'post_title' );
236
+ $fields = apply_filters( 'happyforms_dashboard_form_fields', $fields );
237
+ $fields = array_flip( $fields );
238
+ $form_data = array();
239
+
240
+ foreach( $forms as $form ) {
241
+ $form_id = $form['ID'];
242
+ $form_data[$form_id] = array_intersect_key( $form, $fields );
243
+ }
244
+
245
+ $data['forms'] = $form_data;
246
+ $data = apply_filters( 'happyforms_dashboard_data', $data );
247
+ }
248
+
249
+ wp_localize_script( 'happyforms-admin', '_happyFormsAdmin', $data );
250
+ wp_enqueue_script( 'happyforms-admin' );
251
  }
252
 
253
  /**
378
  * @return string
379
  */
380
  public function handle_shortcode( $attrs ) {
381
+ if ( ! isset( $attrs['id'] ) ) {
382
+ return;
383
+ }
384
+
385
  $form_id = intval( $attrs['id'] );
386
  $form_controller = happyforms_get_form_controller();
387
  $form = $form_controller->get( $form_id );
390
  return '';
391
  }
392
 
393
+ if ( happyforms_get_form_property( $form, 'modal' ) ) {
394
+ return '';
395
+ }
396
+
397
  $output = $form_controller->render( $form, true );
398
  $this->enqueue_form( $form );
399
 
418
  <?php
419
  }
420
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
421
  /**
422
  * Filter: Add HappyForms button markup to a markup above content editor, next to
423
  * Add Media button.
431
  * @return void
432
  */
433
  public function insert_editor_buttons( $context ) {
434
+ global $pagenow;
435
 
436
+ if ( 'post.php' !== $pagenow && 'post-new.php' !== $pagenow ) {
437
+ return $context;
438
+ }
439
 
440
+ $button_html = '<a href="#" class="button happyforms-editor-button" data-title="' . __( 'Insert HappyForm', 'happyforms' ) . '"><span class="dashicons dashicons-format-status"></span><span>'. __( 'Add HappyForms', 'happyforms' ) .'</span></a>';
441
 
442
  add_action( 'admin_footer', array( $this, 'output_happyforms_modal' ) );
443
 
444
+ return $context . ' ' . $button_html;
445
  }
446
 
447
  public function mce_external_plugins( $plugins ) {
467
  require_once( happyforms_get_include_folder() . '/core/templates/admin-form-modal.php' );
468
  }
469
 
470
+ public function print_frontend_styles( $form ) {
471
  $output = apply_filters( 'happyforms_enqueue_style', true );
472
 
473
+ if ( $output && ! $this->frontend_styles ) {
474
+ $this->frontend_styles = true;
475
+ $url = happyforms_get_plugin_url() . 'inc/core/assets/css/frontend.css?' . HAPPYFORMS_VERSION;
476
+ ?>
477
+ <link rel="stylesheet" property="stylesheet" href="<?php echo $url; ?>" />
478
+ <?php
479
  }
480
 
481
+ do_action( 'happyforms_print_frontend_styles', $form );
 
 
 
482
  }
483
 
484
  /**
579
  $preview_deps, HAPPYFORMS_VERSION, true
580
  );
581
 
582
+ wp_localize_script(
583
+ 'happyforms-preview',
584
+ '_happyformsPreviewSettings',
585
+ array(
586
+ 'ajaxurl' => admin_url( 'admin-ajax.php' )
587
+ )
588
+ );
589
+
590
  require_once( happyforms_get_include_folder() . '/core/templates/preview-form-pencil.php' );
591
  }
592
 
inc/core/classes/class-message-admin.php CHANGED
@@ -170,7 +170,7 @@ class HappyForms_Message_Admin {
170
  }
171
 
172
  $message = $message_controller->get( $post->ID );
173
- $email = happyforms_get_message_part_value( $message['parts'][$email_part_id] );
174
  $url = "mailto: {$email}";
175
 
176
  if ( wp_redirect( $url ) ) {
@@ -464,10 +464,11 @@ class HappyForms_Message_Admin {
464
  }
465
 
466
  if ( count( $form['parts'] ) > $column_index ) {
467
- $part_id = $form['parts'][$column_index]['id'];
 
468
 
469
  if ( isset( $message['parts'][$part_id] ) ) {
470
- echo happyforms_get_message_part_value( $message['parts'][$part_id] );
471
  }
472
  }
473
  }
@@ -600,10 +601,10 @@ class HappyForms_Message_Admin {
600
  }
601
 
602
  $query_vars = &$query->query_vars;
603
- $query_vars['meta_query'] = array();
604
  $post_type = happyforms_get_message_controller()->post_type;
605
 
606
  if ( $post_type === $query->query['post_type'] ) {
 
607
  $query_vars['meta_key'] = '_happyforms_form_id';
608
 
609
  if ( count( $this->current_form_ids ) > 0 ) {
170
  }
171
 
172
  $message = $message_controller->get( $post->ID );
173
+ $email = happyforms_get_message_part_value( $message['parts'][$email_part_id], $email_part );
174
  $url = "mailto: {$email}";
175
 
176
  if ( wp_redirect( $url ) ) {
464
  }
465
 
466
  if ( count( $form['parts'] ) > $column_index ) {
467
+ $part = $form['parts'][$column_index];
468
+ $part_id = $part['id'];
469
 
470
  if ( isset( $message['parts'][$part_id] ) ) {
471
+ echo happyforms_get_message_part_value( $message['parts'][$part_id], $part, 'admin-column' );
472
  }
473
  }
474
  }
601
  }
602
 
603
  $query_vars = &$query->query_vars;
 
604
  $post_type = happyforms_get_message_controller()->post_type;
605
 
606
  if ( $post_type === $query->query['post_type'] ) {
607
+ $query_vars['meta_query'] = array();
608
  $query_vars['meta_key'] = '_happyforms_form_id';
609
 
610
  if ( count( $this->current_form_ids ) > 0 ) {
inc/core/classes/class-message-controller.php CHANGED
@@ -205,30 +205,30 @@ class HappyForms_Message_Controller {
205
  */
206
  public function register_post_type() {
207
  $labels = array(
208
- 'name' => __( 'Responses', 'happyforms' ),
209
- 'singular_name' => __( 'Response', 'happyforms' ),
210
- 'edit_item' => __( 'Edit response', 'happyforms' ),
211
- 'view_item' => __( 'View response', 'happyforms' ),
212
- 'view_items' => __( 'View Responses', 'happyforms' ),
213
- 'search_items' => __( 'Search Responses', 'happyforms' ),
214
- 'not_found' => __( 'No response found', 'happyforms' ),
215
  'not_found_in_trash' => __( 'No response found in Trash', 'happyforms' ),
216
- 'all_items' => __( 'All Responses', 'happyforms' ),
217
- 'menu_name' => __( 'All Responses', 'happyforms' ),
218
  );
219
 
220
  $args = array(
221
- 'labels' => $labels,
222
- 'public' => false,
223
- 'publicly_queryable' => false,
224
  'exclude_from_search' => true,
225
- 'show_ui' => true,
226
- 'show_in_menu' => false,
227
- 'query_var' => true,
228
- 'capability_type' => 'page',
229
- 'has_archive' => false,
230
- 'hierarchical' => false,
231
- 'supports' => array( 'custom-fields' ),
232
  );
233
 
234
  register_post_type( $this->post_type, $args );
@@ -353,7 +353,7 @@ class HappyForms_Message_Controller {
353
  // Update the unread badge
354
  $this->update_badge_transient();
355
 
356
- if ( ! empty( $form['redirect_url'] ) ) {
357
  $response['redirect'] = $form['redirect_url'];
358
  }
359
 
@@ -467,7 +467,7 @@ class HappyForms_Message_Controller {
467
  $this->send_json_success( $response, $submission, $form );
468
  }
469
 
470
- private function send_json_success( $response = array(), $submission = array(), $form = array() ) {
471
  $response = apply_filters( 'happyforms_json_response', $response, $submission, $form );
472
 
473
  wp_send_json_success( $response );
@@ -504,7 +504,7 @@ class HappyForms_Message_Controller {
504
  *
505
  * @return boolean
506
  */
507
- private function verify_nonce( $nonce, $form_id ) {
508
  return wp_verify_nonce( $nonce, $this->nonce_prefix . $form_id );
509
  }
510
 
@@ -598,6 +598,8 @@ class HappyForms_Message_Controller {
598
  }
599
  }
600
 
 
 
601
  return $is_valid ? $submission : false;
602
  }
603
 
@@ -717,6 +719,37 @@ class HappyForms_Message_Controller {
717
  return $message_entries;
718
  }
719
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
720
  /**
721
  * Turn a message post object into an array.
722
  *
@@ -738,15 +771,18 @@ class HappyForms_Message_Controller {
738
  if ( $form ) {
739
  foreach ( $form['parts'] as $part_data ) {
740
  $part = happyforms_get_part_library()->get_part( $part_data['type'] );
741
- $part_id = $part_data['id'];
742
- $part_value = $part->get_default_value( $part_data );
743
 
744
- if ( isset( $message_meta[$part_id] ) ) {
745
- $part_value = $message_meta[$part_id];
746
- }
 
 
 
 
747
 
748
- $message_array['parts'][$part_id] = $part_value;
749
- unset( $message_array[$part_id] );
 
750
  }
751
  }
752
 
@@ -769,8 +805,10 @@ class HappyForms_Message_Controller {
769
 
770
  // Compose an email message
771
  $email_message = new HappyForms_Email_Message( $message );
 
772
  $to = explode( ',', $form['email_recipient'] );
773
 
 
774
  $email_message->set_to( $to[0] );
775
 
776
  if ( count( $to ) > 1 ) {
@@ -808,16 +846,23 @@ class HappyForms_Message_Controller {
808
  $content_lines[] = "<b>{$label}</b><br>{$tracking_id}";
809
  }
810
 
811
- // Add a From header and a reply-and-mark-as-read link
812
  // if the form includes an email part
813
  $email_part = happyforms_get_form_controller()->get_first_part_by_type( $form, 'email' );
814
 
815
  if ( false !== $email_part ) {
816
  $part_id = $email_part['id'];
817
- $from = happyforms_get_message_part_value( $message['parts'][$part_id] );
 
 
 
 
 
 
 
818
 
819
  // Reply and mark as read link
820
- if ( 1 === intval( $form['email_mark_and_reply'] ) ) {
821
  $content_lines[] = sprintf(
822
  '<a href="%s">%s</a>',
823
  happyforms_get_reply_and_mark_link( $message['ID'] ),
@@ -825,7 +870,7 @@ class HappyForms_Message_Controller {
825
  );
826
  }
827
 
828
- $email_message->set_reply_to( $from );
829
  }
830
 
831
  $content = implode( '<br><br>', $content_lines );
@@ -860,11 +905,12 @@ class HappyForms_Message_Controller {
860
  $from = $senders[0];
861
  $reply_to = $senders;
862
 
863
- $email_message->set_from( $from, $name );
 
864
  $email_message->set_reply_to( $senders );
865
  $email_message->set_subject( $form['confirmation_email_subject'] );
866
  $part_id = $email_part['id'];
867
- $to = happyforms_get_message_part_value( $message['parts'][$part_id] );
868
  $email_message->set_to( $to );
869
 
870
  $content = html_entity_decode( $form['confirmation_email_content'] );
205
  */
206
  public function register_post_type() {
207
  $labels = array(
208
+ 'name' => __( 'Responses', 'happyforms' ),
209
+ 'singular_name' => __( 'Response', 'happyforms' ),
210
+ 'edit_item' => __( 'Edit response', 'happyforms' ),
211
+ 'view_item' => __( 'View response', 'happyforms' ),
212
+ 'view_items' => __( 'View Responses', 'happyforms' ),
213
+ 'search_items' => __( 'Search Responses', 'happyforms' ),
214
+ 'not_found' => __( 'No response found', 'happyforms' ),
215
  'not_found_in_trash' => __( 'No response found in Trash', 'happyforms' ),
216
+ 'all_items' => __( 'All Responses', 'happyforms' ),
217
+ 'menu_name' => __( 'All Responses', 'happyforms' ),
218
  );
219
 
220
  $args = array(
221
+ 'labels' => $labels,
222
+ 'public' => false,
223
+ 'publicly_queryable' => false,
224
  'exclude_from_search' => true,
225
+ 'show_ui' => true,
226
+ 'show_in_menu' => false,
227
+ 'query_var' => true,
228
+ 'capability_type' => 'page',
229
+ 'has_archive' => false,
230
+ 'hierarchical' => false,
231
+ 'supports' => array( 'custom-fields' ),
232
  );
233
 
234
  register_post_type( $this->post_type, $args );
353
  // Update the unread badge
354
  $this->update_badge_transient();
355
 
356
+ if ( 1 === intval( $form['redirect_on_complete'] ) && ! empty( $form['redirect_url'] ) ) {
357
  $response['redirect'] = $form['redirect_url'];
358
  }
359
 
467
  $this->send_json_success( $response, $submission, $form );
468
  }
469
 
470
+ public function send_json_success( $response = array(), $submission = array(), $form = array() ) {
471
  $response = apply_filters( 'happyforms_json_response', $response, $submission, $form );
472
 
473
  wp_send_json_success( $response );
504
  *
505
  * @return boolean
506
  */
507
+ public function verify_nonce( $nonce, $form_id ) {
508
  return wp_verify_nonce( $nonce, $this->nonce_prefix . $form_id );
509
  }
510
 
598
  }
599
  }
600
 
601
+ $is_valid = apply_filters( 'happyforms_validate_submission', $is_valid, $request, $form );
602
+
603
  return $is_valid ? $submission : false;
604
  }
605
 
719
  return $message_entries;
720
  }
721
 
722
+ /**
723
+ * Get messages by a list of meta fields.
724
+ *
725
+ * @param string $metas An array of meta fields.
726
+ *
727
+ * @return array
728
+ */
729
+ public function get_by_metas( $metas ) {
730
+ $metas = happyforms_prefix_meta( $metas );
731
+ $meta_query = array();
732
+
733
+ foreach ( $metas as $field => $value ) {
734
+ $meta_query[] = array(
735
+ 'field' => $field,
736
+ 'value' => $value,
737
+ );
738
+ }
739
+
740
+ $query_params = array(
741
+ 'post_type' => $this->post_type,
742
+ 'post_status' => 'any',
743
+ 'posts_per_page' => -1,
744
+ 'meta_query' => $meta_query,
745
+ );
746
+
747
+ $messages = get_posts( $query_params );
748
+ $message_entries = array_map( array( $this, 'to_array'), $messages );
749
+
750
+ return $message_entries;
751
+ }
752
+
753
  /**
754
  * Turn a message post object into an array.
755
  *
771
  if ( $form ) {
772
  foreach ( $form['parts'] as $part_data ) {
773
  $part = happyforms_get_part_library()->get_part( $part_data['type'] );
 
 
774
 
775
+ if ( $part ) {
776
+ $part_id = $part_data['id'];
777
+ $part_value = $part->get_default_value( $part_data );
778
+
779
+ if ( isset( $message_meta[$part_id] ) ) {
780
+ $part_value = $message_meta[$part_id];
781
+ }
782
 
783
+ $message_array['parts'][$part_id] = $part_value;
784
+ unset( $message_array[$part_id] );
785
+ }
786
  }
787
  }
788
 
805
 
806
  // Compose an email message
807
  $email_message = new HappyForms_Email_Message( $message );
808
+ $name = $form['confirmation_email_from_name'];
809
  $to = explode( ',', $form['email_recipient'] );
810
 
811
+ $email_message->set_from_name( $name );
812
  $email_message->set_to( $to[0] );
813
 
814
  if ( count( $to ) > 1 ) {
846
  $content_lines[] = "<b>{$label}</b><br>{$tracking_id}";
847
  }
848
 
849
+ // Add a Reply To header and a reply-and-mark-as-read link
850
  // if the form includes an email part
851
  $email_part = happyforms_get_form_controller()->get_first_part_by_type( $form, 'email' );
852
 
853
  if ( false !== $email_part ) {
854
  $part_id = $email_part['id'];
855
+ $reply_to = happyforms_get_message_part_value( $message['parts'][$part_id], $email_part );
856
+
857
+ $include_mark_and_reply_link = true;
858
+
859
+ $include_mark_and_reply_link = apply_filters(
860
+ 'happyforms_message_include_mark_and_reply',
861
+ $include_mark_and_reply_link
862
+ );
863
 
864
  // Reply and mark as read link
865
+ if ( true === $include_mark_and_reply_link ) {
866
  $content_lines[] = sprintf(
867
  '<a href="%s">%s</a>',
868
  happyforms_get_reply_and_mark_link( $message['ID'] ),
870
  );
871
  }
872
 
873
+ $email_message->set_reply_to( $reply_to );
874
  }
875
 
876
  $content = implode( '<br><br>', $content_lines );
905
  $from = $senders[0];
906
  $reply_to = $senders;
907
 
908
+ $email_message->set_from( $from );
909
+ $email_message->set_from_name( $name );
910
  $email_message->set_reply_to( $senders );
911
  $email_message->set_subject( $form['confirmation_email_subject'] );
912
  $part_id = $email_part['id'];
913
+ $to = happyforms_get_message_part_value( $message['parts'][$part_id], $email_part );
914
  $email_message->set_to( $to );
915
 
916
  $content = html_entity_decode( $form['confirmation_email_content'] );
inc/core/classes/class-wp-customize-form-manager.php CHANGED
@@ -15,6 +15,9 @@ class HappyForms_WP_Customize_Form_Manager {
15
  * @since 1.0
16
  */
17
  public function __construct() {
 
 
 
18
  /*
19
  * Note the customize_register action is triggered in
20
  * WP_Customize_Manager::wp_loaded() which is itself the
@@ -36,17 +39,13 @@ class HappyForms_WP_Customize_Form_Manager {
36
  *
37
  * @return array The current form data.
38
  */
39
- private function get_current_form() {
40
- $form_id = $_REQUEST['form_id'];
41
- $form = happyforms_get_form_controller()->get_defaults();
42
-
43
- if ( intval( $form_id ) > 0 ) {
44
- $form = happyforms_get_form_controller()->get( $form_id );
45
 
46
- if ( is_wp_error( $form ) ) {
47
- wp_die( $form->get_error_message() );
48
- exit;
49
- }
50
  }
51
 
52
  return $form;
@@ -305,7 +304,7 @@ class HappyForms_WP_Customize_Form_Manager {
305
 
306
  $data = array(
307
  'form' => $this->get_current_form(),
308
- 'formParts' => $this->library->get_parts(),
309
  'baseUrl' => get_site_url(),
310
  );
311
 
@@ -318,6 +317,8 @@ class HappyForms_WP_Customize_Form_Manager {
318
  }
319
 
320
  wp_enqueue_editor();
 
 
321
  }
322
 
323
  /**
15
  * @since 1.0
16
  */
17
  public function __construct() {
18
+ require_once( happyforms_get_include_folder() . '/core/helpers/helper-validation.php' );
19
+ require_once( happyforms_get_include_folder() . '/core/helpers/helper-customize-templates.php' );
20
+
21
  /*
22
  * Note the customize_register action is triggered in
23
  * WP_Customize_Manager::wp_loaded() which is itself the
39
  *
40
  * @return array The current form data.
41
  */
42
+ public function get_current_form() {
43
+ $form_id = intval( $_REQUEST['form_id'] );
44
+ $form = happyforms_get_form_controller()->get( $form_id );
 
 
 
45
 
46
+ if ( is_wp_error( $form ) ) {
47
+ wp_die( $form->get_error_message() );
48
+ exit;
 
49
  }
50
 
51
  return $form;
304
 
305
  $data = array(
306
  'form' => $this->get_current_form(),
307
+ 'formParts' => apply_filters( 'happyforms_get_library_parts', $this->library->get_parts() ),
308
  'baseUrl' => get_site_url(),
309
  );
310
 
317
  }
318
 
319
  wp_enqueue_editor();
320
+
321
+ do_action( 'happyforms_customize_enqueue_scripts' );
322
  }
323
 
324
  /**
inc/core/classes/parts/class-part-address.php CHANGED
@@ -32,7 +32,7 @@ class HappyForms_Part_Address extends HappyForms_Form_Part {
32
  * @return array
33
  */
34
  public function get_customize_fields() {
35
- return array(
36
  'type' => array(
37
  'default' => $this->type,
38
  'sanitize' => 'sanitize_text_field',
@@ -85,6 +85,8 @@ class HappyForms_Part_Address extends HappyForms_Form_Part {
85
  'sanitize' => 'happyforms_sanitize_checkbox',
86
  ),
87
  );
 
 
88
  }
89
 
90
  /**
@@ -95,7 +97,10 @@ class HappyForms_Part_Address extends HappyForms_Form_Part {
95
  * @return string
96
  */
97
  public function customize_templates() {
98
- require_once( happyforms_get_include_folder() . '/core/templates/parts/customize-address.php' );
 
 
 
99
  }
100
 
101
  /**
32
  * @return array
33
  */
34
  public function get_customize_fields() {
35
+ $fields = array(
36
  'type' => array(
37
  'default' => $this->type,
38
  'sanitize' => 'sanitize_text_field',
85
  'sanitize' => 'happyforms_sanitize_checkbox',
86
  ),
87
  );
88
+
89
+ return happyforms_get_part_customize_fields( $fields, $this->type );
90
  }
91
 
92
  /**
97
  * @return string
98
  */
99
  public function customize_templates() {
100
+ $template_path = happyforms_get_include_folder() . '/core/templates/parts/customize-address.php';
101
+ $template_path = happyforms_get_part_customize_template_path( $template_path, $this->type );
102
+
103
+ require_once( $template_path );
104
  }
105
 
106
  /**
inc/core/classes/parts/class-part-checkbox.php CHANGED
@@ -21,7 +21,7 @@ class HappyForms_Part_Checkbox extends HappyForms_Form_Part {
21
  * @return array
22
  */
23
  public function get_customize_fields() {
24
- return array(
25
  'type' => array(
26
  'default' => $this->type,
27
  'sanitize' => 'sanitize_text_field',
@@ -63,6 +63,8 @@ class HappyForms_Part_Checkbox extends HappyForms_Form_Part {
63
  'sanitize' => 'happyforms_sanitize_array'
64
  )
65
  );
 
 
66
  }
67
 
68
  private function get_option_defaults() {
@@ -81,7 +83,10 @@ class HappyForms_Part_Checkbox extends HappyForms_Form_Part {
81
  * @return string
82
  */
83
  public function customize_templates() {
84
- require_once( happyforms_get_include_folder() . '/core/templates/parts/customize-checkbox.php' );
 
 
 
85
  }
86
 
87
  /**
21
  * @return array
22
  */
23
  public function get_customize_fields() {
24
+ $fields = array(
25
  'type' => array(
26
  'default' => $this->type,
27
  'sanitize' => 'sanitize_text_field',
63
  'sanitize' => 'happyforms_sanitize_array'
64
  )
65
  );
66
+
67
+ return happyforms_get_part_customize_fields( $fields, $this->type );
68
  }
69
 
70
  private function get_option_defaults() {
83
  * @return string
84
  */
85
  public function customize_templates() {
86
+ $template_path = happyforms_get_include_folder() . '/core/templates/parts/customize-checkbox.php';
87
+ $template_path = happyforms_get_part_customize_template_path( $template_path, $this->type );
88
+
89
+ require_once( $template_path );
90
  }
91
 
92
  /**
inc/core/classes/parts/class-part-date.php CHANGED
@@ -21,7 +21,7 @@ class HappyForms_Part_Date extends HappyForms_Form_Part {
21
  * @return array
22
  */
23
  public function get_customize_fields() {
24
- return array(
25
  'type' => array(
26
  'default' => $this->type,
27
  'sanitize' => 'sanitize_text_field',
@@ -95,6 +95,8 @@ class HappyForms_Part_Date extends HappyForms_Form_Part {
95
  'sanitize' => 'happyforms_sanitize_checkbox',
96
  ),
97
  );
 
 
98
  }
99
 
100
  /**
@@ -105,7 +107,10 @@ class HappyForms_Part_Date extends HappyForms_Form_Part {
105
  * @return string
106
  */
107
  public function customize_templates() {
108
- require_once( happyforms_get_include_folder() . '/core/templates/parts/customize-date.php' );
 
 
 
109
  }
110
 
111
  /**
21
  * @return array
22
  */
23
  public function get_customize_fields() {
24
+ $fields = array(
25
  'type' => array(
26
  'default' => $this->type,
27
  'sanitize' => 'sanitize_text_field',
95
  'sanitize' => 'happyforms_sanitize_checkbox',
96
  ),
97
  );
98
+
99
+ return happyforms_get_part_customize_fields( $fields, $this->type );
100
  }
101
 
102
  /**
107
  * @return string
108
  */
109
  public function customize_templates() {
110
+ $template_path = happyforms_get_include_folder() . '/core/templates/parts/customize-date.php';
111
+ $template_path = happyforms_get_part_customize_template_path( $template_path, $this->type );
112
+
113
+ require_once( $template_path );
114
  }
115
 
116
  /**
inc/core/classes/parts/class-part-email.php CHANGED
@@ -10,6 +10,7 @@ class HappyForms_Part_Email extends HappyForms_Form_Part {
10
 
11
  add_filter( 'happyforms_part_class', array( $this, 'html_part_class' ), 10, 3 );
12
  add_filter( 'happyforms_part_data_attributes', array( $this, 'html_part_data_attributes' ), 10, 3 );
 
13
  add_filter( 'happyforms_frontend_dependencies', array( $this, 'script_dependencies' ), 10, 2 );
14
  }
15
 
@@ -21,7 +22,7 @@ class HappyForms_Part_Email extends HappyForms_Form_Part {
21
  * @return array
22
  */
23
  public function get_customize_fields() {
24
- return array(
25
  'type' => array(
26
  'default' => $this->type,
27
  'sanitize' => 'sanitize_text_field',
@@ -71,6 +72,8 @@ class HappyForms_Part_Email extends HappyForms_Form_Part {
71
  'sanitize' => 'happyforms_sanitize_checkbox',
72
  ),
73
  );
 
 
74
  }
75
 
76
  /**
@@ -81,7 +84,10 @@ class HappyForms_Part_Email extends HappyForms_Form_Part {
81
  * @return string
82
  */
83
  public function customize_templates() {
84
- require_once( happyforms_get_include_folder() . '/core/templates/parts/customize-email.php' );
 
 
 
85
  }
86
 
87
  /**
@@ -204,6 +210,23 @@ class HappyForms_Part_Email extends HappyForms_Form_Part {
204
  return apply_filters( 'happyforms_email_domains_autocomplete', $domains );
205
  }
206
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
207
  /**
208
  * Enqueue scripts in customizer area.
209
  *
10
 
11
  add_filter( 'happyforms_part_class', array( $this, 'html_part_class' ), 10, 3 );
12
  add_filter( 'happyforms_part_data_attributes', array( $this, 'html_part_data_attributes' ), 10, 3 );
13
+ add_filter( 'happyforms_message_part_value', array( $this, 'message_part_value' ), 10, 4 );
14
  add_filter( 'happyforms_frontend_dependencies', array( $this, 'script_dependencies' ), 10, 2 );
15
  }
16
 
22
  * @return array
23
  */
24
  public function get_customize_fields() {
25
+ $fields = array(
26
  'type' => array(
27
  'default' => $this->type,
28
  'sanitize' => 'sanitize_text_field',
72
  'sanitize' => 'happyforms_sanitize_checkbox',
73
  ),
74
  );
75
+
76
+ return happyforms_get_part_customize_fields( $fields, $this->type );
77
  }
78
 
79
  /**
84
  * @return string
85
  */
86
  public function customize_templates() {
87
+ $template_path = happyforms_get_include_folder() . '/core/templates/parts/customize-email.php';
88
+ $template_path = happyforms_get_part_customize_template_path( $template_path, $this->type );
89
+
90
+ require_once( $template_path );
91
  }
92
 
93
  /**
210
  return apply_filters( 'happyforms_email_domains_autocomplete', $domains );
211
  }
212
 
213
+ public function message_part_value( $value, $original_value, $part, $destination ) {
214
+ if ( isset( $part['type'] )
215
+ && $this->type === $part['type'] ) {
216
+
217
+ switch( $destination ) {
218
+ case 'email':
219
+ case 'admin-edit':
220
+ $value = "<a href=\"mailto:{$value}\">{$value}</a>";
221
+ default:
222
+ break;
223
+ }
224
+
225
+ }
226
+
227
+ return $value;
228
+ }
229
+
230
  /**
231
  * Enqueue scripts in customizer area.
232
  *
inc/core/classes/parts/class-part-legal.php CHANGED
@@ -22,7 +22,7 @@ class HappyForms_Part_Legal extends HappyForms_Form_Part {
22
  * @return array
23
  */
24
  public function get_customize_fields() {
25
- return array(
26
  'type' => array(
27
  'default' => $this->type,
28
  'sanitize' => 'sanitize_text_field',
@@ -48,6 +48,8 @@ class HappyForms_Part_Legal extends HappyForms_Form_Part {
48
  'sanitize' => 'sanitize_text_field',
49
  ),
50
  );
 
 
51
  }
52
 
53
  /**
@@ -58,7 +60,10 @@ class HappyForms_Part_Legal extends HappyForms_Form_Part {
58
  * @return string
59
  */
60
  public function customize_templates() {
61
- require_once( happyforms_get_include_folder() . '/core/templates/parts/customize-legal.php' );
 
 
 
62
  }
63
 
64
  /**
22
  * @return array
23
  */
24
  public function get_customize_fields() {
25
+ $fields = array(
26
  'type' => array(
27
  'default' => $this->type,
28
  'sanitize' => 'sanitize_text_field',
48
  'sanitize' => 'sanitize_text_field',
49
  ),
50
  );
51
+
52
+ return happyforms_get_part_customize_fields( $fields, $this->type );
53
  }
54
 
55
  /**
60
  * @return string
61
  */
62
  public function customize_templates() {
63
+ $template_path = happyforms_get_include_folder() . '/core/templates/parts/customize-legal.php';
64
+ $template_path = happyforms_get_part_customize_template_path( $template_path, $this->type );
65
+
66
+ require_once( $template_path );
67
  }
68
 
69
  /**
inc/core/classes/parts/class-part-multi-line-text.php CHANGED
@@ -20,7 +20,7 @@ class HappyForms_Part_MultiLineText extends HappyForms_Form_Part {
20
  * @return array
21
  */
22
  public function get_customize_fields() {
23
- return array(
24
  'type' => array(
25
  'default' => $this->type,
26
  'sanitize' => 'sanitize_text_field',
@@ -58,6 +58,8 @@ class HappyForms_Part_MultiLineText extends HappyForms_Form_Part {
58
  'sanitize' => 'happyforms_sanitize_checkbox',
59
  )
60
  );
 
 
61
  }
62
 
63
  /**
@@ -68,7 +70,10 @@ class HappyForms_Part_MultiLineText extends HappyForms_Form_Part {
68
  * @return string
69
  */
70
  public function customize_templates() {
71
- require_once( happyforms_get_include_folder() . '/core/templates/parts/customize-multi-line-text.php' );
 
 
 
72
  }
73
 
74
  /**
20
  * @return array
21
  */
22
  public function get_customize_fields() {
23
+ $fields = array(
24
  'type' => array(
25
  'default' => $this->type,
26
  'sanitize' => 'sanitize_text_field',
58
  'sanitize' => 'happyforms_sanitize_checkbox',
59
  )
60
  );
61
+
62
+ return happyforms_get_part_customize_fields( $fields, $this->type );
63
  }
64
 
65
  /**
70
  * @return string
71
  */
72
  public function customize_templates() {
73
+ $template_path = happyforms_get_include_folder() . '/core/templates/parts/customize-multi-line-text.php';
74
+ $template_path = happyforms_get_part_customize_template_path( $template_path, $this->type );
75
+
76
+ require_once( $template_path );
77
  }
78
 
79
  /**
inc/core/classes/parts/class-part-narrative.php CHANGED
@@ -20,7 +20,7 @@ class HappyForms_Part_Narrative extends HappyForms_Form_Part {
20
  * @return array
21
  */
22
  public function get_customize_fields() {
23
- return array(
24
  'type' => array(
25
  'default' => $this->type,
26
  'sanitize' => 'sanitize_text_field',
@@ -50,6 +50,8 @@ class HappyForms_Part_Narrative extends HappyForms_Form_Part {
50
  'sanitize' => 'happyforms_sanitize_checkbox',
51
  ),
52
  );
 
 
53
  }
54
 
55
  /**
@@ -60,7 +62,10 @@ class HappyForms_Part_Narrative extends HappyForms_Form_Part {
60
  * @return string
61
  */
62
  public function customize_templates() {
63
- require_once( happyforms_get_include_folder() . '/core/templates/parts/customize-narrative.php' );
 
 
 
64
  }
65
 
66
  /**
20
  * @return array
21
  */
22
  public function get_customize_fields() {
23
+ $fields = array(
24
  'type' => array(
25
  'default' => $this->type,
26
  'sanitize' => 'sanitize_text_field',
50
  'sanitize' => 'happyforms_sanitize_checkbox',
51
  ),
52
  );
53
+
54
+ return happyforms_get_part_customize_fields( $fields, $this->type );
55
  }
56
 
57
  /**
62
  * @return string
63
  */
64
  public function customize_templates() {
65
+ $template_path = happyforms_get_include_folder() . '/core/templates/parts/customize-narrative.php';
66
+ $template_path = happyforms_get_part_customize_template_path( $template_path, $this->type );
67
+
68
+ require_once( $template_path );
69
  }
70
 
71
  /**
inc/core/classes/parts/class-part-number.php CHANGED
@@ -21,7 +21,7 @@ class HappyForms_Part_Number extends HappyForms_Form_Part {
21
  * @return array
22
  */
23
  public function get_customize_fields() {
24
- return array(
25
  'type' => array(
26
  'default' => $this->type,
27
  'sanitize' => 'sanitize_text_field',
@@ -91,6 +91,8 @@ class HappyForms_Part_Number extends HappyForms_Form_Part {
91
  'sanitize' => 'happyforms_sanitize_checkbox',
92
  ),
93
  );
 
 
94
  }
95
 
96
  /**
@@ -101,7 +103,10 @@ class HappyForms_Part_Number extends HappyForms_Form_Part {
101
  * @return string
102
  */
103
  public function customize_templates() {
104
- require_once( happyforms_get_include_folder() . '/core/templates/parts/customize-number.php' );
 
 
 
105
  }
106
 
107
  /**
21
  * @return array
22
  */
23
  public function get_customize_fields() {
24
+ $fields = array(
25
  'type' => array(
26
  'default' => $this->type,
27
  'sanitize' => 'sanitize_text_field',
91
  'sanitize' => 'happyforms_sanitize_checkbox',
92
  ),
93
  );
94
+
95
+ return happyforms_get_part_customize_fields( $fields, $this->type );
96
  }
97
 
98
  /**
103
  * @return string
104
  */
105
  public function customize_templates() {
106
+ $template_path = happyforms_get_include_folder() . '/core/templates/parts/customize-number.php';
107
+ $template_path = happyforms_get_part_customize_template_path( $template_path, $this->type );
108
+
109
+ require_once( $template_path );
110
  }
111
 
112
  /**
inc/core/classes/parts/class-part-phone.php CHANGED
@@ -21,7 +21,7 @@ class HappyForms_Part_Phone extends HappyForms_Form_Part {
21
  * @return array
22
  */
23
  public function get_customize_fields() {
24
- return array(
25
  'type' => array(
26
  'default' => $this->type,
27
  'sanitize' => 'sanitize_text_field',
@@ -79,6 +79,8 @@ class HappyForms_Part_Phone extends HappyForms_Form_Part {
79
  'sanitize' => 'happyforms_sanitize_checkbox',
80
  ),
81
  );
 
 
82
  }
83
 
84
  /**
@@ -89,7 +91,10 @@ class HappyForms_Part_Phone extends HappyForms_Form_Part {
89
  * @return string
90
  */
91
  public function customize_templates() {
92
- require_once( happyforms_get_include_folder() . '/core/templates/parts/customize-phone.php' );
 
 
 
93
  }
94
 
95
  /**
21
  * @return array
22
  */
23
  public function get_customize_fields() {
24
+ $fields = array(
25
  'type' => array(
26
  'default' => $this->type,
27
  'sanitize' => 'sanitize_text_field',
79
  'sanitize' => 'happyforms_sanitize_checkbox',
80
  ),
81
  );
82
+
83
+ return happyforms_get_part_customize_fields( $fields, $this->type );
84
  }
85
 
86
  /**
91
  * @return string
92
  */
93
  public function customize_templates() {
94
+ $template_path = happyforms_get_include_folder() . '/core/templates/parts/customize-phone.php';
95
+ $template_path = happyforms_get_part_customize_template_path( $template_path, $this->type );
96
+
97
+ require_once( $template_path );
98
  }
99
 
100
  /**
inc/core/classes/parts/class-part-placeholder.php CHANGED
@@ -19,7 +19,7 @@ class HappyForms_Part_Placeholder extends HappyForms_Form_Part {
19
  * @return array
20
  */
21
  public function get_customize_fields() {
22
- return array(
23
  'type' => array(
24
  'default' => $this->type,
25
  'sanitize' => 'sanitize_text_field',
@@ -45,6 +45,8 @@ class HappyForms_Part_Placeholder extends HappyForms_Form_Part {
45
  'sanitize' => 'esc_html'
46
  )
47
  );
 
 
48
  }
49
 
50
  /**
@@ -55,7 +57,10 @@ class HappyForms_Part_Placeholder extends HappyForms_Form_Part {
55
  * @return string
56
  */
57
  public function customize_templates() {
58
- require_once( happyforms_get_include_folder() . '/core/templates/parts/customize-placeholder.php' );
 
 
 
59
  }
60
 
61
  /**
19
  * @return array
20
  */
21
  public function get_customize_fields() {
22
+ $fields = array(
23
  'type' => array(
24
  'default' => $this->type,
25
  'sanitize' => 'sanitize_text_field',
45
  'sanitize' => 'esc_html'
46
  )
47
  );
48
+
49
+ return happyforms_get_part_customize_fields( $fields, $this->type );
50
  }
51
 
52
  /**
57
  * @return string
58
  */
59
  public function customize_templates() {
60
+ $template_path = happyforms_get_include_folder() . '/core/templates/parts/customize-placeholder.php';
61
+ $template_path = happyforms_get_part_customize_template_path( $template_path, $this->type );
62
+
63
+ require_once( $template_path );
64
  }
65
 
66
  /**
inc/core/classes/parts/class-part-radio.php CHANGED
@@ -22,7 +22,7 @@ class HappyForms_Part_Radio extends HappyForms_Form_Part {
22
  * @return array
23
  */
24
  public function get_customize_fields() {
25
- return array(
26
  'type' => array(
27
  'default' => $this->type,
28
  'sanitize' => 'sanitize_text_field',
@@ -64,6 +64,8 @@ class HappyForms_Part_Radio extends HappyForms_Form_Part {
64
  'sanitize' => 'happyforms_sanitize_array'
65
  )
66
  );
 
 
67
  }
68
 
69
  /**
@@ -89,7 +91,10 @@ class HappyForms_Part_Radio extends HappyForms_Form_Part {
89
  * @return string
90
  */
91
  public function customize_templates() {
92
- require_once( happyforms_get_include_folder() . '/core/templates/parts/customize-radio.php' );
 
 
 
93
  }
94
 
95
  /**
22
  * @return array
23
  */
24
  public function get_customize_fields() {
25
+ $fields = array(
26
  'type' => array(
27
  'default' => $this->type,
28
  'sanitize' => 'sanitize_text_field',
64
  'sanitize' => 'happyforms_sanitize_array'
65
  )
66
  );
67
+
68
+ return happyforms_get_part_customize_fields( $fields, $this->type );
69
  }
70
 
71
  /**
91
  * @return string
92
  */
93
  public function customize_templates() {
94
+ $template_path = happyforms_get_include_folder() . '/core/templates/parts/customize-radio.php';
95
+ $template_path = happyforms_get_part_customize_template_path( $template_path, $this->type );
96
+
97
+ require_once( $template_path );
98
  }
99
 
100
  /**
inc/core/classes/parts/class-part-rating.php CHANGED
@@ -22,7 +22,7 @@ class HappyForms_Part_Rating extends HappyForms_Form_Part {
22
  * @return array
23
  */
24
  public function get_customize_fields() {
25
- return array(
26
  'type' => array(
27
  'default' => $this->type,
28
  'sanitize' => 'sanitize_text_field',
@@ -79,12 +79,14 @@ class HappyForms_Part_Rating extends HappyForms_Form_Part {
79
  'css_class' => array(
80
  'default' => '',
81
  'sanitize' => 'sanitize_text_field'
82
- ),
83
  'required' => array(
84
  'default' => 1,
85
  'sanitize' => 'happyforms_sanitize_checkbox',
86
  ),
87
  );
 
 
88
  }
89
 
90
  /**
@@ -95,7 +97,10 @@ class HappyForms_Part_Rating extends HappyForms_Form_Part {
95
  * @return string
96
  */
97
  public function customize_templates() {
98
- require_once( happyforms_get_include_folder() . '/core/templates/parts/customize-rating.php' );
 
 
 
99
  }
100
 
101
  /**
22
  * @return array
23
  */
24
  public function get_customize_fields() {
25
+ $fields = array(
26
  'type' => array(
27
  'default' => $this->type,
28
  'sanitize' => 'sanitize_text_field',
79
  'css_class' => array(
80
  'default' => '',
81
  'sanitize' => 'sanitize_text_field'
82
+ ),
83
  'required' => array(
84
  'default' => 1,
85
  'sanitize' => 'happyforms_sanitize_checkbox',
86
  ),
87
  );
88
+
89
+ return happyforms_get_part_customize_fields( $fields, $this->type );
90
  }
91
 
92
  /**
97
  * @return string
98
  */
99
  public function customize_templates() {
100
+ $template_path = happyforms_get_include_folder() . '/core/templates/parts/customize-rating.php';
101
+ $template_path = happyforms_get_part_customize_template_path( $template_path, $this->type );
102
+
103
+ require_once( $template_path );
104
  }
105
 
106
  /**
inc/core/classes/parts/class-part-rich-text.php CHANGED
@@ -22,7 +22,7 @@ class HappyForms_Part_RichText extends HappyForms_Form_Part {
22
  * @return array
23
  */
24
  public function get_customize_fields() {
25
- return array(
26
  'type' => array(
27
  'default' => $this->type,
28
  'sanitize' => 'sanitize_text_field',
@@ -56,6 +56,8 @@ class HappyForms_Part_RichText extends HappyForms_Form_Part {
56
  'sanitize' => 'happyforms_sanitize_checkbox',
57
  )
58
  );
 
 
59
  }
60
 
61
  /**
@@ -66,7 +68,10 @@ class HappyForms_Part_RichText extends HappyForms_Form_Part {
66
  * @return string
67
  */
68
  public function customize_templates() {
69
- require_once( happyforms_get_include_folder() . '/core/templates/parts/customize-rich-text.php' );
 
 
 
70
  }
71
 
72
  /**
22
  * @return array
23
  */
24
  public function get_customize_fields() {
25
+ $fields = array(
26
  'type' => array(
27
  'default' => $this->type,
28
  'sanitize' => 'sanitize_text_field',
56
  'sanitize' => 'happyforms_sanitize_checkbox',
57
  )
58
  );
59
+
60
+ return happyforms_get_part_customize_fields( $fields, $this->type );
61
  }
62
 
63
  /**
68
  * @return string
69
  */
70
  public function customize_templates() {
71
+ $template_path = happyforms_get_include_folder() . '/core/templates/parts/customize-rich-text.php';
72
+ $template_path = happyforms_get_part_customize_template_path( $template_path, $this->type );
73
+
74
+ require_once( $template_path );
75
  }
76
 
77
  /**
inc/core/classes/parts/class-part-scale.php CHANGED
@@ -21,7 +21,7 @@ class HappyForms_Part_Scale extends HappyForms_Form_Part {
21
  * @return array
22
  */
23
  public function get_customize_fields() {
24
- return array(
25
  'type' => array(
26
  'default' => $this->type,
27
  'sanitize' => 'sanitize_text_field',
@@ -54,17 +54,17 @@ class HappyForms_Part_Scale extends HappyForms_Form_Part {
54
  'default' => '',
55
  'sanitize' => 'sanitize_text_field'
56
  ),
57
- 'min_value' => array(
58
- 'default' => 0,
59
- 'sanitize' => 'intval'
60
- ),
61
- 'max_value' => array(
62
- 'default' => 100,
63
- 'sanitize' => 'intval'
64
- ),
65
- 'multiple' => array(
66
- 'default' => 0,
67
- 'sanitize' => 'happyforms_sanitize_checkbox'
68
  ),
69
  'default_range_from' => array(
70
  'default' => 0,
@@ -74,14 +74,14 @@ class HappyForms_Part_Scale extends HappyForms_Form_Part {
74
  'default' => 50,
75
  'sanitize' => 'intval'
76
  ),
77
- 'step' => array(
78
- 'default' => 1,
79
- 'sanitize' => 'sanitize_key'
80
- ),
81
- 'default_value' => array(
82
- 'default' => 50,
83
- 'sanitize' => 'intval'
84
- ),
85
  'css_class' => array(
86
  'default' => '',
87
  'sanitize' => 'sanitize_text_field'
@@ -91,6 +91,8 @@ class HappyForms_Part_Scale extends HappyForms_Form_Part {
91
  'sanitize' => 'happyforms_sanitize_checkbox',
92
  ),
93
  );
 
 
94
  }
95
 
96
  /**
@@ -101,7 +103,10 @@ class HappyForms_Part_Scale extends HappyForms_Form_Part {
101
  * @return string
102
  */
103
  public function customize_templates() {
104
- require_once( happyforms_get_include_folder() . '/core/templates/parts/customize-scale.php' );
 
 
 
105
  }
106
 
107
  /**
21
  * @return array
22
  */
23
  public function get_customize_fields() {
24
+ $fields = array(
25
  'type' => array(
26
  'default' => $this->type,
27
  'sanitize' => 'sanitize_text_field',
54
  'default' => '',
55
  'sanitize' => 'sanitize_text_field'
56
  ),
57
+ 'min_value' => array(
58
+ 'default' => 0,
59
+ 'sanitize' => 'intval'
60
+ ),
61
+ 'max_value' => array(
62
+ 'default' => 100,
63
+ 'sanitize' => 'intval'
64
+ ),
65
+ 'multiple' => array(
66
+ 'default' => 0,
67
+ 'sanitize' => 'happyforms_sanitize_checkbox'
68
  ),
69
  'default_range_from' => array(
70
  'default' => 0,
74
  'default' => 50,
75
  'sanitize' => 'intval'
76
  ),
77
+ 'step' => array(
78
+ 'default' => 1,
79
+ 'sanitize' => 'sanitize_key'
80
+ ),
81
+ 'default_value' => array(
82
+ 'default' => 50,
83
+ 'sanitize' => 'intval'
84
+ ),
85
  'css_class' => array(
86
  'default' => '',
87
  'sanitize' => 'sanitize_text_field'
91
  'sanitize' => 'happyforms_sanitize_checkbox',
92
  ),
93
  );
94
+
95
+ return happyforms_get_part_customize_fields( $fields, $this->type );
96
  }
97
 
98
  /**
103
  * @return string
104
  */
105
  public function customize_templates() {
106
+ $template_path = happyforms_get_include_folder() . '/core/templates/parts/customize-scale.php';
107
+ $template_path = happyforms_get_part_customize_template_path( $template_path, $this->type );
108
+
109
+ require_once( $template_path );
110
  }
111
 
112
  /**
inc/core/classes/parts/class-part-select.php CHANGED
@@ -22,7 +22,7 @@ class HappyForms_Part_Select extends HappyForms_Form_Part {
22
  * @return array
23
  */
24
  public function get_customize_fields() {
25
- return array(
26
  'type' => array(
27
  'default' => $this->type,
28
  'sanitize' => 'sanitize_text_field',
@@ -68,6 +68,8 @@ class HappyForms_Part_Select extends HappyForms_Form_Part {
68
  'sanitize' => 'happyforms_sanitize_checkbox'
69
  )
70
  );
 
 
71
  }
72
 
73
  /**
@@ -92,7 +94,10 @@ class HappyForms_Part_Select extends HappyForms_Form_Part {
92
  * @return string
93
  */
94
  public function customize_templates() {
95
- require_once( happyforms_get_include_folder() . '/core/templates/parts/customize-select.php' );
 
 
 
96
  }
97
 
98
  /**
22
  * @return array
23
  */
24
  public function get_customize_fields() {
25
+ $fields = array(
26
  'type' => array(
27
  'default' => $this->type,
28
  'sanitize' => 'sanitize_text_field',
68
  'sanitize' => 'happyforms_sanitize_checkbox'
69
  )
70
  );
71
+
72
+ return happyforms_get_part_customize_fields( $fields, $this->type );
73
  }
74
 
75
  /**
94
  * @return string
95
  */
96
  public function customize_templates() {
97
+ $template_path = happyforms_get_include_folder() . '/core/templates/parts/customize-select.php';
98
+ $template_path = happyforms_get_part_customize_template_path( $template_path, $this->type );
99
+
100
+ require_once( $template_path );
101
  }
102
 
103
  /**
inc/core/classes/parts/class-part-single-line-text.php CHANGED
@@ -20,7 +20,7 @@ class HappyForms_Part_SingleLineText extends HappyForms_Form_Part {
20
  * @return array
21
  */
22
  public function get_customize_fields() {
23
- return array(
24
  'type' => array(
25
  'default' => $this->type,
26
  'sanitize' => 'sanitize_text_field',
@@ -62,6 +62,8 @@ class HappyForms_Part_SingleLineText extends HappyForms_Form_Part {
62
  'sanitize' => 'happyforms_sanitize_checkbox'
63
  )
64
  );
 
 
65
  }
66
 
67
  /**
@@ -72,7 +74,10 @@ class HappyForms_Part_SingleLineText extends HappyForms_Form_Part {
72
  * @return string
73
  */
74
  public function customize_templates() {
75
- require_once( happyforms_get_include_folder() . '/core/templates/parts/customize-single-line-text.php' );
 
 
 
76
  }
77
 
78
  /**
20
  * @return array
21
  */
22
  public function get_customize_fields() {
23
+ $fields = array(
24
  'type' => array(
25
  'default' => $this->type,
26
  'sanitize' => 'sanitize_text_field',
62
  'sanitize' => 'happyforms_sanitize_checkbox'
63
  )
64
  );
65
+
66
+ return happyforms_get_part_customize_fields( $fields, $this->type );
67
  }
68
 
69
  /**
74
  * @return string
75
  */
76
  public function customize_templates() {
77
+ $template_path = happyforms_get_include_folder() . '/core/templates/parts/customize-single-line-text.php';
78
+ $template_path = happyforms_get_part_customize_template_path( $template_path, $this->type );
79
+
80
+ require_once( $template_path );
81
  }
82
 
83
  /**
inc/core/classes/parts/class-part-table.php CHANGED
@@ -23,7 +23,7 @@ class HappyForms_Part_Table extends HappyForms_Form_Part {
23
  * @return array
24
  */
25
  public function get_customize_fields() {
26
- return array(
27
  'type' => array(
28
  'default' => $this->type,
29
  'sanitize' => 'sanitize_text_field',
@@ -69,18 +69,22 @@ class HappyForms_Part_Table extends HappyForms_Form_Part {
69
  'sanitize' => 'happyforms_sanitize_array'
70
  ),
71
  );
 
 
72
  }
73
 
74
  private function get_column_defaults() {
75
  return array(
76
  'is_default' => 0,
77
  'label' => '',
 
78
  );
79
  }
80
 
81
  private function get_row_defaults() {
82
  return array(
83
  'label' => '',
 
84
  );
85
  }
86
 
@@ -92,7 +96,10 @@ class HappyForms_Part_Table extends HappyForms_Form_Part {
92
  * @return string
93
  */
94
  public function customize_templates() {
95
- require_once( happyforms_get_include_folder() . '/core/templates/parts/customize-table.php' );
 
 
 
96
  }
97
 
98
  /**
23
  * @return array
24
  */
25
  public function get_customize_fields() {
26
+ $fields = array(
27
  'type' => array(
28
  'default' => $this->type,
29
  'sanitize' => 'sanitize_text_field',
69
  'sanitize' => 'happyforms_sanitize_array'
70
  ),
71
  );
72
+
73
+ return happyforms_get_part_customize_fields( $fields, $this->type );
74
  }
75
 
76
  private function get_column_defaults() {
77
  return array(
78
  'is_default' => 0,
79
  'label' => '',
80
+ 'type' => 'column'
81
  );
82
  }
83
 
84
  private function get_row_defaults() {
85
  return array(
86
  'label' => '',
87
+ 'type' => 'row'
88
  );
89
  }
90
 
96
  * @return string
97
  */
98
  public function customize_templates() {
99
+ $template_path = happyforms_get_include_folder() . '/core/templates/parts/customize-table.php';
100
+ $template_path = happyforms_get_part_customize_template_path( $template_path, $this->type );
101
+
102
+ require_once( $template_path );
103
  }
104
 
105
  /**
inc/core/classes/parts/class-part-title.php CHANGED
@@ -21,7 +21,7 @@ class HappyForms_Part_Title extends HappyForms_Form_Part {
21
  * @return array
22
  */
23
  public function get_customize_fields() {
24
- return array(
25
  'type' => array(
26
  'default' => $this->type,
27
  'sanitize' => 'sanitize_text_field',
@@ -59,6 +59,8 @@ class HappyForms_Part_Title extends HappyForms_Form_Part {
59
  'sanitize' => 'happyforms_sanitize_checkbox',
60
  )
61
  );
 
 
62
  }
63
 
64
  /**
@@ -69,7 +71,10 @@ class HappyForms_Part_Title extends HappyForms_Form_Part {
69
  * @return string
70
  */
71
  public function customize_templates() {
72
- require_once( happyforms_get_include_folder() . '/core/templates/parts/customize-title.php' );
 
 
 
73
  }
74
 
75
  /**
21
  * @return array
22
  */
23
  public function get_customize_fields() {
24
+ $fields = array(
25
  'type' => array(
26
  'default' => $this->type,
27
  'sanitize' => 'sanitize_text_field',
59
  'sanitize' => 'happyforms_sanitize_checkbox',
60
  )
61
  );
62
+
63
+ return happyforms_get_part_customize_fields( $fields, $this->type );
64
  }
65
 
66
  /**
71
  * @return string
72
  */
73
  public function customize_templates() {
74
+ $template_path = happyforms_get_include_folder() . '/core/templates/parts/customize-title.php';
75
+ $template_path = happyforms_get_part_customize_template_path( $template_path, $this->type );
76
+
77
+ require_once( $template_path );
78
  }
79
 
80
  /**
inc/core/classes/parts/class-part-website-url.php CHANGED
@@ -19,7 +19,7 @@ class HappyForms_Part_WebsiteUrl extends HappyForms_Form_Part {
19
  * @return array
20
  */
21
  public function get_customize_fields() {
22
- return array(
23
  'type' => array(
24
  'default' => $this->type,
25
  'sanitize' => 'sanitize_text_field',
@@ -57,6 +57,8 @@ class HappyForms_Part_WebsiteUrl extends HappyForms_Form_Part {
57
  'sanitize' => 'happyforms_sanitize_checkbox',
58
  ),
59
  );
 
 
60
  }
61
 
62
  /**
@@ -67,7 +69,10 @@ class HappyForms_Part_WebsiteUrl extends HappyForms_Form_Part {
67
  * @return string
68
  */
69
  public function customize_templates() {
70
- require_once( happyforms_get_include_folder() . '/core/templates/parts/customize-website-url.php' );
 
 
 
71
  }
72
 
73
  /**
19
  * @return array
20
  */
21
  public function get_customize_fields() {
22
+ $fields = array(
23
  'type' => array(
24
  'default' => $this->type,
25
  'sanitize' => 'sanitize_text_field',
57
  'sanitize' => 'happyforms_sanitize_checkbox',
58
  ),
59
  );
60
+
61
+ return happyforms_get_part_customize_fields( $fields, $this->type );
62
  }
63
 
64
  /**
69
  * @return string
70
  */
71
  public function customize_templates() {
72
+ $template_path = happyforms_get_include_folder() . '/core/templates/parts/customize-website-url.php';
73
+ $template_path = happyforms_get_part_customize_template_path( $template_path, $this->type );
74
+
75
+ require_once( $template_path );
76
  }
77
 
78
  /**
inc/core/helpers/helper-activation.php CHANGED
@@ -13,10 +13,17 @@ if ( ! function_exists( 'happyforms_first_run' ) ):
13
  *
14
  * @return void
15
  */
16
- function happyforms_first_run() {
 
 
 
 
 
 
 
 
17
  require_once( happyforms_get_include_folder() . '/core/classes/class-tracking.php' );
18
  require_once( happyforms_get_include_folder() . '/core/helpers/helper-misc.php' );
19
- require_once( happyforms_get_include_folder() . '/core/classes/class-form-controller.php' );
20
 
21
  $tracking = happyforms_get_tracking();
22
  $status = $tracking->get_status();
@@ -25,6 +32,7 @@ function happyforms_first_run() {
25
  return;
26
  }
27
 
 
28
  require_once( happyforms_get_include_folder() . '/core/classes/class-form-part-library.php' );
29
  require_once( happyforms_get_include_folder() . '/core/classes/class-form-styles.php' );
30
  require_once( happyforms_get_include_folder() . '/core/classes/class-session.php' );
@@ -35,6 +43,7 @@ function happyforms_first_run() {
35
  $part_library = happyforms_get_part_library();
36
  $form_controller = happyforms_get_form_controller();
37
  $message_controller = happyforms_get_message_controller();
 
38
 
39
  // Create a new form
40
  $form = $form_controller->create();
@@ -166,6 +175,25 @@ function happyforms_first_run() {
166
 
167
  endif;
168
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
169
  if ( ! function_exists( 'happyforms_deactivate' ) ):
170
  /**
171
  * Action: Deactivation routine.
@@ -196,5 +224,8 @@ function happyforms_deactivate() {
196
 
197
  endif;
198
 
199
- register_activation_hook( happyforms_plugin_file(), 'happyforms_first_run' );
200
  register_deactivation_hook( happyforms_plugin_file(), 'happyforms_deactivate' );
 
 
 
13
  *
14
  * @return void
15
  */
16
+ function happyforms_activate() {
17
+ do_action( 'happyforms_activate' );
18
+ }
19
+
20
+ endif;
21
+
22
+ if ( ! function_exists( 'happyforms_create_samples' ) ):
23
+
24
+ function happyforms_create_samples() {
25
  require_once( happyforms_get_include_folder() . '/core/classes/class-tracking.php' );
26
  require_once( happyforms_get_include_folder() . '/core/helpers/helper-misc.php' );
 
27
 
28
  $tracking = happyforms_get_tracking();
29
  $status = $tracking->get_status();
32
  return;
33
  }
34
 
35
+ require_once( happyforms_get_include_folder() . '/core/classes/class-form-controller.php' );
36
  require_once( happyforms_get_include_folder() . '/core/classes/class-form-part-library.php' );
37
  require_once( happyforms_get_include_folder() . '/core/classes/class-form-styles.php' );
38
  require_once( happyforms_get_include_folder() . '/core/classes/class-session.php' );
43
  $part_library = happyforms_get_part_library();
44
  $form_controller = happyforms_get_form_controller();
45
  $message_controller = happyforms_get_message_controller();
46
+ $tracking = happyforms_get_tracking();
47
 
48
  // Create a new form
49
  $form = $form_controller->create();
175
 
176
  endif;
177
 
178
+ if ( ! function_exists( 'happyforms_new_form_redirect_url_check' ) ):
179
+
180
+ function happyforms_new_form_redirect_url_check() {
181
+ require_once( happyforms_get_include_folder() . '/core/classes/class-form-controller.php' );
182
+ require_once( happyforms_get_include_folder() . '/core/classes/class-form-part-library.php' );
183
+ require_once( happyforms_get_include_folder() . '/core/helpers/helper-misc.php' );
184
+
185
+ $form_controller = happyforms_get_form_controller();
186
+ $forms = $form_controller->get();
187
+
188
+ foreach ( $forms as $form ) {
189
+ if ( ! empty( $form['redirect_url'] ) && ! isset( $form['redirect_on_complete'] ) ) {
190
+ happyforms_update_meta( $form['ID'], 'redirect_on_complete', 1 );
191
+ }
192
+ }
193
+ }
194
+
195
+ endif;
196
+
197
  if ( ! function_exists( 'happyforms_deactivate' ) ):
198
  /**
199
  * Action: Deactivation routine.
224
 
225
  endif;
226
 
227
+ register_activation_hook( happyforms_plugin_file(), 'happyforms_activate' );
228
  register_deactivation_hook( happyforms_plugin_file(), 'happyforms_deactivate' );
229
+
230
+ add_action( 'happyforms_activate', 'happyforms_create_samples' );
231
+ add_action( 'happyforms_activate', 'happyforms_new_form_redirect_url_check' );
inc/core/helpers/helper-form-templates.php CHANGED
@@ -97,8 +97,22 @@ if ( ! function_exists( 'happyforms_message_notices' ) ):
97
  function happyforms_message_notices( $location = '' ) {
98
  $notices = happyforms_get_session()->get_messages( $location );
99
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  if ( ! empty( $notices ) ) : ?>
101
- <div class="happyforms-message-notices">
102
  <?php foreach( $notices as $notice ): ?>
103
  <div class="happyforms-message-notice <?php echo esc_attr( $notice['type'] ); ?>">
104
  <h2><?php echo $notice['message']; ?></h2>
@@ -314,7 +328,7 @@ function happyforms_the_part_preview_value( $part, $form ) {
314
  $part_value = happyforms_get_part_value( $part, $form );
315
  $validated_value = $part_class->validate_value( $part_value, $part, $form );
316
  $value = happyforms_stringify_part_value( $validated_value, $part, $form );
317
- $value = happyforms_get_message_part_value( $value );
318
 
319
  echo $value;
320
  }
@@ -683,7 +697,7 @@ if ( ! function_exists( 'happyforms_the_form_styles' ) ):
683
  * @return array
684
  */
685
  function happyforms_the_form_styles( $form ) {
686
- HappyForms()->print_frontend_styles();
687
  $styles = happyforms_get_form_styles( $form );
688
  ?>
689
  <!-- HappyForms CSS variables -->
@@ -1320,4 +1334,15 @@ function happyforms_the_form_attributes( $form ) {
1320
  echo $attributes;
1321
  }
1322
 
1323
- endif;
 
 
 
 
 
 
 
 
 
 
 
97
  function happyforms_message_notices( $location = '' ) {
98
  $notices = happyforms_get_session()->get_messages( $location );
99
 
100
+ happyforms_the_message_notices( $notices );
101
+ }
102
+
103
+ endif;
104
+
105
+ if ( ! function_exists( 'happyforms_the_message_notices' ) ):
106
+ /**
107
+ * Output notices.
108
+ *
109
+ * @param string $notices A list of notices to display.
110
+ *
111
+ * @return void
112
+ */
113
+ function happyforms_the_message_notices( $notices = array(), $class = '' ) {
114
  if ( ! empty( $notices ) ) : ?>
115
+ <div class="happyforms-message-notices <?php echo $class; ?>">
116
  <?php foreach( $notices as $notice ): ?>
117
  <div class="happyforms-message-notice <?php echo esc_attr( $notice['type'] ); ?>">
118
  <h2><?php echo $notice['message']; ?></h2>
328
  $part_value = happyforms_get_part_value( $part, $form );
329
  $validated_value = $part_class->validate_value( $part_value, $part, $form );
330
  $value = happyforms_stringify_part_value( $validated_value, $part, $form );
331
+ $value = happyforms_get_message_part_value( $value, $part );
332
 
333
  echo $value;
334
  }
697
  * @return array
698
  */
699
  function happyforms_the_form_styles( $form ) {
700
+ HappyForms()->print_frontend_styles( $form );
701
  $styles = happyforms_get_form_styles( $form );
702
  ?>
703
  <!-- HappyForms CSS variables -->
1334
  echo $attributes;
1335
  }
1336
 
1337
+ endif;
1338
+
1339
+ if ( ! function_exists( 'happyforms_get_shortcode' ) ):
1340
+
1341
+ function happyforms_get_shortcode( $form_id = 'ID' ) {
1342
+ $shortcode = "[happyforms id=\"{$form_id}\" /]";
1343
+ $shortcode = apply_filters( 'happyforms_get_shortcode', $shortcode, $form_id );
1344
+
1345
+ return $shortcode;
1346
+ }
1347
+
1348
+ endif;
inc/core/helpers/helper-misc.php CHANGED
@@ -91,12 +91,6 @@ if ( ! function_exists( 'happyforms_the_message_part_value' ) ):
91
  function happyforms_the_message_part_value( $value, $part = array(), $destination = '' ) {
92
  $value = happyforms_get_message_part_value( $value, $part, $destination );
93
 
94
- switch ( $part['type'] ) {
95
- case 'email':
96
- $value = "<a href=\"mailto:{$value}\">{$value}</a>";
97
- break;
98
- }
99
-
100
  echo $value;
101
  }
102
 
@@ -691,3 +685,43 @@ function happyforms_get_message_title( $message_id ) {
691
  }
692
 
693
  endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
  function happyforms_the_message_part_value( $value, $part = array(), $destination = '' ) {
92
  $value = happyforms_get_message_part_value( $value, $part, $destination );
93
 
 
 
 
 
 
 
94
  echo $value;
95
  }
96
 
685
  }
686
 
687
  endif;
688
+
689
+ if ( ! function_exists( 'happyforms_explode_value' ) ):
690
+
691
+ function happyforms_explode_value( $value, $separator = '' ) {
692
+ $value = explode( ',', $value );
693
+ $value = array_map( 'trim', $value );
694
+ $value = array_filter( $value );
695
+
696
+ return $value;
697
+ }
698
+
699
+ endif;
700
+
701
+ if ( ! function_exists( 'happyforms_customize_get_current_form' ) ):
702
+
703
+ function happyforms_customize_get_current_form() {
704
+ $form = HappyForms()->customize->get_current_form();
705
+
706
+ if ( is_array( $form ) ) {
707
+ return $form;
708
+ }
709
+ }
710
+
711
+ endif;
712
+
713
+ if ( ! function_exists( 'happyforms_get_part_customize_fields' ) ):
714
+
715
+ function happyforms_get_part_customize_fields( $fields, $type ) {
716
+ return apply_filters( "happyforms_part_customize_fields_{$type}", $fields );
717
+ }
718
+
719
+ endif;
720
+
721
+ if ( ! function_exists( 'happyforms_get_part_customize_template_path' ) ):
722
+
723
+ function happyforms_get_part_customize_template_path( $template, $type ) {
724
+ return apply_filters( "happyforms_part_customize_template_path_{$type}", $template );
725
+ }
726
+
727
+ endif;
inc/core/helpers/helper-validation.php CHANGED
@@ -126,4 +126,44 @@ function happyforms_sanitize_choice( $value, $choices = array() ) {
126
  return $value;
127
  }
128
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
129
  endif;
126
  return $value;
127
  }
128
 
129
+ endif;
130
+
131
+ if ( ! function_exists( 'happyforms_sanitize_float' ) ):
132
+ /**
133
+ * Sanitize a float value.
134
+ *
135
+ * @param string $value Original value.
136
+ *
137
+ * @return float
138
+ */
139
+ function happyforms_sanitize_float( $value ) {
140
+ $value = preg_replace( '/[^\d\.]/', '', $value );
141
+ $value = floatval( $value );
142
+
143
+ return $value;
144
+ }
145
+
146
+ endif;
147
+
148
+ if ( ! function_exists( 'happyforms_sanitize_list' ) ):
149
+ /**
150
+ * Sanitize a comma separated list value.
151
+ *
152
+ * @since 1.0
153
+ *
154
+ * @param string $value Original value.
155
+ *
156
+ * @return string
157
+ */
158
+ function happyforms_sanitize_list( $value, $choices = array() ) {
159
+ if ( ! is_array( $value ) ) {
160
+ $value = happyforms_explode_value( $value );
161
+ }
162
+
163
+ $value = array_intersect( $value, $choices );
164
+ $value = implode( ', ', $value );
165
+
166
+ return $value;
167
+ }
168
+
169
  endif;
inc/core/templates/admin-message-edit.php CHANGED
@@ -5,6 +5,9 @@ if ( ! $form ) {
5
  return;
6
  }
7
  ?>
 
 
 
8
  <table class="form-table happyforms-message-data-table striped">
9
  <tbody>
10
  <?php foreach ( $form['parts'] as $p => $part ):
@@ -16,7 +19,7 @@ if ( ! $form ) {
16
  } ?>
17
  <tr>
18
  <th scope="row"><?php echo esc_html( $part['label'] ); ?></th>
19
- <td><?php happyforms_the_message_part_value( $part_value, $part ); ?></td>
20
  </tr>
21
  <?php endforeach; ?>
22
  <?php if ( intval( $form['unique_id'] ) ): ?>
@@ -27,6 +30,9 @@ if ( ! $form ) {
27
  <?php endif; ?>
28
  </tbody>
29
  </table>
 
 
 
30
  <p class="happyforms-message-nav">
31
  <?php happyforms_previous_message_edit_link( $post->ID, __( 'Previous response' ) ); ?>
32
  <span class="divider">|</span>
5
  return;
6
  }
7
  ?>
8
+
9
+ <?php do_action( 'happyforms_message_edit_screen_before' ); ?>
10
+
11
  <table class="form-table happyforms-message-data-table striped">
12
  <tbody>
13
  <?php foreach ( $form['parts'] as $p => $part ):
19
  } ?>
20
  <tr>
21
  <th scope="row"><?php echo esc_html( $part['label'] ); ?></th>
22
+ <td><?php happyforms_the_message_part_value( $part_value, $part, 'admin-edit' ); ?></td>
23
  </tr>
24
  <?php endforeach; ?>
25
  <?php if ( intval( $form['unique_id'] ) ): ?>
30
  <?php endif; ?>
31
  </tbody>
32
  </table>
33
+
34
+ <?php do_action( 'happyforms_message_edit_screen_after' ); ?>
35
+
36
  <p class="happyforms-message-nav">
37
  <?php happyforms_previous_message_edit_link( $post->ID, __( 'Previous response' ) ); ?>
38
  <span class="divider">|</span>
inc/core/templates/admin-tracking.php CHANGED
@@ -10,11 +10,11 @@ $status = $tracking->get_status();
10
  $tracking->print_template( 'success' );
11
  } else { ?>
12
  <h2><?php _e( 'Add your email to complete setup', 'happyforms' ); ?>&hellip;</h2>
13
- <p><?php _e( 'Let\'s set up HappyForms! Enter your email below to agree to notification and to share some data about your usage with', 'happyforms' ); ?> <a href="https://thethemefoundry.com" target="_blank">thethemefoundry.com</a></p>
14
  <form action="<?php echo esc_attr( $tracking->monitor_action ); ?>" method="post" id="happyforms-tracking">
15
  <input name="<?php echo esc_attr( $tracking->monitor_email_field ); ?>" type="email" placeholder="<?php _e( 'Email address', 'happyforms' ); ?>" required >
16
  <input name="<?php echo esc_attr( $tracking->monitor_status_field ); ?>" type="hidden" value="active" />
17
- <button type="submit" class="button button-primary button-hero"><?php _e( 'Allow and set up HappyForms', 'happyforms' ); ?></button>
18
  </form>
19
  <?php } ?>
20
  </div>
10
  $tracking->print_template( 'success' );
11
  } else { ?>
12
  <h2><?php _e( 'Add your email to complete setup', 'happyforms' ); ?>&hellip;</h2>
13
+ <p><?php _e( 'Let\'s set up HappyForms! Enter your email below to agree to notification and to share some data about your usage with', 'happyforms' ); ?> <a href="https://thethemefoundry.com" target="_blank">thethemefoundry.com</a>.</p>
14
  <form action="<?php echo esc_attr( $tracking->monitor_action ); ?>" method="post" id="happyforms-tracking">
15
  <input name="<?php echo esc_attr( $tracking->monitor_email_field ); ?>" type="email" placeholder="<?php _e( 'Email address', 'happyforms' ); ?>" required >
16
  <input name="<?php echo esc_attr( $tracking->monitor_status_field ); ?>" type="hidden" value="active" />
17
+ <button type="submit" class="button button-primary button-hero button-block"><?php _e( 'Allow and set up HappyForms', 'happyforms' ); ?></button>
18
  </form>
19
  <?php } ?>
20
  </div>
inc/core/templates/customize-controls/setup/checkbox.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <div class="customize-control customize-control-checkbox <% if ( <?php echo $control['field']; ?> ) { %>checked<% } %>" id="customize-control-<?php echo $control['field']; ?>">
2
+ <div class="customize-inside-control-row" data-pointer-target>
3
+ <input type="checkbox" id="<?php echo $control['field']; ?>" value="1" <% if ( <?php echo $control['field']; ?> ) { %>checked="checked"<% } %> data-attribute="<?php echo $control['field']; ?>" />
4
+ <label for="<?php echo $control['field']; ?>"><?php echo $control['label']; ?> <?php if ( isset( $control['tooltip'] ) ) : ?><i class="fa fa-question-circle" aria-hidden="true" data-pointer><span><?php echo $control['tooltip']; ?></span></i><?php endif; ?></label>
5
+ </div>
6
+ </div>
inc/core/templates/customize-controls/setup/editor.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <div class="customize-control" id="customize-control-<?php echo $control['field']; ?>">
2
+ <label for="<?php echo $control['field']; ?>" class="customize-control-title"><?php echo $control['label']; ?> <?php if ( isset( $control['tooltip'] ) ) : ?><i class="fa fa-question-circle" aria-hidden="true" data-pointer><span><?php echo $control['tooltip']; ?></span></i><?php endif; ?></label>
3
+ <div data-pointer-target>
4
+ <textarea name="" id="<?php echo $control['field']; ?>" cols="34" rows="3" data-attribute="<?php echo $control['field']; ?>"><%= <?php echo $control['field']; ?> %></textarea>
5
+ </div>
6
+ </div>
inc/core/templates/customize-controls/setup/number.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <div class="customize-control" id="customize-control-<?php echo $control['field']; ?>">
2
+ <label for="<?php echo $control['field']; ?>" class="customize-control-title"><?php echo $control['label']; ?> <?php if ( isset( $control['tooltip'] ) ) : ?><i class="fa fa-question-circle" aria-hidden="true" data-pointer><span><?php echo $control['tooltip']; ?></span></i><?php endif; ?></label>
3
+ <input type="number" id="<?php echo $control['field']; ?>" value="<%= <?php echo $control['field']; ?> %>" data-attribute="<?php echo $control['field']; ?>" min="<?php echo ( isset( $control['min'] ) ) ? $control['min'] : 0; ?>" <?php echo ( isset( $control['max'] ) ) ? ' max="'. $control['max'] .'"' : ''; ?> data-pointer-target />
4
+ <?php if ( isset( $control['description'] ) ): ?>
5
+ <p class="description"><?php echo $control['description']; ?></p>
6
+ <?php endif; ?>
7
+ </div>
inc/core/templates/customize-controls/setup/text.php ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ <div class="customize-control" id="customize-control-<?php echo $control['field']; ?>">
2
+ <label for="<?php echo $control['field']; ?>" class="customize-control-title"><?php echo $control['label']; ?> <?php if ( isset( $control['tooltip'] ) ) : ?><i class="fa fa-question-circle" aria-hidden="true" data-pointer><span><?php echo $control['tooltip']; ?></span></i><?php endif; ?></label>
3
+ <input type="text" id="<?php echo $control['field']; ?>" value="<%= <?php echo $control['field']; ?> %>" data-attribute="<?php echo $control['field']; ?>" data-pointer-target />
4
+ </div>
inc/core/templates/customize-controls/style/buttonset.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <li class="customize-control <?php echo esc_attr( 'happyforms-' . $control['type'] . '-control' ); ?>" data-target="<?php echo esc_attr( $field['target'] ); ?>" data-variable="<?php echo ( isset( $field['variable'] ) ) ? esc_attr( $field['variable'] ) : ''; ?>" id="customize-control-<?php echo $control['field']; ?>">
2
+ <div class="customize-control-content">
3
+ <label class="customize-control-title" for="<?php echo $control['field']; ?>"><?php echo $control['label']; ?></label>
4
+ <div class="happyforms-buttonset-container">
5
+ <?php foreach ( $field[ 'options' ] as $option_key => $option ) : ?>
6
+ <input type="radio" class="happyforms-buttonset" name="<?php echo $control['field']; ?>" id="<?php echo $control['field']; ?>_<?php echo esc_attr( $option_key ); ?>" value="<?php echo esc_attr( $option_key ); ?>" data-attribute="<?php echo $control['field']; ?>" <?php echo ( isset( $field['target_control_class'] ) ) ? ' data-target-control-class="'. $field['target_control_class'] .'" ' : ''; ?><% if (<?php echo $control['field']; ?> === '<?php echo esc_attr( $option_key ); ?>') { %>checked="checked"<% } %>>
7
+ <label for="<?php echo $control['field']; ?>_<?php echo esc_attr( $option_key ); ?>">
8
+ <span class="ui-button-text"></span><?php echo esc_attr( $option ); ?></span>
9
+ </label>
10
+ <?php endforeach; ?>
11
+ </div>
12
+ </div>
13
+ </li>
inc/core/templates/customize-controls/style/checkbox.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <li class="customize-control <?php echo esc_attr( 'happyforms-' . $control['type'] . '-control' ); ?> data-target="<?php echo esc_attr( $field['target'] ); ?>" id="customize-control-<?php echo $control['field']; ?>">
2
+ <div class="customize-control-content">
3
+ <label>
4
+ <input type="checkbox" name="<?php echo $control['field']; ?>" id="<?php echo $control['field']; ?>" value="<?php echo $field['value']; ?>" data-attribute="<?php echo $control['field']; ?>" <% if (<?php echo $control['field']; ?>) { %>checked="checked"<% } %>> <?php echo $control['label']; ?>
5
+ </label>
6
+ </div>
7
+ </li>
inc/core/templates/customize-controls/style/color.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <li class="customize-control <?php echo esc_attr( 'happyforms-' . $control['type'] . '-control' ); ?>" data-target="<?php echo esc_attr( $field['target'] ); ?>" data-variable="<?php echo $field['variable']; ?>" id="customize-control-<?php echo $control['field']; ?>">
2
+ <label class="customize-control-title" for="<?php echo $control['field']; ?>"><?php echo $control['label']; ?></label>
3
+ <div class="customize-control-content">
4
+ <input type="text" name="<?php echo $control['field']; ?>" id="<?php echo $control['field']; ?>" class="happyforms-color-input" data-attribute="<?php echo $control['field']; ?>" value="<%= <?php echo $control['field']; ?> %>" data-default="<?php echo $field['default']; ?>">
5
+ </div>
6
+ </li>
inc/core/templates/customize-controls/style/divider.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if ( $index > 0 ): ?></ul></li><?php endif; ?>
2
+ <li class="customize-control control-section <?php echo esc_attr( 'happyforms-' . $control['type'] . '-control' ); ?>" id="customize-control-<?php echo $control['id']; ?>">
3
+ <h3 class="accordion-section-title"><?php echo $control['label']; ?></h3>
4
+ </li>
5
+
6
+ <li class="happyforms-style-controls-group">
7
+ <ul>
8
+ <li class="panel-meta customize-info accordion-section">
9
+ <button class="customize-panel-back" tabindex="0">
10
+ <span class="screen-reader-text"><?php _e( 'Back', 'happyforms' ); ?></span>
11
+ </button>
12
+ <div class="accordion-section-title">
13
+ <span class="preview-notice"><?php _e( 'You are customizing', 'happyforms' ); ?> <strong class="panel-title"><?php echo $control['label']; ?></strong></span>
14
+ </div>
15
+ </li>
inc/core/templates/customize-controls/style/heading.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <li class="customize-control happyforms-customize-heading">
2
+ <h2><?php echo $control['label']; ?></h2>
3
+ </li>
inc/core/templates/customize-controls/style/range.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <li class="customize-control <?php echo esc_attr( 'happyforms-' . $control['type'] . '-control' ); ?>" data-target="<?php echo esc_attr( $field['target'] ); ?>" data-variable="<?php echo $field['variable']; ?>" data-unit="<?php echo $field['unit']; ?>" id="customize-control-<?php echo $control['field']; ?>">
2
+ <label class="customize-control-title" for="<?php echo $control['field']; ?>"><?php echo $control['label']; ?></label>
3
+ <input type="number" name="<?php echo $control['field']; ?>" id="<?php echo $control['field']; ?>" min="<?php echo $field[ 'min' ]; ?>" max="<?php echo $field[ 'max' ]; ?>" step="<?php echo $field[ 'step' ]; ?>" value="<%= <?php echo $control['field']; ?> %>" data-attribute="<?php echo $control['field']; ?>">
4
+ <?php if ( isset( $field['include_unit_switch'] ) ) : ?>
5
+ <select name="<?php echo $control['field']; ?>_unit" class="happyforms-unit-switch">
6
+ <?php if ( is_array( $field['units'] ) ) :
7
+ foreach ( $field['units'] as $unit ) : ?>
8
+ <option value="<?php echo $unit; ?>"><?php echo $unit; ?></option>
9
+ <?php endforeach; endif; ?>
10
+ </select>
11
+ <?php endif; ?>
12
+ <div class="customize-control-content">
13
+ <div class="happyforms-range-slider" data-slider-id="<?php echo $control['field']; ?>"></div>
14
+ </div>
15
+ </li>
inc/core/templates/customize-controls/style/select.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <li class="customize-control <?php echo esc_attr( 'happyforms-' . $control['type'] . '-control' ); ?>" data-target="<?php echo esc_attr( $field['target'] ); ?>" id="customize-control-<?php echo $control['field']; ?>">
2
+ <label class="customize-control-title" for="<?php echo $control['field']; ?>"><?php echo $control['label']; ?></label>
3
+ <div class="customize-control-content">
4
+ <select name="<?php echo $control['field']; ?>" id="<?php echo $control['field']; ?>" data-attribute="<?php echo $control['field']; ?>" class="widefat">
5
+ <?php
6
+ foreach ( $field['options'] as $option_key => $option ) : ?>
7
+ <option value="<?php echo esc_attr( $option_key ); ?>" <% if (<?php echo $control['field']; ?> === '<?php echo esc_attr( $option_key ); ?>') {%><%= 'selected' %><% } %>><?php echo esc_attr( $option ); ?></option>
8
+ <?php endforeach; ?>
9
+ </select>
10
+ </div>
11
+ </li>
inc/core/templates/customize-controls/style/text.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <li class="customize-control <?php echo esc_attr( 'happyforms-' . $control['type'] . '-control' ); ?>" data-target="<?php echo esc_attr( $field['target'] ); ?>" id="customize-control-<?php echo $control['field']; ?>">
2
+ <label class="customize-control-title" for="<?php echo $control['field']; ?>"><?php echo $control['label']; ?> <?php if ( isset( $control['tooltip'] ) ) : ?> <i class="fa fa-question-circle" aria-hidden="true" data-pointer><span><?php echo $control['tooltip']; ?></span></i><?php endif; ?></label>
3
+ <div class="customize-control-content" data-pointer-target>
4
+ <input type="text" name="<?php echo $control['field']; ?>" id="<?php echo $control['field']; ?>" data-attribute="<?php echo $control['field']; ?>" value="<%= <?php echo $control['field']; ?> %>">
5
+ </div>
6
+ </li>
inc/core/templates/customize-form-build.php CHANGED
@@ -9,7 +9,7 @@
9
  <label class="customize-control-title">
10
  <?php _e( 'Form Builder', 'happyforms' ); ?>
11
  <span class="happyforms-parts-expand-collapse-wrap">
12
- <a href="#" class="expand-collapse-all <%= ( parts.length > 0 ) ? 'collapse' : 'expand' %>" data-collapse-text="<?php _e( 'Collapse all', 'happyforms' ); ?>" data-expand-text="<?php _e( 'Expand all', 'happyforms' ); ?>"><%= ( parts.length > 0 ) ? '<?php _e( 'Expand all', 'happyforms' ); ?>' : '<?php _e( 'Collapse all', 'happyforms' ); ?>' %></a>
13
  </span>
14
  </label>
15
  <div class="happyforms-parts-placeholder">
9
  <label class="customize-control-title">
10
  <?php _e( 'Form Builder', 'happyforms' ); ?>
11
  <span class="happyforms-parts-expand-collapse-wrap">
12
+ <a href="#" class="expand-collapse-all <%= ( parts.length > 0 ) ? 'expand' : 'collapse' %>" data-collapse-text="<?php _e( 'Collapse all', 'happyforms' ); ?>" data-expand-text="<?php _e( 'Expand all', 'happyforms' ); ?>"><%= ( parts.length > 0 ) ? '<?php _e( 'Expand all', 'happyforms' ); ?>' : '<?php _e( 'Collapse all', 'happyforms' ); ?>' %></a>
13
  </span>
14
  </label>
15
  <div class="happyforms-parts-placeholder">
inc/core/templates/customize-form-parts-drawer.php CHANGED
@@ -4,7 +4,7 @@
4
  <div class="happyforms-parts-drawer-header-search">
5
  <input type="text" placeholder="<?php _e( 'Search parts', 'happyforms' ); ?>&hellip;" id="part-search">
6
  <div class="happyforms-parts-drawer-header-search-icon"></div>
7
- <div class="happyforms-parts-drawer-header-search-clear"></div>
8
  </div>
9
  </div>
10
  <ul class="happyforms-parts-list">
@@ -19,5 +19,8 @@
19
  </li>
20
  <% } %>
21
  </ul>
 
 
 
22
  </div>
23
  </script>
4
  <div class="happyforms-parts-drawer-header-search">
5
  <input type="text" placeholder="<?php _e( 'Search parts', 'happyforms' ); ?>&hellip;" id="part-search">
6
  <div class="happyforms-parts-drawer-header-search-icon"></div>
7
+ <button type="button" class="happyforms-clear-search"><span class="screen-reader-text"><?php _e( 'Clear Results', 'happyforms' ); ?></span></button>
8
  </div>
9
  </div>
10
  <ul class="happyforms-parts-list">
19
  </li>
20
  <% } %>
21
  </ul>
22
+ <div class="happyforms-parts-drawer-not-found">
23
+ <p><?php _e( 'No parts found.', 'happyforms' ); ?></p>
24
+ </div>
25
  </div>
26
  </script>
inc/core/templates/customize-form-setup.php CHANGED
@@ -1,167 +1,17 @@
 
 
 
 
 
1
  <script type="text/template" id="happyforms-form-setup-template">
2
  <div class="happyforms-stack-view">
3
- <div class="customize-control">
4
- <label for="happyforms-confirmation-message" class="customize-control-title"><?php _e( 'Confirmation message', 'happyforms' ); ?> <i class="fa fa-question-circle" aria-hidden="true" data-pointer="confirmation_message"></i></label>
5
- <div data-pointer-target>
6
- <textarea name="" id="happyforms-confirmation-message" cols="34" rows="3" data-attribute="confirmation_message"><%= confirmation_message %></textarea>
7
- </div>
8
- </div>
9
- <div class="customize-control customize-control-checkbox">
10
- <div class="customize-inside-control-row">
11
- <input type="checkbox" id="happyforms-receive-email-alerts" value="1" <% if ( receive_email_alerts ) { %>checked="checked"<% } %> data-attribute="receive_email_alerts" />
12
- <label for="happyforms-receive-email-alerts"><?php _e( 'Receive submission alerts', 'happyforms' ); ?></label>
13
- </div>
14
- </div>
15
- <div id="happyforms-alert-email-settings"<% if ( receive_email_alerts ) { %> style="display: block"<% } %>>
16
- <div class="customize-control">
17
- <label for="form_email_recipient" class="customize-control-title"><?php _e( 'Email address', 'happyforms' ); ?> <i class="fa fa-question-circle" aria-hidden="true" data-pointer="email_recipient"></i></label>
18
- <input type="text" id="form_email_recipient" value="<%= email_recipient %>" data-attribute="email_recipient" data-pointer-target />
19
- </div>
20
- <div class="customize-control">
21
- <label for="form_alert_email_subject" class="customize-control-title"><?php _e( 'Email subject', 'happyforms' ); ?> <i class="fa fa-question-circle" aria-hidden="true" data-pointer="alert_email_subject"></i></label>
22
- <input type="text" id="form_alert_email_subject" value="<%= alert_email_subject %>" data-attribute="alert_email_subject" data-pointer-target />
23
- </div>
24
- <div class="customize-control customize-control-checkbox">
25
- <div class="customize-inside-control-row" data-pointer-target>
26
- <input type="checkbox" value="1" id="happyforms-email-mark-and-reply" <% if ( email_mark_and_reply ) { %>checked="checked"<% } %> data-attribute="email_mark_and_reply" />
27
- <label for="happyforms-email-mark-and-reply"><?php _e( 'Include mark and reply link', 'happyforms' ); ?> <i class="fa fa-question-circle" aria-hidden="true" data-pointer="email_mark_and_reply"></i></label>
28
- </div>
29
- </div>
30
- </div>
31
- <div class="customize-control customize-control-checkbox">
32
- <div class="customize-inside-control-row">
33
- <input type="checkbox" id="happyforms-send-confirmation-email" value="1" <% if ( send_confirmation_email ) { %>checked="checked"<% } %> data-attribute="send_confirmation_email" />
34
- <label for="happyforms-send-confirmation-email"><?php _e( 'Send confirmation email', 'happyforms' ); ?></label>
35
- </div>
36
- </div>
37
- <div id="happyforms-confirmation-email-settings"<% if ( send_confirmation_email ) { %> style="display: block"<% } %>>
38
- <div class="customize-control" >
39
- <label for="confirmation_email_from_name" class="customize-control-title"><?php _e( 'Email display name', 'happyforms' ); ?> <i class="fa fa-question-circle" aria-hidden="true" data-pointer="confirmation_email_from_name"></i></label>
40
- <input type="text" id="confirmation_email_from_name" value="<%= confirmation_email_from_name %>" data-attribute="confirmation_email_from_name" data-pointer-target />
41
- </div>
42
- <div class="customize-control" >
43
- <label for="form_confirmation_email_subject" class="customize-control-title"><?php _e( 'Email subject', 'happyforms' ); ?> <i class="fa fa-question-circle" aria-hidden="true" data-pointer="confirmation_email_subject"></i></label>
44
- <input type="text" id="form_confirmation_email_subject" value="<%= confirmation_email_subject %>" data-attribute="confirmation_email_subject" data-pointer-target />
45
- </div>
46
- <div class="customize-control">
47
- <label for="happyforms-confirmation-email-content" class="customize-control-title"><?php _e( 'Email content', 'happyforms' ); ?> <i class="fa fa-question-circle" aria-hidden="true" data-pointer="confirmation_email_content"></i></label>
48
- <div data-pointer-target>
49
- <textarea name="" id="happyforms-confirmation-email-content" cols="34" rows="3" data-attribute="confirmation_email_content"><%= confirmation_email_content %></textarea>
50
- </div>
51
- </div>
52
- </div>
53
- <div class="customize-control">
54
- <label for="form_redirect_url" class="customize-control-title"><?php _e( 'On complete redirect link', 'happyforms' ); ?> <i class="fa fa-question-circle" aria-hidden="true" data-pointer="redirect_url"></i></label>
55
- <input type="text" id="form_redirect_url" value="<%= redirect_url %>" data-attribute="redirect_url" data-pointer-target />
56
- </div>
57
- <div class="customize-control">
58
- <label for="form_submit_button_label" class="customize-control-title"><?php _e( 'Submit button label', 'happyforms' ); ?></label>
59
- <input type="text" id="form_submit_button_label" value="<%= submit_button_label %>" data-attribute="submit_button_label" data-pointer-target />
60
- </div>
61
- <div class="customize-control customize-control-checkbox">
62
- <div class="customize-inside-control-row" data-pointer-target>
63
- <input type="checkbox" id="happyforms-spam-prevention" value="1" <% if ( spam_prevention ) { %>checked="checked"<% } %> data-attribute="spam_prevention" />
64
- <label for="happyforms-spam-prevention"><?php _e( 'Spam prevention', 'happyforms' ); ?> <i class="fa fa-question-circle" aria-hidden="true" data-pointer="spam_prevention"></i></label>
65
- </div>
66
- </div>
67
- <div class="customize-control customize-control-checkbox">
68
- <div class="customize-inside-control-row" data-pointer-target>
69
- <input type="checkbox" id="happyforms-use-captcha" value="1" <% if ( captcha ) { %>checked="checked"<% } %> data-attribute="captcha" />
70
- <label for="happyforms-use-captcha"><?php _e( 'Use', 'happyforms' ); ?> <a href="https://www.google.com/recaptcha" target="_blank" class="external"><?php _e( 'Google ReCaptcha', 'happyforms' ); ?></a> <i class="fa fa-question-circle" aria-hidden="true" data-pointer="captcha"></i></label>
71
- </div>
72
- <div id="happyforms-captcha-settings" <% if ( captcha ) { %>style="display: block;"<% } %>>
73
- <p>
74
- <label for="form_captcha_site_key" class="customize-control-title"><?php _e( 'ReCaptcha site key', 'happyforms' ); ?></label>
75
- <input type="text" id="form_captcha_site_key" value="<%= captcha_site_key %>" data-attribute="captcha_site_key" />
76
- </p>
77
- <p>
78
- <label for="form_captcha_secret_key" class="customize-control-title"><?php _e( 'ReCaptcha secret key', 'happyforms' ); ?></label>
79
- <input type="text" id="form_captcha_secret_key" value="<%= captcha_secret_key %>" data-attribute="captcha_secret_key" />
80
- </p>
81
- </div>
82
- </div>
83
- <div class="customize-control customize-control-checkbox">
84
- <div class="customize-inside-control-row" data-pointer-target>
85
- <input type="checkbox" value="1" id="happyforms-save-entries" <% if ( save_entries ) { %>checked="checked"<% } %> data-attribute="save_entries" />
86
- <label for="happyforms-save-entries"><?php _e( 'Save responses for this form', 'happyforms' ); ?> <i class="fa fa-question-circle" aria-hidden="true" data-pointer="save_entries"></i></label>
87
- </div>
88
- </div>
89
- <div class="customize-control customize-control-checkbox">
90
- <div class="customize-inside-control-row" data-pointer-target>
91
- <input type="checkbox" value="1" id="happyforms-unique-id" <% if ( unique_id ) { %>checked="checked"<% } %> data-attribute="unique_id" />
92
- <label for="happyforms-unique-id"><?php _e( 'Add identifying number to responses', 'happyforms' ); ?> <i class="fa fa-question-circle" aria-hidden="true" data-pointer="unique_id"></i></label>
93
- </div>
94
- </div>
95
- <div id="happyforms-unique-id-settings" <% if ( unique_id ) { %>style="display: block;"<% } %>>
96
- <div class="customize-control">
97
- <label for="unique_id_start_from" class="customize-control-title"><?php _e( 'Start counter from', 'happyforms' ); ?> <i class="fa fa-question-circle" aria-hidden="true" data-pointer="unique_id_start_from"></i></label>
98
- <input type="number" id="unique_id_start_from" value="<%= unique_id_start_from %>" data-attribute="unique_id_start_from" data-pointer-target />
99
- </div>
100
- <div class="customize-control happyforms-customize-controls-wrap--side-by-side">
101
- <div>
102
- <label for="unique_id_prefix" class="customize-control-title"><?php _e( 'Prefix', 'happyforms' ); ?></label>
103
- <input type="text" id="unique_id_prefix" value="<%= unique_id_prefix %>" data-attribute="unique_id_prefix" />
104
- </div>
105
- <div>
106
- <label for="unique_id_suffix" class="customize-control-title"><?php _e( 'Suffix', 'happyforms' ); ?></label>
107
- <input type="text" id="unique_id_suffix" value="<%= unique_id_suffix %>" data-attribute="unique_id_suffix" />
108
- </div>
109
- </div>
110
- </div>
111
- <div class="customize-control customize-control-checkbox">
112
- <div class="customize-inside-control-row" data-pointer-target>
113
- <input type="checkbox" value="1" id="happyforms-preview-before-submit" <% if ( preview_before_submit ) { %>checked="checked"<% } %> data-attribute="preview_before_submit" />
114
- <label for="happyforms-preview-before-submit"><?php _e( 'Preview values before submission', 'happyforms' ); ?> <i class="fa fa-question-circle" aria-hidden="true" data-pointer="preview_before_submit"></i></label>
115
- </div>
116
- </div>
117
- <div id="happyforms-review-button-label-settings" <% if ( preview_before_submit ) { %>style="display: block;"<% } %>>
118
- <div class="customize-control">
119
- <label for="form_review_button_label" class="customize-control-title"><?php _e( 'Review button text', 'happyforms' ); ?></label>
120
- <input type="text" id="form_review_button_label" value="<%= review_button_label %>" data-attribute="review_button_label" data-pointer-target />
121
- </div>
122
- </div>
123
- </ul>
124
- </script>
125
- <script type="text/template" id="happyforms-pointer-confirmation_message">
126
- <?php _e( 'This is the message your users will see after succesfully submitting your form.', 'happyforms' ); ?>
127
- </script>
128
- <script type="text/template" id="happyforms-pointer-email_recipient">
129
- <?php _e( 'Add your email address here to receive a confirmation email for each form response. You can add multiple email addresses by separating each address with a comma.', 'happyforms' ); ?>
130
- </script>
131
- <script type="text/template" id="happyforms-pointer-alert_email_subject">
132
- <?php _e( 'Each time a user submits a message, you\'ll receive an email with this subject.', 'happyforms' ); ?>
133
- </script>
134
- <script type="text/template" id="happyforms-pointer-confirmation_email_content">
135
- <?php _e( 'If your form contains an email field, recipients will receive an email with this content.', 'happyforms' ); ?>
136
- </script>
137
- <script type="text/template" id="happyforms-pointer-confirmation_email_from_name">
138
- <?php _e( 'If your form contains an email field, recipients will receive an email with this sender name.', 'happyforms' ); ?>
139
- </script>
140
- <script type="text/template" id="happyforms-pointer-confirmation_email_subject">
141
- <?php _e( 'If your form contains an email field, recipients will receive an email with this subject.', 'happyforms' ); ?>
142
- </script>
143
- <script type="text/template" id="happyforms-pointer-redirect_url">
144
- <?php _e( 'By default, recipients will be redirected to the post or page displaying this form. To set a custom redirect webpage, add a link here.', 'happyforms' ); ?>
145
- </script>
146
- <script type="text/template" id="happyforms-pointer-spam_prevention">
147
- <?php _e( 'Protect your form against bots by using HoneyPot security.', 'happyforms' ); ?>
148
- </script>
149
- <script type="text/template" id="happyforms-pointer-captcha">
150
- <?php _e( 'Protect your form against bots using your Google ReCaptcha credentials.', 'happyforms' ); ?>
151
- </script>
152
- <script type="text/template" id="happyforms-pointer-save_entries">
153
- <?php _e( 'Keep recipients responses stored in your WordPress database.', 'happyforms' ); ?>
154
- </script>
155
- <script type="text/template" id="happyforms-pointer-preview_before_submit">
156
- <?php _e( 'Let your users review their submission before confirming it.', 'happyforms' ); ?>
157
- </script>
158
- <script type="text/template" id="happyforms-pointer-unique_id">
159
- <?php _e( 'Tag responses with a unique, incremental identifier.', 'happyforms' ); ?>
160
- </script>
161
- <script type="text/template" id="happyforms-pointer-unique_id_start_from">
162
- <?php _e( 'Your next submission will be tagged with this identifier.', 'happyforms' ); ?>
163
- </script>
164
- <script type="text/template" id="happyforms-pointer-email_mark_and_reply">
165
- <?php _e( 'Reply to your users and mark their submission as read in one click.', 'happyforms' ); ?>
166
- </script>
167
-
1
+ <?php
2
+ $controller = happyforms_get_form_controller();
3
+ $controls = happyforms_get_setup()->get_controls();
4
+ ?>
5
+
6
  <script type="text/template" id="happyforms-form-setup-template">
7
  <div class="happyforms-stack-view">
8
+ <?php
9
+ $c = 0;
10
+ foreach( $controls as $control ) {
11
+ $field = $controller->get_field( $control['field'] );
12
+ do_action( 'happyforms_do_setup_control', $control, $field, $c );
13
+ $c ++;
14
+ }
15
+ ?>
16
+ </div>
17
+ </script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/core/templates/customize-form-style.php CHANGED
@@ -4,125 +4,17 @@ $controls = happyforms_get_styles()->get_controls();
4
  ?>
5
 
6
  <script type="text/template" id="happyforms-form-style-template">
7
- <div class="happyforms-stack-view happyforms-style-view">
8
- <ul class="happyforms-form-widgets happyforms-style-controls">
9
- <?php
10
- $f = 0;
11
- foreach ( $controls as $control ) :
12
- $type = $control['type'];
13
- $label = $control['label'];
14
- $class = esc_attr( "happyforms-{$type}-control" );
15
- $input_class = isset( $control['class'] ) ? esc_attr( $control['class'] ) : '';
16
- $name = isset( $control['field'] ) ? $control['field'] : '';
17
- $field = ( '' !== $name ) ? $controller->get_field( $control['field'] ) : '';
18
- $has_tooltip = ( isset( $control['tooltip'] ) && true === $control['tooltip'] );
19
-
20
- if ( 'divider' === $type ) : ?>
21
-
22
- <?php if ( $f > 0 ): ?></ul></li><?php endif; ?>
23
- <li class="customize-control control-section <?php echo $class; ?>"<?php if ( isset( $control['condition'] ) ) { echo ' style="display: <%= ' . $control['condition'] . ' ? "block" : "none" %>"'; } ?>>
24
- <h3 class="accordion-section-title"><?php echo $label; ?></h3>
25
- </li>
26
-
27
- <li class="happyforms-style-controls-group">
28
- <ul>
29
- <li class="panel-meta customize-info accordion-section">
30
- <button class="customize-panel-back" tabindex="0">
31
- <span class="screen-reader-text"><?php _e( 'Back', 'happyforms' ); ?></span>
32
- </button>
33
- <div class="accordion-section-title">
34
- <span class="preview-notice"><?php _e( 'You are customizing', 'happyforms' ); ?> <strong class="panel-title"><?php echo $label; ?></strong></span>
35
- </div>
36
- </li>
37
-
38
- <?php elseif ( 'checkbox' === $type ) : ?>
39
-
40
- <li class="customize-control <?php echo $class; ?> <?php echo ( isset( $field['extra_class'] ) ) ? $field['extra_class'] : ''; ?>" data-target="<?php echo esc_attr( $field['target'] ); ?>"<?php if ( isset( $control['condition'] ) ) { echo ' style="display: <%= ' . $control['condition'] . ' ? "block" : "none" %>"'; } ?>>
41
- <div class="customize-control-content">
42
- <label>
43
- <input type="checkbox" name="<?php echo $name; ?>" id="<?php echo $name; ?>" value="<?php echo $field['value']; ?>" data-attribute="<?php echo $name; ?>" <% if (<?php echo $name; ?>) { %>checked="checked"<% } %>> <?php echo $label; ?>
44
- </label>
45
- </div>
46
- </li>
47
-
48
- <?php elseif ( 'range' === $type ) : ?>
49
-
50
- <li class="customize-control <?php echo $class; ?> <?php echo ( isset( $field['extra_class'] ) ) ? $field['extra_class'] : ''; ?>" data-target="<?php echo esc_attr( $field['target'] ); ?>" data-variable="<?php echo $field['variable']; ?>" data-unit="<?php echo $field['unit']; ?>"<?php if ( isset( $control['condition'] ) ) { echo ' style="display: <%= ' . $control['condition'] . ' ? "block" : "none" %>"'; } ?>>
51
- <label class="customize-control-title" for="<?php echo $name; ?>"><?php echo $label; ?></label>
52
- <input type="number" name="<?php echo $name; ?>" id="<?php echo $name; ?>" min="<?php echo $field[ 'min' ]; ?>" max="<?php echo $field[ 'max' ]; ?>" step="<?php echo $field[ 'step' ]; ?>" value="<%= <?php echo $name; ?> %>" data-attribute="<?php echo $name; ?>">
53
- <?php if ( isset( $field['include_unit_switch'] ) ) : ?>
54
- <select name="<?php echo $name; ?>_unit" class="happyforms-unit-switch">
55
- <?php if ( is_array( $field['units'] ) ) :
56
- foreach ( $field['units'] as $unit ) : ?>
57
- <option value="<?php echo $unit; ?>"><?php echo $unit; ?></option>
58
- <?php endforeach; endif; ?>
59
- </select>
60
- <?php endif; ?>
61
- <div class="customize-control-content">
62
- <div class="happyforms-range-slider" data-slider-id="<?php echo $name; ?>"></div>
63
- </div>
64
- </li>
65
-
66
- <?php elseif ( 'buttonset' === $type ) : ?>
67
-
68
- <li class="customize-control <?php echo $class; ?> <?php echo ( isset( $field['extra_class'] ) ) ? $field['extra_class'] : ''; ?>" data-target="<?php echo esc_attr( $field['target'] ); ?>" data-variable="<?php echo ( isset( $field['variable'] ) ) ? esc_attr( $field['variable'] ) : ''; ?>" data-control-id="<?php echo $name; ?>"<?php if ( isset( $control['condition'] ) ) { echo ' style="display: <%= ' . $control['condition'] . ' ? "block" : "none" %>"'; } ?>>
69
- <div class="customize-control-content">
70
- <label class="customize-control-title" for="<?php echo $name; ?>"><?php echo $label; ?></label>
71
- <div class="happyforms-buttonset-container">
72
- <?php foreach ( $field[ 'options' ] as $option_key => $option ) : ?>
73
- <input type="radio" class="happyforms-buttonset" name="<?php echo $name; ?>" id="<?php echo $name; ?>_<?php echo esc_attr( $option_key ); ?>" value="<?php echo esc_attr( $option_key ); ?>" data-attribute="<?php echo $name; ?>" <?php echo ( isset( $field['target_control_class'] ) ) ? ' data-target-control-class="'. $field['target_control_class'] .'" ' : ''; ?><% if (<?php echo $name; ?> === '<?php echo esc_attr( $option_key ); ?>') { %>checked="checked"<% } %>>
74
- <label for="<?php echo $name; ?>_<?php echo esc_attr( $option_key ); ?>">
75
- <span class="ui-button-text"></span><?php echo esc_attr( $option ); ?></span>
76
- </label>
77
- <?php endforeach; ?>
78
- </div>
79
- </div>
80
- </li>
81
-
82
- <?php elseif ( 'color' === $type ) : ?>
83
-
84
- <li class="customize-control <?php echo $class; ?> <?php echo ( isset( $field['extra_class'] ) ) ? $field['extra_class'] : ''; ?>" data-target="<?php echo esc_attr( $field['target'] ); ?>" data-variable="<?php echo $field['variable']; ?>"<?php if ( isset( $control['condition'] ) ) { echo ' style="display: <%= ' . $control['condition'] . ' ? "block" : "none" %>"'; } ?>>
85
- <label class="customize-control-title" for="<?php echo $name; ?>"><?php echo $label; ?></label>
86
- <div class="customize-control-content">
87
- <input type="text" name="<?php echo $name; ?>" id="<?php echo $name; ?>" class="happyforms-color-input" data-attribute="<?php echo $name; ?>" value="<%= <?php echo $name; ?> %>" data-default="<?php echo $field['default']; ?>">
88
- </div>
89
- </li>
90
-
91
- <?php elseif ( 'text' === $type ) : ?>
92
-
93
- <li class="customize-control <?php echo $class; ?> <?php echo ( isset( $field['extra_class'] ) ) ? $field['extra_class'] : ''; ?>" data-target="<?php echo esc_attr( $field['target'] ); ?>"<?php if ( isset( $control['condition'] ) ) { echo ' style="display: <%= ' . $control['condition'] . ' ? "block" : "none" %>"'; } ?>>
94
- <label class="customize-control-title" for="<?php echo $name; ?>"><?php echo $label; ?> <?php if ( true === $has_tooltip ) : ?> <i class="fa fa-question-circle" aria-hidden="true" data-pointer="<?php echo $name; ?>"></i><?php endif; ?></label>
95
- <div class="customize-control-content" <?php if ( true === $has_tooltip ) : ?>data-pointer-target<?php endif; ?>>
96
- <input type="text" name="<?php echo $name; ?>" class="<?php echo $input_class; ?>" id="<?php echo $name; ?>" data-attribute="<?php echo $name; ?>" value="<%= <?php echo $name; ?> %>">
97
- </div>
98
- </li>
99
-
100
- <?php elseif ( 'select' === $type ) : ?>
101
-
102
- <li class="customize-control <?php echo $class; ?> <?php echo ( isset( $field['extra_class'] ) ) ? $field['extra_class'] : ''; ?>" data-target="<?php echo esc_attr( $field['target'] ); ?>"<?php if ( isset( $control['condition'] ) ) { echo ' style="display: <%= ' . $control['condition'] . ' ? "block" : "none" %>"'; } ?>>
103
- <label class="customize-control-title" for="<?php echo $name; ?>"><?php echo $label; ?></label>
104
- <div class="customize-control-content">
105
- <select name="<?php echo $name; ?>" id="<?php echo $name; ?>" data-attribute="<?php echo $name; ?>" class="widefat">
106
- <?php
107
- foreach ( $field['options'] as $option_key => $option ) : ?>
108
- <option value="<?php echo esc_attr( $option_key ); ?>" <% if (<?php echo $name; ?> === '<?php echo esc_attr( $option_key ); ?>') {%><%= 'selected' %><% } %>><?php echo esc_attr( $option ); ?></option>
109
- <?php endforeach; ?>
110
- </select>
111
- </div>
112
- </li>
113
-
114
- <?php elseif ( 'heading' === $type ) : ?>
115
-
116
- <li class="customize-control happyforms-customize-heading">
117
- <h2><?php echo $label; ?></h2>
118
- </li>
119
-
120
- <?php endif; ?>
121
- <?php $f ++; endforeach; ?>
122
- </ul></li>
123
  </ul>
124
- </div>
125
- </script>
126
- <script type="text/template" id="happyforms-pointer-html_id">
127
- <?php _e( 'Add a unique HTML ID to your form. Write without a hash (#) character.', 'happyforms' ); ?>
128
  </script>
4
  ?>
5
 
6
  <script type="text/template" id="happyforms-form-style-template">
7
+ <div class="happyforms-stack-view happyforms-style-view">
8
+ <ul class="happyforms-form-widgets happyforms-style-controls">
9
+ <?php
10
+ $c = 0;
11
+ foreach( $controls as $control ) {
12
+ $field = isset( $control['field'] ) ?
13
+ $controller->get_field( $control['field'] ) : '';
14
+ do_action( 'happyforms_do_style_control', $control, $field, $c );
15
+ $c ++;
16
+ }
17
+ ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  </ul>
19
+ </div>
 
 
 
20
  </script>
inc/core/templates/partials/form-submit.php CHANGED
@@ -1,3 +1,3 @@
1
  <div class="happyforms-form__part happyforms-part happyforms-part--submit">
2
- <input type="submit" class="happyforms-submit happyforms-button--submit" value="<?php echo esc_attr( happyforms_get_form_property( $form, 'submit_button_label' ) ); ?>" <?php if ( happyforms_submit_enabled( $form ) ) : ?> disabled<?php endif; ?>>
3
  </div>
1
  <div class="happyforms-form__part happyforms-part happyforms-part--submit">
2
+ <input type="submit" class="happyforms-submit happyforms-button--submit" value="<?php echo esc_attr( happyforms_get_form_property( $form, 'submit_button_label' ) ); ?>" <?php if ( happyforms_submit_enabled( $form ) ) : ?> disabled<?php endif; ?>>
3
  </div>
inc/core/templates/preview-form-edit.php CHANGED
@@ -6,10 +6,6 @@
6
  <?php wp_head(); ?>
7
  </head>
8
  <body class="happyforms-preview">
9
- <div id="message" class="updated published notice notice-success">
10
- <p><?php printf( __( 'This is a preview of your new HappyForm. Once you’ve finished building, you can add this form to any Page, Post and Widget area. Have questions? <a href="%s" class="happyforms-ask-link" target="_blank">Ask for help in our support forums.</a>', 'happyforms' ), 'https://wordpress.org/support/plugin/happyforms' ); ?></p>
11
- </div>
12
-
13
  <?php global $post; $form = happyforms_get_form_controller()->get( $post->ID ); ?>
14
  <?php happyforms_the_form_styles( $form ); ?>
15
  <?php include( happyforms_get_include_folder() . '/core/templates/single-form.php' ); ?>
6
  <?php wp_head(); ?>
7
  </head>
8
  <body class="happyforms-preview">
 
 
 
 
9
  <?php global $post; $form = happyforms_get_form_controller()->get( $post->ID ); ?>
10
  <?php happyforms_the_form_styles( $form ); ?>
11
  <?php include( happyforms_get_include_folder() . '/core/templates/single-form.php' ); ?>
inc/core/templates/single-form.php CHANGED
@@ -16,7 +16,8 @@
16
  <div class="happyforms-flex">
17
  <?php happyforms_message_notices( $form['ID'] ); ?>
18
  <?php happyforms_honeypot( $form ); ?>
19
- <?php foreach ( $form['parts'] as $part ) {
 
20
  happyforms_the_form_part( $part, $form );
21
  } ?>
22
  <?php happyforms_recaptcha( $form ); ?>
16
  <div class="happyforms-flex">
17
  <?php happyforms_message_notices( $form['ID'] ); ?>
18
  <?php happyforms_honeypot( $form ); ?>
19
+ <?php $parts = apply_filters( 'happyforms_get_form_parts', $form['parts'], $form ); ?>
20
+ <?php foreach ( $parts as $part ) {
21
  happyforms_the_form_part( $part, $form );
22
  } ?>
23
  <?php happyforms_recaptcha( $form ); ?>
languages/happyforms.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the same license as the HappyForms package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: HappyForms 1.6.19\n"
6
  "Report-Msgid-Bugs-To: https://thethemefoundry.com/support/\n"
7
- "POT-Creation-Date: 2019-01-25 08:09:48+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -13,6 +13,46 @@ msgstr ""
13
  "Language-Team: The Theme Foundry\n"
14
  "X-Generator: grunt-wp-i18n 0.4.9\n"
15
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  #. Plugin Name of the plugin/theme
17
  msgid "HappyForms"
18
  msgstr ""
@@ -38,7 +78,7 @@ msgid "Edit Form"
38
  msgstr ""
39
 
40
  #: inc/core/classes/class-form-admin.php:155
41
- #: inc/core/classes/class-form-controller.php:96
42
  msgid "View form"
43
  msgstr ""
44
 
@@ -70,7 +110,7 @@ msgid "Form published."
70
  msgstr ""
71
 
72
  #: inc/core/classes/class-form-admin.php:171
73
- #: inc/core/classes/class-wp-customize-form-manager.php:164
74
  msgid "Form saved."
75
  msgstr ""
76
 
@@ -153,8 +193,8 @@ msgid "Duplicate"
153
  msgstr ""
154
 
155
  #: inc/core/classes/class-form-admin.php:374
156
- #: inc/core/classes/class-message-admin.php:636
157
- #: inc/core/classes/class-message-admin.php:924
158
  msgid "Trash"
159
  msgstr ""
160
 
@@ -162,151 +202,315 @@ msgstr ""
162
  msgid "Form duplicated succesfully."
163
  msgstr ""
164
 
165
- #: inc/core/classes/class-form-controller.php:91
166
  msgid "Forms"
167
  msgstr ""
168
 
169
- #: inc/core/classes/class-form-controller.php:92
170
  #: inc/core/classes/class-message-admin.php:397
171
- #: inc/core/classes/class-message-admin.php:909
172
  msgid "Form"
173
  msgstr ""
174
 
175
- #: inc/core/classes/class-form-controller.php:93
176
- #: inc/core/classes/class-form-controller.php:95
177
  msgid "Build form"
178
  msgstr ""
179
 
180
- #: inc/core/classes/class-form-controller.php:94
181
  msgid "Edit form"
182
  msgstr ""
183
 
184
- #: inc/core/classes/class-form-controller.php:97
185
  msgid "View forms"
186
  msgstr ""
187
 
188
- #: inc/core/classes/class-form-controller.php:98
189
  msgid "Search Forms"
190
  msgstr ""
191
 
192
- #: inc/core/classes/class-form-controller.php:99
193
  msgid "No form found"
194
  msgstr ""
195
 
196
- #: inc/core/classes/class-form-controller.php:100
197
  msgid "No forms found in Trash"
198
  msgstr ""
199
 
200
- #: inc/core/classes/class-form-controller.php:101
201
- #: inc/core/classes/class-form-controller.php:102
202
- #: inc/core/classes/class-happyforms-core.php:163
203
- #: inc/core/classes/class-happyforms-core.php:164
204
  msgid "All Forms"
205
  msgstr ""
206
 
207
- #: inc/core/classes/class-form-controller.php:201
208
  msgid "Untitled form"
209
  msgstr ""
210
 
211
- #: inc/core/classes/class-form-controller.php:228
212
- #: inc/core/classes/class-form-controller.php:256
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
213
  msgid ""
214
  "Your message has been successfully sent. We appreciate you contacting us "
215
  "and we’ll be in touch soon."
216
  msgstr ""
217
 
218
- #: inc/core/classes/class-form-controller.php:240
219
  msgid "You received a new message"
220
  msgstr ""
221
 
222
- #: inc/core/classes/class-form-controller.php:252
223
  msgid "We received your message"
224
  msgstr ""
225
 
226
- #: inc/core/classes/class-form-controller.php:268
 
 
 
 
227
  msgid "Submit Form"
228
  msgstr ""
229
 
230
- #: inc/core/classes/class-form-controller.php:296
231
  msgid "Review submission"
232
  msgstr ""
233
 
234
- #: inc/core/classes/class-form-controller.php:666
235
- msgid " Copy"
236
  msgstr ""
237
 
238
- #: inc/core/classes/class-form-controller.php:834
239
- #: inc/core/classes/class-message-controller.php:317
240
- #: inc/core/classes/class-message-controller.php:417
241
- #: inc/core/classes/class-message-controller.php:452
242
- msgid "Your submission contains errors."
243
  msgstr ""
244
 
245
- #: inc/core/classes/class-form-controller.php:992
246
- msgid "Please review your submission..."
247
  msgstr ""
248
 
249
- #: inc/core/classes/class-form-part-library.php:182
250
- msgid "Invalid data"
 
251
  msgstr ""
252
 
253
- #: inc/core/classes/class-form-part-library.php:189
254
- msgid "Part definition not found"
 
 
 
255
  msgstr ""
256
 
257
- #: inc/core/classes/class-form-part-library.php:220
258
- msgid "Missing validation callback for field %s"
 
259
  msgstr ""
260
 
261
- #: inc/core/classes/class-form-styles.php:49
262
- msgid "Left-to-right"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
263
  msgstr ""
264
 
265
  #: inc/core/classes/class-form-styles.php:50
 
 
 
 
266
  msgid "Right-to-left"
267
  msgstr ""
268
 
269
- #: inc/core/classes/class-form-styles.php:77
270
- #: inc/core/classes/class-form-styles.php:145
271
- #: inc/core/classes/class-form-styles.php:155
272
- #: inc/core/classes/class-form-styles.php:258
273
- #: inc/core/classes/class-form-styles.php:268
274
  msgid "Default"
275
  msgstr ""
276
 
277
- #: inc/core/classes/class-form-styles.php:78
278
- #: inc/core/classes/class-form-styles.php:144
279
- #: inc/core/classes/class-form-styles.php:154
280
- #: inc/core/classes/class-form-styles.php:267
281
  msgid "Narrow"
282
  msgstr ""
283
 
284
- #: inc/core/classes/class-form-styles.php:79
285
- #: inc/core/classes/class-form-styles.php:146
286
- #: inc/core/classes/class-form-styles.php:156
287
- #: inc/core/classes/class-form-styles.php:269
288
  msgid "Wide"
289
  msgstr ""
290
 
291
- #: inc/core/classes/class-form-styles.php:87
292
- #: inc/core/classes/class-form-styles.php:116
293
- #: inc/core/classes/class-form-styles.php:239
294
  #: inc/core/templates/parts/customize-date.php:33
295
  #: inc/core/templates/parts/customize-date.php:57
296
  msgid "Show"
297
  msgstr ""
298
 
299
- #: inc/core/classes/class-form-styles.php:88
300
- #: inc/core/classes/class-form-styles.php:117
301
- #: inc/core/classes/class-form-styles.php:240
302
  msgid "Hide"
303
  msgstr ""
304
 
305
- #: inc/core/classes/class-form-styles.php:96
306
- #: inc/core/classes/class-form-styles.php:170
307
- #: inc/core/classes/class-form-styles.php:199
308
- #: inc/core/classes/class-form-styles.php:219
309
- #: inc/core/classes/class-form-styles.php:296
310
  #: inc/core/templates/parts/customize-address.php:11
311
  #: inc/core/templates/parts/customize-checkbox.php:11
312
  #: inc/core/templates/parts/customize-date.php:11
@@ -328,77 +532,73 @@ msgstr ""
328
  msgid "Left"
329
  msgstr ""
330
 
331
- #: inc/core/classes/class-form-styles.php:97
332
- #: inc/core/classes/class-form-styles.php:171
333
- #: inc/core/classes/class-form-styles.php:200
334
- #: inc/core/classes/class-form-styles.php:220
335
- #: inc/core/classes/class-form-styles.php:297
336
- msgid "Center"
337
- msgstr ""
338
-
339
  #: inc/core/classes/class-form-styles.php:98
340
  #: inc/core/classes/class-form-styles.php:172
341
  #: inc/core/classes/class-form-styles.php:201
342
  #: inc/core/classes/class-form-styles.php:221
343
  #: inc/core/classes/class-form-styles.php:298
344
- msgid "Right"
345
  msgstr ""
346
 
347
- #: inc/core/classes/class-form-styles.php:125
348
- msgid "All sides"
 
 
 
 
349
  msgstr ""
350
 
351
  #: inc/core/classes/class-form-styles.php:126
352
- msgid "Bottom only"
353
  msgstr ""
354
 
355
- #: inc/core/classes/class-form-styles.php:134
356
- #: inc/core/classes/class-form-styles.php:248
357
- msgid "Square"
358
  msgstr ""
359
 
360
  #: inc/core/classes/class-form-styles.php:135
361
  #: inc/core/classes/class-form-styles.php:249
362
- msgid "Round"
363
  msgstr ""
364
 
365
  #: inc/core/classes/class-form-styles.php:136
366
  #: inc/core/classes/class-form-styles.php:250
367
- msgid "Pill"
368
  msgstr ""
369
 
370
- #: inc/core/classes/class-form-styles.php:190
371
- #: inc/core/classes/class-form-styles.php:287
372
- msgid "Normal"
373
  msgstr ""
374
 
375
  #: inc/core/classes/class-form-styles.php:191
376
  #: inc/core/classes/class-form-styles.php:288
 
 
 
 
 
377
  msgid "Bold"
378
  msgstr ""
379
 
380
- #: inc/core/classes/class-form-styles.php:259
381
  msgid "Full width"
382
  msgstr ""
383
 
384
- #: inc/core/classes/class-form-styles.php:497
385
  msgid "Above form"
386
  msgstr ""
387
 
388
- #: inc/core/classes/class-form-styles.php:498
389
  msgid "Below form"
390
  msgstr ""
391
 
392
- #: inc/core/classes/class-form-styles.php:504
393
- msgid "(optional)"
394
- msgstr ""
395
-
396
- #: inc/core/classes/class-form-styles.php:517
397
  msgid "General"
398
  msgstr ""
399
 
400
- #: inc/core/classes/class-form-styles.php:521
401
- #: inc/core/classes/class-form-styles.php:826
402
  #: inc/core/templates/parts/customize-address.php:78
403
  #: inc/core/templates/parts/customize-checkbox.php:67
404
  #: inc/core/templates/parts/customize-date.php:103
@@ -421,146 +621,150 @@ msgstr ""
421
  msgid "Width"
422
  msgstr ""
423
 
424
- #: inc/core/classes/class-form-styles.php:526
425
- #: inc/core/classes/class-form-styles.php:831
426
  msgid "Padding"
427
  msgstr ""
428
 
429
- #: inc/core/classes/class-form-styles.php:531
430
  msgid "Direction"
431
  msgstr ""
432
 
433
- #: inc/core/classes/class-form-styles.php:536
434
  msgid "Display notices"
435
  msgstr ""
436
 
437
- #: inc/core/classes/class-form-styles.php:541
438
  msgid "Disable submit button until form is valid"
439
  msgstr ""
440
 
441
- #: inc/core/classes/class-form-styles.php:546
442
  msgid "Form HTML ID"
443
  msgstr ""
444
 
445
- #: inc/core/classes/class-form-styles.php:553
446
- #: inc/core/classes/class-form-styles.php:620
447
- #: inc/core/classes/class-form-styles.php:694
448
- #: inc/core/classes/class-form-styles.php:857
 
 
 
 
449
  msgid "Colors"
450
  msgstr ""
451
 
452
- #: inc/core/classes/class-form-styles.php:557
453
  msgid "Primary"
454
  msgstr ""
455
 
456
- #: inc/core/classes/class-form-styles.php:562
457
  msgid "Success"
458
  msgstr ""
459
 
460
- #: inc/core/classes/class-form-styles.php:567
461
  msgid "Error"
462
  msgstr ""
463
 
464
- #: inc/core/classes/class-form-styles.php:572
465
  msgid "Form title"
466
  msgstr ""
467
 
468
- #: inc/core/classes/class-form-styles.php:576
469
  msgid "Display"
470
  msgstr ""
471
 
472
- #: inc/core/classes/class-form-styles.php:581
473
- #: inc/core/classes/class-form-styles.php:846
474
  msgid "Alignment"
475
  msgstr ""
476
 
477
- #: inc/core/classes/class-form-styles.php:586
478
  msgid "Font size"
479
  msgstr ""
480
 
481
- #: inc/core/classes/class-form-styles.php:591
482
  msgid "Part borders & spacing"
483
  msgstr ""
484
 
485
- #: inc/core/classes/class-form-styles.php:595
486
- #: inc/core/classes/class-form-styles.php:624
487
- #: inc/core/classes/class-form-styles.php:816
488
- #: inc/core/classes/class-form-styles.php:871
489
  msgid "Border"
490
  msgstr ""
491
 
492
- #: inc/core/classes/class-form-styles.php:600
493
  msgid "Border location"
494
  msgstr ""
495
 
496
- #: inc/core/classes/class-form-styles.php:605
497
- #: inc/core/classes/class-form-styles.php:821
498
  msgid "Border radius"
499
  msgstr ""
500
 
501
- #: inc/core/classes/class-form-styles.php:610
502
  msgid "Outer padding"
503
  msgstr ""
504
 
505
- #: inc/core/classes/class-form-styles.php:615
506
  msgid "Inner padding"
507
  msgstr ""
508
 
509
- #: inc/core/classes/class-form-styles.php:629
510
  msgid "Border on focus"
511
  msgstr ""
512
 
513
- #: inc/core/classes/class-form-styles.php:634
514
- #: inc/core/classes/class-form-styles.php:722
515
- #: inc/core/classes/class-form-styles.php:861
 
516
  msgid "Background"
517
  msgstr ""
518
 
519
- #: inc/core/classes/class-form-styles.php:639
 
 
 
520
  msgid "Background on focus"
521
  msgstr ""
522
 
523
- #: inc/core/classes/class-form-styles.php:644
524
  msgid "Part labels & text"
525
  msgstr ""
526
 
527
- #: inc/core/classes/class-form-styles.php:648
528
  msgid "Toggle placeholder on part focus"
529
  msgstr ""
530
 
531
- #: inc/core/classes/class-form-styles.php:654
532
  msgid "Title alignment"
533
  msgstr ""
534
 
535
- #: inc/core/classes/class-form-styles.php:659
536
  msgid "Title font size"
537
  msgstr ""
538
 
539
- #: inc/core/classes/class-form-styles.php:664
540
  msgid "Title font weight"
541
  msgstr ""
542
 
543
- #: inc/core/classes/class-form-styles.php:669
544
  msgid "Description alignment"
545
  msgstr ""
546
 
547
- #: inc/core/classes/class-form-styles.php:674
548
  msgid "Description font size"
549
  msgstr ""
550
 
551
- #: inc/core/classes/class-form-styles.php:679
552
- msgid "Placeholder &amp; Value alignment"
553
  msgstr ""
554
 
555
- #: inc/core/classes/class-form-styles.php:684
556
  msgid "Value font size"
557
  msgstr ""
558
 
559
- #: inc/core/classes/class-form-styles.php:689
560
- msgid "Optional part label"
561
- msgstr ""
562
-
563
- #: inc/core/classes/class-form-styles.php:698
564
  #: inc/core/classes/parts/class-part-title.php:8
565
  #: inc/core/classes/parts/class-part-title.php:30
566
  #: inc/core/templates/parts/customize-address.php:4
@@ -584,11 +788,11 @@ msgstr ""
584
  msgid "Title"
585
  msgstr ""
586
 
587
- #: inc/core/classes/class-form-styles.php:703
588
  msgid "Value"
589
  msgstr ""
590
 
591
- #: inc/core/classes/class-form-styles.php:708
592
  #: inc/core/classes/parts/class-part-placeholder.php:8
593
  #: inc/core/templates/parts/customize-address.php:36
594
  #: inc/core/templates/parts/customize-email.php:36
@@ -602,16 +806,16 @@ msgstr ""
602
  msgid "Placeholder"
603
  msgstr ""
604
 
605
- #: inc/core/classes/class-form-styles.php:713
606
  msgid "Dropdowns"
607
  msgstr ""
608
 
609
- #: inc/core/classes/class-form-styles.php:718
610
  msgid "Items"
611
  msgstr ""
612
 
613
- #: inc/core/classes/class-form-styles.php:727
614
- #: inc/core/classes/class-form-styles.php:876
615
  #: inc/core/classes/parts/class-part-multi-line-text.php:29
616
  #: inc/core/classes/parts/class-part-rich-text.php:31
617
  #: inc/core/classes/parts/class-part-single-line-text.php:29
@@ -619,123 +823,110 @@ msgstr ""
619
  msgid "Text"
620
  msgstr ""
621
 
622
- #: inc/core/classes/class-form-styles.php:732
623
- #: inc/core/classes/class-form-styles.php:866
624
- msgid "Background focused"
625
- msgstr ""
626
-
627
- #: inc/core/classes/class-form-styles.php:737
628
- #: inc/core/classes/class-form-styles.php:881
629
  msgid "Text focused"
630
  msgstr ""
631
 
632
- #: inc/core/classes/class-form-styles.php:742
633
  msgid "Checkboxes & Radios"
634
  msgstr ""
635
 
636
- #: inc/core/classes/class-form-styles.php:747
637
- msgid "Checkbox & Radio background"
638
- msgstr ""
639
-
640
- #: inc/core/classes/class-form-styles.php:752
641
- msgid "Checkbox & Radio background focused"
642
- msgstr ""
643
-
644
- #: inc/core/classes/class-form-styles.php:757
645
- msgid "Checkbox & Radio checkmark"
646
  msgstr ""
647
 
648
- #: inc/core/classes/class-form-styles.php:762
649
  #: inc/core/classes/parts/class-part-rating.php:9
650
  #: inc/core/classes/parts/class-part-rating.php:31
651
  msgid "Rating"
652
  msgstr ""
653
 
654
- #: inc/core/classes/class-form-styles.php:767
655
  msgid "Rating star color"
656
  msgstr ""
657
 
658
- #: inc/core/classes/class-form-styles.php:772
659
  msgid "Rating star color on hover"
660
  msgstr ""
661
 
662
- #: inc/core/classes/class-form-styles.php:777
663
  msgid "Item background"
664
  msgstr ""
665
 
666
- #: inc/core/classes/class-form-styles.php:782
667
  msgid "Item background on hover"
668
  msgstr ""
669
 
670
- #: inc/core/classes/class-form-styles.php:787
671
  msgid "Tables"
672
  msgstr ""
673
 
674
- #: inc/core/classes/class-form-styles.php:792
675
  msgid "Odd row primary"
676
  msgstr ""
677
 
678
- #: inc/core/classes/class-form-styles.php:797
679
  msgid "Odd row secondary"
680
  msgstr ""
681
 
682
- #: inc/core/classes/class-form-styles.php:802
683
  msgid "Even row primary"
684
  msgstr ""
685
 
686
- #: inc/core/classes/class-form-styles.php:807
687
  msgid "Even row secondary"
688
  msgstr ""
689
 
690
- #: inc/core/classes/class-form-styles.php:812
691
  msgid "Submit button"
692
  msgstr ""
693
 
694
- #: inc/core/classes/class-form-styles.php:836
695
  msgid "Font Size"
696
  msgstr ""
697
 
698
- #: inc/core/classes/class-form-styles.php:841
699
  msgid "Font Weight"
700
  msgstr ""
701
 
702
- #: inc/core/classes/class-form-styles.php:852
703
  msgid "Make button a part of last input"
704
  msgstr ""
705
 
706
- #: inc/core/classes/class-happyforms-core.php:152
707
  msgid "HappyForms Index"
708
  msgstr ""
709
 
710
- #: inc/core/classes/class-happyforms-core.php:171
711
- #: inc/core/classes/class-happyforms-core.php:172
712
  msgid "Add New"
713
  msgstr ""
714
 
715
- #: inc/core/classes/class-happyforms-core.php:179
716
- #: inc/core/classes/class-happyforms-core.php:180
717
  #: inc/core/classes/class-message-controller.php:208
718
  msgid "Responses"
719
  msgstr ""
720
 
721
- #: inc/core/classes/class-happyforms-core.php:191
722
- #: inc/core/classes/class-happyforms-core.php:192
723
  msgid "Welcome"
724
  msgstr ""
725
 
726
- #: inc/core/classes/class-happyforms-core.php:288
727
  msgid "HappyForm"
728
  msgstr ""
729
 
730
- #: inc/core/classes/class-happyforms-core.php:292
731
  msgid "New HappyForm"
732
  msgstr ""
733
 
734
- #: inc/core/classes/class-happyforms-core.php:425
735
  msgid "Insert HappyForm"
736
  msgstr ""
737
 
738
- #: inc/core/classes/class-happyforms-core.php:425
739
  msgid "Add HappyForms"
740
  msgstr ""
741
 
@@ -845,61 +1036,61 @@ msgid "Number of response fields to show:"
845
  msgstr ""
846
 
847
  #: inc/core/classes/class-message-admin.php:394
848
- #: inc/core/classes/class-message-admin.php:773
849
- #: inc/core/classes/class-message-controller.php:652
850
- #: inc/core/classes/class-message-controller.php:806
851
- #: inc/core/classes/class-message-controller.php:873
852
- #: inc/core/templates/admin-message-edit.php:24
853
  msgid "Tracking number"
854
  msgstr ""
855
 
856
- #: inc/core/classes/class-message-admin.php:562
857
  msgid "All forms"
858
  msgstr ""
859
 
860
- #: inc/core/classes/class-message-admin.php:634
861
- #: inc/core/classes/class-message-admin.php:919
862
  msgid "Mark read"
863
  msgstr ""
864
 
865
- #: inc/core/classes/class-message-admin.php:635
866
- #: inc/core/classes/class-message-admin.php:919
867
  msgid "Mark unread"
868
  msgstr ""
869
 
870
- #: inc/core/classes/class-message-admin.php:640
871
  msgid "Export to CSV"
872
  msgstr ""
873
 
874
- #: inc/core/classes/class-message-admin.php:708
875
  msgid "View"
876
  msgstr ""
877
 
878
- #: inc/core/classes/class-message-admin.php:712
879
  msgid "Delete Permanently"
880
  msgstr ""
881
 
882
- #: inc/core/classes/class-message-admin.php:894
883
  msgid "Details"
884
  msgstr ""
885
 
886
- #: inc/core/classes/class-message-admin.php:914
887
  msgid "Submitted on"
888
  msgstr ""
889
 
890
- #: inc/core/classes/class-message-admin.php:914
891
  msgid "M j, Y @ H:i"
892
  msgstr ""
893
 
894
- #: inc/core/classes/class-message-admin.php:919
895
  msgid "Status"
896
  msgstr ""
897
 
898
- #: inc/core/classes/class-message-admin.php:919
899
  msgid "Read"
900
  msgstr ""
901
 
902
- #: inc/core/classes/class-message-admin.php:919
903
  msgid "Unread"
904
  msgstr ""
905
 
@@ -932,7 +1123,7 @@ msgstr ""
932
  msgid "All Responses"
933
  msgstr ""
934
 
935
- #: inc/core/classes/class-message-controller.php:824
936
  msgid "Reply to this message and mark it as read"
937
  msgstr ""
938
 
@@ -962,59 +1153,59 @@ msgstr ""
962
  msgid "Error description"
963
  msgstr ""
964
 
965
- #: inc/core/classes/class-wp-customize-form-manager.php:165
966
  msgid "Now, there are couple of ways to embed it to your content. Here goes..."
967
  msgstr ""
968
 
969
- #: inc/core/classes/class-wp-customize-form-manager.php:166
970
  msgid "Add to your page / post content"
971
  msgstr ""
972
 
973
- #: inc/core/classes/class-wp-customize-form-manager.php:167
974
  msgid ""
975
  "In your Edit Post / Edit Page screen, click the <b>Add HappyForms</b> "
976
  "button right above your toolbar. A modal window will appear."
977
  msgstr ""
978
 
979
- #: inc/core/classes/class-wp-customize-form-manager.php:167
980
  msgid "Select a form in the dropdown, then click <b>Insert</b>."
981
  msgstr ""
982
 
983
- #: inc/core/classes/class-wp-customize-form-manager.php:167
984
  msgid ""
985
  "That's it! You'll notice the shortcode was added to your content. Your form "
986
  "will show up there."
987
  msgstr ""
988
 
989
- #: inc/core/classes/class-wp-customize-form-manager.php:168
990
  msgid "Use the HappyForms widget"
991
  msgstr ""
992
 
993
- #: inc/core/classes/class-wp-customize-form-manager.php:170
994
  msgid ""
995
  "Head over to <b>Appearance</b> &rarr; <b><a href=\"%s\">Widgets</a></b> "
996
  "screen."
997
  msgstr ""
998
 
999
- #: inc/core/classes/class-wp-customize-form-manager.php:171
1000
  msgid "Drag the HappyForms widget to your sidebar."
1001
  msgstr ""
1002
 
1003
- #: inc/core/classes/class-wp-customize-form-manager.php:172
1004
  msgid "Select a form in the Form dropdown."
1005
  msgstr ""
1006
 
1007
- #: inc/core/classes/class-wp-customize-form-manager.php:173
1008
  msgid "All done!"
1009
  msgstr ""
1010
 
1011
- #: inc/core/classes/class-wp-customize-form-manager.php:175
1012
  msgid ""
1013
  "Looking for a full documentation? Head over to our <a href=\"%s\" "
1014
  "target=\"_blank\">Help Guide</a>."
1015
  msgstr ""
1016
 
1017
- #: inc/core/classes/class-wp-customize-form-manager.php:182
1018
  msgid ""
1019
  "Form saved. You can add this form to any Page, Post and Widget area. Have "
1020
  "questions? <a href=\"%s\" target=\"_blank\">Ask for help in our support "
@@ -1030,28 +1221,28 @@ msgstr ""
1030
  msgid "For geographical locations. Includes Google Maps intergration."
1031
  msgstr ""
1032
 
1033
- #: inc/core/classes/parts/class-part-address.php:191
1034
- #: inc/core/classes/parts/class-part-checkbox.php:167
1035
- #: inc/core/classes/parts/class-part-date.php:206
1036
- #: inc/core/classes/parts/class-part-email.php:146
1037
- #: inc/core/classes/parts/class-part-email.php:150
1038
- #: inc/core/classes/parts/class-part-legal.php:115
1039
- #: inc/core/classes/parts/class-part-multi-line-text.php:142
1040
- #: inc/core/classes/parts/class-part-narrative.php:125
1041
  #: inc/core/classes/parts/class-part-narrative.php:130
1042
- #: inc/core/classes/parts/class-part-number.php:169
1043
- #: inc/core/classes/parts/class-part-phone.php:161
1044
- #: inc/core/classes/parts/class-part-phone.php:165
1045
- #: inc/core/classes/parts/class-part-radio.php:167
1046
- #: inc/core/classes/parts/class-part-rating.php:152
1047
- #: inc/core/classes/parts/class-part-rich-text.php:185
1048
- #: inc/core/classes/parts/class-part-scale.php:163
1049
- #: inc/core/classes/parts/class-part-select.php:170
1050
- #: inc/core/classes/parts/class-part-single-line-text.php:129
1051
- #: inc/core/classes/parts/class-part-table.php:213
1052
  #: inc/core/classes/parts/class-part-table.php:220
1053
- #: inc/core/classes/parts/class-part-title.php:162
1054
- #: inc/core/classes/parts/class-part-website-url.php:124
 
1055
  msgid "This field is required."
1056
  msgstr ""
1057
 
@@ -1076,8 +1267,8 @@ msgstr ""
1076
  msgid "Options"
1077
  msgstr ""
1078
 
1079
- #: inc/core/classes/parts/class-part-checkbox.php:175
1080
- #: inc/core/classes/parts/class-part-table.php:233
1081
  msgid "Checkbox values are not valid."
1082
  msgstr ""
1083
 
@@ -1094,20 +1285,20 @@ msgstr ""
1094
  msgid "Date"
1095
  msgstr ""
1096
 
1097
- #: inc/core/classes/parts/class-part-date.php:229
1098
  msgid "Year input does not match minimum and maximum value allowed."
1099
  msgstr ""
1100
 
1101
- #: inc/core/classes/parts/class-part-date.php:244
1102
  msgid "Hour input does not match minimum and maximum value allowed."
1103
  msgstr ""
1104
 
1105
- #: inc/core/classes/parts/class-part-date.php:299
1106
  msgid "Not a valid date."
1107
  msgstr ""
1108
 
1109
  #: inc/core/classes/parts/class-part-email.php:8
1110
- #: inc/core/classes/parts/class-part-email.php:30
1111
  msgid "Email"
1112
  msgstr ""
1113
 
@@ -1115,15 +1306,15 @@ msgstr ""
1115
  msgid "For formatted email addresses. The '@' symbol is required."
1116
  msgstr ""
1117
 
1118
- #: inc/core/classes/parts/class-part-email.php:54
1119
  msgid "Confirm Email"
1120
  msgstr ""
1121
 
1122
- #: inc/core/classes/parts/class-part-email.php:154
1123
  msgid "Not a valid e-mail address."
1124
  msgstr ""
1125
 
1126
- #: inc/core/classes/parts/class-part-email.php:158
1127
  msgid "Email and confirmation email are not matching."
1128
  msgstr ""
1129
 
@@ -1140,7 +1331,7 @@ msgstr ""
1140
  msgid "I accept terms and conditions."
1141
  msgstr ""
1142
 
1143
- #: inc/core/classes/parts/class-part-legal.php:120
1144
  msgid "Please accept terms before proceeding."
1145
  msgstr ""
1146
 
@@ -1174,12 +1365,12 @@ msgstr ""
1174
  msgid "Confirm Number"
1175
  msgstr ""
1176
 
1177
- #: inc/core/classes/parts/class-part-number.php:188
1178
  msgid "This field does not match minimum and maximum allowed value."
1179
  msgstr ""
1180
 
1181
- #: inc/core/classes/parts/class-part-number.php:196
1182
- #: inc/core/classes/parts/class-part-phone.php:169
1183
  msgid "Number and confirmation number are not matching."
1184
  msgstr ""
1185
 
@@ -1208,8 +1399,8 @@ msgstr ""
1208
  msgid "For radio buttons allowing one selection."
1209
  msgstr ""
1210
 
1211
- #: inc/core/classes/parts/class-part-radio.php:172
1212
- #: inc/core/classes/parts/class-part-radio.php:178
1213
  msgid "Radio value is not valid."
1214
  msgstr ""
1215
 
@@ -1239,16 +1430,16 @@ msgstr ""
1239
  msgid "Loved it"
1240
  msgstr ""
1241
 
1242
- #: inc/core/classes/parts/class-part-rating.php:158
1243
  msgid "Value should be between 1 and 5."
1244
  msgstr ""
1245
 
1246
- #: inc/core/classes/parts/class-part-rating.php:182
1247
  #: inc/core/templates/parts/frontend-rating-yesno.php:9
1248
  msgid "No"
1249
  msgstr ""
1250
 
1251
- #: inc/core/classes/parts/class-part-rating.php:184
1252
  #: inc/core/templates/parts/frontend-rating-yesno.php:17
1253
  msgid "Yes"
1254
  msgstr ""
@@ -1279,10 +1470,10 @@ msgstr ""
1279
  msgid "For selecting one option from a long list. Default value adjustable."
1280
  msgstr ""
1281
 
1282
- #: inc/core/classes/parts/class-part-select.php:175
1283
- #: inc/core/classes/parts/class-part-select.php:181
1284
- #: inc/core/classes/parts/class-part-title.php:167
1285
- #: inc/core/classes/parts/class-part-title.php:173
1286
  msgid "Selected value is not valid."
1287
  msgstr ""
1288
 
@@ -1302,7 +1493,7 @@ msgstr ""
1302
  msgid "For radios and checkboxes displaying in a grid of rows and columns."
1303
  msgstr ""
1304
 
1305
- #: inc/core/classes/parts/class-part-table.php:240
1306
  msgid "Radio values are not valid."
1307
  msgstr ""
1308
 
@@ -1310,27 +1501,27 @@ msgstr ""
1310
  msgid "For displaying personal honorifics."
1311
  msgstr ""
1312
 
1313
- #: inc/core/classes/parts/class-part-title.php:102
1314
  msgid "Mr."
1315
  msgstr ""
1316
 
1317
- #: inc/core/classes/parts/class-part-title.php:103
1318
  msgid "Mrs."
1319
  msgstr ""
1320
 
1321
- #: inc/core/classes/parts/class-part-title.php:104
1322
  msgid "Ms."
1323
  msgstr ""
1324
 
1325
- #: inc/core/classes/parts/class-part-title.php:105
1326
  msgid "Miss"
1327
  msgstr ""
1328
 
1329
- #: inc/core/classes/parts/class-part-title.php:106
1330
  msgid "Prof."
1331
  msgstr ""
1332
 
1333
- #: inc/core/classes/parts/class-part-title.php:107
1334
  msgid "Dr."
1335
  msgstr ""
1336
 
@@ -1343,1356 +1534,1356 @@ msgstr ""
1343
  msgid "For formatted website URLs."
1344
  msgstr ""
1345
 
1346
- #: inc/core/classes/parts/class-part-website-url.php:130
1347
  msgid "Not a valid URL."
1348
  msgstr ""
1349
 
1350
- #: inc/core/helpers/helper-activation.php:45
1351
  msgid "Sample Contact Form"
1352
  msgstr ""
1353
 
1354
- #: inc/core/helpers/helper-activation.php:56
1355
  msgid "First name"
1356
  msgstr ""
1357
 
1358
- #: inc/core/helpers/helper-activation.php:61
1359
  msgid "Last name"
1360
  msgstr ""
1361
 
1362
- #: inc/core/helpers/helper-activation.php:66
1363
  msgid "What's your reason for contacting us?"
1364
  msgstr ""
1365
 
1366
- #: inc/core/helpers/helper-activation.php:69
1367
  msgid "Need technical help"
1368
  msgstr ""
1369
 
1370
- #: inc/core/helpers/helper-activation.php:72
1371
  msgid "Want to suggest a feature"
1372
  msgstr ""
1373
 
1374
- #: inc/core/helpers/helper-activation.php:75
1375
  msgid "Asking about my account"
1376
  msgstr ""
1377
 
1378
- #: inc/core/helpers/helper-activation.php:81
1379
  msgid "Age"
1380
  msgstr ""
1381
 
1382
- #: inc/core/helpers/helper-activation.php:86
1383
  msgid "Your message"
1384
  msgstr ""
1385
 
1386
- #: inc/core/helpers/helper-activation.php:118
1387
  msgid "It would be great if I could use Google ReCaptcha instead of Honeypot."
1388
  msgstr ""
1389
 
1390
- #: inc/core/helpers/helper-activation.php:125
1391
  msgid "How do I embed a HappyForm in my sidebar?"
1392
  msgstr ""
1393
 
1394
- #: inc/core/helpers/helper-activation.php:132
1395
  msgid "How can I access my premium upgrade credentials?"
1396
  msgstr ""
1397
 
1398
- #: inc/core/helpers/helper-form-templates.php:859
1399
  msgid "Get my location"
1400
  msgstr ""
1401
 
1402
- #: inc/core/helpers/helper-form-templates.php:859
1403
  msgid "Fetching location…"
1404
  msgstr ""
1405
 
1406
- #: inc/core/helpers/helper-form-templates.php:870
1407
  msgid "January"
1408
  msgstr ""
1409
 
1410
- #: inc/core/helpers/helper-form-templates.php:871
1411
  msgid "February"
1412
  msgstr ""
1413
 
1414
- #: inc/core/helpers/helper-form-templates.php:872
1415
  msgid "March"
1416
  msgstr ""
1417
 
1418
- #: inc/core/helpers/helper-form-templates.php:873
1419
  msgid "April"
1420
  msgstr ""
1421
 
1422
- #: inc/core/helpers/helper-form-templates.php:874
1423
  msgid "May"
1424
  msgstr ""
1425
 
1426
- #: inc/core/helpers/helper-form-templates.php:875
1427
  msgid "June"
1428
  msgstr ""
1429
 
1430
- #: inc/core/helpers/helper-form-templates.php:876
1431
  msgid "July"
1432
  msgstr ""
1433
 
1434
- #: inc/core/helpers/helper-form-templates.php:877
1435
  msgid "August"
1436
  msgstr ""
1437
 
1438
- #: inc/core/helpers/helper-form-templates.php:878
1439
  msgid "September"
1440
  msgstr ""
1441
 
1442
- #: inc/core/helpers/helper-form-templates.php:879
1443
  msgid "October"
1444
  msgstr ""
1445
 
1446
- #: inc/core/helpers/helper-form-templates.php:880
1447
  msgid "November"
1448
  msgstr ""
1449
 
1450
- #: inc/core/helpers/helper-form-templates.php:881
1451
  msgid "December"
1452
  msgstr ""
1453
 
1454
- #: inc/core/helpers/helper-form-templates.php:912
1455
- #: inc/core/helpers/helper-misc.php:260
1456
  msgid "Andorra"
1457
  msgstr ""
1458
 
1459
- #: inc/core/helpers/helper-form-templates.php:913
1460
- #: inc/core/helpers/helper-misc.php:478
1461
  msgid "United Arab Emirates"
1462
  msgstr ""
1463
 
1464
- #: inc/core/helpers/helper-form-templates.php:914
1465
- #: inc/core/helpers/helper-misc.php:256
1466
  msgid "Afghanistan"
1467
  msgstr ""
1468
 
1469
- #: inc/core/helpers/helper-form-templates.php:915
1470
- #: inc/core/helpers/helper-misc.php:264
1471
  msgid "Antigua and Barbuda"
1472
  msgstr ""
1473
 
1474
- #: inc/core/helpers/helper-form-templates.php:916
1475
- #: inc/core/helpers/helper-misc.php:262
1476
  msgid "Anguilla"
1477
  msgstr ""
1478
 
1479
- #: inc/core/helpers/helper-form-templates.php:917
1480
- #: inc/core/helpers/helper-misc.php:257
1481
  msgid "Albania"
1482
  msgstr ""
1483
 
1484
- #: inc/core/helpers/helper-form-templates.php:918
1485
- #: inc/core/helpers/helper-misc.php:266
1486
  msgid "Armenia"
1487
  msgstr ""
1488
 
1489
- #: inc/core/helpers/helper-form-templates.php:919
1490
- #: inc/core/helpers/helper-misc.php:261
1491
  msgid "Angola"
1492
  msgstr ""
1493
 
1494
- #: inc/core/helpers/helper-form-templates.php:920
1495
- #: inc/core/helpers/helper-misc.php:263
1496
  msgid "Antarctica"
1497
  msgstr ""
1498
 
1499
- #: inc/core/helpers/helper-form-templates.php:921
1500
- #: inc/core/helpers/helper-misc.php:265
1501
  msgid "Argentina"
1502
  msgstr ""
1503
 
1504
- #: inc/core/helpers/helper-form-templates.php:922
1505
- #: inc/core/helpers/helper-misc.php:259
1506
  msgid "American Samoa"
1507
  msgstr ""
1508
 
1509
- #: inc/core/helpers/helper-form-templates.php:923
1510
- #: inc/core/helpers/helper-misc.php:269
1511
  msgid "Austria"
1512
  msgstr ""
1513
 
1514
- #: inc/core/helpers/helper-form-templates.php:924
1515
- #: inc/core/helpers/helper-misc.php:268
1516
  msgid "Australia"
1517
  msgstr ""
1518
 
1519
- #: inc/core/helpers/helper-form-templates.php:925
1520
- #: inc/core/helpers/helper-misc.php:267
1521
  msgid "Aruba"
1522
  msgstr ""
1523
 
1524
- #: inc/core/helpers/helper-form-templates.php:926
1525
- #: inc/core/helpers/helper-misc.php:270
1526
  msgid "Azerbaijan"
1527
  msgstr ""
1528
 
1529
- #: inc/core/helpers/helper-form-templates.php:927
1530
  msgid "Bosnia and Herzegovina"
1531
  msgstr ""
1532
 
1533
- #: inc/core/helpers/helper-form-templates.php:928
1534
- #: inc/core/helpers/helper-misc.php:274
1535
  msgid "Barbados"
1536
  msgstr ""
1537
 
1538
- #: inc/core/helpers/helper-form-templates.php:929
1539
- #: inc/core/helpers/helper-misc.php:273
1540
  msgid "Bangladesh"
1541
  msgstr ""
1542
 
1543
- #: inc/core/helpers/helper-form-templates.php:930
1544
- #: inc/core/helpers/helper-misc.php:276
1545
  msgid "Belgium"
1546
  msgstr ""
1547
 
1548
- #: inc/core/helpers/helper-form-templates.php:931
1549
- #: inc/core/helpers/helper-misc.php:289
1550
  msgid "Burkina Faso"
1551
  msgstr ""
1552
 
1553
- #: inc/core/helpers/helper-form-templates.php:932
1554
- #: inc/core/helpers/helper-misc.php:288
1555
  msgid "Bulgaria"
1556
  msgstr ""
1557
 
1558
- #: inc/core/helpers/helper-form-templates.php:933
1559
- #: inc/core/helpers/helper-misc.php:272
1560
  msgid "Bahrain"
1561
  msgstr ""
1562
 
1563
- #: inc/core/helpers/helper-form-templates.php:934
1564
- #: inc/core/helpers/helper-misc.php:290
1565
  msgid "Burundi"
1566
  msgstr ""
1567
 
1568
- #: inc/core/helpers/helper-form-templates.php:935
1569
- #: inc/core/helpers/helper-misc.php:278
1570
  msgid "Benin"
1571
  msgstr ""
1572
 
1573
- #: inc/core/helpers/helper-form-templates.php:936
1574
  msgid "Saint Barthelemy"
1575
  msgstr ""
1576
 
1577
- #: inc/core/helpers/helper-form-templates.php:937
1578
- #: inc/core/helpers/helper-misc.php:279
1579
  msgid "Bermuda"
1580
  msgstr ""
1581
 
1582
- #: inc/core/helpers/helper-form-templates.php:938
1583
- #: inc/core/helpers/helper-misc.php:287
1584
  msgid "Brunei Darussalam"
1585
  msgstr ""
1586
 
1587
- #: inc/core/helpers/helper-form-templates.php:939
1588
- #: inc/core/helpers/helper-misc.php:281
1589
  msgid "Bolivia"
1590
  msgstr ""
1591
 
1592
- #: inc/core/helpers/helper-form-templates.php:940
1593
- #: inc/core/helpers/helper-misc.php:285
1594
  msgid "Brazil"
1595
  msgstr ""
1596
 
1597
- #: inc/core/helpers/helper-form-templates.php:941
1598
- #: inc/core/helpers/helper-misc.php:271
1599
  msgid "Bahamas"
1600
  msgstr ""
1601
 
1602
- #: inc/core/helpers/helper-form-templates.php:942
1603
- #: inc/core/helpers/helper-misc.php:280
1604
  msgid "Bhutan"
1605
  msgstr ""
1606
 
1607
- #: inc/core/helpers/helper-form-templates.php:943
1608
- #: inc/core/helpers/helper-misc.php:283
1609
  msgid "Botswana"
1610
  msgstr ""
1611
 
1612
- #: inc/core/helpers/helper-form-templates.php:944
1613
- #: inc/core/helpers/helper-misc.php:275
1614
  msgid "Belarus"
1615
  msgstr ""
1616
 
1617
- #: inc/core/helpers/helper-form-templates.php:945
1618
- #: inc/core/helpers/helper-misc.php:277
1619
  msgid "Belize"
1620
  msgstr ""
1621
 
1622
- #: inc/core/helpers/helper-form-templates.php:946
1623
- #: inc/core/helpers/helper-misc.php:293
1624
  msgid "Canada"
1625
  msgstr ""
1626
 
1627
- #: inc/core/helpers/helper-form-templates.php:947
1628
  msgid "Congo, The Democratic Republic of the"
1629
  msgstr ""
1630
 
1631
- #: inc/core/helpers/helper-form-templates.php:948
1632
- #: inc/core/helpers/helper-misc.php:296
1633
  msgid "Central African Republic"
1634
  msgstr ""
1635
 
1636
- #: inc/core/helpers/helper-form-templates.php:949
1637
- #: inc/core/helpers/helper-misc.php:304
1638
  msgid "Congo"
1639
  msgstr ""
1640
 
1641
- #: inc/core/helpers/helper-form-templates.php:950
1642
- #: inc/core/helpers/helper-misc.php:461
1643
  msgid "Switzerland"
1644
  msgstr ""
1645
 
1646
- #: inc/core/helpers/helper-form-templates.php:951
1647
- #: inc/core/helpers/helper-misc.php:306
1648
  msgid "Cook Islands"
1649
  msgstr ""
1650
 
1651
- #: inc/core/helpers/helper-form-templates.php:952
1652
- #: inc/core/helpers/helper-misc.php:298
1653
  msgid "Chile"
1654
  msgstr ""
1655
 
1656
- #: inc/core/helpers/helper-form-templates.php:953
1657
- #: inc/core/helpers/helper-misc.php:292
1658
  msgid "Cameroon"
1659
  msgstr ""
1660
 
1661
- #: inc/core/helpers/helper-form-templates.php:954
1662
- #: inc/core/helpers/helper-misc.php:299
1663
  msgid "China"
1664
  msgstr ""
1665
 
1666
- #: inc/core/helpers/helper-form-templates.php:955
1667
- #: inc/core/helpers/helper-misc.php:302
1668
  msgid "Colombia"
1669
  msgstr ""
1670
 
1671
- #: inc/core/helpers/helper-form-templates.php:956
1672
- #: inc/core/helpers/helper-misc.php:307
1673
  msgid "Costa Rica"
1674
  msgstr ""
1675
 
1676
- #: inc/core/helpers/helper-form-templates.php:957
1677
- #: inc/core/helpers/helper-misc.php:310
1678
  msgid "Cuba"
1679
  msgstr ""
1680
 
1681
- #: inc/core/helpers/helper-form-templates.php:958
1682
- #: inc/core/helpers/helper-misc.php:294
1683
  msgid "Cape Verde"
1684
  msgstr ""
1685
 
1686
- #: inc/core/helpers/helper-form-templates.php:959
1687
- #: inc/core/helpers/helper-misc.php:311
1688
  msgid "Cyprus"
1689
  msgstr ""
1690
 
1691
- #: inc/core/helpers/helper-form-templates.php:960
1692
- #: inc/core/helpers/helper-misc.php:312
1693
  msgid "Czech Republic"
1694
  msgstr ""
1695
 
1696
- #: inc/core/helpers/helper-form-templates.php:961
1697
- #: inc/core/helpers/helper-misc.php:337
1698
  msgid "Germany"
1699
  msgstr ""
1700
 
1701
- #: inc/core/helpers/helper-form-templates.php:962
1702
- #: inc/core/helpers/helper-misc.php:314
1703
  msgid "Djibouti"
1704
  msgstr ""
1705
 
1706
- #: inc/core/helpers/helper-form-templates.php:963
1707
- #: inc/core/helpers/helper-misc.php:313
1708
  msgid "Denmark"
1709
  msgstr ""
1710
 
1711
- #: inc/core/helpers/helper-form-templates.php:964
1712
- #: inc/core/helpers/helper-misc.php:315
1713
  msgid "Dominica"
1714
  msgstr ""
1715
 
1716
- #: inc/core/helpers/helper-form-templates.php:965
1717
- #: inc/core/helpers/helper-misc.php:316
1718
  msgid "Dominican Republic"
1719
  msgstr ""
1720
 
1721
- #: inc/core/helpers/helper-form-templates.php:966
1722
- #: inc/core/helpers/helper-misc.php:258
1723
  msgid "Algeria"
1724
  msgstr ""
1725
 
1726
- #: inc/core/helpers/helper-form-templates.php:967
1727
- #: inc/core/helpers/helper-misc.php:318
1728
  msgid "Ecuador"
1729
  msgstr ""
1730
 
1731
- #: inc/core/helpers/helper-form-templates.php:968
1732
- #: inc/core/helpers/helper-misc.php:323
1733
  msgid "Estonia"
1734
  msgstr ""
1735
 
1736
- #: inc/core/helpers/helper-form-templates.php:969
1737
- #: inc/core/helpers/helper-misc.php:319
1738
  msgid "Egypt"
1739
  msgstr ""
1740
 
1741
- #: inc/core/helpers/helper-form-templates.php:970
1742
- #: inc/core/helpers/helper-misc.php:322
1743
  msgid "Eritrea"
1744
  msgstr ""
1745
 
1746
- #: inc/core/helpers/helper-form-templates.php:971
1747
- #: inc/core/helpers/helper-misc.php:452
1748
  msgid "Spain"
1749
  msgstr ""
1750
 
1751
- #: inc/core/helpers/helper-form-templates.php:972
1752
- #: inc/core/helpers/helper-misc.php:324
1753
  msgid "Ethiopia"
1754
  msgstr ""
1755
 
1756
- #: inc/core/helpers/helper-form-templates.php:973
1757
- #: inc/core/helpers/helper-misc.php:328
1758
  msgid "Finland"
1759
  msgstr ""
1760
 
1761
- #: inc/core/helpers/helper-form-templates.php:974
1762
- #: inc/core/helpers/helper-misc.php:327
1763
  msgid "Fiji"
1764
  msgstr ""
1765
 
1766
- #: inc/core/helpers/helper-form-templates.php:975
1767
- #: inc/core/helpers/helper-misc.php:325
1768
  msgid "Falkland Islands (Malvinas)"
1769
  msgstr ""
1770
 
1771
- #: inc/core/helpers/helper-form-templates.php:976
1772
- #: inc/core/helpers/helper-misc.php:396
1773
  msgid "Micronesia, Federated States of"
1774
  msgstr ""
1775
 
1776
- #: inc/core/helpers/helper-form-templates.php:977
1777
- #: inc/core/helpers/helper-misc.php:326
1778
  msgid "Faroe Islands"
1779
  msgstr ""
1780
 
1781
- #: inc/core/helpers/helper-form-templates.php:978
1782
- #: inc/core/helpers/helper-misc.php:329
1783
  msgid "France"
1784
  msgstr ""
1785
 
1786
- #: inc/core/helpers/helper-form-templates.php:979
1787
- #: inc/core/helpers/helper-misc.php:334
1788
  msgid "Gabon"
1789
  msgstr ""
1790
 
1791
- #: inc/core/helpers/helper-form-templates.php:980
1792
- #: inc/core/helpers/helper-misc.php:479
1793
  msgid "United Kingdom"
1794
  msgstr ""
1795
 
1796
- #: inc/core/helpers/helper-form-templates.php:981
1797
- #: inc/core/helpers/helper-misc.php:342
1798
  msgid "Grenada"
1799
  msgstr ""
1800
 
1801
- #: inc/core/helpers/helper-form-templates.php:982
1802
- #: inc/core/helpers/helper-misc.php:336
1803
  msgid "Georgia"
1804
  msgstr ""
1805
 
1806
- #: inc/core/helpers/helper-form-templates.php:983
1807
- #: inc/core/helpers/helper-misc.php:338
1808
  msgid "Ghana"
1809
  msgstr ""
1810
 
1811
- #: inc/core/helpers/helper-form-templates.php:984
1812
- #: inc/core/helpers/helper-misc.php:339
1813
  msgid "Gibraltar"
1814
  msgstr ""
1815
 
1816
- #: inc/core/helpers/helper-form-templates.php:985
1817
- #: inc/core/helpers/helper-misc.php:341
1818
  msgid "Greenland"
1819
  msgstr ""
1820
 
1821
- #: inc/core/helpers/helper-form-templates.php:986
1822
- #: inc/core/helpers/helper-misc.php:335
1823
  msgid "Gambia"
1824
  msgstr ""
1825
 
1826
- #: inc/core/helpers/helper-form-templates.php:987
1827
- #: inc/core/helpers/helper-misc.php:346
1828
  msgid "Guinea"
1829
  msgstr ""
1830
 
1831
- #: inc/core/helpers/helper-form-templates.php:988
1832
- #: inc/core/helpers/helper-misc.php:340
1833
  msgid "Greece"
1834
  msgstr ""
1835
 
1836
- #: inc/core/helpers/helper-form-templates.php:989
1837
- #: inc/core/helpers/helper-misc.php:345
1838
  msgid "Guatemala"
1839
  msgstr ""
1840
 
1841
- #: inc/core/helpers/helper-form-templates.php:990
1842
- #: inc/core/helpers/helper-misc.php:344
1843
  msgid "Guam"
1844
  msgstr ""
1845
 
1846
- #: inc/core/helpers/helper-form-templates.php:991
1847
  msgid "Guinea-bissau"
1848
  msgstr ""
1849
 
1850
- #: inc/core/helpers/helper-form-templates.php:992
1851
- #: inc/core/helpers/helper-misc.php:348
1852
  msgid "Guyana"
1853
  msgstr ""
1854
 
1855
- #: inc/core/helpers/helper-form-templates.php:993
1856
- #: inc/core/helpers/helper-misc.php:353
1857
  msgid "Hong Kong"
1858
  msgstr ""
1859
 
1860
- #: inc/core/helpers/helper-form-templates.php:994
1861
- #: inc/core/helpers/helper-misc.php:352
1862
  msgid "Honduras"
1863
  msgstr ""
1864
 
1865
- #: inc/core/helpers/helper-form-templates.php:995
1866
  msgid "Croatia"
1867
  msgstr ""
1868
 
1869
- #: inc/core/helpers/helper-form-templates.php:996
1870
- #: inc/core/helpers/helper-misc.php:349
1871
  msgid "Haiti"
1872
  msgstr ""
1873
 
1874
- #: inc/core/helpers/helper-form-templates.php:997
1875
- #: inc/core/helpers/helper-misc.php:354
1876
  msgid "Hungary"
1877
  msgstr ""
1878
 
1879
- #: inc/core/helpers/helper-form-templates.php:998
1880
- #: inc/core/helpers/helper-misc.php:357
1881
  msgid "Indonesia"
1882
  msgstr ""
1883
 
1884
- #: inc/core/helpers/helper-form-templates.php:999
1885
- #: inc/core/helpers/helper-misc.php:360
1886
  msgid "Ireland"
1887
  msgstr ""
1888
 
1889
- #: inc/core/helpers/helper-form-templates.php:1000
1890
- #: inc/core/helpers/helper-misc.php:361
1891
  msgid "Israel"
1892
  msgstr ""
1893
 
1894
- #: inc/core/helpers/helper-form-templates.php:1001
1895
- #: inc/core/helpers/helper-misc.php:356
1896
  msgid "India"
1897
  msgstr ""
1898
 
1899
- #: inc/core/helpers/helper-form-templates.php:1002
1900
- #: inc/core/helpers/helper-misc.php:359
1901
  msgid "Iraq"
1902
  msgstr ""
1903
 
1904
- #: inc/core/helpers/helper-form-templates.php:1003
1905
  msgid "Iran, Islamic Republic of"
1906
  msgstr ""
1907
 
1908
- #: inc/core/helpers/helper-form-templates.php:1004
1909
- #: inc/core/helpers/helper-misc.php:355
1910
  msgid "Iceland"
1911
  msgstr ""
1912
 
1913
- #: inc/core/helpers/helper-form-templates.php:1005
1914
- #: inc/core/helpers/helper-misc.php:362
1915
  msgid "Italy"
1916
  msgstr ""
1917
 
1918
- #: inc/core/helpers/helper-form-templates.php:1006
1919
- #: inc/core/helpers/helper-misc.php:363
1920
  msgid "Jamaica"
1921
  msgstr ""
1922
 
1923
- #: inc/core/helpers/helper-form-templates.php:1007
1924
- #: inc/core/helpers/helper-misc.php:365
1925
  msgid "Jordan"
1926
  msgstr ""
1927
 
1928
- #: inc/core/helpers/helper-form-templates.php:1008
1929
- #: inc/core/helpers/helper-misc.php:364
1930
  msgid "Japan"
1931
  msgstr ""
1932
 
1933
- #: inc/core/helpers/helper-form-templates.php:1009
1934
- #: inc/core/helpers/helper-misc.php:367
1935
  msgid "Kenya"
1936
  msgstr ""
1937
 
1938
- #: inc/core/helpers/helper-form-templates.php:1010
1939
- #: inc/core/helpers/helper-misc.php:372
1940
  msgid "Kyrgyzstan"
1941
  msgstr ""
1942
 
1943
- #: inc/core/helpers/helper-form-templates.php:1011
1944
- #: inc/core/helpers/helper-misc.php:291
1945
  msgid "Cambodia"
1946
  msgstr ""
1947
 
1948
- #: inc/core/helpers/helper-form-templates.php:1012
1949
- #: inc/core/helpers/helper-misc.php:368
1950
  msgid "Kiribati"
1951
  msgstr ""
1952
 
1953
- #: inc/core/helpers/helper-form-templates.php:1013
1954
- #: inc/core/helpers/helper-misc.php:303
1955
  msgid "Comoros"
1956
  msgstr ""
1957
 
1958
- #: inc/core/helpers/helper-form-templates.php:1014
1959
- #: inc/core/helpers/helper-misc.php:435
1960
  msgid "Saint Kitts and Nevis"
1961
  msgstr ""
1962
 
1963
- #: inc/core/helpers/helper-form-templates.php:1015
1964
  msgid "Korea Democratic Peoples Republic of"
1965
  msgstr ""
1966
 
1967
- #: inc/core/helpers/helper-form-templates.php:1016
1968
  msgid "Korea Republic of"
1969
  msgstr ""
1970
 
1971
- #: inc/core/helpers/helper-form-templates.php:1017
1972
- #: inc/core/helpers/helper-misc.php:371
1973
  msgid "Kuwait"
1974
  msgstr ""
1975
 
1976
- #: inc/core/helpers/helper-form-templates.php:1018
1977
- #: inc/core/helpers/helper-misc.php:295
1978
  msgid "Cayman Islands"
1979
  msgstr ""
1980
 
1981
- #: inc/core/helpers/helper-form-templates.php:1019
1982
  msgid "Lao Peoples Democratic Republic"
1983
  msgstr ""
1984
 
1985
- #: inc/core/helpers/helper-form-templates.php:1020
1986
- #: inc/core/helpers/helper-misc.php:375
1987
  msgid "Lebanon"
1988
  msgstr ""
1989
 
1990
- #: inc/core/helpers/helper-form-templates.php:1021
1991
- #: inc/core/helpers/helper-misc.php:436
1992
  msgid "Saint Lucia"
1993
  msgstr ""
1994
 
1995
- #: inc/core/helpers/helper-form-templates.php:1022
1996
- #: inc/core/helpers/helper-misc.php:379
1997
  msgid "Liechtenstein"
1998
  msgstr ""
1999
 
2000
- #: inc/core/helpers/helper-form-templates.php:1023
2001
- #: inc/core/helpers/helper-misc.php:453
2002
  msgid "Sri Lanka"
2003
  msgstr ""
2004
 
2005
- #: inc/core/helpers/helper-form-templates.php:1024
2006
- #: inc/core/helpers/helper-misc.php:377
2007
  msgid "Liberia"
2008
  msgstr ""
2009
 
2010
- #: inc/core/helpers/helper-form-templates.php:1025
2011
- #: inc/core/helpers/helper-misc.php:376
2012
  msgid "Lesotho"
2013
  msgstr ""
2014
 
2015
- #: inc/core/helpers/helper-form-templates.php:1026
2016
- #: inc/core/helpers/helper-misc.php:380
2017
  msgid "Lithuania"
2018
  msgstr ""
2019
 
2020
- #: inc/core/helpers/helper-form-templates.php:1027
2021
- #: inc/core/helpers/helper-misc.php:381
2022
  msgid "Luxembourg"
2023
  msgstr ""
2024
 
2025
- #: inc/core/helpers/helper-form-templates.php:1028
2026
- #: inc/core/helpers/helper-misc.php:374
2027
  msgid "Latvia"
2028
  msgstr ""
2029
 
2030
- #: inc/core/helpers/helper-form-templates.php:1029
2031
- #: inc/core/helpers/helper-misc.php:378
2032
  msgid "Libyan Arab Jamahiriya"
2033
  msgstr ""
2034
 
2035
- #: inc/core/helpers/helper-form-templates.php:1030
2036
- #: inc/core/helpers/helper-misc.php:401
2037
  msgid "Morocco"
2038
  msgstr ""
2039
 
2040
- #: inc/core/helpers/helper-form-templates.php:1031
2041
- #: inc/core/helpers/helper-misc.php:398
2042
  msgid "Monaco"
2043
  msgstr ""
2044
 
2045
- #: inc/core/helpers/helper-form-templates.php:1032
2046
- #: inc/core/helpers/helper-misc.php:397
2047
  msgid "Moldova, Republic of"
2048
  msgstr ""
2049
 
2050
- #: inc/core/helpers/helper-form-templates.php:1033
2051
  msgid "Montenegro"
2052
  msgstr ""
2053
 
2054
- #: inc/core/helpers/helper-form-templates.php:1034
2055
- #: inc/core/helpers/helper-misc.php:384
2056
  msgid "Madagascar"
2057
  msgstr ""
2058
 
2059
- #: inc/core/helpers/helper-form-templates.php:1035
2060
- #: inc/core/helpers/helper-misc.php:390
2061
  msgid "Marshall Islands"
2062
  msgstr ""
2063
 
2064
- #: inc/core/helpers/helper-form-templates.php:1036
2065
- #: inc/core/helpers/helper-misc.php:383
2066
  msgid "Macedonia, The Former Yugoslav Republic of"
2067
  msgstr ""
2068
 
2069
- #: inc/core/helpers/helper-form-templates.php:1037
2070
- #: inc/core/helpers/helper-misc.php:388
2071
  msgid "Mali"
2072
  msgstr ""
2073
 
2074
- #: inc/core/helpers/helper-form-templates.php:1038
2075
- #: inc/core/helpers/helper-misc.php:403
2076
  msgid "Myanmar"
2077
  msgstr ""
2078
 
2079
- #: inc/core/helpers/helper-form-templates.php:1039
2080
- #: inc/core/helpers/helper-misc.php:399
2081
  msgid "Mongolia"
2082
  msgstr ""
2083
 
2084
- #: inc/core/helpers/helper-form-templates.php:1040
2085
- #: inc/core/helpers/helper-misc.php:382
2086
  msgid "Macau"
2087
  msgstr ""
2088
 
2089
- #: inc/core/helpers/helper-form-templates.php:1041
2090
- #: inc/core/helpers/helper-misc.php:416
2091
  msgid "Northern Mariana Islands"
2092
  msgstr ""
2093
 
2094
- #: inc/core/helpers/helper-form-templates.php:1042
2095
- #: inc/core/helpers/helper-misc.php:392
2096
  msgid "Mauritania"
2097
  msgstr ""
2098
 
2099
- #: inc/core/helpers/helper-form-templates.php:1043
2100
- #: inc/core/helpers/helper-misc.php:400
2101
  msgid "Montserrat"
2102
  msgstr ""
2103
 
2104
- #: inc/core/helpers/helper-form-templates.php:1044
2105
- #: inc/core/helpers/helper-misc.php:389
2106
  msgid "Malta"
2107
  msgstr ""
2108
 
2109
- #: inc/core/helpers/helper-form-templates.php:1045
2110
- #: inc/core/helpers/helper-misc.php:393
2111
  msgid "Mauritius"
2112
  msgstr ""
2113
 
2114
- #: inc/core/helpers/helper-form-templates.php:1046
2115
- #: inc/core/helpers/helper-misc.php:387
2116
  msgid "Maldives"
2117
  msgstr ""
2118
 
2119
- #: inc/core/helpers/helper-form-templates.php:1047
2120
- #: inc/core/helpers/helper-misc.php:385
2121
  msgid "Malawi"
2122
  msgstr ""
2123
 
2124
- #: inc/core/helpers/helper-form-templates.php:1048
2125
- #: inc/core/helpers/helper-misc.php:395
2126
  msgid "Mexico"
2127
  msgstr ""
2128
 
2129
- #: inc/core/helpers/helper-form-templates.php:1049
2130
- #: inc/core/helpers/helper-misc.php:386
2131
  msgid "Malaysia"
2132
  msgstr ""
2133
 
2134
- #: inc/core/helpers/helper-form-templates.php:1050
2135
- #: inc/core/helpers/helper-misc.php:402
2136
  msgid "Mozambique"
2137
  msgstr ""
2138
 
2139
- #: inc/core/helpers/helper-form-templates.php:1051
2140
- #: inc/core/helpers/helper-misc.php:404
2141
  msgid "Namibia"
2142
  msgstr ""
2143
 
2144
- #: inc/core/helpers/helper-form-templates.php:1052
2145
- #: inc/core/helpers/helper-misc.php:409
2146
  msgid "New Caledonia"
2147
  msgstr ""
2148
 
2149
- #: inc/core/helpers/helper-form-templates.php:1053
2150
- #: inc/core/helpers/helper-misc.php:412
2151
  msgid "Niger"
2152
  msgstr ""
2153
 
2154
- #: inc/core/helpers/helper-form-templates.php:1054
2155
- #: inc/core/helpers/helper-misc.php:413
2156
  msgid "Nigeria"
2157
  msgstr ""
2158
 
2159
- #: inc/core/helpers/helper-form-templates.php:1055
2160
- #: inc/core/helpers/helper-misc.php:411
2161
  msgid "Nicaragua"
2162
  msgstr ""
2163
 
2164
- #: inc/core/helpers/helper-form-templates.php:1056
2165
- #: inc/core/helpers/helper-misc.php:407
2166
  msgid "Netherlands"
2167
  msgstr ""
2168
 
2169
- #: inc/core/helpers/helper-form-templates.php:1057
2170
- #: inc/core/helpers/helper-misc.php:417
2171
  msgid "Norway"
2172
  msgstr ""
2173
 
2174
- #: inc/core/helpers/helper-form-templates.php:1058
2175
- #: inc/core/helpers/helper-misc.php:406
2176
  msgid "Nepal"
2177
  msgstr ""
2178
 
2179
- #: inc/core/helpers/helper-form-templates.php:1059
2180
- #: inc/core/helpers/helper-misc.php:405
2181
  msgid "Nauru"
2182
  msgstr ""
2183
 
2184
- #: inc/core/helpers/helper-form-templates.php:1060
2185
- #: inc/core/helpers/helper-misc.php:414
2186
  msgid "Niue"
2187
  msgstr ""
2188
 
2189
- #: inc/core/helpers/helper-form-templates.php:1061
2190
- #: inc/core/helpers/helper-misc.php:410
2191
  msgid "New Zealand"
2192
  msgstr ""
2193
 
2194
- #: inc/core/helpers/helper-form-templates.php:1062
2195
- #: inc/core/helpers/helper-misc.php:418
2196
  msgid "Oman"
2197
  msgstr ""
2198
 
2199
- #: inc/core/helpers/helper-form-templates.php:1063
2200
- #: inc/core/helpers/helper-misc.php:421
2201
  msgid "Panama"
2202
  msgstr ""
2203
 
2204
- #: inc/core/helpers/helper-form-templates.php:1064
2205
- #: inc/core/helpers/helper-misc.php:424
2206
  msgid "Peru"
2207
  msgstr ""
2208
 
2209
- #: inc/core/helpers/helper-form-templates.php:1065
2210
- #: inc/core/helpers/helper-misc.php:332
2211
  msgid "French Polynesia"
2212
  msgstr ""
2213
 
2214
- #: inc/core/helpers/helper-form-templates.php:1066
2215
- #: inc/core/helpers/helper-misc.php:422
2216
  msgid "Papua New Guinea"
2217
  msgstr ""
2218
 
2219
- #: inc/core/helpers/helper-form-templates.php:1067
2220
- #: inc/core/helpers/helper-misc.php:425
2221
  msgid "Philippines"
2222
  msgstr ""
2223
 
2224
- #: inc/core/helpers/helper-form-templates.php:1068
2225
- #: inc/core/helpers/helper-misc.php:419
2226
  msgid "Pakistan"
2227
  msgstr ""
2228
 
2229
- #: inc/core/helpers/helper-form-templates.php:1069
2230
- #: inc/core/helpers/helper-misc.php:427
2231
  msgid "Poland"
2232
  msgstr ""
2233
 
2234
- #: inc/core/helpers/helper-form-templates.php:1070
2235
  msgid "Saint Pierre and Miquelon"
2236
  msgstr ""
2237
 
2238
- #: inc/core/helpers/helper-form-templates.php:1071
2239
- #: inc/core/helpers/helper-misc.php:426
2240
  msgid "Pitcairn"
2241
  msgstr ""
2242
 
2243
- #: inc/core/helpers/helper-form-templates.php:1072
2244
- #: inc/core/helpers/helper-misc.php:428
2245
  msgid "Portugal"
2246
  msgstr ""
2247
 
2248
- #: inc/core/helpers/helper-form-templates.php:1073
2249
- #: inc/core/helpers/helper-misc.php:420
2250
  msgid "Palau"
2251
  msgstr ""
2252
 
2253
- #: inc/core/helpers/helper-form-templates.php:1074
2254
- #: inc/core/helpers/helper-misc.php:423
2255
  msgid "Paraguay"
2256
  msgstr ""
2257
 
2258
- #: inc/core/helpers/helper-form-templates.php:1075
2259
- #: inc/core/helpers/helper-misc.php:430
2260
  msgid "Qatar"
2261
  msgstr ""
2262
 
2263
- #: inc/core/helpers/helper-form-templates.php:1076
2264
- #: inc/core/helpers/helper-misc.php:432
2265
  msgid "Romania"
2266
  msgstr ""
2267
 
2268
- #: inc/core/helpers/helper-form-templates.php:1077
2269
  msgid "Serbia"
2270
  msgstr ""
2271
 
2272
- #: inc/core/helpers/helper-form-templates.php:1078
2273
- #: inc/core/helpers/helper-misc.php:433
2274
  msgid "Russian Federation"
2275
  msgstr ""
2276
 
2277
- #: inc/core/helpers/helper-form-templates.php:1079
2278
- #: inc/core/helpers/helper-misc.php:434
2279
  msgid "Rwanda"
2280
  msgstr ""
2281
 
2282
- #: inc/core/helpers/helper-form-templates.php:1080
2283
- #: inc/core/helpers/helper-misc.php:441
2284
  msgid "Saudi Arabia"
2285
  msgstr ""
2286
 
2287
- #: inc/core/helpers/helper-form-templates.php:1081
2288
- #: inc/core/helpers/helper-misc.php:448
2289
  msgid "Solomon Islands"
2290
  msgstr ""
2291
 
2292
- #: inc/core/helpers/helper-form-templates.php:1082
2293
- #: inc/core/helpers/helper-misc.php:443
2294
  msgid "Seychelles"
2295
  msgstr ""
2296
 
2297
- #: inc/core/helpers/helper-form-templates.php:1083
2298
- #: inc/core/helpers/helper-misc.php:456
2299
  msgid "Sudan"
2300
  msgstr ""
2301
 
2302
- #: inc/core/helpers/helper-form-templates.php:1084
2303
- #: inc/core/helpers/helper-misc.php:460
2304
  msgid "Sweden"
2305
  msgstr ""
2306
 
2307
- #: inc/core/helpers/helper-form-templates.php:1085
2308
- #: inc/core/helpers/helper-misc.php:445
2309
  msgid "Singapore"
2310
  msgstr ""
2311
 
2312
- #: inc/core/helpers/helper-form-templates.php:1086
2313
  msgid "Saint Helena"
2314
  msgstr ""
2315
 
2316
- #: inc/core/helpers/helper-form-templates.php:1087
2317
- #: inc/core/helpers/helper-misc.php:447
2318
  msgid "Slovenia"
2319
  msgstr ""
2320
 
2321
- #: inc/core/helpers/helper-form-templates.php:1088
2322
  msgid "Slovakia"
2323
  msgstr ""
2324
 
2325
- #: inc/core/helpers/helper-form-templates.php:1089
2326
- #: inc/core/helpers/helper-misc.php:444
2327
  msgid "Sierra Leone"
2328
  msgstr ""
2329
 
2330
- #: inc/core/helpers/helper-form-templates.php:1090
2331
- #: inc/core/helpers/helper-misc.php:439
2332
  msgid "San Marino"
2333
  msgstr ""
2334
 
2335
- #: inc/core/helpers/helper-form-templates.php:1091
2336
- #: inc/core/helpers/helper-misc.php:442
2337
  msgid "Senegal"
2338
  msgstr ""
2339
 
2340
- #: inc/core/helpers/helper-form-templates.php:1092
2341
- #: inc/core/helpers/helper-misc.php:449
2342
  msgid "Somalia"
2343
  msgstr ""
2344
 
2345
- #: inc/core/helpers/helper-form-templates.php:1093
2346
- #: inc/core/helpers/helper-misc.php:457
2347
  msgid "Suriname"
2348
  msgstr ""
2349
 
2350
- #: inc/core/helpers/helper-form-templates.php:1094
2351
- #: inc/core/helpers/helper-misc.php:440
2352
  msgid "Sao Tome and Principe"
2353
  msgstr ""
2354
 
2355
- #: inc/core/helpers/helper-form-templates.php:1095
2356
- #: inc/core/helpers/helper-misc.php:320
2357
  msgid "El Salvador"
2358
  msgstr ""
2359
 
2360
- #: inc/core/helpers/helper-form-templates.php:1096
2361
- #: inc/core/helpers/helper-misc.php:462
2362
  msgid "Syrian Arab Republic"
2363
  msgstr ""
2364
 
2365
- #: inc/core/helpers/helper-form-templates.php:1097
2366
- #: inc/core/helpers/helper-misc.php:459
2367
  msgid "Swaziland"
2368
  msgstr ""
2369
 
2370
- #: inc/core/helpers/helper-form-templates.php:1098
2371
- #: inc/core/helpers/helper-misc.php:474
2372
  msgid "Turks and Caicos Islands"
2373
  msgstr ""
2374
 
2375
- #: inc/core/helpers/helper-form-templates.php:1099
2376
- #: inc/core/helpers/helper-misc.php:297
2377
  msgid "Chad"
2378
  msgstr ""
2379
 
2380
- #: inc/core/helpers/helper-form-templates.php:1100
2381
- #: inc/core/helpers/helper-misc.php:467
2382
  msgid "Togo"
2383
  msgstr ""
2384
 
2385
- #: inc/core/helpers/helper-form-templates.php:1101
2386
- #: inc/core/helpers/helper-misc.php:466
2387
  msgid "Thailand"
2388
  msgstr ""
2389
 
2390
- #: inc/core/helpers/helper-form-templates.php:1102
2391
- #: inc/core/helpers/helper-misc.php:464
2392
  msgid "Tajikistan"
2393
  msgstr ""
2394
 
2395
- #: inc/core/helpers/helper-form-templates.php:1103
2396
- #: inc/core/helpers/helper-misc.php:468
2397
  msgid "Tokelau"
2398
  msgstr ""
2399
 
2400
- #: inc/core/helpers/helper-form-templates.php:1104
2401
  msgid "Timor-leste"
2402
  msgstr ""
2403
 
2404
- #: inc/core/helpers/helper-form-templates.php:1105
2405
- #: inc/core/helpers/helper-misc.php:473
2406
  msgid "Turkmenistan"
2407
  msgstr ""
2408
 
2409
- #: inc/core/helpers/helper-form-templates.php:1106
2410
- #: inc/core/helpers/helper-misc.php:471
2411
  msgid "Tunisia"
2412
  msgstr ""
2413
 
2414
- #: inc/core/helpers/helper-form-templates.php:1107
2415
- #: inc/core/helpers/helper-misc.php:469
2416
  msgid "Tonga"
2417
  msgstr ""
2418
 
2419
- #: inc/core/helpers/helper-form-templates.php:1108
2420
- #: inc/core/helpers/helper-misc.php:472
2421
  msgid "Turkey"
2422
  msgstr ""
2423
 
2424
- #: inc/core/helpers/helper-form-templates.php:1109
2425
- #: inc/core/helpers/helper-misc.php:470
2426
  msgid "Trinidad and Tobago"
2427
  msgstr ""
2428
 
2429
- #: inc/core/helpers/helper-form-templates.php:1110
2430
- #: inc/core/helpers/helper-misc.php:475
2431
  msgid "Tuvalu"
2432
  msgstr ""
2433
 
2434
- #: inc/core/helpers/helper-form-templates.php:1111
2435
- #: inc/core/helpers/helper-misc.php:463
2436
  msgid "Taiwan, Province of China"
2437
  msgstr ""
2438
 
2439
- #: inc/core/helpers/helper-form-templates.php:1112
2440
- #: inc/core/helpers/helper-misc.php:465
2441
  msgid "Tanzania, United Republic of"
2442
  msgstr ""
2443
 
2444
- #: inc/core/helpers/helper-form-templates.php:1113
2445
- #: inc/core/helpers/helper-misc.php:477
2446
  msgid "Ukraine"
2447
  msgstr ""
2448
 
2449
- #: inc/core/helpers/helper-form-templates.php:1114
2450
- #: inc/core/helpers/helper-misc.php:476
2451
  msgid "Uganda"
2452
  msgstr ""
2453
 
2454
- #: inc/core/helpers/helper-form-templates.php:1115
2455
- #: inc/core/helpers/helper-misc.php:480
2456
  msgid "United States"
2457
  msgstr ""
2458
 
2459
- #: inc/core/helpers/helper-form-templates.php:1116
2460
- #: inc/core/helpers/helper-misc.php:482
2461
  msgid "Uruguay"
2462
  msgstr ""
2463
 
2464
- #: inc/core/helpers/helper-form-templates.php:1117
2465
- #: inc/core/helpers/helper-misc.php:483
2466
  msgid "Uzbekistan"
2467
  msgstr ""
2468
 
2469
- #: inc/core/helpers/helper-form-templates.php:1118
2470
- #: inc/core/helpers/helper-misc.php:437
2471
  msgid "Saint Vincent and the Grenadines"
2472
  msgstr ""
2473
 
2474
- #: inc/core/helpers/helper-form-templates.php:1119
2475
- #: inc/core/helpers/helper-misc.php:485
2476
  msgid "Venezuela"
2477
  msgstr ""
2478
 
2479
- #: inc/core/helpers/helper-form-templates.php:1120
2480
  msgid "Virgin Islands, British"
2481
  msgstr ""
2482
 
2483
- #: inc/core/helpers/helper-form-templates.php:1121
2484
  msgid "Virgin Islands, U.S."
2485
  msgstr ""
2486
 
2487
- #: inc/core/helpers/helper-form-templates.php:1122
2488
- #: inc/core/helpers/helper-misc.php:486
2489
  msgid "Vietnam"
2490
  msgstr ""
2491
 
2492
- #: inc/core/helpers/helper-form-templates.php:1123
2493
- #: inc/core/helpers/helper-misc.php:484
2494
  msgid "Vanuatu"
2495
  msgstr ""
2496
 
2497
- #: inc/core/helpers/helper-form-templates.php:1124
2498
  msgid "Wallis and Futuna"
2499
  msgstr ""
2500
 
2501
- #: inc/core/helpers/helper-form-templates.php:1125
2502
- #: inc/core/helpers/helper-misc.php:438
2503
  msgid "Samoa"
2504
  msgstr ""
2505
 
2506
- #: inc/core/helpers/helper-form-templates.php:1126
2507
- #: inc/core/helpers/helper-misc.php:491
2508
  msgid "Yemen"
2509
  msgstr ""
2510
 
2511
- #: inc/core/helpers/helper-form-templates.php:1127
2512
- #: inc/core/helpers/helper-misc.php:394
2513
  msgid "Mayotte"
2514
  msgstr ""
2515
 
2516
- #: inc/core/helpers/helper-form-templates.php:1128
2517
- #: inc/core/helpers/helper-misc.php:450
2518
  msgid "South Africa"
2519
  msgstr ""
2520
 
2521
- #: inc/core/helpers/helper-form-templates.php:1129
2522
- #: inc/core/helpers/helper-misc.php:493
2523
  msgid "Zambia"
2524
  msgstr ""
2525
 
2526
- #: inc/core/helpers/helper-form-templates.php:1130
2527
- #: inc/core/helpers/helper-misc.php:494
2528
  msgid "Zimbabwe"
2529
  msgstr ""
2530
 
2531
- #: inc/core/helpers/helper-misc.php:202
2532
  msgid "How are we doing? Please rate"
2533
  msgstr ""
2534
 
2535
- #: inc/core/helpers/helper-misc.php:202
2536
  msgid "on"
2537
  msgstr ""
2538
 
2539
- #: inc/core/helpers/helper-misc.php:202
2540
  msgid "to help us spread the word."
2541
  msgstr ""
2542
 
2543
- #: inc/core/helpers/helper-misc.php:282
2544
  msgid "Bosnia and Herzegowina"
2545
  msgstr ""
2546
 
2547
- #: inc/core/helpers/helper-misc.php:284
2548
  msgid "Bouvet Island"
2549
  msgstr ""
2550
 
2551
- #: inc/core/helpers/helper-misc.php:286
2552
  msgid "British Indian Ocean Territory"
2553
  msgstr ""
2554
 
2555
- #: inc/core/helpers/helper-misc.php:300
2556
  msgid "Christmas Island"
2557
  msgstr ""
2558
 
2559
- #: inc/core/helpers/helper-misc.php:301
2560
  msgid "Cocos (Keeling) Islands"
2561
  msgstr ""
2562
 
2563
- #: inc/core/helpers/helper-misc.php:305
2564
  msgid "Congo, the Democratic Republic of the"
2565
  msgstr ""
2566
 
2567
- #: inc/core/helpers/helper-misc.php:308
2568
  msgid "Ivory Coast"
2569
  msgstr ""
2570
 
2571
- #: inc/core/helpers/helper-misc.php:309
2572
  msgid "Croatia (Hrvatska)"
2573
  msgstr ""
2574
 
2575
- #: inc/core/helpers/helper-misc.php:317
2576
  msgid "East Timor"
2577
  msgstr ""
2578
 
2579
- #: inc/core/helpers/helper-misc.php:321
2580
  msgid "Equatorial Guinea"
2581
  msgstr ""
2582
 
2583
- #: inc/core/helpers/helper-misc.php:330
2584
  msgid "France Metropolitan"
2585
  msgstr ""
2586
 
2587
- #: inc/core/helpers/helper-misc.php:331
2588
  msgid "French Guiana"
2589
  msgstr ""
2590
 
2591
- #: inc/core/helpers/helper-misc.php:333
2592
  msgid "French Southern Territories"
2593
  msgstr ""
2594
 
2595
- #: inc/core/helpers/helper-misc.php:343
2596
  msgid "Guadeloupe"
2597
  msgstr ""
2598
 
2599
- #: inc/core/helpers/helper-misc.php:347
2600
  msgid "Guinea-Bissau"
2601
  msgstr ""
2602
 
2603
- #: inc/core/helpers/helper-misc.php:350
2604
  msgid "Heard and Mc Donald Islands"
2605
  msgstr ""
2606
 
2607
- #: inc/core/helpers/helper-misc.php:351
2608
  msgid "Holy See (Vatican City State)"
2609
  msgstr ""
2610
 
2611
- #: inc/core/helpers/helper-misc.php:358
2612
  msgid "Iran (Islamic Republic of)"
2613
  msgstr ""
2614
 
2615
- #: inc/core/helpers/helper-misc.php:366
2616
  msgid "Kazakhstan"
2617
  msgstr ""
2618
 
2619
- #: inc/core/helpers/helper-misc.php:369
2620
  msgid "Korea, Democratic People's Republic of"
2621
  msgstr ""
2622
 
2623
- #: inc/core/helpers/helper-misc.php:370
2624
  msgid "Korea, Republic of"
2625
  msgstr ""
2626
 
2627
- #: inc/core/helpers/helper-misc.php:373
2628
  msgid "Lao, People's Democratic Republic"
2629
  msgstr ""
2630
 
2631
- #: inc/core/helpers/helper-misc.php:391
2632
  msgid "Martinique"
2633
  msgstr ""
2634
 
2635
- #: inc/core/helpers/helper-misc.php:408
2636
  msgid "Netherlands Antilles"
2637
  msgstr ""
2638
 
2639
- #: inc/core/helpers/helper-misc.php:415
2640
  msgid "Norfolk Island"
2641
  msgstr ""
2642
 
2643
- #: inc/core/helpers/helper-misc.php:429
2644
  msgid "Puerto Rico"
2645
  msgstr ""
2646
 
2647
- #: inc/core/helpers/helper-misc.php:431
2648
  msgid "Reunion"
2649
  msgstr ""
2650
 
2651
- #: inc/core/helpers/helper-misc.php:446
2652
  msgid "Slovakia (Slovak Republic)"
2653
  msgstr ""
2654
 
2655
- #: inc/core/helpers/helper-misc.php:451
2656
  msgid "South Georgia and the South Sandwich Islands"
2657
  msgstr ""
2658
 
2659
- #: inc/core/helpers/helper-misc.php:454
2660
  msgid "St. Helena"
2661
  msgstr ""
2662
 
2663
- #: inc/core/helpers/helper-misc.php:455
2664
  msgid "St. Pierre and Miquelon"
2665
  msgstr ""
2666
 
2667
- #: inc/core/helpers/helper-misc.php:458
2668
  msgid "Svalbard and Jan Mayen Islands"
2669
  msgstr ""
2670
 
2671
- #: inc/core/helpers/helper-misc.php:481
2672
  msgid "United States Minor Outlying Islands"
2673
  msgstr ""
2674
 
2675
- #: inc/core/helpers/helper-misc.php:487
2676
  msgid "Virgin Islands (British)"
2677
  msgstr ""
2678
 
2679
- #: inc/core/helpers/helper-misc.php:488
2680
  msgid "Virgin Islands (U.S.)"
2681
  msgstr ""
2682
 
2683
- #: inc/core/helpers/helper-misc.php:489
2684
  msgid "Wallis and Futuna Islands"
2685
  msgstr ""
2686
 
2687
- #: inc/core/helpers/helper-misc.php:490
2688
  msgid "Western Sahara"
2689
  msgstr ""
2690
 
2691
- #: inc/core/helpers/helper-misc.php:492
2692
  msgid "Yugoslavia"
2693
  msgstr ""
2694
 
2695
- #: inc/core/helpers/helper-misc.php:688
2696
  msgid "Response #%s"
2697
  msgstr ""
2698
 
@@ -2704,11 +2895,11 @@ msgstr ""
2704
  msgid "Insert"
2705
  msgstr ""
2706
 
2707
- #: inc/core/templates/admin-message-edit.php:31
2708
  msgid "Previous response"
2709
  msgstr ""
2710
 
2711
- #: inc/core/templates/admin-message-edit.php:33
2712
  msgid "Next response"
2713
  msgstr ""
2714
 
@@ -2722,11 +2913,6 @@ msgid ""
2722
  "and to share some data about your usage with"
2723
  msgstr ""
2724
 
2725
- #: inc/core/templates/admin-tracking.php:15
2726
- #: inc/core/templates/customize-form-setup.php:17
2727
- msgid "Email address"
2728
- msgstr ""
2729
-
2730
  #: inc/core/templates/admin-tracking.php:17
2731
  msgid "Allow and set up HappyForms"
2732
  msgstr ""
@@ -2739,6 +2925,14 @@ msgstr ""
2739
  msgid "continue"
2740
  msgstr ""
2741
 
 
 
 
 
 
 
 
 
2742
  #: inc/core/templates/customize-form-build.php:4
2743
  msgid "Form name"
2744
  msgstr ""
@@ -2799,161 +2993,12 @@ msgstr ""
2799
  msgid "Search parts"
2800
  msgstr ""
2801
 
2802
- #: inc/core/templates/customize-form-setup.php:4
2803
- msgid "Confirmation message"
2804
- msgstr ""
2805
-
2806
- #: inc/core/templates/customize-form-setup.php:12
2807
- msgid "Receive submission alerts"
2808
- msgstr ""
2809
-
2810
- #: inc/core/templates/customize-form-setup.php:21
2811
- #: inc/core/templates/customize-form-setup.php:43
2812
- msgid "Email subject"
2813
- msgstr ""
2814
-
2815
- #: inc/core/templates/customize-form-setup.php:27
2816
- msgid "Include mark and reply link"
2817
- msgstr ""
2818
-
2819
- #: inc/core/templates/customize-form-setup.php:34
2820
- msgid "Send confirmation email"
2821
- msgstr ""
2822
-
2823
- #: inc/core/templates/customize-form-setup.php:39
2824
- msgid "Email display name"
2825
- msgstr ""
2826
-
2827
- #: inc/core/templates/customize-form-setup.php:47
2828
- msgid "Email content"
2829
- msgstr ""
2830
-
2831
- #: inc/core/templates/customize-form-setup.php:54
2832
- msgid "On complete redirect link"
2833
- msgstr ""
2834
-
2835
- #: inc/core/templates/customize-form-setup.php:58
2836
- msgid "Submit button label"
2837
- msgstr ""
2838
-
2839
- #: inc/core/templates/customize-form-setup.php:64
2840
- msgid "Spam prevention"
2841
- msgstr ""
2842
-
2843
- #: inc/core/templates/customize-form-setup.php:70
2844
- msgid "Use"
2845
- msgstr ""
2846
-
2847
- #: inc/core/templates/customize-form-setup.php:70
2848
- msgid "Google ReCaptcha"
2849
- msgstr ""
2850
-
2851
- #: inc/core/templates/customize-form-setup.php:74
2852
- msgid "ReCaptcha site key"
2853
- msgstr ""
2854
-
2855
- #: inc/core/templates/customize-form-setup.php:78
2856
- msgid "ReCaptcha secret key"
2857
- msgstr ""
2858
-
2859
- #: inc/core/templates/customize-form-setup.php:86
2860
- msgid "Save responses for this form"
2861
- msgstr ""
2862
-
2863
- #: inc/core/templates/customize-form-setup.php:92
2864
- msgid "Add identifying number to responses"
2865
- msgstr ""
2866
-
2867
- #: inc/core/templates/customize-form-setup.php:97
2868
- msgid "Start counter from"
2869
- msgstr ""
2870
-
2871
- #: inc/core/templates/customize-form-setup.php:102
2872
- #: inc/core/templates/parts/customize-number.php:72
2873
- msgid "Prefix"
2874
- msgstr ""
2875
-
2876
- #: inc/core/templates/customize-form-setup.php:106
2877
- msgid "Suffix"
2878
- msgstr ""
2879
-
2880
- #: inc/core/templates/customize-form-setup.php:114
2881
- msgid "Preview values before submission"
2882
- msgstr ""
2883
-
2884
- #: inc/core/templates/customize-form-setup.php:119
2885
- msgid "Review button text"
2886
- msgstr ""
2887
-
2888
- #: inc/core/templates/customize-form-setup.php:126
2889
- msgid ""
2890
- "This is the message your users will see after succesfully submitting your "
2891
- "form."
2892
- msgstr ""
2893
-
2894
- #: inc/core/templates/customize-form-setup.php:129
2895
- msgid ""
2896
- "Add your email address here to receive a confirmation email for each form "
2897
- "response. You can add multiple email addresses by separating each address "
2898
- "with a comma."
2899
- msgstr ""
2900
-
2901
- #: inc/core/templates/customize-form-setup.php:132
2902
- msgid ""
2903
- "Each time a user submits a message, you'll receive an email with this "
2904
- "subject."
2905
- msgstr ""
2906
-
2907
- #: inc/core/templates/customize-form-setup.php:135
2908
- msgid ""
2909
- "If your form contains an email field, recipients will receive an email with "
2910
- "this content."
2911
- msgstr ""
2912
-
2913
- #: inc/core/templates/customize-form-setup.php:138
2914
- msgid ""
2915
- "If your form contains an email field, recipients will receive an email with "
2916
- "this sender name."
2917
- msgstr ""
2918
-
2919
- #: inc/core/templates/customize-form-setup.php:141
2920
- msgid ""
2921
- "If your form contains an email field, recipients will receive an email with "
2922
- "this subject."
2923
- msgstr ""
2924
-
2925
- #: inc/core/templates/customize-form-setup.php:144
2926
- msgid ""
2927
- "By default, recipients will be redirected to the post or page displaying "
2928
- "this form. To set a custom redirect webpage, add a link here."
2929
- msgstr ""
2930
-
2931
- #: inc/core/templates/customize-form-setup.php:147
2932
- msgid "Protect your form against bots by using HoneyPot security."
2933
- msgstr ""
2934
-
2935
- #: inc/core/templates/customize-form-setup.php:150
2936
- msgid "Protect your form against bots using your Google ReCaptcha credentials."
2937
- msgstr ""
2938
-
2939
- #: inc/core/templates/customize-form-setup.php:153
2940
- msgid "Keep recipients responses stored in your WordPress database."
2941
- msgstr ""
2942
-
2943
- #: inc/core/templates/customize-form-setup.php:156
2944
- msgid "Let your users review their submission before confirming it."
2945
- msgstr ""
2946
-
2947
- #: inc/core/templates/customize-form-setup.php:159
2948
- msgid "Tag responses with a unique, incremental identifier."
2949
- msgstr ""
2950
-
2951
- #: inc/core/templates/customize-form-setup.php:162
2952
- msgid "Your next submission will be tagged with this identifier."
2953
  msgstr ""
2954
 
2955
- #: inc/core/templates/customize-form-setup.php:165
2956
- msgid "Reply to your users and mark their submission as read in one click."
2957
  msgstr ""
2958
 
2959
  #: inc/core/templates/customize-form-steps.php:23
@@ -2969,18 +3014,6 @@ msgstr ""
2969
  msgid "of"
2970
  msgstr ""
2971
 
2972
- #: inc/core/templates/customize-form-style.php:31
2973
- msgid "Back"
2974
- msgstr ""
2975
-
2976
- #: inc/core/templates/customize-form-style.php:34
2977
- msgid "You are customizing"
2978
- msgstr ""
2979
-
2980
- #: inc/core/templates/customize-form-style.php:127
2981
- msgid "Add a unique HTML ID to your form. Write without a hash (#) character."
2982
- msgstr ""
2983
-
2984
  #: inc/core/templates/customize-header-actions.php:3
2985
  msgid "Save Form"
2986
  msgstr ""
@@ -3771,14 +3804,6 @@ msgstr ""
3771
  msgid "%d out of %d"
3772
  msgstr ""
3773
 
3774
- #: inc/core/templates/preview-form-edit.php:10
3775
- msgid ""
3776
- "This is a preview of your new HappyForm. Once you’ve finished building, you "
3777
- "can add this form to any Page, Post and Widget area. Have questions? <a "
3778
- "href=\"%s\" class=\"happyforms-ask-link\" target=\"_blank\">Ask for help in "
3779
- "our support forums.</a>"
3780
- msgstr ""
3781
-
3782
  #: inc/core/templates/preview-form-pencil.php:3
3783
  msgid "Click to edit this part."
3784
  msgstr ""
2
  # This file is distributed under the same license as the HappyForms package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: HappyForms 1.6.20\n"
6
  "Report-Msgid-Bugs-To: https://thethemefoundry.com/support/\n"
7
+ "POT-Creation-Date: 2019-02-12 07:53:28+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
13
  "Language-Team: The Theme Foundry\n"
14
  "X-Generator: grunt-wp-i18n 0.4.9\n"
15
 
16
+ #: inc/classes/class-happyforms.php:23
17
+ msgid "Don't miss out on these advanced features 🎉"
18
+ msgstr ""
19
+
20
+ #: inc/classes/class-happyforms.php:36
21
+ msgid "Allow folks to easily upload files to your forms."
22
+ msgstr ""
23
+
24
+ #: inc/classes/class-happyforms.php:37
25
+ msgid "Show and hide forms using a date and time scheduler."
26
+ msgstr ""
27
+
28
+ #: inc/classes/class-happyforms.php:38
29
+ msgid "Display your forms in a custom overlay / modal window."
30
+ msgstr ""
31
+
32
+ #: inc/classes/class-happyforms.php:39
33
+ msgid "Shuffle your form questions to create randomized surveys."
34
+ msgstr ""
35
+
36
+ #: inc/classes/class-happyforms.php:40
37
+ msgid "Secure individual forms with strong password protection."
38
+ msgstr ""
39
+
40
+ #: inc/classes/class-happyforms.php:41
41
+ msgid "Limit the number of responses each of your forms get."
42
+ msgstr ""
43
+
44
+ #: inc/classes/class-happyforms.php:43
45
+ msgid "Discover more benefits of upgrading"
46
+ msgstr ""
47
+
48
+ #: inc/classes/class-happyforms.php:58
49
+ msgid "HappyForms Upgrade"
50
+ msgstr ""
51
+
52
+ #: inc/classes/class-happyforms.php:59
53
+ msgid "Upgrade"
54
+ msgstr ""
55
+
56
  #. Plugin Name of the plugin/theme
57
  msgid "HappyForms"
58
  msgstr ""
78
  msgstr ""
79
 
80
  #: inc/core/classes/class-form-admin.php:155
81
+ #: inc/core/classes/class-form-controller.php:79
82
  msgid "View form"
83
  msgstr ""
84
 
110
  msgstr ""
111
 
112
  #: inc/core/classes/class-form-admin.php:171
113
+ #: inc/core/classes/class-wp-customize-form-manager.php:163
114
  msgid "Form saved."
115
  msgstr ""
116
 
193
  msgstr ""
194
 
195
  #: inc/core/classes/class-form-admin.php:374
196
+ #: inc/core/classes/class-message-admin.php:637
197
+ #: inc/core/classes/class-message-admin.php:925
198
  msgid "Trash"
199
  msgstr ""
200
 
202
  msgid "Form duplicated succesfully."
203
  msgstr ""
204
 
205
+ #: inc/core/classes/class-form-controller.php:74
206
  msgid "Forms"
207
  msgstr ""
208
 
209
+ #: inc/core/classes/class-form-controller.php:75
210
  #: inc/core/classes/class-message-admin.php:397
211
+ #: inc/core/classes/class-message-admin.php:910
212
  msgid "Form"
213
  msgstr ""
214
 
215
+ #: inc/core/classes/class-form-controller.php:76
216
+ #: inc/core/classes/class-form-controller.php:78
217
  msgid "Build form"
218
  msgstr ""
219
 
220
+ #: inc/core/classes/class-form-controller.php:77
221
  msgid "Edit form"
222
  msgstr ""
223
 
224
+ #: inc/core/classes/class-form-controller.php:80
225
  msgid "View forms"
226
  msgstr ""
227
 
228
+ #: inc/core/classes/class-form-controller.php:81
229
  msgid "Search Forms"
230
  msgstr ""
231
 
232
+ #: inc/core/classes/class-form-controller.php:82
233
  msgid "No form found"
234
  msgstr ""
235
 
236
+ #: inc/core/classes/class-form-controller.php:83
237
  msgid "No forms found in Trash"
238
  msgstr ""
239
 
240
+ #: inc/core/classes/class-form-controller.php:84
241
+ #: inc/core/classes/class-form-controller.php:85
242
+ #: inc/core/classes/class-happyforms-core.php:169
243
+ #: inc/core/classes/class-happyforms-core.php:170
244
  msgid "All Forms"
245
  msgstr ""
246
 
247
+ #: inc/core/classes/class-form-controller.php:184
248
  msgid "Untitled form"
249
  msgstr ""
250
 
251
+ #: inc/core/classes/class-form-controller.php:563
252
+ msgid " Copy"
253
+ msgstr ""
254
+
255
+ #: inc/core/classes/class-form-controller.php:742
256
+ #: inc/core/classes/class-message-controller.php:317
257
+ #: inc/core/classes/class-message-controller.php:417
258
+ #: inc/core/classes/class-message-controller.php:452
259
+ msgid "Your submission contains errors."
260
+ msgstr ""
261
+
262
+ #: inc/core/classes/class-form-part-library.php:182
263
+ msgid "Invalid data"
264
+ msgstr ""
265
+
266
+ #: inc/core/classes/class-form-part-library.php:189
267
+ msgid "Part definition not found"
268
+ msgstr ""
269
+
270
+ #: inc/core/classes/class-form-part-library.php:220
271
+ msgid "Missing validation callback for field %s"
272
+ msgstr ""
273
+
274
+ #: inc/core/classes/class-form-setup.php:60
275
+ #: inc/core/classes/class-form-setup.php:88
276
  msgid ""
277
  "Your message has been successfully sent. We appreciate you contacting us "
278
  "and we’ll be in touch soon."
279
  msgstr ""
280
 
281
+ #: inc/core/classes/class-form-setup.php:72
282
  msgid "You received a new message"
283
  msgstr ""
284
 
285
+ #: inc/core/classes/class-form-setup.php:84
286
  msgid "We received your message"
287
  msgstr ""
288
 
289
+ #: inc/core/classes/class-form-setup.php:104
290
+ msgid "(optional)"
291
+ msgstr ""
292
+
293
+ #: inc/core/classes/class-form-setup.php:108
294
  msgid "Submit Form"
295
  msgstr ""
296
 
297
+ #: inc/core/classes/class-form-setup.php:136
298
  msgid "Review submission"
299
  msgstr ""
300
 
301
+ #: inc/core/classes/class-form-setup.php:164
302
+ msgid "Confirmation message"
303
  msgstr ""
304
 
305
+ #: inc/core/classes/class-form-setup.php:165
306
+ msgid ""
307
+ "This is the message your users will see after succesfully submitting your "
308
+ "form."
 
309
  msgstr ""
310
 
311
+ #: inc/core/classes/class-form-setup.php:170
312
+ msgid "Receive submission alerts"
313
  msgstr ""
314
 
315
+ #: inc/core/classes/class-form-setup.php:175
316
+ #: inc/core/templates/admin-tracking.php:15
317
+ msgid "Email address"
318
  msgstr ""
319
 
320
+ #: inc/core/classes/class-form-setup.php:176
321
+ msgid ""
322
+ "Add your email address here to receive a confirmation email for each form "
323
+ "response. You can add multiple email addresses by separating each address "
324
+ "with a comma."
325
  msgstr ""
326
 
327
+ #: inc/core/classes/class-form-setup.php:181
328
+ #: inc/core/classes/class-form-setup.php:198
329
+ msgid "Email subject"
330
  msgstr ""
331
 
332
+ #: inc/core/classes/class-form-setup.php:182
333
+ msgid ""
334
+ "Each time a user submits a message, you'll receive an email with this "
335
+ "subject."
336
+ msgstr ""
337
+
338
+ #: inc/core/classes/class-form-setup.php:187
339
+ msgid "Send confirmation email"
340
+ msgstr ""
341
+
342
+ #: inc/core/classes/class-form-setup.php:192
343
+ msgid "Email display name"
344
+ msgstr ""
345
+
346
+ #: inc/core/classes/class-form-setup.php:193
347
+ msgid ""
348
+ "If your form contains an email field, recipients will receive an email with "
349
+ "this sender name."
350
+ msgstr ""
351
+
352
+ #: inc/core/classes/class-form-setup.php:199
353
+ msgid ""
354
+ "If your form contains an email field, recipients will receive an email with "
355
+ "this subject."
356
+ msgstr ""
357
+
358
+ #: inc/core/classes/class-form-setup.php:204
359
+ msgid "Email content"
360
+ msgstr ""
361
+
362
+ #: inc/core/classes/class-form-setup.php:205
363
+ msgid ""
364
+ "If your form contains an email field, recipients will receive an email with "
365
+ "this content."
366
+ msgstr ""
367
+
368
+ #: inc/core/classes/class-form-setup.php:210
369
+ msgid "Optional part label"
370
+ msgstr ""
371
+
372
+ #: inc/core/classes/class-form-setup.php:215
373
+ msgid "Submit button label"
374
+ msgstr ""
375
+
376
+ #: inc/core/classes/class-form-setup.php:220
377
+ msgid "Redirect on complete"
378
+ msgstr ""
379
+
380
+ #: inc/core/classes/class-form-setup.php:221
381
+ msgid ""
382
+ "By default, recipients will be redirected to the post or page displaying "
383
+ "this form. To set a custom redirect webpage, add a link here."
384
+ msgstr ""
385
+
386
+ #: inc/core/classes/class-form-setup.php:226
387
+ msgid "On complete redirect link"
388
+ msgstr ""
389
+
390
+ #: inc/core/classes/class-form-setup.php:231
391
+ msgid "Spam prevention"
392
+ msgstr ""
393
+
394
+ #: inc/core/classes/class-form-setup.php:232
395
+ msgid "Protect your form against bots by using HoneyPot security."
396
+ msgstr ""
397
+
398
+ #: inc/core/classes/class-form-setup.php:238
399
+ msgid ""
400
+ "Use <a href=\"%s\" target=\"_blank\" class=\"external\"> Google "
401
+ "ReCaptcha</a>"
402
+ msgstr ""
403
+
404
+ #: inc/core/classes/class-form-setup.php:241
405
+ msgid "Protect your form against bots using your Google ReCaptcha credentials."
406
+ msgstr ""
407
+
408
+ #: inc/core/classes/class-form-setup.php:246
409
+ msgid "ReCaptcha site key"
410
+ msgstr ""
411
+
412
+ #: inc/core/classes/class-form-setup.php:251
413
+ msgid "ReCaptcha secret key"
414
+ msgstr ""
415
+
416
+ #: inc/core/classes/class-form-setup.php:256
417
+ msgid "Save responses"
418
+ msgstr ""
419
+
420
+ #: inc/core/classes/class-form-setup.php:257
421
+ msgid "Keep recipients responses stored in your WordPress database."
422
+ msgstr ""
423
+
424
+ #: inc/core/classes/class-form-setup.php:262
425
+ msgid "Give each response an ID number"
426
+ msgstr ""
427
+
428
+ #: inc/core/classes/class-form-setup.php:263
429
+ msgid "Tag responses with a unique, incremental identifier."
430
+ msgstr ""
431
+
432
+ #: inc/core/classes/class-form-setup.php:268
433
+ msgid "Start counter from"
434
+ msgstr ""
435
+
436
+ #: inc/core/classes/class-form-setup.php:269
437
+ msgid "Your next submission will be tagged with this identifier."
438
+ msgstr ""
439
+
440
+ #: inc/core/classes/class-form-setup.php:275
441
+ #: inc/core/templates/parts/customize-number.php:72
442
+ msgid "Prefix"
443
+ msgstr ""
444
+
445
+ #: inc/core/classes/class-form-setup.php:280
446
+ msgid "Suffix"
447
+ msgstr ""
448
+
449
+ #: inc/core/classes/class-form-setup.php:285
450
+ msgid "Preview values before submission"
451
+ msgstr ""
452
+
453
+ #: inc/core/classes/class-form-setup.php:286
454
+ msgid "Let your users review their submission before confirming it."
455
+ msgstr ""
456
+
457
+ #: inc/core/classes/class-form-setup.php:291
458
+ msgid "Review button text"
459
+ msgstr ""
460
+
461
+ #: inc/core/classes/class-form-setup.php:397
462
+ msgid "Please review your submission..."
463
  msgstr ""
464
 
465
  #: inc/core/classes/class-form-styles.php:50
466
+ msgid "Left-to-right"
467
+ msgstr ""
468
+
469
+ #: inc/core/classes/class-form-styles.php:51
470
  msgid "Right-to-left"
471
  msgstr ""
472
 
473
+ #: inc/core/classes/class-form-styles.php:78
474
+ #: inc/core/classes/class-form-styles.php:146
475
+ #: inc/core/classes/class-form-styles.php:156
476
+ #: inc/core/classes/class-form-styles.php:259
477
+ #: inc/core/classes/class-form-styles.php:269
478
  msgid "Default"
479
  msgstr ""
480
 
481
+ #: inc/core/classes/class-form-styles.php:79
482
+ #: inc/core/classes/class-form-styles.php:145
483
+ #: inc/core/classes/class-form-styles.php:155
484
+ #: inc/core/classes/class-form-styles.php:268
485
  msgid "Narrow"
486
  msgstr ""
487
 
488
+ #: inc/core/classes/class-form-styles.php:80
489
+ #: inc/core/classes/class-form-styles.php:147
490
+ #: inc/core/classes/class-form-styles.php:157
491
+ #: inc/core/classes/class-form-styles.php:270
492
  msgid "Wide"
493
  msgstr ""
494
 
495
+ #: inc/core/classes/class-form-styles.php:88
496
+ #: inc/core/classes/class-form-styles.php:117
497
+ #: inc/core/classes/class-form-styles.php:240
498
  #: inc/core/templates/parts/customize-date.php:33
499
  #: inc/core/templates/parts/customize-date.php:57
500
  msgid "Show"
501
  msgstr ""
502
 
503
+ #: inc/core/classes/class-form-styles.php:89
504
+ #: inc/core/classes/class-form-styles.php:118
505
+ #: inc/core/classes/class-form-styles.php:241
506
  msgid "Hide"
507
  msgstr ""
508
 
509
+ #: inc/core/classes/class-form-styles.php:97
510
+ #: inc/core/classes/class-form-styles.php:171
511
+ #: inc/core/classes/class-form-styles.php:200
512
+ #: inc/core/classes/class-form-styles.php:220
513
+ #: inc/core/classes/class-form-styles.php:297
514
  #: inc/core/templates/parts/customize-address.php:11
515
  #: inc/core/templates/parts/customize-checkbox.php:11
516
  #: inc/core/templates/parts/customize-date.php:11
532
  msgid "Left"
533
  msgstr ""
534
 
 
 
 
 
 
 
 
 
535
  #: inc/core/classes/class-form-styles.php:98
536
  #: inc/core/classes/class-form-styles.php:172
537
  #: inc/core/classes/class-form-styles.php:201
538
  #: inc/core/classes/class-form-styles.php:221
539
  #: inc/core/classes/class-form-styles.php:298
540
+ msgid "Center"
541
  msgstr ""
542
 
543
+ #: inc/core/classes/class-form-styles.php:99
544
+ #: inc/core/classes/class-form-styles.php:173
545
+ #: inc/core/classes/class-form-styles.php:202
546
+ #: inc/core/classes/class-form-styles.php:222
547
+ #: inc/core/classes/class-form-styles.php:299
548
+ msgid "Right"
549
  msgstr ""
550
 
551
  #: inc/core/classes/class-form-styles.php:126
552
+ msgid "All sides"
553
  msgstr ""
554
 
555
+ #: inc/core/classes/class-form-styles.php:127
556
+ msgid "Bottom only"
 
557
  msgstr ""
558
 
559
  #: inc/core/classes/class-form-styles.php:135
560
  #: inc/core/classes/class-form-styles.php:249
561
+ msgid "Square"
562
  msgstr ""
563
 
564
  #: inc/core/classes/class-form-styles.php:136
565
  #: inc/core/classes/class-form-styles.php:250
566
+ msgid "Round"
567
  msgstr ""
568
 
569
+ #: inc/core/classes/class-form-styles.php:137
570
+ #: inc/core/classes/class-form-styles.php:251
571
+ msgid "Pill"
572
  msgstr ""
573
 
574
  #: inc/core/classes/class-form-styles.php:191
575
  #: inc/core/classes/class-form-styles.php:288
576
+ msgid "Normal"
577
+ msgstr ""
578
+
579
+ #: inc/core/classes/class-form-styles.php:192
580
+ #: inc/core/classes/class-form-styles.php:289
581
  msgid "Bold"
582
  msgstr ""
583
 
584
+ #: inc/core/classes/class-form-styles.php:260
585
  msgid "Full width"
586
  msgstr ""
587
 
588
+ #: inc/core/classes/class-form-styles.php:498
589
  msgid "Above form"
590
  msgstr ""
591
 
592
+ #: inc/core/classes/class-form-styles.php:499
593
  msgid "Below form"
594
  msgstr ""
595
 
596
+ #: inc/core/classes/class-form-styles.php:513
 
 
 
 
597
  msgid "General"
598
  msgstr ""
599
 
600
+ #: inc/core/classes/class-form-styles.php:518
601
+ #: inc/core/classes/class-form-styles.php:820
602
  #: inc/core/templates/parts/customize-address.php:78
603
  #: inc/core/templates/parts/customize-checkbox.php:67
604
  #: inc/core/templates/parts/customize-date.php:103
621
  msgid "Width"
622
  msgstr ""
623
 
624
+ #: inc/core/classes/class-form-styles.php:523
625
+ #: inc/core/classes/class-form-styles.php:825
626
  msgid "Padding"
627
  msgstr ""
628
 
629
+ #: inc/core/classes/class-form-styles.php:528
630
  msgid "Direction"
631
  msgstr ""
632
 
633
+ #: inc/core/classes/class-form-styles.php:533
634
  msgid "Display notices"
635
  msgstr ""
636
 
637
+ #: inc/core/classes/class-form-styles.php:538
638
  msgid "Disable submit button until form is valid"
639
  msgstr ""
640
 
641
+ #: inc/core/classes/class-form-styles.php:543
642
  msgid "Form HTML ID"
643
  msgstr ""
644
 
645
+ #: inc/core/classes/class-form-styles.php:545
646
+ msgid "Add a unique HTML ID to your form. Write without a hash (#) character."
647
+ msgstr ""
648
+
649
+ #: inc/core/classes/class-form-styles.php:549
650
+ #: inc/core/classes/class-form-styles.php:618
651
+ #: inc/core/classes/class-form-styles.php:687
652
+ #: inc/core/classes/class-form-styles.php:850
653
  msgid "Colors"
654
  msgstr ""
655
 
656
+ #: inc/core/classes/class-form-styles.php:553
657
  msgid "Primary"
658
  msgstr ""
659
 
660
+ #: inc/core/classes/class-form-styles.php:558
661
  msgid "Success"
662
  msgstr ""
663
 
664
+ #: inc/core/classes/class-form-styles.php:563
665
  msgid "Error"
666
  msgstr ""
667
 
668
+ #: inc/core/classes/class-form-styles.php:568
669
  msgid "Form title"
670
  msgstr ""
671
 
672
+ #: inc/core/classes/class-form-styles.php:573
673
  msgid "Display"
674
  msgstr ""
675
 
676
+ #: inc/core/classes/class-form-styles.php:578
677
+ #: inc/core/classes/class-form-styles.php:840
678
  msgid "Alignment"
679
  msgstr ""
680
 
681
+ #: inc/core/classes/class-form-styles.php:583
682
  msgid "Font size"
683
  msgstr ""
684
 
685
+ #: inc/core/classes/class-form-styles.php:588
686
  msgid "Part borders & spacing"
687
  msgstr ""
688
 
689
+ #: inc/core/classes/class-form-styles.php:593
690
+ #: inc/core/classes/class-form-styles.php:622
691
+ #: inc/core/classes/class-form-styles.php:810
692
+ #: inc/core/classes/class-form-styles.php:864
693
  msgid "Border"
694
  msgstr ""
695
 
696
+ #: inc/core/classes/class-form-styles.php:598
697
  msgid "Border location"
698
  msgstr ""
699
 
700
+ #: inc/core/classes/class-form-styles.php:603
701
+ #: inc/core/classes/class-form-styles.php:815
702
  msgid "Border radius"
703
  msgstr ""
704
 
705
+ #: inc/core/classes/class-form-styles.php:608
706
  msgid "Outer padding"
707
  msgstr ""
708
 
709
+ #: inc/core/classes/class-form-styles.php:613
710
  msgid "Inner padding"
711
  msgstr ""
712
 
713
+ #: inc/core/classes/class-form-styles.php:627
714
  msgid "Border on focus"
715
  msgstr ""
716
 
717
+ #: inc/core/classes/class-form-styles.php:632
718
+ #: inc/core/classes/class-form-styles.php:715
719
+ #: inc/core/classes/class-form-styles.php:740
720
+ #: inc/core/classes/class-form-styles.php:854
721
  msgid "Background"
722
  msgstr ""
723
 
724
+ #: inc/core/classes/class-form-styles.php:637
725
+ #: inc/core/classes/class-form-styles.php:725
726
+ #: inc/core/classes/class-form-styles.php:745
727
+ #: inc/core/classes/class-form-styles.php:859
728
  msgid "Background on focus"
729
  msgstr ""
730
 
731
+ #: inc/core/classes/class-form-styles.php:642
732
  msgid "Part labels & text"
733
  msgstr ""
734
 
735
+ #: inc/core/classes/class-form-styles.php:647
736
  msgid "Toggle placeholder on part focus"
737
  msgstr ""
738
 
739
+ #: inc/core/classes/class-form-styles.php:652
740
  msgid "Title alignment"
741
  msgstr ""
742
 
743
+ #: inc/core/classes/class-form-styles.php:657
744
  msgid "Title font size"
745
  msgstr ""
746
 
747
+ #: inc/core/classes/class-form-styles.php:662
748
  msgid "Title font weight"
749
  msgstr ""
750
 
751
+ #: inc/core/classes/class-form-styles.php:667
752
  msgid "Description alignment"
753
  msgstr ""
754
 
755
+ #: inc/core/classes/class-form-styles.php:672
756
  msgid "Description font size"
757
  msgstr ""
758
 
759
+ #: inc/core/classes/class-form-styles.php:677
760
+ msgid "Placeholder &amp; value alignment"
761
  msgstr ""
762
 
763
+ #: inc/core/classes/class-form-styles.php:682
764
  msgid "Value font size"
765
  msgstr ""
766
 
767
+ #: inc/core/classes/class-form-styles.php:691
 
 
 
 
768
  #: inc/core/classes/parts/class-part-title.php:8
769
  #: inc/core/classes/parts/class-part-title.php:30
770
  #: inc/core/templates/parts/customize-address.php:4
788
  msgid "Title"
789
  msgstr ""
790
 
791
+ #: inc/core/classes/class-form-styles.php:696
792
  msgid "Value"
793
  msgstr ""
794
 
795
+ #: inc/core/classes/class-form-styles.php:701
796
  #: inc/core/classes/parts/class-part-placeholder.php:8
797
  #: inc/core/templates/parts/customize-address.php:36
798
  #: inc/core/templates/parts/customize-email.php:36
806
  msgid "Placeholder"
807
  msgstr ""
808
 
809
+ #: inc/core/classes/class-form-styles.php:706
810
  msgid "Dropdowns"
811
  msgstr ""
812
 
813
+ #: inc/core/classes/class-form-styles.php:711
814
  msgid "Items"
815
  msgstr ""
816
 
817
+ #: inc/core/classes/class-form-styles.php:720
818
+ #: inc/core/classes/class-form-styles.php:869
819
  #: inc/core/classes/parts/class-part-multi-line-text.php:29
820
  #: inc/core/classes/parts/class-part-rich-text.php:31
821
  #: inc/core/classes/parts/class-part-single-line-text.php:29
823
  msgid "Text"
824
  msgstr ""
825
 
826
+ #: inc/core/classes/class-form-styles.php:730
827
+ #: inc/core/classes/class-form-styles.php:874
 
 
 
 
 
828
  msgid "Text focused"
829
  msgstr ""
830
 
831
+ #: inc/core/classes/class-form-styles.php:735
832
  msgid "Checkboxes & Radios"
833
  msgstr ""
834
 
835
+ #: inc/core/classes/class-form-styles.php:750
836
+ msgid "Checkmark"
 
 
 
 
 
 
 
 
837
  msgstr ""
838
 
839
+ #: inc/core/classes/class-form-styles.php:755
840
  #: inc/core/classes/parts/class-part-rating.php:9
841
  #: inc/core/classes/parts/class-part-rating.php:31
842
  msgid "Rating"
843
  msgstr ""
844
 
845
+ #: inc/core/classes/class-form-styles.php:760
846
  msgid "Rating star color"
847
  msgstr ""
848
 
849
+ #: inc/core/classes/class-form-styles.php:765
850
  msgid "Rating star color on hover"
851
  msgstr ""
852
 
853
+ #: inc/core/classes/class-form-styles.php:770
854
  msgid "Item background"
855
  msgstr ""
856
 
857
+ #: inc/core/classes/class-form-styles.php:775
858
  msgid "Item background on hover"
859
  msgstr ""
860
 
861
+ #: inc/core/classes/class-form-styles.php:780
862
  msgid "Tables"
863
  msgstr ""
864
 
865
+ #: inc/core/classes/class-form-styles.php:785
866
  msgid "Odd row primary"
867
  msgstr ""
868
 
869
+ #: inc/core/classes/class-form-styles.php:790
870
  msgid "Odd row secondary"
871
  msgstr ""
872
 
873
+ #: inc/core/classes/class-form-styles.php:795
874
  msgid "Even row primary"
875
  msgstr ""
876
 
877
+ #: inc/core/classes/class-form-styles.php:800
878
  msgid "Even row secondary"
879
  msgstr ""
880
 
881
+ #: inc/core/classes/class-form-styles.php:805
882
  msgid "Submit button"
883
  msgstr ""
884
 
885
+ #: inc/core/classes/class-form-styles.php:830
886
  msgid "Font Size"
887
  msgstr ""
888
 
889
+ #: inc/core/classes/class-form-styles.php:835
890
  msgid "Font Weight"
891
  msgstr ""
892
 
893
+ #: inc/core/classes/class-form-styles.php:845
894
  msgid "Make button a part of last input"
895
  msgstr ""
896
 
897
+ #: inc/core/classes/class-happyforms-core.php:158
898
  msgid "HappyForms Index"
899
  msgstr ""
900
 
901
+ #: inc/core/classes/class-happyforms-core.php:177
902
+ #: inc/core/classes/class-happyforms-core.php:178
903
  msgid "Add New"
904
  msgstr ""
905
 
906
+ #: inc/core/classes/class-happyforms-core.php:185
907
+ #: inc/core/classes/class-happyforms-core.php:186
908
  #: inc/core/classes/class-message-controller.php:208
909
  msgid "Responses"
910
  msgstr ""
911
 
912
+ #: inc/core/classes/class-happyforms-core.php:193
913
+ #: inc/core/classes/class-happyforms-core.php:194
914
  msgid "Welcome"
915
  msgstr ""
916
 
917
+ #: inc/core/classes/class-happyforms-core.php:315
918
  msgid "HappyForm"
919
  msgstr ""
920
 
921
+ #: inc/core/classes/class-happyforms-core.php:319
922
  msgid "New HappyForm"
923
  msgstr ""
924
 
925
+ #: inc/core/classes/class-happyforms-core.php:440
926
  msgid "Insert HappyForm"
927
  msgstr ""
928
 
929
+ #: inc/core/classes/class-happyforms-core.php:440
930
  msgid "Add HappyForms"
931
  msgstr ""
932
 
1036
  msgstr ""
1037
 
1038
  #: inc/core/classes/class-message-admin.php:394
1039
+ #: inc/core/classes/class-message-admin.php:774
1040
+ #: inc/core/classes/class-message-controller.php:654
1041
+ #: inc/core/classes/class-message-controller.php:844
1042
+ #: inc/core/classes/class-message-controller.php:919
1043
+ #: inc/core/templates/admin-message-edit.php:27
1044
  msgid "Tracking number"
1045
  msgstr ""
1046
 
1047
+ #: inc/core/classes/class-message-admin.php:563
1048
  msgid "All forms"
1049
  msgstr ""
1050
 
1051
+ #: inc/core/classes/class-message-admin.php:635
1052
+ #: inc/core/classes/class-message-admin.php:920
1053
  msgid "Mark read"
1054
  msgstr ""
1055
 
1056
+ #: inc/core/classes/class-message-admin.php:636
1057
+ #: inc/core/classes/class-message-admin.php:920
1058
  msgid "Mark unread"
1059
  msgstr ""
1060
 
1061
+ #: inc/core/classes/class-message-admin.php:641
1062
  msgid "Export to CSV"
1063
  msgstr ""
1064
 
1065
+ #: inc/core/classes/class-message-admin.php:709
1066
  msgid "View"
1067
  msgstr ""
1068
 
1069
+ #: inc/core/classes/class-message-admin.php:713
1070
  msgid "Delete Permanently"
1071
  msgstr ""
1072
 
1073
+ #: inc/core/classes/class-message-admin.php:895
1074
  msgid "Details"
1075
  msgstr ""
1076
 
1077
+ #: inc/core/classes/class-message-admin.php:915
1078
  msgid "Submitted on"
1079
  msgstr ""
1080
 
1081
+ #: inc/core/classes/class-message-admin.php:915
1082
  msgid "M j, Y @ H:i"
1083
  msgstr ""
1084
 
1085
+ #: inc/core/classes/class-message-admin.php:920
1086
  msgid "Status"
1087
  msgstr ""
1088
 
1089
+ #: inc/core/classes/class-message-admin.php:920
1090
  msgid "Read"
1091
  msgstr ""
1092
 
1093
+ #: inc/core/classes/class-message-admin.php:920
1094
  msgid "Unread"
1095
  msgstr ""
1096
 
1123
  msgid "All Responses"
1124
  msgstr ""
1125
 
1126
+ #: inc/core/classes/class-message-controller.php:869
1127
  msgid "Reply to this message and mark it as read"
1128
  msgstr ""
1129
 
1153
  msgid "Error description"
1154
  msgstr ""
1155
 
1156
+ #: inc/core/classes/class-wp-customize-form-manager.php:164
1157
  msgid "Now, there are couple of ways to embed it to your content. Here goes..."
1158
  msgstr ""
1159
 
1160
+ #: inc/core/classes/class-wp-customize-form-manager.php:165
1161
  msgid "Add to your page / post content"
1162
  msgstr ""
1163
 
1164
+ #: inc/core/classes/class-wp-customize-form-manager.php:166
1165
  msgid ""
1166
  "In your Edit Post / Edit Page screen, click the <b>Add HappyForms</b> "
1167
  "button right above your toolbar. A modal window will appear."
1168
  msgstr ""
1169
 
1170
+ #: inc/core/classes/class-wp-customize-form-manager.php:166
1171
  msgid "Select a form in the dropdown, then click <b>Insert</b>."
1172
  msgstr ""
1173
 
1174
+ #: inc/core/classes/class-wp-customize-form-manager.php:166
1175
  msgid ""
1176
  "That's it! You'll notice the shortcode was added to your content. Your form "
1177
  "will show up there."
1178
  msgstr ""
1179
 
1180
+ #: inc/core/classes/class-wp-customize-form-manager.php:167
1181
  msgid "Use the HappyForms widget"
1182
  msgstr ""
1183
 
1184
+ #: inc/core/classes/class-wp-customize-form-manager.php:169
1185
  msgid ""
1186
  "Head over to <b>Appearance</b> &rarr; <b><a href=\"%s\">Widgets</a></b> "
1187
  "screen."
1188
  msgstr ""
1189
 
1190
+ #: inc/core/classes/class-wp-customize-form-manager.php:170
1191
  msgid "Drag the HappyForms widget to your sidebar."
1192
  msgstr ""
1193
 
1194
+ #: inc/core/classes/class-wp-customize-form-manager.php:171
1195
  msgid "Select a form in the Form dropdown."
1196
  msgstr ""
1197
 
1198
+ #: inc/core/classes/class-wp-customize-form-manager.php:172
1199
  msgid "All done!"
1200
  msgstr ""
1201
 
1202
+ #: inc/core/classes/class-wp-customize-form-manager.php:174
1203
  msgid ""
1204
  "Looking for a full documentation? Head over to our <a href=\"%s\" "
1205
  "target=\"_blank\">Help Guide</a>."
1206
  msgstr ""
1207
 
1208
+ #: inc/core/classes/class-wp-customize-form-manager.php:181
1209
  msgid ""
1210
  "Form saved. You can add this form to any Page, Post and Widget area. Have "
1211
  "questions? <a href=\"%s\" target=\"_blank\">Ask for help in our support "
1221
  msgid "For geographical locations. Includes Google Maps intergration."
1222
  msgstr ""
1223
 
1224
+ #: inc/core/classes/parts/class-part-address.php:196
1225
+ #: inc/core/classes/parts/class-part-checkbox.php:172
1226
+ #: inc/core/classes/parts/class-part-date.php:211
1227
+ #: inc/core/classes/parts/class-part-email.php:152
1228
+ #: inc/core/classes/parts/class-part-email.php:156
1229
+ #: inc/core/classes/parts/class-part-legal.php:120
1230
+ #: inc/core/classes/parts/class-part-multi-line-text.php:147
 
1231
  #: inc/core/classes/parts/class-part-narrative.php:130
1232
+ #: inc/core/classes/parts/class-part-narrative.php:135
1233
+ #: inc/core/classes/parts/class-part-number.php:174
1234
+ #: inc/core/classes/parts/class-part-phone.php:166
1235
+ #: inc/core/classes/parts/class-part-phone.php:170
1236
+ #: inc/core/classes/parts/class-part-radio.php:172
1237
+ #: inc/core/classes/parts/class-part-rating.php:157
1238
+ #: inc/core/classes/parts/class-part-rich-text.php:190
1239
+ #: inc/core/classes/parts/class-part-scale.php:168
1240
+ #: inc/core/classes/parts/class-part-select.php:175
1241
+ #: inc/core/classes/parts/class-part-single-line-text.php:134
1242
  #: inc/core/classes/parts/class-part-table.php:220
1243
+ #: inc/core/classes/parts/class-part-table.php:227
1244
+ #: inc/core/classes/parts/class-part-title.php:167
1245
+ #: inc/core/classes/parts/class-part-website-url.php:129
1246
  msgid "This field is required."
1247
  msgstr ""
1248
 
1267
  msgid "Options"
1268
  msgstr ""
1269
 
1270
+ #: inc/core/classes/parts/class-part-checkbox.php:180
1271
+ #: inc/core/classes/parts/class-part-table.php:240
1272
  msgid "Checkbox values are not valid."
1273
  msgstr ""
1274
 
1285
  msgid "Date"
1286
  msgstr ""
1287
 
1288
+ #: inc/core/classes/parts/class-part-date.php:234
1289
  msgid "Year input does not match minimum and maximum value allowed."
1290
  msgstr ""
1291
 
1292
+ #: inc/core/classes/parts/class-part-date.php:249
1293
  msgid "Hour input does not match minimum and maximum value allowed."
1294
  msgstr ""
1295
 
1296
+ #: inc/core/classes/parts/class-part-date.php:304
1297
  msgid "Not a valid date."
1298
  msgstr ""
1299
 
1300
  #: inc/core/classes/parts/class-part-email.php:8
1301
+ #: inc/core/classes/parts/class-part-email.php:31
1302
  msgid "Email"
1303
  msgstr ""
1304
 
1306
  msgid "For formatted email addresses. The '@' symbol is required."
1307
  msgstr ""
1308
 
1309
+ #: inc/core/classes/parts/class-part-email.php:55
1310
  msgid "Confirm Email"
1311
  msgstr ""
1312
 
1313
+ #: inc/core/classes/parts/class-part-email.php:160
1314
  msgid "Not a valid e-mail address."
1315
  msgstr ""
1316
 
1317
+ #: inc/core/classes/parts/class-part-email.php:164
1318
  msgid "Email and confirmation email are not matching."
1319
  msgstr ""
1320
 
1331
  msgid "I accept terms and conditions."
1332
  msgstr ""
1333
 
1334
+ #: inc/core/classes/parts/class-part-legal.php:125
1335
  msgid "Please accept terms before proceeding."
1336
  msgstr ""
1337
 
1365
  msgid "Confirm Number"
1366
  msgstr ""
1367
 
1368
+ #: inc/core/classes/parts/class-part-number.php:193
1369
  msgid "This field does not match minimum and maximum allowed value."
1370
  msgstr ""
1371
 
1372
+ #: inc/core/classes/parts/class-part-number.php:201
1373
+ #: inc/core/classes/parts/class-part-phone.php:174
1374
  msgid "Number and confirmation number are not matching."
1375
  msgstr ""
1376
 
1399
  msgid "For radio buttons allowing one selection."
1400
  msgstr ""
1401
 
1402
+ #: inc/core/classes/parts/class-part-radio.php:177
1403
+ #: inc/core/classes/parts/class-part-radio.php:183
1404
  msgid "Radio value is not valid."
1405
  msgstr ""
1406
 
1430
  msgid "Loved it"
1431
  msgstr ""
1432
 
1433
+ #: inc/core/classes/parts/class-part-rating.php:163
1434
  msgid "Value should be between 1 and 5."
1435
  msgstr ""
1436
 
1437
+ #: inc/core/classes/parts/class-part-rating.php:187
1438
  #: inc/core/templates/parts/frontend-rating-yesno.php:9
1439
  msgid "No"
1440
  msgstr ""
1441
 
1442
+ #: inc/core/classes/parts/class-part-rating.php:189
1443
  #: inc/core/templates/parts/frontend-rating-yesno.php:17
1444
  msgid "Yes"
1445
  msgstr ""
1470
  msgid "For selecting one option from a long list. Default value adjustable."
1471
  msgstr ""
1472
 
1473
+ #: inc/core/classes/parts/class-part-select.php:180
1474
+ #: inc/core/classes/parts/class-part-select.php:186
1475
+ #: inc/core/classes/parts/class-part-title.php:172
1476
+ #: inc/core/classes/parts/class-part-title.php:178
1477
  msgid "Selected value is not valid."
1478
  msgstr ""
1479
 
1493
  msgid "For radios and checkboxes displaying in a grid of rows and columns."
1494
  msgstr ""
1495
 
1496
+ #: inc/core/classes/parts/class-part-table.php:247
1497
  msgid "Radio values are not valid."
1498
  msgstr ""
1499
 
1501
  msgid "For displaying personal honorifics."
1502
  msgstr ""
1503
 
1504
+ #: inc/core/classes/parts/class-part-title.php:107
1505
  msgid "Mr."
1506
  msgstr ""
1507
 
1508
+ #: inc/core/classes/parts/class-part-title.php:108
1509
  msgid "Mrs."
1510
  msgstr ""
1511
 
1512
+ #: inc/core/classes/parts/class-part-title.php:109
1513
  msgid "Ms."
1514
  msgstr ""
1515
 
1516
+ #: inc/core/classes/parts/class-part-title.php:110
1517
  msgid "Miss"
1518
  msgstr ""
1519
 
1520
+ #: inc/core/classes/parts/class-part-title.php:111
1521
  msgid "Prof."
1522
  msgstr ""
1523
 
1524
+ #: inc/core/classes/parts/class-part-title.php:112
1525
  msgid "Dr."
1526
  msgstr ""
1527
 
1534
  msgid "For formatted website URLs."
1535
  msgstr ""
1536
 
1537
+ #: inc/core/classes/parts/class-part-website-url.php:135
1538
  msgid "Not a valid URL."
1539
  msgstr ""
1540
 
1541
+ #: inc/core/helpers/helper-activation.php:54
1542
  msgid "Sample Contact Form"
1543
  msgstr ""
1544
 
1545
+ #: inc/core/helpers/helper-activation.php:65
1546
  msgid "First name"
1547
  msgstr ""
1548
 
1549
+ #: inc/core/helpers/helper-activation.php:70
1550
  msgid "Last name"
1551
  msgstr ""
1552
 
1553
+ #: inc/core/helpers/helper-activation.php:75
1554
  msgid "What's your reason for contacting us?"
1555
  msgstr ""
1556
 
1557
+ #: inc/core/helpers/helper-activation.php:78
1558
  msgid "Need technical help"
1559
  msgstr ""
1560
 
1561
+ #: inc/core/helpers/helper-activation.php:81
1562
  msgid "Want to suggest a feature"
1563
  msgstr ""
1564
 
1565
+ #: inc/core/helpers/helper-activation.php:84
1566
  msgid "Asking about my account"
1567
  msgstr ""
1568
 
1569
+ #: inc/core/helpers/helper-activation.php:90
1570
  msgid "Age"
1571
  msgstr ""
1572
 
1573
+ #: inc/core/helpers/helper-activation.php:95
1574
  msgid "Your message"
1575
  msgstr ""
1576
 
1577
+ #: inc/core/helpers/helper-activation.php:127
1578
  msgid "It would be great if I could use Google ReCaptcha instead of Honeypot."
1579
  msgstr ""
1580
 
1581
+ #: inc/core/helpers/helper-activation.php:134
1582
  msgid "How do I embed a HappyForm in my sidebar?"
1583
  msgstr ""
1584
 
1585
+ #: inc/core/helpers/helper-activation.php:141
1586
  msgid "How can I access my premium upgrade credentials?"
1587
  msgstr ""
1588
 
1589
+ #: inc/core/helpers/helper-form-templates.php:873
1590
  msgid "Get my location"
1591
  msgstr ""
1592
 
1593
+ #: inc/core/helpers/helper-form-templates.php:873
1594
  msgid "Fetching location…"
1595
  msgstr ""
1596
 
1597
+ #: inc/core/helpers/helper-form-templates.php:884
1598
  msgid "January"
1599
  msgstr ""
1600
 
1601
+ #: inc/core/helpers/helper-form-templates.php:885
1602
  msgid "February"
1603
  msgstr ""
1604
 
1605
+ #: inc/core/helpers/helper-form-templates.php:886
1606
  msgid "March"
1607
  msgstr ""
1608
 
1609
+ #: inc/core/helpers/helper-form-templates.php:887
1610
  msgid "April"
1611
  msgstr ""
1612
 
1613
+ #: inc/core/helpers/helper-form-templates.php:888
1614
  msgid "May"
1615
  msgstr ""
1616
 
1617
+ #: inc/core/helpers/helper-form-templates.php:889
1618
  msgid "June"
1619
  msgstr ""
1620
 
1621
+ #: inc/core/helpers/helper-form-templates.php:890
1622
  msgid "July"
1623
  msgstr ""
1624
 
1625
+ #: inc/core/helpers/helper-form-templates.php:891
1626
  msgid "August"
1627
  msgstr ""
1628
 
1629
+ #: inc/core/helpers/helper-form-templates.php:892
1630
  msgid "September"
1631
  msgstr ""
1632
 
1633
+ #: inc/core/helpers/helper-form-templates.php:893
1634
  msgid "October"
1635
  msgstr ""
1636
 
1637
+ #: inc/core/helpers/helper-form-templates.php:894
1638
  msgid "November"
1639
  msgstr ""
1640
 
1641
+ #: inc/core/helpers/helper-form-templates.php:895
1642
  msgid "December"
1643
  msgstr ""
1644
 
1645
+ #: inc/core/helpers/helper-form-templates.php:926
1646
+ #: inc/core/helpers/helper-misc.php:254
1647
  msgid "Andorra"
1648
  msgstr ""
1649
 
1650
+ #: inc/core/helpers/helper-form-templates.php:927
1651
+ #: inc/core/helpers/helper-misc.php:472
1652
  msgid "United Arab Emirates"
1653
  msgstr ""
1654
 
1655
+ #: inc/core/helpers/helper-form-templates.php:928
1656
+ #: inc/core/helpers/helper-misc.php:250
1657
  msgid "Afghanistan"
1658
  msgstr ""
1659
 
1660
+ #: inc/core/helpers/helper-form-templates.php:929
1661
+ #: inc/core/helpers/helper-misc.php:258
1662
  msgid "Antigua and Barbuda"
1663
  msgstr ""
1664
 
1665
+ #: inc/core/helpers/helper-form-templates.php:930
1666
+ #: inc/core/helpers/helper-misc.php:256
1667
  msgid "Anguilla"
1668
  msgstr ""
1669
 
1670
+ #: inc/core/helpers/helper-form-templates.php:931
1671
+ #: inc/core/helpers/helper-misc.php:251
1672
  msgid "Albania"
1673
  msgstr ""
1674
 
1675
+ #: inc/core/helpers/helper-form-templates.php:932
1676
+ #: inc/core/helpers/helper-misc.php:260
1677
  msgid "Armenia"
1678
  msgstr ""
1679
 
1680
+ #: inc/core/helpers/helper-form-templates.php:933
1681
+ #: inc/core/helpers/helper-misc.php:255
1682
  msgid "Angola"
1683
  msgstr ""
1684
 
1685
+ #: inc/core/helpers/helper-form-templates.php:934
1686
+ #: inc/core/helpers/helper-misc.php:257
1687
  msgid "Antarctica"
1688
  msgstr ""
1689
 
1690
+ #: inc/core/helpers/helper-form-templates.php:935
1691
+ #: inc/core/helpers/helper-misc.php:259
1692
  msgid "Argentina"
1693
  msgstr ""
1694
 
1695
+ #: inc/core/helpers/helper-form-templates.php:936
1696
+ #: inc/core/helpers/helper-misc.php:253
1697
  msgid "American Samoa"
1698
  msgstr ""
1699
 
1700
+ #: inc/core/helpers/helper-form-templates.php:937
1701
+ #: inc/core/helpers/helper-misc.php:263
1702
  msgid "Austria"
1703
  msgstr ""
1704
 
1705
+ #: inc/core/helpers/helper-form-templates.php:938
1706
+ #: inc/core/helpers/helper-misc.php:262
1707
  msgid "Australia"
1708
  msgstr ""
1709
 
1710
+ #: inc/core/helpers/helper-form-templates.php:939
1711
+ #: inc/core/helpers/helper-misc.php:261
1712
  msgid "Aruba"
1713
  msgstr ""
1714
 
1715
+ #: inc/core/helpers/helper-form-templates.php:940
1716
+ #: inc/core/helpers/helper-misc.php:264
1717
  msgid "Azerbaijan"
1718
  msgstr ""
1719
 
1720
+ #: inc/core/helpers/helper-form-templates.php:941
1721
  msgid "Bosnia and Herzegovina"
1722
  msgstr ""
1723
 
1724
+ #: inc/core/helpers/helper-form-templates.php:942
1725
+ #: inc/core/helpers/helper-misc.php:268
1726
  msgid "Barbados"
1727
  msgstr ""
1728
 
1729
+ #: inc/core/helpers/helper-form-templates.php:943
1730
+ #: inc/core/helpers/helper-misc.php:267
1731
  msgid "Bangladesh"
1732
  msgstr ""
1733
 
1734
+ #: inc/core/helpers/helper-form-templates.php:944
1735
+ #: inc/core/helpers/helper-misc.php:270
1736
  msgid "Belgium"
1737
  msgstr ""
1738
 
1739
+ #: inc/core/helpers/helper-form-templates.php:945
1740
+ #: inc/core/helpers/helper-misc.php:283
1741
  msgid "Burkina Faso"
1742
  msgstr ""
1743
 
1744
+ #: inc/core/helpers/helper-form-templates.php:946
1745
+ #: inc/core/helpers/helper-misc.php:282
1746
  msgid "Bulgaria"
1747
  msgstr ""
1748
 
1749
+ #: inc/core/helpers/helper-form-templates.php:947
1750
+ #: inc/core/helpers/helper-misc.php:266
1751
  msgid "Bahrain"
1752
  msgstr ""
1753
 
1754
+ #: inc/core/helpers/helper-form-templates.php:948
1755
+ #: inc/core/helpers/helper-misc.php:284
1756
  msgid "Burundi"
1757
  msgstr ""
1758
 
1759
+ #: inc/core/helpers/helper-form-templates.php:949
1760
+ #: inc/core/helpers/helper-misc.php:272
1761
  msgid "Benin"
1762
  msgstr ""
1763
 
1764
+ #: inc/core/helpers/helper-form-templates.php:950
1765
  msgid "Saint Barthelemy"
1766
  msgstr ""
1767
 
1768
+ #: inc/core/helpers/helper-form-templates.php:951
1769
+ #: inc/core/helpers/helper-misc.php:273
1770
  msgid "Bermuda"
1771
  msgstr ""
1772
 
1773
+ #: inc/core/helpers/helper-form-templates.php:952
1774
+ #: inc/core/helpers/helper-misc.php:281
1775
  msgid "Brunei Darussalam"
1776
  msgstr ""
1777
 
1778
+ #: inc/core/helpers/helper-form-templates.php:953
1779
+ #: inc/core/helpers/helper-misc.php:275
1780
  msgid "Bolivia"
1781
  msgstr ""
1782
 
1783
+ #: inc/core/helpers/helper-form-templates.php:954
1784
+ #: inc/core/helpers/helper-misc.php:279
1785
  msgid "Brazil"
1786
  msgstr ""
1787
 
1788
+ #: inc/core/helpers/helper-form-templates.php:955
1789
+ #: inc/core/helpers/helper-misc.php:265
1790
  msgid "Bahamas"
1791
  msgstr ""
1792
 
1793
+ #: inc/core/helpers/helper-form-templates.php:956
1794
+ #: inc/core/helpers/helper-misc.php:274
1795
  msgid "Bhutan"
1796
  msgstr ""
1797
 
1798
+ #: inc/core/helpers/helper-form-templates.php:957
1799
+ #: inc/core/helpers/helper-misc.php:277
1800
  msgid "Botswana"
1801
  msgstr ""
1802
 
1803
+ #: inc/core/helpers/helper-form-templates.php:958
1804
+ #: inc/core/helpers/helper-misc.php:269
1805
  msgid "Belarus"
1806
  msgstr ""
1807
 
1808
+ #: inc/core/helpers/helper-form-templates.php:959
1809
+ #: inc/core/helpers/helper-misc.php:271
1810
  msgid "Belize"
1811
  msgstr ""
1812
 
1813
+ #: inc/core/helpers/helper-form-templates.php:960
1814
+ #: inc/core/helpers/helper-misc.php:287
1815
  msgid "Canada"
1816
  msgstr ""
1817
 
1818
+ #: inc/core/helpers/helper-form-templates.php:961
1819
  msgid "Congo, The Democratic Republic of the"
1820
  msgstr ""
1821
 
1822
+ #: inc/core/helpers/helper-form-templates.php:962
1823
+ #: inc/core/helpers/helper-misc.php:290
1824
  msgid "Central African Republic"
1825
  msgstr ""
1826
 
1827
+ #: inc/core/helpers/helper-form-templates.php:963
1828
+ #: inc/core/helpers/helper-misc.php:298
1829
  msgid "Congo"
1830
  msgstr ""
1831
 
1832
+ #: inc/core/helpers/helper-form-templates.php:964
1833
+ #: inc/core/helpers/helper-misc.php:455
1834
  msgid "Switzerland"
1835
  msgstr ""
1836
 
1837
+ #: inc/core/helpers/helper-form-templates.php:965
1838
+ #: inc/core/helpers/helper-misc.php:300
1839
  msgid "Cook Islands"
1840
  msgstr ""
1841
 
1842
+ #: inc/core/helpers/helper-form-templates.php:966
1843
+ #: inc/core/helpers/helper-misc.php:292
1844
  msgid "Chile"
1845
  msgstr ""
1846
 
1847
+ #: inc/core/helpers/helper-form-templates.php:967
1848
+ #: inc/core/helpers/helper-misc.php:286
1849
  msgid "Cameroon"
1850
  msgstr ""
1851
 
1852
+ #: inc/core/helpers/helper-form-templates.php:968
1853
+ #: inc/core/helpers/helper-misc.php:293
1854
  msgid "China"
1855
  msgstr ""
1856
 
1857
+ #: inc/core/helpers/helper-form-templates.php:969
1858
+ #: inc/core/helpers/helper-misc.php:296
1859
  msgid "Colombia"
1860
  msgstr ""
1861
 
1862
+ #: inc/core/helpers/helper-form-templates.php:970
1863
+ #: inc/core/helpers/helper-misc.php:301
1864
  msgid "Costa Rica"
1865
  msgstr ""
1866
 
1867
+ #: inc/core/helpers/helper-form-templates.php:971
1868
+ #: inc/core/helpers/helper-misc.php:304
1869
  msgid "Cuba"
1870
  msgstr ""
1871
 
1872
+ #: inc/core/helpers/helper-form-templates.php:972
1873
+ #: inc/core/helpers/helper-misc.php:288
1874
  msgid "Cape Verde"
1875
  msgstr ""
1876
 
1877
+ #: inc/core/helpers/helper-form-templates.php:973
1878
+ #: inc/core/helpers/helper-misc.php:305
1879
  msgid "Cyprus"
1880
  msgstr ""
1881
 
1882
+ #: inc/core/helpers/helper-form-templates.php:974
1883
+ #: inc/core/helpers/helper-misc.php:306
1884
  msgid "Czech Republic"
1885
  msgstr ""
1886
 
1887
+ #: inc/core/helpers/helper-form-templates.php:975
1888
+ #: inc/core/helpers/helper-misc.php:331
1889
  msgid "Germany"
1890
  msgstr ""
1891
 
1892
+ #: inc/core/helpers/helper-form-templates.php:976
1893
+ #: inc/core/helpers/helper-misc.php:308
1894
  msgid "Djibouti"
1895
  msgstr ""
1896
 
1897
+ #: inc/core/helpers/helper-form-templates.php:977
1898
+ #: inc/core/helpers/helper-misc.php:307
1899
  msgid "Denmark"
1900
  msgstr ""
1901
 
1902
+ #: inc/core/helpers/helper-form-templates.php:978
1903
+ #: inc/core/helpers/helper-misc.php:309
1904
  msgid "Dominica"
1905
  msgstr ""
1906
 
1907
+ #: inc/core/helpers/helper-form-templates.php:979
1908
+ #: inc/core/helpers/helper-misc.php:310
1909
  msgid "Dominican Republic"
1910
  msgstr ""
1911
 
1912
+ #: inc/core/helpers/helper-form-templates.php:980
1913
+ #: inc/core/helpers/helper-misc.php:252
1914
  msgid "Algeria"
1915
  msgstr ""
1916
 
1917
+ #: inc/core/helpers/helper-form-templates.php:981
1918
+ #: inc/core/helpers/helper-misc.php:312
1919
  msgid "Ecuador"
1920
  msgstr ""
1921
 
1922
+ #: inc/core/helpers/helper-form-templates.php:982
1923
+ #: inc/core/helpers/helper-misc.php:317
1924
  msgid "Estonia"
1925
  msgstr ""
1926
 
1927
+ #: inc/core/helpers/helper-form-templates.php:983
1928
+ #: inc/core/helpers/helper-misc.php:313
1929
  msgid "Egypt"
1930
  msgstr ""
1931
 
1932
+ #: inc/core/helpers/helper-form-templates.php:984
1933
+ #: inc/core/helpers/helper-misc.php:316
1934
  msgid "Eritrea"
1935
  msgstr ""
1936
 
1937
+ #: inc/core/helpers/helper-form-templates.php:985
1938
+ #: inc/core/helpers/helper-misc.php:446
1939
  msgid "Spain"
1940
  msgstr ""
1941
 
1942
+ #: inc/core/helpers/helper-form-templates.php:986
1943
+ #: inc/core/helpers/helper-misc.php:318
1944
  msgid "Ethiopia"
1945
  msgstr ""
1946
 
1947
+ #: inc/core/helpers/helper-form-templates.php:987
1948
+ #: inc/core/helpers/helper-misc.php:322
1949
  msgid "Finland"
1950
  msgstr ""
1951
 
1952
+ #: inc/core/helpers/helper-form-templates.php:988
1953
+ #: inc/core/helpers/helper-misc.php:321
1954
  msgid "Fiji"
1955
  msgstr ""
1956
 
1957
+ #: inc/core/helpers/helper-form-templates.php:989
1958
+ #: inc/core/helpers/helper-misc.php:319
1959
  msgid "Falkland Islands (Malvinas)"
1960
  msgstr ""
1961
 
1962
+ #: inc/core/helpers/helper-form-templates.php:990
1963
+ #: inc/core/helpers/helper-misc.php:390
1964
  msgid "Micronesia, Federated States of"
1965
  msgstr ""
1966
 
1967
+ #: inc/core/helpers/helper-form-templates.php:991
1968
+ #: inc/core/helpers/helper-misc.php:320
1969
  msgid "Faroe Islands"
1970
  msgstr ""
1971
 
1972
+ #: inc/core/helpers/helper-form-templates.php:992
1973
+ #: inc/core/helpers/helper-misc.php:323
1974
  msgid "France"
1975
  msgstr ""
1976
 
1977
+ #: inc/core/helpers/helper-form-templates.php:993
1978
+ #: inc/core/helpers/helper-misc.php:328
1979
  msgid "Gabon"
1980
  msgstr ""
1981
 
1982
+ #: inc/core/helpers/helper-form-templates.php:994
1983
+ #: inc/core/helpers/helper-misc.php:473
1984
  msgid "United Kingdom"
1985
  msgstr ""
1986
 
1987
+ #: inc/core/helpers/helper-form-templates.php:995
1988
+ #: inc/core/helpers/helper-misc.php:336
1989
  msgid "Grenada"
1990
  msgstr ""
1991
 
1992
+ #: inc/core/helpers/helper-form-templates.php:996
1993
+ #: inc/core/helpers/helper-misc.php:330
1994
  msgid "Georgia"
1995
  msgstr ""
1996
 
1997
+ #: inc/core/helpers/helper-form-templates.php:997
1998
+ #: inc/core/helpers/helper-misc.php:332
1999
  msgid "Ghana"
2000
  msgstr ""
2001
 
2002
+ #: inc/core/helpers/helper-form-templates.php:998
2003
+ #: inc/core/helpers/helper-misc.php:333
2004
  msgid "Gibraltar"
2005
  msgstr ""
2006
 
2007
+ #: inc/core/helpers/helper-form-templates.php:999
2008
+ #: inc/core/helpers/helper-misc.php:335
2009
  msgid "Greenland"
2010
  msgstr ""
2011
 
2012
+ #: inc/core/helpers/helper-form-templates.php:1000
2013
+ #: inc/core/helpers/helper-misc.php:329
2014
  msgid "Gambia"
2015
  msgstr ""
2016
 
2017
+ #: inc/core/helpers/helper-form-templates.php:1001
2018
+ #: inc/core/helpers/helper-misc.php:340
2019
  msgid "Guinea"
2020
  msgstr ""
2021
 
2022
+ #: inc/core/helpers/helper-form-templates.php:1002
2023
+ #: inc/core/helpers/helper-misc.php:334
2024
  msgid "Greece"
2025
  msgstr ""
2026
 
2027
+ #: inc/core/helpers/helper-form-templates.php:1003
2028
+ #: inc/core/helpers/helper-misc.php:339
2029
  msgid "Guatemala"
2030
  msgstr ""
2031
 
2032
+ #: inc/core/helpers/helper-form-templates.php:1004
2033
+ #: inc/core/helpers/helper-misc.php:338
2034
  msgid "Guam"
2035
  msgstr ""
2036
 
2037
+ #: inc/core/helpers/helper-form-templates.php:1005
2038
  msgid "Guinea-bissau"
2039
  msgstr ""
2040
 
2041
+ #: inc/core/helpers/helper-form-templates.php:1006
2042
+ #: inc/core/helpers/helper-misc.php:342
2043
  msgid "Guyana"
2044
  msgstr ""
2045
 
2046
+ #: inc/core/helpers/helper-form-templates.php:1007
2047
+ #: inc/core/helpers/helper-misc.php:347
2048
  msgid "Hong Kong"
2049
  msgstr ""
2050
 
2051
+ #: inc/core/helpers/helper-form-templates.php:1008
2052
+ #: inc/core/helpers/helper-misc.php:346
2053
  msgid "Honduras"
2054
  msgstr ""
2055
 
2056
+ #: inc/core/helpers/helper-form-templates.php:1009
2057
  msgid "Croatia"
2058
  msgstr ""
2059
 
2060
+ #: inc/core/helpers/helper-form-templates.php:1010
2061
+ #: inc/core/helpers/helper-misc.php:343
2062
  msgid "Haiti"
2063
  msgstr ""
2064
 
2065
+ #: inc/core/helpers/helper-form-templates.php:1011
2066
+ #: inc/core/helpers/helper-misc.php:348
2067
  msgid "Hungary"
2068
  msgstr ""
2069
 
2070
+ #: inc/core/helpers/helper-form-templates.php:1012
2071
+ #: inc/core/helpers/helper-misc.php:351
2072
  msgid "Indonesia"
2073
  msgstr ""
2074
 
2075
+ #: inc/core/helpers/helper-form-templates.php:1013
2076
+ #: inc/core/helpers/helper-misc.php:354
2077
  msgid "Ireland"
2078
  msgstr ""
2079
 
2080
+ #: inc/core/helpers/helper-form-templates.php:1014
2081
+ #: inc/core/helpers/helper-misc.php:355
2082
  msgid "Israel"
2083
  msgstr ""
2084
 
2085
+ #: inc/core/helpers/helper-form-templates.php:1015
2086
+ #: inc/core/helpers/helper-misc.php:350
2087
  msgid "India"
2088
  msgstr ""
2089
 
2090
+ #: inc/core/helpers/helper-form-templates.php:1016
2091
+ #: inc/core/helpers/helper-misc.php:353
2092
  msgid "Iraq"
2093
  msgstr ""
2094
 
2095
+ #: inc/core/helpers/helper-form-templates.php:1017
2096
  msgid "Iran, Islamic Republic of"
2097
  msgstr ""
2098
 
2099
+ #: inc/core/helpers/helper-form-templates.php:1018
2100
+ #: inc/core/helpers/helper-misc.php:349
2101
  msgid "Iceland"
2102
  msgstr ""
2103
 
2104
+ #: inc/core/helpers/helper-form-templates.php:1019
2105
+ #: inc/core/helpers/helper-misc.php:356
2106
  msgid "Italy"
2107
  msgstr ""
2108
 
2109
+ #: inc/core/helpers/helper-form-templates.php:1020
2110
+ #: inc/core/helpers/helper-misc.php:357
2111
  msgid "Jamaica"
2112
  msgstr ""
2113
 
2114
+ #: inc/core/helpers/helper-form-templates.php:1021
2115
+ #: inc/core/helpers/helper-misc.php:359
2116
  msgid "Jordan"
2117
  msgstr ""
2118
 
2119
+ #: inc/core/helpers/helper-form-templates.php:1022
2120
+ #: inc/core/helpers/helper-misc.php:358
2121
  msgid "Japan"
2122
  msgstr ""
2123
 
2124
+ #: inc/core/helpers/helper-form-templates.php:1023
2125
+ #: inc/core/helpers/helper-misc.php:361
2126
  msgid "Kenya"
2127
  msgstr ""
2128
 
2129
+ #: inc/core/helpers/helper-form-templates.php:1024
2130
+ #: inc/core/helpers/helper-misc.php:366
2131
  msgid "Kyrgyzstan"
2132
  msgstr ""
2133
 
2134
+ #: inc/core/helpers/helper-form-templates.php:1025
2135
+ #: inc/core/helpers/helper-misc.php:285
2136
  msgid "Cambodia"
2137
  msgstr ""
2138
 
2139
+ #: inc/core/helpers/helper-form-templates.php:1026
2140
+ #: inc/core/helpers/helper-misc.php:362
2141
  msgid "Kiribati"
2142
  msgstr ""
2143
 
2144
+ #: inc/core/helpers/helper-form-templates.php:1027
2145
+ #: inc/core/helpers/helper-misc.php:297
2146
  msgid "Comoros"
2147
  msgstr ""
2148
 
2149
+ #: inc/core/helpers/helper-form-templates.php:1028
2150
+ #: inc/core/helpers/helper-misc.php:429
2151
  msgid "Saint Kitts and Nevis"
2152
  msgstr ""
2153
 
2154
+ #: inc/core/helpers/helper-form-templates.php:1029
2155
  msgid "Korea Democratic Peoples Republic of"
2156
  msgstr ""
2157
 
2158
+ #: inc/core/helpers/helper-form-templates.php:1030
2159
  msgid "Korea Republic of"
2160
  msgstr ""
2161
 
2162
+ #: inc/core/helpers/helper-form-templates.php:1031
2163
+ #: inc/core/helpers/helper-misc.php:365
2164
  msgid "Kuwait"
2165
  msgstr ""
2166
 
2167
+ #: inc/core/helpers/helper-form-templates.php:1032
2168
+ #: inc/core/helpers/helper-misc.php:289
2169
  msgid "Cayman Islands"
2170
  msgstr ""
2171
 
2172
+ #: inc/core/helpers/helper-form-templates.php:1033
2173
  msgid "Lao Peoples Democratic Republic"
2174
  msgstr ""
2175
 
2176
+ #: inc/core/helpers/helper-form-templates.php:1034
2177
+ #: inc/core/helpers/helper-misc.php:369
2178
  msgid "Lebanon"
2179
  msgstr ""
2180
 
2181
+ #: inc/core/helpers/helper-form-templates.php:1035
2182
+ #: inc/core/helpers/helper-misc.php:430
2183
  msgid "Saint Lucia"
2184
  msgstr ""
2185
 
2186
+ #: inc/core/helpers/helper-form-templates.php:1036
2187
+ #: inc/core/helpers/helper-misc.php:373
2188
  msgid "Liechtenstein"
2189
  msgstr ""
2190
 
2191
+ #: inc/core/helpers/helper-form-templates.php:1037
2192
+ #: inc/core/helpers/helper-misc.php:447
2193
  msgid "Sri Lanka"
2194
  msgstr ""
2195
 
2196
+ #: inc/core/helpers/helper-form-templates.php:1038
2197
+ #: inc/core/helpers/helper-misc.php:371
2198
  msgid "Liberia"
2199
  msgstr ""
2200
 
2201
+ #: inc/core/helpers/helper-form-templates.php:1039
2202
+ #: inc/core/helpers/helper-misc.php:370
2203
  msgid "Lesotho"
2204
  msgstr ""
2205
 
2206
+ #: inc/core/helpers/helper-form-templates.php:1040
2207
+ #: inc/core/helpers/helper-misc.php:374
2208
  msgid "Lithuania"
2209
  msgstr ""
2210
 
2211
+ #: inc/core/helpers/helper-form-templates.php:1041
2212
+ #: inc/core/helpers/helper-misc.php:375
2213
  msgid "Luxembourg"
2214
  msgstr ""
2215
 
2216
+ #: inc/core/helpers/helper-form-templates.php:1042
2217
+ #: inc/core/helpers/helper-misc.php:368
2218
  msgid "Latvia"
2219
  msgstr ""
2220
 
2221
+ #: inc/core/helpers/helper-form-templates.php:1043
2222
+ #: inc/core/helpers/helper-misc.php:372
2223
  msgid "Libyan Arab Jamahiriya"
2224
  msgstr ""
2225
 
2226
+ #: inc/core/helpers/helper-form-templates.php:1044
2227
+ #: inc/core/helpers/helper-misc.php:395
2228
  msgid "Morocco"
2229
  msgstr ""
2230
 
2231
+ #: inc/core/helpers/helper-form-templates.php:1045
2232
+ #: inc/core/helpers/helper-misc.php:392
2233
  msgid "Monaco"
2234
  msgstr ""
2235
 
2236
+ #: inc/core/helpers/helper-form-templates.php:1046
2237
+ #: inc/core/helpers/helper-misc.php:391
2238
  msgid "Moldova, Republic of"
2239
  msgstr ""
2240
 
2241
+ #: inc/core/helpers/helper-form-templates.php:1047
2242
  msgid "Montenegro"
2243
  msgstr ""
2244
 
2245
+ #: inc/core/helpers/helper-form-templates.php:1048
2246
+ #: inc/core/helpers/helper-misc.php:378
2247
  msgid "Madagascar"
2248
  msgstr ""
2249
 
2250
+ #: inc/core/helpers/helper-form-templates.php:1049
2251
+ #: inc/core/helpers/helper-misc.php:384
2252
  msgid "Marshall Islands"
2253
  msgstr ""
2254
 
2255
+ #: inc/core/helpers/helper-form-templates.php:1050
2256
+ #: inc/core/helpers/helper-misc.php:377
2257
  msgid "Macedonia, The Former Yugoslav Republic of"
2258
  msgstr ""
2259
 
2260
+ #: inc/core/helpers/helper-form-templates.php:1051
2261
+ #: inc/core/helpers/helper-misc.php:382
2262
  msgid "Mali"
2263
  msgstr ""
2264
 
2265
+ #: inc/core/helpers/helper-form-templates.php:1052
2266
+ #: inc/core/helpers/helper-misc.php:397
2267
  msgid "Myanmar"
2268
  msgstr ""
2269
 
2270
+ #: inc/core/helpers/helper-form-templates.php:1053
2271
+ #: inc/core/helpers/helper-misc.php:393
2272
  msgid "Mongolia"
2273
  msgstr ""
2274
 
2275
+ #: inc/core/helpers/helper-form-templates.php:1054
2276
+ #: inc/core/helpers/helper-misc.php:376
2277
  msgid "Macau"
2278
  msgstr ""
2279
 
2280
+ #: inc/core/helpers/helper-form-templates.php:1055
2281
+ #: inc/core/helpers/helper-misc.php:410
2282
  msgid "Northern Mariana Islands"
2283
  msgstr ""
2284
 
2285
+ #: inc/core/helpers/helper-form-templates.php:1056
2286
+ #: inc/core/helpers/helper-misc.php:386
2287
  msgid "Mauritania"
2288
  msgstr ""
2289
 
2290
+ #: inc/core/helpers/helper-form-templates.php:1057
2291
+ #: inc/core/helpers/helper-misc.php:394
2292
  msgid "Montserrat"
2293
  msgstr ""
2294
 
2295
+ #: inc/core/helpers/helper-form-templates.php:1058
2296
+ #: inc/core/helpers/helper-misc.php:383
2297
  msgid "Malta"
2298
  msgstr ""
2299
 
2300
+ #: inc/core/helpers/helper-form-templates.php:1059
2301
+ #: inc/core/helpers/helper-misc.php:387
2302
  msgid "Mauritius"
2303
  msgstr ""
2304
 
2305
+ #: inc/core/helpers/helper-form-templates.php:1060
2306
+ #: inc/core/helpers/helper-misc.php:381
2307
  msgid "Maldives"
2308
  msgstr ""
2309
 
2310
+ #: inc/core/helpers/helper-form-templates.php:1061
2311
+ #: inc/core/helpers/helper-misc.php:379
2312
  msgid "Malawi"
2313
  msgstr ""
2314
 
2315
+ #: inc/core/helpers/helper-form-templates.php:1062
2316
+ #: inc/core/helpers/helper-misc.php:389
2317
  msgid "Mexico"
2318
  msgstr ""
2319
 
2320
+ #: inc/core/helpers/helper-form-templates.php:1063
2321
+ #: inc/core/helpers/helper-misc.php:380
2322
  msgid "Malaysia"
2323
  msgstr ""
2324
 
2325
+ #: inc/core/helpers/helper-form-templates.php:1064
2326
+ #: inc/core/helpers/helper-misc.php:396
2327
  msgid "Mozambique"
2328
  msgstr ""
2329
 
2330
+ #: inc/core/helpers/helper-form-templates.php:1065
2331
+ #: inc/core/helpers/helper-misc.php:398
2332
  msgid "Namibia"
2333
  msgstr ""
2334
 
2335
+ #: inc/core/helpers/helper-form-templates.php:1066
2336
+ #: inc/core/helpers/helper-misc.php:403
2337
  msgid "New Caledonia"
2338
  msgstr ""
2339
 
2340
+ #: inc/core/helpers/helper-form-templates.php:1067
2341
+ #: inc/core/helpers/helper-misc.php:406
2342
  msgid "Niger"
2343
  msgstr ""
2344
 
2345
+ #: inc/core/helpers/helper-form-templates.php:1068
2346
+ #: inc/core/helpers/helper-misc.php:407
2347
  msgid "Nigeria"
2348
  msgstr ""
2349
 
2350
+ #: inc/core/helpers/helper-form-templates.php:1069
2351
+ #: inc/core/helpers/helper-misc.php:405
2352
  msgid "Nicaragua"
2353
  msgstr ""
2354
 
2355
+ #: inc/core/helpers/helper-form-templates.php:1070
2356
+ #: inc/core/helpers/helper-misc.php:401
2357
  msgid "Netherlands"
2358
  msgstr ""
2359
 
2360
+ #: inc/core/helpers/helper-form-templates.php:1071
2361
+ #: inc/core/helpers/helper-misc.php:411
2362
  msgid "Norway"
2363
  msgstr ""
2364
 
2365
+ #: inc/core/helpers/helper-form-templates.php:1072
2366
+ #: inc/core/helpers/helper-misc.php:400
2367
  msgid "Nepal"
2368
  msgstr ""
2369
 
2370
+ #: inc/core/helpers/helper-form-templates.php:1073
2371
+ #: inc/core/helpers/helper-misc.php:399
2372
  msgid "Nauru"
2373
  msgstr ""
2374
 
2375
+ #: inc/core/helpers/helper-form-templates.php:1074
2376
+ #: inc/core/helpers/helper-misc.php:408
2377
  msgid "Niue"
2378
  msgstr ""
2379
 
2380
+ #: inc/core/helpers/helper-form-templates.php:1075
2381
+ #: inc/core/helpers/helper-misc.php:404
2382
  msgid "New Zealand"
2383
  msgstr ""
2384
 
2385
+ #: inc/core/helpers/helper-form-templates.php:1076
2386
+ #: inc/core/helpers/helper-misc.php:412
2387
  msgid "Oman"
2388
  msgstr ""
2389
 
2390
+ #: inc/core/helpers/helper-form-templates.php:1077
2391
+ #: inc/core/helpers/helper-misc.php:415
2392
  msgid "Panama"
2393
  msgstr ""
2394
 
2395
+ #: inc/core/helpers/helper-form-templates.php:1078
2396
+ #: inc/core/helpers/helper-misc.php:418
2397
  msgid "Peru"
2398
  msgstr ""
2399
 
2400
+ #: inc/core/helpers/helper-form-templates.php:1079
2401
+ #: inc/core/helpers/helper-misc.php:326
2402
  msgid "French Polynesia"
2403
  msgstr ""
2404
 
2405
+ #: inc/core/helpers/helper-form-templates.php:1080
2406
+ #: inc/core/helpers/helper-misc.php:416
2407
  msgid "Papua New Guinea"
2408
  msgstr ""
2409
 
2410
+ #: inc/core/helpers/helper-form-templates.php:1081
2411
+ #: inc/core/helpers/helper-misc.php:419
2412
  msgid "Philippines"
2413
  msgstr ""
2414
 
2415
+ #: inc/core/helpers/helper-form-templates.php:1082
2416
+ #: inc/core/helpers/helper-misc.php:413
2417
  msgid "Pakistan"
2418
  msgstr ""
2419
 
2420
+ #: inc/core/helpers/helper-form-templates.php:1083
2421
+ #: inc/core/helpers/helper-misc.php:421
2422
  msgid "Poland"
2423
  msgstr ""
2424
 
2425
+ #: inc/core/helpers/helper-form-templates.php:1084
2426
  msgid "Saint Pierre and Miquelon"
2427
  msgstr ""
2428
 
2429
+ #: inc/core/helpers/helper-form-templates.php:1085
2430
+ #: inc/core/helpers/helper-misc.php:420
2431
  msgid "Pitcairn"
2432
  msgstr ""
2433
 
2434
+ #: inc/core/helpers/helper-form-templates.php:1086
2435
+ #: inc/core/helpers/helper-misc.php:422
2436
  msgid "Portugal"
2437
  msgstr ""
2438
 
2439
+ #: inc/core/helpers/helper-form-templates.php:1087
2440
+ #: inc/core/helpers/helper-misc.php:414
2441
  msgid "Palau"
2442
  msgstr ""
2443
 
2444
+ #: inc/core/helpers/helper-form-templates.php:1088
2445
+ #: inc/core/helpers/helper-misc.php:417
2446
  msgid "Paraguay"
2447
  msgstr ""
2448
 
2449
+ #: inc/core/helpers/helper-form-templates.php:1089
2450
+ #: inc/core/helpers/helper-misc.php:424
2451
  msgid "Qatar"
2452
  msgstr ""
2453
 
2454
+ #: inc/core/helpers/helper-form-templates.php:1090
2455
+ #: inc/core/helpers/helper-misc.php:426
2456
  msgid "Romania"
2457
  msgstr ""
2458
 
2459
+ #: inc/core/helpers/helper-form-templates.php:1091
2460
  msgid "Serbia"
2461
  msgstr ""
2462
 
2463
+ #: inc/core/helpers/helper-form-templates.php:1092
2464
+ #: inc/core/helpers/helper-misc.php:427
2465
  msgid "Russian Federation"
2466
  msgstr ""
2467
 
2468
+ #: inc/core/helpers/helper-form-templates.php:1093
2469
+ #: inc/core/helpers/helper-misc.php:428
2470
  msgid "Rwanda"
2471
  msgstr ""
2472
 
2473
+ #: inc/core/helpers/helper-form-templates.php:1094
2474
+ #: inc/core/helpers/helper-misc.php:435
2475
  msgid "Saudi Arabia"
2476
  msgstr ""
2477
 
2478
+ #: inc/core/helpers/helper-form-templates.php:1095
2479
+ #: inc/core/helpers/helper-misc.php:442
2480
  msgid "Solomon Islands"
2481
  msgstr ""
2482
 
2483
+ #: inc/core/helpers/helper-form-templates.php:1096
2484
+ #: inc/core/helpers/helper-misc.php:437
2485
  msgid "Seychelles"
2486
  msgstr ""
2487
 
2488
+ #: inc/core/helpers/helper-form-templates.php:1097
2489
+ #: inc/core/helpers/helper-misc.php:450
2490
  msgid "Sudan"
2491
  msgstr ""
2492
 
2493
+ #: inc/core/helpers/helper-form-templates.php:1098
2494
+ #: inc/core/helpers/helper-misc.php:454
2495
  msgid "Sweden"
2496
  msgstr ""
2497
 
2498
+ #: inc/core/helpers/helper-form-templates.php:1099
2499
+ #: inc/core/helpers/helper-misc.php:439
2500
  msgid "Singapore"
2501
  msgstr ""
2502
 
2503
+ #: inc/core/helpers/helper-form-templates.php:1100
2504
  msgid "Saint Helena"
2505
  msgstr ""
2506
 
2507
+ #: inc/core/helpers/helper-form-templates.php:1101
2508
+ #: inc/core/helpers/helper-misc.php:441
2509
  msgid "Slovenia"
2510
  msgstr ""
2511
 
2512
+ #: inc/core/helpers/helper-form-templates.php:1102
2513
  msgid "Slovakia"
2514
  msgstr ""
2515
 
2516
+ #: inc/core/helpers/helper-form-templates.php:1103
2517
+ #: inc/core/helpers/helper-misc.php:438
2518
  msgid "Sierra Leone"
2519
  msgstr ""
2520
 
2521
+ #: inc/core/helpers/helper-form-templates.php:1104
2522
+ #: inc/core/helpers/helper-misc.php:433
2523
  msgid "San Marino"
2524
  msgstr ""
2525
 
2526
+ #: inc/core/helpers/helper-form-templates.php:1105
2527
+ #: inc/core/helpers/helper-misc.php:436
2528
  msgid "Senegal"
2529
  msgstr ""
2530
 
2531
+ #: inc/core/helpers/helper-form-templates.php:1106
2532
+ #: inc/core/helpers/helper-misc.php:443
2533
  msgid "Somalia"
2534
  msgstr ""
2535
 
2536
+ #: inc/core/helpers/helper-form-templates.php:1107
2537
+ #: inc/core/helpers/helper-misc.php:451
2538
  msgid "Suriname"
2539
  msgstr ""
2540
 
2541
+ #: inc/core/helpers/helper-form-templates.php:1108
2542
+ #: inc/core/helpers/helper-misc.php:434
2543
  msgid "Sao Tome and Principe"
2544
  msgstr ""
2545
 
2546
+ #: inc/core/helpers/helper-form-templates.php:1109
2547
+ #: inc/core/helpers/helper-misc.php:314
2548
  msgid "El Salvador"
2549
  msgstr ""
2550
 
2551
+ #: inc/core/helpers/helper-form-templates.php:1110
2552
+ #: inc/core/helpers/helper-misc.php:456
2553
  msgid "Syrian Arab Republic"
2554
  msgstr ""
2555
 
2556
+ #: inc/core/helpers/helper-form-templates.php:1111
2557
+ #: inc/core/helpers/helper-misc.php:453
2558
  msgid "Swaziland"
2559
  msgstr ""
2560
 
2561
+ #: inc/core/helpers/helper-form-templates.php:1112
2562
+ #: inc/core/helpers/helper-misc.php:468
2563
  msgid "Turks and Caicos Islands"
2564
  msgstr ""
2565
 
2566
+ #: inc/core/helpers/helper-form-templates.php:1113
2567
+ #: inc/core/helpers/helper-misc.php:291
2568
  msgid "Chad"
2569
  msgstr ""
2570
 
2571
+ #: inc/core/helpers/helper-form-templates.php:1114
2572
+ #: inc/core/helpers/helper-misc.php:461
2573
  msgid "Togo"
2574
  msgstr ""
2575
 
2576
+ #: inc/core/helpers/helper-form-templates.php:1115
2577
+ #: inc/core/helpers/helper-misc.php:460
2578
  msgid "Thailand"
2579
  msgstr ""
2580
 
2581
+ #: inc/core/helpers/helper-form-templates.php:1116
2582
+ #: inc/core/helpers/helper-misc.php:458
2583
  msgid "Tajikistan"
2584
  msgstr ""
2585
 
2586
+ #: inc/core/helpers/helper-form-templates.php:1117
2587
+ #: inc/core/helpers/helper-misc.php:462
2588
  msgid "Tokelau"
2589
  msgstr ""
2590
 
2591
+ #: inc/core/helpers/helper-form-templates.php:1118
2592
  msgid "Timor-leste"
2593
  msgstr ""
2594
 
2595
+ #: inc/core/helpers/helper-form-templates.php:1119
2596
+ #: inc/core/helpers/helper-misc.php:467
2597
  msgid "Turkmenistan"
2598
  msgstr ""
2599
 
2600
+ #: inc/core/helpers/helper-form-templates.php:1120
2601
+ #: inc/core/helpers/helper-misc.php:465
2602
  msgid "Tunisia"
2603
  msgstr ""
2604
 
2605
+ #: inc/core/helpers/helper-form-templates.php:1121
2606
+ #: inc/core/helpers/helper-misc.php:463
2607
  msgid "Tonga"
2608
  msgstr ""
2609
 
2610
+ #: inc/core/helpers/helper-form-templates.php:1122
2611
+ #: inc/core/helpers/helper-misc.php:466
2612
  msgid "Turkey"
2613
  msgstr ""
2614
 
2615
+ #: inc/core/helpers/helper-form-templates.php:1123
2616
+ #: inc/core/helpers/helper-misc.php:464
2617
  msgid "Trinidad and Tobago"
2618
  msgstr ""
2619
 
2620
+ #: inc/core/helpers/helper-form-templates.php:1124
2621
+ #: inc/core/helpers/helper-misc.php:469
2622
  msgid "Tuvalu"
2623
  msgstr ""
2624
 
2625
+ #: inc/core/helpers/helper-form-templates.php:1125
2626
+ #: inc/core/helpers/helper-misc.php:457
2627
  msgid "Taiwan, Province of China"
2628
  msgstr ""
2629
 
2630
+ #: inc/core/helpers/helper-form-templates.php:1126
2631
+ #: inc/core/helpers/helper-misc.php:459
2632
  msgid "Tanzania, United Republic of"
2633
  msgstr ""
2634
 
2635
+ #: inc/core/helpers/helper-form-templates.php:1127
2636
+ #: inc/core/helpers/helper-misc.php:471
2637
  msgid "Ukraine"
2638
  msgstr ""
2639
 
2640
+ #: inc/core/helpers/helper-form-templates.php:1128
2641
+ #: inc/core/helpers/helper-misc.php:470
2642
  msgid "Uganda"
2643
  msgstr ""
2644
 
2645
+ #: inc/core/helpers/helper-form-templates.php:1129
2646
+ #: inc/core/helpers/helper-misc.php:474
2647
  msgid "United States"
2648
  msgstr ""
2649
 
2650
+ #: inc/core/helpers/helper-form-templates.php:1130
2651
+ #: inc/core/helpers/helper-misc.php:476
2652
  msgid "Uruguay"
2653
  msgstr ""
2654
 
2655
+ #: inc/core/helpers/helper-form-templates.php:1131
2656
+ #: inc/core/helpers/helper-misc.php:477
2657
  msgid "Uzbekistan"
2658
  msgstr ""
2659
 
2660
+ #: inc/core/helpers/helper-form-templates.php:1132
2661
+ #: inc/core/helpers/helper-misc.php:431
2662
  msgid "Saint Vincent and the Grenadines"
2663
  msgstr ""
2664
 
2665
+ #: inc/core/helpers/helper-form-templates.php:1133
2666
+ #: inc/core/helpers/helper-misc.php:479
2667
  msgid "Venezuela"
2668
  msgstr ""
2669
 
2670
+ #: inc/core/helpers/helper-form-templates.php:1134
2671
  msgid "Virgin Islands, British"
2672
  msgstr ""
2673
 
2674
+ #: inc/core/helpers/helper-form-templates.php:1135
2675
  msgid "Virgin Islands, U.S."
2676
  msgstr ""
2677
 
2678
+ #: inc/core/helpers/helper-form-templates.php:1136
2679
+ #: inc/core/helpers/helper-misc.php:480
2680
  msgid "Vietnam"
2681
  msgstr ""
2682
 
2683
+ #: inc/core/helpers/helper-form-templates.php:1137
2684
+ #: inc/core/helpers/helper-misc.php:478
2685
  msgid "Vanuatu"
2686
  msgstr ""
2687
 
2688
+ #: inc/core/helpers/helper-form-templates.php:1138
2689
  msgid "Wallis and Futuna"
2690
  msgstr ""
2691
 
2692
+ #: inc/core/helpers/helper-form-templates.php:1139
2693
+ #: inc/core/helpers/helper-misc.php:432
2694
  msgid "Samoa"
2695
  msgstr ""
2696
 
2697
+ #: inc/core/helpers/helper-form-templates.php:1140
2698
+ #: inc/core/helpers/helper-misc.php:485
2699
  msgid "Yemen"
2700
  msgstr ""
2701
 
2702
+ #: inc/core/helpers/helper-form-templates.php:1141
2703
+ #: inc/core/helpers/helper-misc.php:388
2704
  msgid "Mayotte"
2705
  msgstr ""
2706
 
2707
+ #: inc/core/helpers/helper-form-templates.php:1142
2708
+ #: inc/core/helpers/helper-misc.php:444
2709
  msgid "South Africa"
2710
  msgstr ""
2711
 
2712
+ #: inc/core/helpers/helper-form-templates.php:1143
2713
+ #: inc/core/helpers/helper-misc.php:487
2714
  msgid "Zambia"
2715
  msgstr ""
2716
 
2717
+ #: inc/core/helpers/helper-form-templates.php:1144
2718
+ #: inc/core/helpers/helper-misc.php:488
2719
  msgid "Zimbabwe"
2720
  msgstr ""
2721
 
2722
+ #: inc/core/helpers/helper-misc.php:196
2723
  msgid "How are we doing? Please rate"
2724
  msgstr ""
2725
 
2726
+ #: inc/core/helpers/helper-misc.php:196
2727
  msgid "on"
2728
  msgstr ""
2729
 
2730
+ #: inc/core/helpers/helper-misc.php:196
2731
  msgid "to help us spread the word."
2732
  msgstr ""
2733
 
2734
+ #: inc/core/helpers/helper-misc.php:276
2735
  msgid "Bosnia and Herzegowina"
2736
  msgstr ""
2737
 
2738
+ #: inc/core/helpers/helper-misc.php:278
2739
  msgid "Bouvet Island"
2740
  msgstr ""
2741
 
2742
+ #: inc/core/helpers/helper-misc.php:280
2743
  msgid "British Indian Ocean Territory"
2744
  msgstr ""
2745
 
2746
+ #: inc/core/helpers/helper-misc.php:294
2747
  msgid "Christmas Island"
2748
  msgstr ""
2749
 
2750
+ #: inc/core/helpers/helper-misc.php:295
2751
  msgid "Cocos (Keeling) Islands"
2752
  msgstr ""
2753
 
2754
+ #: inc/core/helpers/helper-misc.php:299
2755
  msgid "Congo, the Democratic Republic of the"
2756
  msgstr ""
2757
 
2758
+ #: inc/core/helpers/helper-misc.php:302
2759
  msgid "Ivory Coast"
2760
  msgstr ""
2761
 
2762
+ #: inc/core/helpers/helper-misc.php:303
2763
  msgid "Croatia (Hrvatska)"
2764
  msgstr ""
2765
 
2766
+ #: inc/core/helpers/helper-misc.php:311
2767
  msgid "East Timor"
2768
  msgstr ""
2769
 
2770
+ #: inc/core/helpers/helper-misc.php:315
2771
  msgid "Equatorial Guinea"
2772
  msgstr ""
2773
 
2774
+ #: inc/core/helpers/helper-misc.php:324
2775
  msgid "France Metropolitan"
2776
  msgstr ""
2777
 
2778
+ #: inc/core/helpers/helper-misc.php:325
2779
  msgid "French Guiana"
2780
  msgstr ""
2781
 
2782
+ #: inc/core/helpers/helper-misc.php:327
2783
  msgid "French Southern Territories"
2784
  msgstr ""
2785
 
2786
+ #: inc/core/helpers/helper-misc.php:337
2787
  msgid "Guadeloupe"
2788
  msgstr ""
2789
 
2790
+ #: inc/core/helpers/helper-misc.php:341
2791
  msgid "Guinea-Bissau"
2792
  msgstr ""
2793
 
2794
+ #: inc/core/helpers/helper-misc.php:344
2795
  msgid "Heard and Mc Donald Islands"
2796
  msgstr ""
2797
 
2798
+ #: inc/core/helpers/helper-misc.php:345
2799
  msgid "Holy See (Vatican City State)"
2800
  msgstr ""
2801
 
2802
+ #: inc/core/helpers/helper-misc.php:352
2803
  msgid "Iran (Islamic Republic of)"
2804
  msgstr ""
2805
 
2806
+ #: inc/core/helpers/helper-misc.php:360
2807
  msgid "Kazakhstan"
2808
  msgstr ""
2809
 
2810
+ #: inc/core/helpers/helper-misc.php:363
2811
  msgid "Korea, Democratic People's Republic of"
2812
  msgstr ""
2813
 
2814
+ #: inc/core/helpers/helper-misc.php:364
2815
  msgid "Korea, Republic of"
2816
  msgstr ""
2817
 
2818
+ #: inc/core/helpers/helper-misc.php:367
2819
  msgid "Lao, People's Democratic Republic"
2820
  msgstr ""
2821
 
2822
+ #: inc/core/helpers/helper-misc.php:385
2823
  msgid "Martinique"
2824
  msgstr ""
2825
 
2826
+ #: inc/core/helpers/helper-misc.php:402
2827
  msgid "Netherlands Antilles"
2828
  msgstr ""
2829
 
2830
+ #: inc/core/helpers/helper-misc.php:409
2831
  msgid "Norfolk Island"
2832
  msgstr ""
2833
 
2834
+ #: inc/core/helpers/helper-misc.php:423
2835
  msgid "Puerto Rico"
2836
  msgstr ""
2837
 
2838
+ #: inc/core/helpers/helper-misc.php:425
2839
  msgid "Reunion"
2840
  msgstr ""
2841
 
2842
+ #: inc/core/helpers/helper-misc.php:440
2843
  msgid "Slovakia (Slovak Republic)"
2844
  msgstr ""
2845
 
2846
+ #: inc/core/helpers/helper-misc.php:445
2847
  msgid "South Georgia and the South Sandwich Islands"
2848
  msgstr ""
2849
 
2850
+ #: inc/core/helpers/helper-misc.php:448
2851
  msgid "St. Helena"
2852
  msgstr ""
2853
 
2854
+ #: inc/core/helpers/helper-misc.php:449
2855
  msgid "St. Pierre and Miquelon"
2856
  msgstr ""
2857
 
2858
+ #: inc/core/helpers/helper-misc.php:452
2859
  msgid "Svalbard and Jan Mayen Islands"
2860
  msgstr ""
2861
 
2862
+ #: inc/core/helpers/helper-misc.php:475
2863
  msgid "United States Minor Outlying Islands"
2864
  msgstr ""
2865
 
2866
+ #: inc/core/helpers/helper-misc.php:481
2867
  msgid "Virgin Islands (British)"
2868
  msgstr ""
2869
 
2870
+ #: inc/core/helpers/helper-misc.php:482
2871
  msgid "Virgin Islands (U.S.)"
2872
  msgstr ""
2873
 
2874
+ #: inc/core/helpers/helper-misc.php:483
2875
  msgid "Wallis and Futuna Islands"
2876
  msgstr ""
2877
 
2878
+ #: inc/core/helpers/helper-misc.php:484
2879
  msgid "Western Sahara"
2880
  msgstr ""
2881
 
2882
+ #: inc/core/helpers/helper-misc.php:486
2883
  msgid "Yugoslavia"
2884
  msgstr ""
2885
 
2886
+ #: inc/core/helpers/helper-misc.php:682
2887
  msgid "Response #%s"
2888
  msgstr ""
2889
 
2895
  msgid "Insert"
2896
  msgstr ""
2897
 
2898
+ #: inc/core/templates/admin-message-edit.php:37
2899
  msgid "Previous response"
2900
  msgstr ""
2901
 
2902
+ #: inc/core/templates/admin-message-edit.php:39
2903
  msgid "Next response"
2904
  msgstr ""
2905
 
2913
  "and to share some data about your usage with"
2914
  msgstr ""
2915
 
 
 
 
 
 
2916
  #: inc/core/templates/admin-tracking.php:17
2917
  msgid "Allow and set up HappyForms"
2918
  msgstr ""
2925
  msgid "continue"
2926
  msgstr ""
2927
 
2928
+ #: inc/core/templates/customize-controls/style/divider.php:10
2929
+ msgid "Back"
2930
+ msgstr ""
2931
+
2932
+ #: inc/core/templates/customize-controls/style/divider.php:13
2933
+ msgid "You are customizing"
2934
+ msgstr ""
2935
+
2936
  #: inc/core/templates/customize-form-build.php:4
2937
  msgid "Form name"
2938
  msgstr ""
2993
  msgid "Search parts"
2994
  msgstr ""
2995
 
2996
+ #: inc/core/templates/customize-form-parts-drawer.php:7
2997
+ msgid "Clear Results"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2998
  msgstr ""
2999
 
3000
+ #: inc/core/templates/customize-form-parts-drawer.php:23
3001
+ msgid "No parts found."
3002
  msgstr ""
3003
 
3004
  #: inc/core/templates/customize-form-steps.php:23
3014
  msgid "of"
3015
  msgstr ""
3016
 
 
 
 
 
 
 
 
 
 
 
 
 
3017
  #: inc/core/templates/customize-header-actions.php:3
3018
  msgid "Save Form"
3019
  msgstr ""
3804
  msgid "%d out of %d"
3805
  msgstr ""
3806
 
 
 
 
 
 
 
 
 
3807
  #: inc/core/templates/preview-form-pencil.php:3
3808
  msgid "Click to edit this part."
3809
  msgstr ""
readme.txt CHANGED
@@ -5,7 +5,7 @@ Tags: contact, contact form, email, feedback form, form, form builder, custom fo
5
  Requires at least: 4.8
6
  Tested up to: 5.0
7
  Requires PHP: 5.3
8
- Stable tag: 1.6.19
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -15,7 +15,9 @@ The WordPress form builder you need to manage and respond to conversations with
15
 
16
  https://www.youtube.com/watch?v=X1snk2vJbXI
17
 
18
- HappyForms is the simplest way for you to manage and respond to conversations with your website visitors. With over 10 years of experience here at The Theme Foundry, we've heard from nearly 1,000,000 business what they need from a form builder! We've heard about the wasted time trying to set up tricky forms; the frustration of emails not being delivered; and the let down of not hearing from leads. That’s why we created HappyForms: Your free and friendly drag and drop form builder for creating contact forms, lead generation forms, feedback forms, quote forms, survey forms and more! HappyForms is optimized to increase conversations with your website visitors, and to help you keep track of these conversations in a filterable archive. Have peace of mind knowing messages to-and-from are getting delivered without the hassle of spam. You'll be set up and going in 5 minutes or less.
 
 
19
 
20
  = HappyForms solves these struggles: =
21
 
@@ -24,7 +26,7 @@ HappyForms is the simplest way for you to manage and respond to conversations wi
24
  * 💌 Skip the hassle of spam messages.
25
  * 😍 Manage customer messages easily.
26
  * 🎨 Live preview form builder.
27
- * 💰 Save on average $186 each year.
28
 
29
  = Popular HappyForms Features: =
30
 
@@ -67,6 +69,19 @@ HappyForms is the simplest way for you to manage and respond to conversations wi
67
  * Story — For adding fill-in-the-blank style inputs to a paragraph.
68
  * Placeholder — For form descriptions and horizontal rules.
69
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  == Frequently Asked Questions ==
71
 
72
  = Installation =
@@ -76,10 +91,24 @@ HappyForms is the simplest way for you to manage and respond to conversations wi
76
 
77
  = Can I use my own themes? =
78
 
79
- Absolutely! HappyForms gets out of the way and is designed to work with any theme’s styles.
 
 
 
 
80
 
81
  == Changelog ==
82
 
 
 
 
 
 
 
 
 
 
 
83
  = 1.6.19 =
84
  * Bugfix: Phone country dropdown was not opening after other dropdown part was focused.
85
 
@@ -367,6 +396,9 @@ Absolutely! HappyForms gets out of the way and is designed to work with any them
367
 
368
  == Upgrade Notice ==
369
 
 
 
 
370
  = 1.6.19 =
371
  * Fix Phone country dropdown not opening after other dropdown parts were focused.
372
 
5
  Requires at least: 4.8
6
  Tested up to: 5.0
7
  Requires PHP: 5.3
8
+ Stable tag: 1.6.20
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
15
 
16
  https://www.youtube.com/watch?v=X1snk2vJbXI
17
 
18
+ [HappyForms](https://happyforms.me/) is the simplest way for you to manage and respond to conversations with your website visitors. With over 10 years of experience here at The Theme Foundry, we've heard from nearly 1,000,000 business what they need from a form builder! We've heard about the wasted time trying to set up tricky forms; the frustration of emails not being delivered; and the let down of not hearing from leads. That’s why we created HappyForms: Your free and friendly drag and drop form builder for creating contact forms, lead generation forms, feedback forms, quote forms, survey forms and more! HappyForms is optimized to increase conversations with your website visitors, and to help you keep track of these conversations in a filterable archive. Have peace of mind knowing messages to-and-from are getting delivered without the hassle of spam. You'll be set up and going in 5 minutes or less.
19
+
20
+ [Discover all the benefits of upgrading.](https://happyforms.me/upgrade) 🚀
21
 
22
  = HappyForms solves these struggles: =
23
 
26
  * 💌 Skip the hassle of spam messages.
27
  * 😍 Manage customer messages easily.
28
  * 🎨 Live preview form builder.
29
+ * 💰 Save on average $300+ each year.
30
 
31
  = Popular HappyForms Features: =
32
 
69
  * Story — For adding fill-in-the-blank style inputs to a paragraph.
70
  * Placeholder — For form descriptions and horizontal rules.
71
 
72
+ = Upgraded HappyForms Features: =
73
+
74
+ * Let folks upload files to your forms.
75
+ * Easily open forms in modal / pop-up window.
76
+ * Password protect forms for private access.
77
+ * Show and hide forms using date/time scheduler.
78
+ * Limit the number of responses per form.
79
+ * Shuffle form parts and values to avoid biases.
80
+ * Get access to our growing Slack community.
81
+ * Unlimited personal and client use plans.
82
+
83
+ [Discover all the benefits of upgrading.](https://happyforms.me/upgrade) 🚀
84
+
85
  == Frequently Asked Questions ==
86
 
87
  = Installation =
91
 
92
  = Can I use my own themes? =
93
 
94
+ Absolutely! HappyForms gets out of the way and is designed to work with any theme.
95
+
96
+ = Is there a premium version? =
97
+
98
+ Yep! HappyForms free isn't going anywhere but for those looking for even more power you may be interested in our [HappyForms upgrade plan](https://happyforms.me/upgrade).
99
 
100
  == Changelog ==
101
 
102
+ = 1.6.20 =
103
+ * Improvement: Better support for emails display name.
104
+ * Improvement: Form title now highlights when Build step is opened for easier renaming.
105
+ * Improvement: Optional part label is only displayed when some part is made optional.
106
+ * Improvement: Updated copy and labels of some options in Setup and Style step.
107
+ * Improvement: Updated readme and screenshots.
108
+ * Bugfix: Expand / Collapse all button was not working properly on existing forms.
109
+ * Bugfix: Phone part was not displaying correctly in certain padding and border configurations.
110
+ * Bugfix: Minor bugfixes related to styles.
111
+
112
  = 1.6.19 =
113
  * Bugfix: Phone country dropdown was not opening after other dropdown part was focused.
114
 
396
 
397
  == Upgrade Notice ==
398
 
399
+ = 1.6.20 =
400
+ * Customize screen and emails bugfixes and improvements.
401
+
402
  = 1.6.19 =
403
  * Fix Phone country dropdown not opening after other dropdown parts were focused.
404