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

Version Description

  • Removal: "Message location" control led to degraded usability.
  • Removal: "Title" section in "Style" tab added clutter and duplicated core functionality.
  • Improvement: Better selection and insertion of forms in block interface.
Download this release

Release Info

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

Code changes from version 1.13.3 to 1.13.4

Files changed (53) hide show
  1. core/assets/css/admin.css +11 -145
  2. core/assets/css/color.css +0 -4
  3. core/assets/css/dashboard-modals.css +57 -0
  4. core/assets/css/layout.css +1 -6
  5. core/assets/js/admin/block.js +0 -104
  6. core/assets/js/admin/dashboard.js +2 -65
  7. core/assets/js/parts/part-checkbox.js +0 -23
  8. core/assets/js/parts/part-radio.js +0 -23
  9. core/assets/jsx/build/admin/block.asset.php +1 -1
  10. core/assets/jsx/build/admin/block.js +52 -24
  11. core/assets/jsx/build/admin/block.js.map +1 -1
  12. core/assets/jsx/src/admin/block.js +28 -12
  13. core/assets/jsx/src/admin/dashboard-modals.js +119 -0
  14. core/classes/class-block.php +4 -7
  15. core/classes/class-dashboard-modals.php +43 -26
  16. core/classes/class-deactivation.php +7 -12
  17. core/classes/class-form-controller.php +11 -22
  18. core/classes/class-form-option-limiter.php +147 -22
  19. core/classes/class-form-setup.php +47 -12
  20. core/classes/class-form-styles.php +25 -20
  21. core/classes/class-happyforms-core.php +0 -4
  22. core/classes/class-tracking.php +0 -99
  23. core/classes/parts/class-part-checkbox.php +1 -11
  24. core/classes/parts/class-part-radio.php +1 -11
  25. core/classes/parts/class-part-select.php +2 -33
  26. core/helpers/helper-activation.php +15 -3
  27. core/helpers/helper-misc.php +21 -10
  28. core/templates/admin/modal-deactivate.php +0 -17
  29. core/templates/customize-controls/style/code.php +1 -1
  30. core/templates/customize-controls/style/divider.php +1 -1
  31. core/templates/partials/admin-modal-footer.php +0 -3
  32. core/templates/partials/admin-modal-header.php +0 -8
  33. core/templates/parts/customize-checkbox.php +2 -12
  34. core/templates/parts/customize-email.php +1 -1
  35. core/templates/parts/customize-multi-line-text.php +1 -1
  36. core/templates/parts/customize-number.php +1 -1
  37. core/templates/parts/customize-radio.php +2 -12
  38. core/templates/parts/customize-select.php +1 -1
  39. core/templates/parts/customize-single-line-text.php +1 -1
  40. happyforms.php +2 -2
  41. inc/assets/css/dashboard-modals.css +73 -0
  42. inc/assets/js/admin/dashboard.js +2 -13
  43. inc/assets/jsx/build/admin/dashboard-modals.asset.php +1 -0
  44. inc/assets/jsx/build/admin/dashboard-modals.js +421 -0
  45. inc/assets/jsx/build/admin/dashboard-modals.js.map +1 -0
  46. inc/assets/jsx/src/admin/dashboard-modals.js +127 -0
  47. inc/classes/class-happyforms.php +49 -83
  48. inc/classes/class-message-controller.php +34 -117
  49. inc/templates/admin/modal-onboarding.php +0 -36
  50. inc/templates/admin/modal-upgrade.php +0 -8
  51. inc/templates/admin/upgrade-modal.php +0 -2
  52. languages/happyforms.pot +701 -655
  53. readme.txt +11 -3
core/assets/css/admin.css CHANGED
@@ -197,161 +197,27 @@ p.happyforms-message-nav span.divider:last-child {
197
 
198
  /**
199
  *
200
- * Dashboard modals
201
  *
202
  */
203
- @keyframes happyforms-modal__fade-in-animation {
204
- from {
205
- opacity: 0;
206
- }
207
- to {
208
- opacity: 1;
209
- }
210
- }
211
-
212
- @keyframes happyforms-modal__appear-animation {
213
- from {
214
- margin-top: 32px;
215
- }
216
- to {
217
- margin-top: 0;
218
- }
219
- }
220
-
221
- .happyforms-modal__overlay {
222
- position: fixed;
223
- top: 0;
224
- bottom: 0;
225
- left: 0;
226
- right: 0;
227
- display: flex;
228
- justify-content: center;
229
- align-items: center;
230
- background-color: rgba(0, 0, 0, 0.35);
231
- z-index: 100000;
232
- animation: happyforms-modal__fade-in-animation 0.2s ease-out 0s;
233
- animation-fill-mode: forwards;
234
- }
235
-
236
- .happyforms-modal__frame {
237
- position: relative;
238
- box-sizing: border-box;
239
- background: #fff;
240
- width: 450px;
241
- max-height: 90vh;
242
- overflow: auto;
243
- animation: happyforms-modal__appear-animation 0.1s ease-out;
244
- animation-fill-mode: forwards;
245
- box-shadow: 0 3px 30px rgb(0 0 0 / 20%);
246
- }
247
-
248
- @media screen and (max-width: 800px) {
249
- .happyforms-modal__frame {
250
- width: auto;
251
- margin: 20px;
252
- }
253
- }
254
-
255
- .happyforms-modal__header {
256
- position: sticky;
257
- top: 0;
258
- left: 0;
259
- right: 0;
260
- }
261
-
262
- .happyforms-modal__dismiss {
263
- position: absolute;
264
- top: 0;
265
- right: 0;
266
- display: inline-flex;
267
- justify-content: center;
268
- height: 36px;
269
- min-width: 36px;
270
- margin: 8px;
271
- padding: 6px;
272
- border: 0;
273
- cursor: pointer;
274
- -webkit-appearance: none;
275
- background: none;
276
- transition: box-shadow 0.1s linear;
277
- border-radius: 2px;
278
- }
279
-
280
- .happyforms-modal__dismiss:focus {
281
- box-shadow: 0 0 0 2px #007cba;
282
- outline: 3px solid transparent;
283
- }
284
-
285
- .happyforms-modal__dismiss:hover svg {
286
- fill: #2271b1;
287
- }
288
-
289
- .happyforms-modal__body {
290
- padding: 40px 50px 40px;
291
- }
292
-
293
- @media screen and (max-width: 800px) {
294
- .happyforms-modal__body {
295
- padding: 30px 30px 40px;
296
- }
297
- }
298
-
299
- .happyforms-modal__heading {
300
- padding-bottom: 30px;
301
- }
302
-
303
- .happyforms-modal__heading h1 {
304
- font-size: 24px;
305
- line-height: 1.4;
306
- margin: 0 0 16px;
307
- }
308
-
309
- .happyforms-modal__heading p {
310
- margin: 0;
311
  }
312
 
313
- .happyforms-modal__content form {
314
  display: flex;
315
- flex-direction: column;
316
  width: 100%;
 
317
  }
318
 
319
- .happyforms-modal__content form label,
320
- .happyforms-modal__content form input {
321
- flex: 1;
322
  }
323
 
324
- .happyforms-modal__content form label {
325
- line-height: 13px;
326
- margin: 20px 0 5px;
327
  }
328
 
329
- .happyforms-modal__content form label:first-child {
330
- margin-top: 0;
331
- }
332
-
333
- .happyforms-modal__content form button.button-primary {
334
- margin-top: 30px;
335
- }
336
-
337
- /**
338
- *
339
- * Deactivation modal
340
- *
341
- */
342
- .happyforms-modal__frame--deactivate h1 {
343
- margin-bottom: 0;
344
- }
345
-
346
- .happyforms-modal__frame--deactivate .happyforms-modal__content form label {
347
- margin: 0 0 10px;
348
- }
349
-
350
- /**
351
- *
352
- * Gutenberg block
353
- *
354
- */
355
- .edit-post-visual-editor .happyforms-block-form-selector-wrap .components-select-control__input {
356
- padding: 0 10px;
357
  }
197
 
198
  /**
199
  *
200
+ * Gutenberg block
201
  *
202
  */
203
+ .edit-post-visual-editor .happyforms-block-form-selector-wrap .components-select-control__input {
204
+ padding: 0 10px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
205
  }
206
 
207
+ .happyforms-block-placeholder__control-group {
208
  display: flex;
 
209
  width: 100%;
210
+ align-items: stretch;
211
  }
212
 
213
+ .happyforms-block-placeholder__control-group > *:first-child {
214
+ flex: 1 0 auto;
 
215
  }
216
 
217
+ .happyforms-block-placeholder__control-group button {
218
+ margin-left: 8px;
 
219
  }
220
 
221
+ .happyforms-block-placeholder__control-group select {
222
+ height: 36px !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
223
  }
core/assets/css/color.css CHANGED
@@ -453,10 +453,6 @@
453
  color: var(--happyforms-color-submit-text);
454
  }
455
 
456
- .happyforms-styles.happyforms-form--disable-until-valid input[type=submit][disabled].happyforms-button--submit {
457
- opacity: 0.5;
458
- }
459
-
460
  .happyforms-styles input[type=submit].happyforms-button--submit:hover,
461
  .happyforms-styles input[type=submit].happyforms-button--submit:focus {
462
  cursor: pointer;
453
  color: var(--happyforms-color-submit-text);
454
  }
455
 
 
 
 
 
456
  .happyforms-styles input[type=submit].happyforms-button--submit:hover,
457
  .happyforms-styles input[type=submit].happyforms-button--submit:focus {
458
  cursor: pointer;
core/assets/css/dashboard-modals.css ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ *
3
+ * Common styles
4
+ *
5
+ */
6
+ .happyforms-modal {
7
+ width: 450px;
8
+ }
9
+
10
+ .happyforms-modal p:last-child {
11
+ margin-bottom: 0;
12
+ }
13
+
14
+ .happyforms-modal .components-radio-control__option:not(:last-child) {
15
+ margin-bottom: 13px;
16
+ }
17
+
18
+ .happyforms-modal__footer {
19
+ margin-top: 24px;
20
+ }
21
+
22
+ .happyforms-modal__footer-button-group {
23
+ display: flex;
24
+ }
25
+
26
+ .happyforms-modal__footer-button-group .components-button {
27
+ flex: 1 0 auto;
28
+ justify-content: center;
29
+ }
30
+
31
+ .happyforms-modal__footer-button-group .components-button + .components-button {
32
+ margin-left: 10px;
33
+ }
34
+
35
+ .components-modal__frame.components-guide.happyforms-modal {
36
+ height: auto;
37
+ max-height: 90vh;
38
+ }
39
+
40
+
41
+ /**
42
+ *
43
+ * Deactivation modal
44
+ *
45
+ */
46
+ .happyforms-modal.happyforms-modal--deactivate label {
47
+ display: block;
48
+ margin: 0 0 3px;
49
+ }
50
+
51
+ .happyforms-modal.happyforms-modal--deactivate label:not(:last-child) {
52
+ margin: 0 0 5px;
53
+ }
54
+
55
+ .happyforms-modal.happyforms-modal--deactivate .components-modal__content {
56
+ padding-bottom: 32px;
57
+ }
core/assets/css/layout.css CHANGED
@@ -580,7 +580,7 @@ h3.happyforms-form__title {
580
  }
581
  }
582
 
583
- .happyforms-part--choice.display-type--block.happyforms-part-options-width--auto .happyforms-part__el {
584
  display: flex !important;
585
  flex-flow: column wrap;
586
  }
@@ -716,11 +716,6 @@ h3.happyforms-form__title {
716
  margin: 0 0 25px 0;
717
  }
718
 
719
- .happyforms-form--notices-below .happyforms-flex>.happyforms-message-notices {
720
- order: 1000;
721
- margin: 25px 0 0 0;
722
- }
723
-
724
  form .happyforms-flex>.happyforms-message-notices .happyforms-message-notice {
725
  width: 100%;
726
  box-sizing: border-box;
580
  }
581
  }
582
 
583
+ .happyforms-part--choice.display-type--block .happyforms-part__el {
584
  display: flex !important;
585
  flex-flow: column wrap;
586
  }
716
  margin: 0 0 25px 0;
717
  }
718
 
 
 
 
 
 
719
  form .happyforms-flex>.happyforms-message-notices .happyforms-message-notice {
720
  width: 100%;
721
  box-sizing: border-box;
core/assets/js/admin/block.js DELETED
@@ -1,104 +0,0 @@
1
- ( function( element, blocks, components, editor, $, settings ) {
2
-
3
- var el = wp.element.createElement;
4
- var registerBlockType = wp.blocks.registerBlockType;
5
- var ServerSideRender = wp.serverSideRender;
6
- var PanelBody = wp.components.PanelBody;
7
- var SelectControl = wp.components.SelectControl;
8
- var Placeholder = wp.components.Placeholder;
9
- var Notice = wp.components.Notice;
10
- var Button = wp.components.Button;
11
- var Icon = wp.components.Icon;
12
- var InspectorControls = wp.blockEditor.InspectorControls;
13
-
14
- var blockID = 'thethemefoundry/happyforms';
15
- var options = Object
16
- .keys( settings.forms )
17
- .map( function( key ) {
18
- return { label: settings.forms[key], value: key };
19
- } )
20
- options.reverse().unshift( { label: settings.i18n.select_default, value: '' } );
21
-
22
- var ComponentPlaceholder = function( props ) {
23
- var component =
24
- el( Placeholder, {
25
- icon: settings.icon,
26
- label: settings.i18n.placeholder_text,
27
- className: settings.i18n.placeholder_class,
28
- key: 'happyforms-component-placeholder',
29
- },
30
- el( SelectControl, {
31
- value: '',
32
- options: options,
33
- onChange: function( value ) {
34
- props.setAttributes( { id: value } );
35
- }
36
- } )
37
- );
38
-
39
- return component;
40
- };
41
-
42
- var ComponentForm = function( props ) {
43
- var shortcode = el( wp.serverSideRender, {
44
- block: blockID,
45
- attributes: props.attributes,
46
- key: 'happyforms-component-form',
47
- }
48
- );
49
-
50
- var component = [ shortcode ];
51
-
52
- return component;
53
- };
54
-
55
- var ComponentInspector = function( props ) {
56
- var component =
57
- el( InspectorControls, { key: 'happyforms-inspector-controls' },
58
- el( PanelBody, { title: settings.i18n.settings_title },
59
- el( SelectControl, {
60
- value: props.attributes.id,
61
- options: options,
62
- onChange: function( value ) {
63
- props.setAttributes( { id: value } );
64
- },
65
- } ),
66
-
67
- ),
68
- );
69
-
70
- return component;
71
- };
72
-
73
- registerBlockType( blockID, {
74
- title: settings.block.title,
75
- description: settings.block.description,
76
- category: settings.block.category,
77
- icon: settings.block.icon,
78
- keywords: settings.block.keywords,
79
- supports: {
80
- anchor: true,
81
- html: false
82
- },
83
-
84
- edit: function( props ) {
85
- if ( props.attributes.id ) {
86
- return [ ComponentForm( props ), ComponentInspector( props ) ];
87
- }
88
-
89
- return [ ComponentPlaceholder( props ), ComponentInspector( props ) ];
90
- },
91
-
92
- save: function() {
93
- return null;
94
- },
95
- } );
96
-
97
- } )(
98
- window.wp.element,
99
- window.wp.blocks,
100
- window.wp.components,
101
- window.wp.editor,
102
- jQuery,
103
- _happyFormsBlockSettings,
104
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
core/assets/js/admin/dashboard.js CHANGED
@@ -10,10 +10,7 @@
10
  $( document ).on( 'click', '.happyforms-editor-button', this.onEditorButton.bind( this ) );
11
  $( '.happyforms-dialog__button' ).on( 'click', this.onDialogButton.bind( this ) );
12
  $( '.happyforms-notice:not(.one-time)' ).on( 'click', '.notice-dismiss', this.onNoticeDismiss.bind( this ) );
13
- $( document ).on( 'click', '.happyforms-modal__frame', this.lockModalEvent );
14
  $( document ).on( 'click', 'a[id^="deactivate-happyforms"]', this.openDeactivateModal );
15
- $( document ).on( 'click', '.happyforms-modal__frame--deactivate input[name="keep-data"]', this.onSelectKeepData );
16
- $( document ).on( 'submit', '.happyforms-modal__frame--deactivate form', this.onDeactivateModalSubmit );
17
  },
18
 
19
  onEditorButton: function( e ) {
@@ -89,70 +86,10 @@
89
  );
90
  },
91
 
92
- openModal: function( id ) {
93
- var self = this;
94
-
95
- $.get( ajaxurl, {
96
- action: settings.actionModalFetch,
97
- id: id,
98
- }, function( html ) {
99
- $( 'body' ).addClass( 'modal-open' );
100
- $( 'body' ).append( html );
101
-
102
- $( document ).one( 'click', '.happyforms-modal__overlay', self.closeModal );
103
- $( document ).one( 'click', '.happyforms-modal__dismiss', self.closeModal );
104
- } );
105
- },
106
-
107
- closeModal: function() {
108
- if ( $( '[data-happyforms-modal-dismissible]' ).length ) {
109
- var id = $( '[data-happyforms-modal-id]' ).attr( 'data-happyforms-modal-id' );
110
-
111
- $.post( ajaxurl, {
112
- action: settings.actionModalDismiss,
113
- id: id,
114
- } );
115
- }
116
-
117
- $( '.happyforms-modal__overlay' ).remove();
118
- $( 'body' ).removeClass( 'modal-open' );
119
- },
120
-
121
- lockModalEvent: function( e ) {
122
- e.stopPropagation();
123
- },
124
-
125
  openDeactivateModal: function( e ) {
126
  e.preventDefault();
127
 
128
- happyForms.dashboard.$deactivationLink = $( e.target );
129
- happyForms.dashboard.openModal( 'deactivate' );
130
- },
131
-
132
- onDeactivateModalSubmit: function( e ) {
133
- e.preventDefault();
134
-
135
- var $form = $( e.target );
136
- var nonce = $( 'input[name="_wpnonce"]', $form ).val();
137
- var keepData = $( 'input[name="keep-data"]:checked', $form ).val();
138
- var redirectUrl = happyForms.dashboard.$deactivationLink.attr( 'href' );
139
-
140
- $.post( ajaxurl, {
141
- action: settings.actionDeactivateModalSubmit,
142
- _wpnonce: nonce,
143
- keep_data: keepData,
144
- }, function() {
145
- window.location.href = redirectUrl;
146
- } );
147
-
148
- happyForms.dashboard.closeModal();
149
- },
150
-
151
- onSelectKeepData: function( e ) {
152
- var keepData = $( '.happyforms-modal__frame--deactivate input[name="keep-data"]:checked' ).val();
153
- var buttonText = 'no' == keepData ? settings.textDeactivateAndCleanup : settings.textDeactivateAndKeep;
154
-
155
- $( '.happyforms-modal__frame--deactivate button[type="submit"]' ).text( buttonText );
156
  },
157
  };
158
 
@@ -160,4 +97,4 @@
160
  happyForms.dashboard.init();
161
  } );
162
 
163
- } )( jQuery, _happyFormsAdmin );
10
  $( document ).on( 'click', '.happyforms-editor-button', this.onEditorButton.bind( this ) );
11
  $( '.happyforms-dialog__button' ).on( 'click', this.onDialogButton.bind( this ) );
12
  $( '.happyforms-notice:not(.one-time)' ).on( 'click', '.notice-dismiss', this.onNoticeDismiss.bind( this ) );
 
13
  $( document ).on( 'click', 'a[id^="deactivate-happyforms"]', this.openDeactivateModal );
 
 
14
  },
15
 
16
  onEditorButton: function( e ) {
86
  );
87
  },
88
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  openDeactivateModal: function( e ) {
90
  e.preventDefault();
91
 
92
+ happyForms.modals.openDeactivateModal( e.target.href );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
93
  },
94
  };
95
 
97
  happyForms.dashboard.init();
98
  } );
99
 
100
+ } )( jQuery, _happyFormsAdmin );
core/assets/js/parts/part-checkbox.js CHANGED
@@ -236,7 +236,6 @@
236
  this.listenTo( this, 'ready', this.onReady );
237
  this.listenTo( this.model, 'change:show_select_all', this.onSelectAllChange );
238
  this.listenTo( this.model, 'change:select_all_label', this.onSelectAllLabelChange );
239
- this.listenTo( this.model, 'change:options_width', this.onOptionsWidthChange );
240
 
241
  this.listenTo( this.model, 'change:other_option', this.onAddOtherOption );
242
  this.listenTo( this.model, 'change:other_option_label', this.onOtherOptionLabelChange );
@@ -414,15 +413,6 @@
414
  happyForms.previewSend( 'happyforms-part-dom-update', data );
415
  },
416
 
417
- onOptionsWidthChange: function() {
418
- var data = {
419
- id: this.model.get( 'id' ),
420
- callback: 'onCheckboxOptionsWidthChange'
421
- };
422
-
423
- happyForms.previewSend( 'happyforms-part-dom-update', data );
424
- },
425
-
426
  onEnterKey: function( e ) {
427
  e.preventDefault();
428
 
@@ -622,19 +612,6 @@
622
  $option.remove();
623
  },
624
 
625
- onCheckboxOptionsWidthChange: function( id, html, options ) {
626
- var part = this.getPartModel( id );
627
- var $part = this.getPartElement( html );
628
-
629
- $part.removeClass( 'happyforms-part-options-width--auto' );
630
- $part.removeClass( 'happyforms-part-options-width--half' );
631
- $part.removeClass( 'happyforms-part-options-width--third' );
632
- $part.removeClass( 'happyforms-part-options-width--quarter' );
633
- $part.removeClass( 'happyforms-part-options-width--full' );
634
-
635
- $part.addClass( 'happyforms-part-options-width--' + part.get( 'options_width' ) );
636
- },
637
-
638
  onCheckboxSelectAllLabelChangeCallback: function( id, html, options ) {
639
  var part = this.getPartModel( id );
640
  var $part = this.getPartElement( html );
236
  this.listenTo( this, 'ready', this.onReady );
237
  this.listenTo( this.model, 'change:show_select_all', this.onSelectAllChange );
238
  this.listenTo( this.model, 'change:select_all_label', this.onSelectAllLabelChange );
 
239
 
240
  this.listenTo( this.model, 'change:other_option', this.onAddOtherOption );
241
  this.listenTo( this.model, 'change:other_option_label', this.onOtherOptionLabelChange );
413
  happyForms.previewSend( 'happyforms-part-dom-update', data );
414
  },
415
 
 
 
 
 
 
 
 
 
 
416
  onEnterKey: function( e ) {
417
  e.preventDefault();
418
 
612
  $option.remove();
613
  },
614
 
 
 
 
 
 
 
 
 
 
 
 
 
 
615
  onCheckboxSelectAllLabelChangeCallback: function( id, html, options ) {
616
  var part = this.getPartModel( id );
617
  var $part = this.getPartElement( html );
core/assets/js/parts/part-radio.js CHANGED
@@ -226,7 +226,6 @@
226
  this.listenTo( this.optionViews, 'reset', this.onOptionViewsSorted );
227
  this.listenTo( this, 'sort-stop', this.onOptionSortStop );
228
  this.listenTo( this, 'ready', this.onReady );
229
- this.listenTo( this.model, 'change:options_width', this.onOptionsWidthChange );
230
 
231
  this.listenTo( this.model, 'change:other_option', this.onAddOtherOption );
232
  this.listenTo( this.model, 'change:other_option_label', this.onOtherOptionLabelChange );
@@ -397,15 +396,6 @@
397
  happyForms.previewSend( 'happyforms-part-dom-update', data );
398
  },
399
 
400
- onOptionsWidthChange: function() {
401
- var data = {
402
- id: this.model.get( 'id' ),
403
- callback: 'onRadioOptionsWidthChange'
404
- };
405
-
406
- happyForms.previewSend( 'happyforms-part-dom-update', data );
407
- },
408
-
409
  onEnterKey: function( e ) {
410
  e.preventDefault();
411
 
@@ -545,19 +535,6 @@
545
  this.$( 'input', $option ).prop( 'checked', option.get( 'is_default' ) );
546
  },
547
 
548
- onRadioOptionsWidthChange: function( id, html, options ) {
549
- var part = this.getPartModel( id );
550
- var $part = this.getPartElement( html );
551
-
552
- $part.removeClass( 'happyforms-part-options-width--auto' );
553
- $part.removeClass( 'happyforms-part-options-width--half' );
554
- $part.removeClass( 'happyforms-part-options-width--third' );
555
- $part.removeClass( 'happyforms-part-options-width--quarter' );
556
- $part.removeClass( 'happyforms-part-options-width--full' );
557
-
558
- $part.addClass( 'happyforms-part-options-width--' + part.get( 'options_width' ) );
559
- },
560
-
561
  onRadioOtherOptionLabelChangeCallback: function( id, html, options ) {
562
  var part = this.getPartModel( id );
563
  var $part = this.getPartElement( html );
226
  this.listenTo( this.optionViews, 'reset', this.onOptionViewsSorted );
227
  this.listenTo( this, 'sort-stop', this.onOptionSortStop );
228
  this.listenTo( this, 'ready', this.onReady );
 
229
 
230
  this.listenTo( this.model, 'change:other_option', this.onAddOtherOption );
231
  this.listenTo( this.model, 'change:other_option_label', this.onOtherOptionLabelChange );
396
  happyForms.previewSend( 'happyforms-part-dom-update', data );
397
  },
398
 
 
 
 
 
 
 
 
 
 
399
  onEnterKey: function( e ) {
400
  e.preventDefault();
401
 
535
  this.$( 'input', $option ).prop( 'checked', option.get( 'is_default' ) );
536
  },
537
 
 
 
 
 
 
 
 
 
 
 
 
 
 
538
  onRadioOtherOptionLabelChangeCallback: function( id, html, options ) {
539
  var part = this.getPartModel( id );
540
  var $part = this.getPartElement( html );
core/assets/jsx/build/admin/block.asset.php CHANGED
@@ -1 +1 @@
1
- <?php return array('dependencies' => array('wp-blocks', 'wp-components', 'wp-editor', 'wp-element', 'wp-polyfill', 'wp-server-side-render'), 'version' => '73970ec5a1dd7a222949002f50b434a6');
1
+ <?php return array('dependencies' => array('wp-block-editor', 'wp-blocks', 'wp-components', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-server-side-render'), 'version' => '393949c2eb41deea19eb0e325ed81471');
core/assets/jsx/build/admin/block.js CHANGED
@@ -101,10 +101,14 @@ __webpack_require__.r(__webpack_exports__);
101
  /* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__);
102
  /* harmony import */ var _wordpress_server_side_render__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/server-side-render */ "@wordpress/server-side-render");
103
  /* harmony import */ var _wordpress_server_side_render__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_server_side_render__WEBPACK_IMPORTED_MODULE_2__);
104
- /* harmony import */ var _wordpress_editor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/editor */ "@wordpress/editor");
105
- /* harmony import */ var _wordpress_editor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_editor__WEBPACK_IMPORTED_MODULE_3__);
106
  /* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/blocks */ "@wordpress/blocks");
107
  /* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_blocks__WEBPACK_IMPORTED_MODULE_4__);
 
 
 
 
108
 
109
 
110
 
@@ -120,23 +124,35 @@ __webpack_require__.r(__webpack_exports__);
120
  };
121
  });
122
  options.reverse().unshift({
123
- label: settings.i18n.select_default,
124
  value: ''
125
  });
126
 
127
  var ComponentPlaceholder = function (props) {
 
128
  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Placeholder"], {
129
- icon: settings.icon,
130
- label: settings.i18n.placeholder_text,
131
- className: settings.i18n.placeholder_class,
 
 
 
 
 
 
132
  key: "happyforms-component-placeholder"
133
- }, settings.forms.length > 0 ? Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["SelectControl"], {
134
- value: "",
 
 
135
  options: options,
136
- onChange: v => props.setAttributes({
137
- id: v
 
 
 
138
  })
139
- }) : Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", null, settings.i18n.no_forms_found_text));
140
  };
141
 
142
  var ComponentForm = function (props) {
@@ -148,11 +164,12 @@ __webpack_require__.r(__webpack_exports__);
148
  };
149
 
150
  var ComponentInspector = function (props) {
151
- return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_editor__WEBPACK_IMPORTED_MODULE_3__["InspectorControls"], {
152
  key: "happyforms-inspector-controls"
153
  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["PanelBody"], {
154
- title: settings.i18n.settings_title
155
  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["SelectControl"], {
 
156
  value: props.attributes.id,
157
  options: options,
158
  onChange: v => props.setAttributes({
@@ -173,7 +190,7 @@ __webpack_require__.r(__webpack_exports__);
173
  },
174
  edit: function (props) {
175
  if (!props.attributes.id && settings.forms.length === 1) {
176
- props.attributes.id = settings.forms[0].ID;
177
  }
178
 
179
  let blockComponent = props.attributes.id ? ComponentForm(props) : ComponentPlaceholder(props);
@@ -189,6 +206,17 @@ __webpack_require__.r(__webpack_exports__);
189
 
190
  /***/ }),
191
 
 
 
 
 
 
 
 
 
 
 
 
192
  /***/ "@wordpress/blocks":
193
  /*!********************************!*\
194
  !*** external ["wp","blocks"] ***!
@@ -211,25 +239,25 @@ __webpack_require__.r(__webpack_exports__);
211
 
212
  /***/ }),
213
 
214
- /***/ "@wordpress/editor":
215
- /*!********************************!*\
216
- !*** external ["wp","editor"] ***!
217
- \********************************/
218
  /*! no static exports found */
219
  /***/ (function(module, exports) {
220
 
221
- (function() { module.exports = window["wp"]["editor"]; }());
222
 
223
  /***/ }),
224
 
225
- /***/ "@wordpress/element":
226
- /*!*********************************!*\
227
- !*** external ["wp","element"] ***!
228
- \*********************************/
229
  /*! no static exports found */
230
  /***/ (function(module, exports) {
231
 
232
- (function() { module.exports = window["wp"]["element"]; }());
233
 
234
  /***/ }),
235
 
101
  /* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__);
102
  /* harmony import */ var _wordpress_server_side_render__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/server-side-render */ "@wordpress/server-side-render");
103
  /* harmony import */ var _wordpress_server_side_render__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_server_side_render__WEBPACK_IMPORTED_MODULE_2__);
104
+ /* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/block-editor */ "@wordpress/block-editor");
105
+ /* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__);
106
  /* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/blocks */ "@wordpress/blocks");
107
  /* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_blocks__WEBPACK_IMPORTED_MODULE_4__);
108
+ /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
109
+ /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__);
110
+
111
+
112
 
113
 
114
 
124
  };
125
  });
126
  options.reverse().unshift({
127
+ label: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Choose', 'happyforms'),
128
  value: ''
129
  });
130
 
131
  var ComponentPlaceholder = function (props) {
132
+ const [form, setForm] = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["useState"])('');
133
  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Placeholder"], {
134
+ icon: Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Icon"], {
135
+ icon: settings.block.icon,
136
+ style: {
137
+ marginRight: "14.66px"
138
+ }
139
+ }),
140
+ label: settings.block.title,
141
+ instructions: settings.forms.length > 0 ? Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Pick a form to display on your site.', 'happyforms') : Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('No forms found.', 'happyforms'),
142
+ className: "happyforms-block-form-selector-wrap",
143
  key: "happyforms-component-placeholder"
144
+ }, settings.forms.length > 0 && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
145
+ className: "happyforms-block-placeholder__control-group"
146
+ }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["SelectControl"], {
147
+ value: form,
148
  options: options,
149
+ onChange: v => setForm(v)
150
+ }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Button"], {
151
+ isPrimary: "true",
152
+ onClick: v => props.setAttributes({
153
+ id: form
154
  })
155
+ }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Insert', 'happyforms'))));
156
  };
157
 
158
  var ComponentForm = function (props) {
164
  };
165
 
166
  var ComponentInspector = function (props) {
167
+ return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__["InspectorControls"], {
168
  key: "happyforms-inspector-controls"
169
  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["PanelBody"], {
170
+ title: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Settings', 'happyforms')
171
  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["SelectControl"], {
172
+ label: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Pick a form', 'happyforms'),
173
  value: props.attributes.id,
174
  options: options,
175
  onChange: v => props.setAttributes({
190
  },
191
  edit: function (props) {
192
  if (!props.attributes.id && settings.forms.length === 1) {
193
+ props.attributes.id = String(settings.forms[0].ID);
194
  }
195
 
196
  let blockComponent = props.attributes.id ? ComponentForm(props) : ComponentPlaceholder(props);
206
 
207
  /***/ }),
208
 
209
+ /***/ "@wordpress/block-editor":
210
+ /*!*************************************!*\
211
+ !*** external ["wp","blockEditor"] ***!
212
+ \*************************************/
213
+ /*! no static exports found */
214
+ /***/ (function(module, exports) {
215
+
216
+ (function() { module.exports = window["wp"]["blockEditor"]; }());
217
+
218
+ /***/ }),
219
+
220
  /***/ "@wordpress/blocks":
221
  /*!********************************!*\
222
  !*** external ["wp","blocks"] ***!
239
 
240
  /***/ }),
241
 
242
+ /***/ "@wordpress/element":
243
+ /*!*********************************!*\
244
+ !*** external ["wp","element"] ***!
245
+ \*********************************/
246
  /*! no static exports found */
247
  /***/ (function(module, exports) {
248
 
249
+ (function() { module.exports = window["wp"]["element"]; }());
250
 
251
  /***/ }),
252
 
253
+ /***/ "@wordpress/i18n":
254
+ /*!******************************!*\
255
+ !*** external ["wp","i18n"] ***!
256
+ \******************************/
257
  /*! no static exports found */
258
  /***/ (function(module, exports) {
259
 
260
+ (function() { module.exports = window["wp"]["i18n"]; }());
261
 
262
  /***/ }),
263
 
core/assets/jsx/build/admin/block.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./build/core/assets/jsx/src/admin/block.js","webpack:///external [\"wp\",\"blocks\"]","webpack:///external [\"wp\",\"components\"]","webpack:///external [\"wp\",\"editor\"]","webpack:///external [\"wp\",\"element\"]","webpack:///external [\"wp\",\"serverSideRender\"]"],"names":["settings","blockID","options","forms","map","form","label","post_title","value","ID","reverse","unshift","i18n","select_default","ComponentPlaceholder","props","icon","placeholder_text","placeholder_class","length","v","setAttributes","id","no_forms_found_text","ComponentForm","attributes","ComponentInspector","settings_title","registerBlockType","title","block","description","category","keywords","supports","anchor","html","edit","blockComponent","inspectorComponent","component","save","_happyFormsBlockSettings"],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;;;;;;;;;;;;;AClFA;AACA;AACA;AACA;;AAEA,CAAE,UAAUA,QAAV,EAAqB;AAEtB,MAAIC,OAAO,GAAG,4BAAd;AACA,MAAIC,OAAO,GAAGF,QAAQ,CAACG,KAAT,CACZC,GADY,CACP,UAAUC,IAAV,EAAiB;AACtB,WAAO;AAAEC,WAAK,EAAED,IAAI,CAACE,UAAd;AAA0BC,WAAK,EAAEH,IAAI,CAACI;AAAtC,KAAP;AACA,GAHY,CAAd;AAIAP,SAAO,CAACQ,OAAR,GAAkBC,OAAlB,CAA2B;AAAEL,SAAK,EAAEN,QAAQ,CAACY,IAAT,CAAcC,cAAvB;AAAuCL,SAAK,EAAE;AAA9C,GAA3B;;AAEA,MAAIM,oBAAoB,GAAG,UAAUC,KAAV,EAAkB;AAC5C,WACC,yEAAC,iEAAD;AACC,UAAI,EAAGf,QAAQ,CAACgB,IADjB;AAEC,WAAK,EAAGhB,QAAQ,CAACY,IAAT,CAAcK,gBAFvB;AAGC,eAAS,EAAGjB,QAAQ,CAACY,IAAT,CAAcM,iBAH3B;AAIC,SAAG,EAAC;AAJL,OAMGlB,QAAQ,CAACG,KAAT,CAAegB,MAAf,GAAwB,CAAxB,GACC,yEAAC,mEAAD;AAAe,WAAK,EAAC,EAArB;AAAwB,aAAO,EAAGjB,OAAlC;AAA4C,cAAQ,EAAKkB,CAAF,IAASL,KAAK,CAACM,aAAN,CAAqB;AAAEC,UAAE,EAAEF;AAAN,OAArB;AAAhE,MADD,GAEC,oFAAKpB,QAAQ,CAACY,IAAT,CAAcW,mBAAnB,CARJ,CADD;AAcA,GAfD;;AAiBA,MAAIC,aAAa,GAAG,UAAUT,KAAV,EAAkB;AACrC,WAAO,CACN,yEAAC,oEAAD;AACC,WAAK,EAAGd,OADT;AAEC,gBAAU,EAAGc,KAAK,CAACU,UAFpB;AAGC,SAAG,EAAC;AAHL,MADM,CAAP;AAMA,GAPD;;AASA,MAAIC,kBAAkB,GAAG,UAAUX,KAAV,EAAkB;AAC1C,WACC,yEAAC,mEAAD;AAAmB,SAAG,EAAC;AAAvB,OACC,yEAAC,+DAAD;AAAW,WAAK,EAAGf,QAAQ,CAACY,IAAT,CAAce;AAAjC,OACC,yEAAC,mEAAD;AAAe,WAAK,EAAGZ,KAAK,CAACU,UAAN,CAAiBH,EAAxC;AAA6C,aAAO,EAAGpB,OAAvD;AAAiE,cAAQ,EAAKkB,CAAF,IAASL,KAAK,CAACM,aAAN,CAAqB;AAAEC,UAAE,EAAGF;AAAP,OAArB;AAArF,MADD,CADD,CADD;AAOA,GARD;;AAUAQ,6EAAiB,CAAE3B,OAAF,EAAW;AAC3B4B,SAAK,EAAE7B,QAAQ,CAAC8B,KAAT,CAAeD,KADK;AAE3BE,eAAW,EAAE/B,QAAQ,CAAC8B,KAAT,CAAeC,WAFD;AAG3BC,YAAQ,EAAEhC,QAAQ,CAAC8B,KAAT,CAAeE,QAHE;AAI3BhB,QAAI,EAAEhB,QAAQ,CAAC8B,KAAT,CAAed,IAJM;AAK3BiB,YAAQ,EAAEjC,QAAQ,CAAC8B,KAAT,CAAeG,QALE;AAM3BC,YAAQ,EAAE;AACTC,YAAM,EAAE,IADC;AAETC,UAAI,EAAE;AAFG,KANiB;AAW3BC,QAAI,EAAE,UAAUtB,KAAV,EAAkB;AACvB,UAAK,CAAEA,KAAK,CAACU,UAAN,CAAiBH,EAAnB,IAAyBtB,QAAQ,CAACG,KAAT,CAAegB,MAAf,KAA0B,CAAxD,EAA4D;AAC3DJ,aAAK,CAACU,UAAN,CAAiBH,EAAjB,GAAsBtB,QAAQ,CAACG,KAAT,CAAe,CAAf,EAAkBM,EAAxC;AACA;;AAED,UAAI6B,cAAc,GACjBvB,KAAK,CAACU,UAAN,CAAiBH,EAAjB,GACAE,aAAa,CAAET,KAAF,CADb,GAEAD,oBAAoB,CAAEC,KAAF,CAHrB;AAMA,UAAIwB,kBAAkB,GACrBvC,QAAQ,CAACG,KAAT,CAAegB,MAAf,GAAwB,CAAxB,GACAO,kBAAkB,CAAEX,KAAF,CADlB,GAEA,KAHD;AAMA,UAAIyB,SAAS,GACZD,kBAAkB,GAClB,CAAED,cAAF,EAAkBC,kBAAlB,CADkB,GAElB,CAAED,cAAF,CAHD;AAMA,aAAOE,SAAP;AACA,KAnC0B;AAqC3BC,QAAI,EAAE,YAAW;AAChB,aAAO,IAAP;AACA;AAvC0B,GAAX,CAAjB;AA0CA,CAvFD,EAwFCC,wBAxFD,E;;;;;;;;;;;ACLA,aAAa,yCAAyC,EAAE,I;;;;;;;;;;;ACAxD,aAAa,6CAA6C,EAAE,I;;;;;;;;;;;ACA5D,aAAa,yCAAyC,EAAE,I;;;;;;;;;;;ACAxD,aAAa,0CAA0C,EAAE,I;;;;;;;;;;;ACAzD,aAAa,mDAAmD,EAAE,I","file":"block.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./build/core/assets/jsx/src/admin/block.js\");\n","import { Placeholder, SelectControl, PanelBody } from '@wordpress/components';\nimport ServerSideRender from '@wordpress/server-side-render';\nimport { InspectorControls } from '@wordpress/editor';\nimport { registerBlockType } from '@wordpress/blocks';\n\n( function( settings ) {\n\n\tvar blockID = 'thethemefoundry/happyforms';\n\tvar options = settings.forms\n\t\t.map( function( form ) {\n\t\t\treturn { label: form.post_title, value: form.ID };\n\t\t} )\n\toptions.reverse().unshift( { label: settings.i18n.select_default, value: '' } );\n\n\tvar ComponentPlaceholder = function( props ) {\n\t\treturn (\n\t\t\t<Placeholder \n\t\t\t\ticon={ settings.icon } \n\t\t\t\tlabel={ settings.i18n.placeholder_text }\n\t\t\t\tclassName={ settings.i18n.placeholder_class }\n\t\t\t\tkey=\"happyforms-component-placeholder\">\n\n\t\t\t\t{ settings.forms.length > 0\n\t\t\t\t\t? <SelectControl value=\"\" options={ options } onChange={ ( v ) => props.setAttributes( { id: v } ) } />\n\t\t\t\t\t: <p>{ settings.i18n.no_forms_found_text }</p>\n\t\t\t\t}\n\n\t\t\t</Placeholder>\n\t\t);\n\t};\n\n\tvar ComponentForm = function( props ) {\n\t\treturn [\n\t\t\t<ServerSideRender\n\t\t\t\tblock={ blockID }\n\t\t\t\tattributes={ props.attributes }\n\t\t\t\tkey=\"happyforms-component-form\" />\n\t\t];\n\t};\n\n\tvar ComponentInspector = function( props ) {\n\t\treturn (\n\t\t\t<InspectorControls key=\"happyforms-inspector-controls\">\n\t\t\t\t<PanelBody title={ settings.i18n.settings_title }>\n\t\t\t\t\t<SelectControl value={ props.attributes.id } options={ options } onChange={ ( v ) => props.setAttributes( { id : v } ) } />\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t);\n\t};\n\n\tregisterBlockType( blockID, {\n\t\ttitle: settings.block.title,\n\t\tdescription: settings.block.description,\n\t\tcategory: settings.block.category,\n\t\ticon: settings.block.icon,\n\t\tkeywords: settings.block.keywords,\n\t\tsupports: {\n\t\t\tanchor: true,\n\t\t\thtml: false\n\t\t},\n\n\t\tedit: function( props ) {\n\t\t\tif ( ! props.attributes.id && settings.forms.length === 1 ) {\n\t\t\t\tprops.attributes.id = settings.forms[0].ID;\n\t\t\t}\n\n\t\t\tlet blockComponent = (\n\t\t\t\tprops.attributes.id ?\n\t\t\t\tComponentForm( props ) :\n\t\t\t\tComponentPlaceholder( props )\n\t\t\t);\n\n\t\t\tlet inspectorComponent = (\n\t\t\t\tsettings.forms.length > 1 ?\n\t\t\t\tComponentInspector( props ) :\n\t\t\t\tfalse\n\t\t\t);\n\t\t\t\n\t\t\tlet component = (\n\t\t\t\tinspectorComponent ? \n\t\t\t\t[ blockComponent, inspectorComponent ] :\n\t\t\t\t[ blockComponent ]\n\t\t\t);\n\n\t\t\treturn component;\n\t\t},\n\n\t\tsave: function() {\n\t\t\treturn null;\n\t\t},\n\t} );\n\n} )(\n\t_happyFormsBlockSettings,\n);","(function() { module.exports = window[\"wp\"][\"blocks\"]; }());","(function() { module.exports = window[\"wp\"][\"components\"]; }());","(function() { module.exports = window[\"wp\"][\"editor\"]; }());","(function() { module.exports = window[\"wp\"][\"element\"]; }());","(function() { module.exports = window[\"wp\"][\"serverSideRender\"]; }());"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./build/core/assets/jsx/src/admin/block.js","webpack:///external [\"wp\",\"blockEditor\"]","webpack:///external [\"wp\",\"blocks\"]","webpack:///external [\"wp\",\"components\"]","webpack:///external [\"wp\",\"element\"]","webpack:///external [\"wp\",\"i18n\"]","webpack:///external [\"wp\",\"serverSideRender\"]"],"names":["settings","blockID","options","forms","map","form","label","post_title","value","ID","reverse","unshift","__","ComponentPlaceholder","props","setForm","useState","block","icon","marginRight","title","length","v","setAttributes","id","ComponentForm","attributes","ComponentInspector","registerBlockType","description","category","keywords","supports","anchor","html","edit","String","blockComponent","inspectorComponent","component","save","_happyFormsBlockSettings"],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;;;;;;;;;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAE,UAAUA,QAAV,EAAqB;AAEtB,MAAIC,OAAO,GAAG,4BAAd;AACA,MAAIC,OAAO,GAAGF,QAAQ,CAACG,KAAT,CACZC,GADY,CACP,UAAUC,IAAV,EAAiB;AACtB,WAAO;AAAEC,WAAK,EAAED,IAAI,CAACE,UAAd;AAA0BC,WAAK,EAAEH,IAAI,CAACI;AAAtC,KAAP;AACA,GAHY,CAAd;AAIAP,SAAO,CAACQ,OAAR,GAAkBC,OAAlB,CAA2B;AAAEL,SAAK,EAAEM,0DAAE,CAAE,QAAF,EAAY,YAAZ,CAAX;AAAuCJ,SAAK,EAAE;AAA9C,GAA3B;;AAEA,MAAIK,oBAAoB,GAAG,UAAUC,KAAV,EAAkB;AAC5C,UAAM,CAAET,IAAF,EAAQU,OAAR,IAAoBC,mEAAQ,CAAE,EAAF,CAAlC;AAEA,WACC,yEAAC,iEAAD;AACC,UAAI,EAAG,yEAAC,0DAAD;AAAM,YAAI,EAAGhB,QAAQ,CAACiB,KAAT,CAAeC,IAA5B;AAAmC,aAAK,EAAE;AAAEC,qBAAW,EAAE;AAAf;AAA1C,QADR;AAEC,WAAK,EAAGnB,QAAQ,CAACiB,KAAT,CAAeG,KAFxB;AAGC,kBAAY,EACXpB,QAAQ,CAACG,KAAT,CAAekB,MAAf,GAAwB,CAAxB,GACAT,0DAAE,CAAE,sCAAF,EAA0C,YAA1C,CADF,GAEAA,0DAAE,CAAE,iBAAF,EAAqB,YAArB,CANJ;AAQC,eAAS,EAAC,qCARX;AASC,SAAG,EAAC;AATL,OAYEZ,QAAQ,CAACG,KAAT,CAAekB,MAAf,GAAwB,CAAxB,IACA;AAAK,eAAS,EAAC;AAAf,OACC,yEAAC,mEAAD;AAAe,WAAK,EAAGhB,IAAvB;AAA8B,aAAO,EAAGH,OAAxC;AAAkD,cAAQ,EAAKoB,CAAF,IAASP,OAAO,CAAEO,CAAF;AAA7E,MADD,EAEC,yEAAC,4DAAD;AAAQ,eAAS,EAAC,MAAlB;AAAyB,aAAO,EAAKA,CAAF,IAASR,KAAK,CAACS,aAAN,CAAqB;AAAEC,UAAE,EAAEnB;AAAN,OAArB;AAA5C,OAAoFO,0DAAE,CAAE,QAAF,EAAY,YAAZ,CAAtF,CAFD,CAbF,CADD;AAsBA,GAzBD;;AA2BA,MAAIa,aAAa,GAAG,UAAUX,KAAV,EAAkB;AACrC,WAAO,CACN,yEAAC,oEAAD;AACC,WAAK,EAAGb,OADT;AAEC,gBAAU,EAAGa,KAAK,CAACY,UAFpB;AAGC,SAAG,EAAC;AAHL,MADM,CAAP;AAMA,GAPD;;AASA,MAAIC,kBAAkB,GAAG,UAAUb,KAAV,EAAkB;AAC1C,WACC,yEAAC,yEAAD;AAAmB,SAAG,EAAC;AAAvB,OACC,yEAAC,+DAAD;AAAW,WAAK,EAAGF,0DAAE,CAAE,UAAF,EAAc,YAAd;AAArB,OACC,yEAAC,mEAAD;AACC,WAAK,EAAGA,0DAAE,CAAE,aAAF,EAAiB,YAAjB,CADX;AAEC,WAAK,EAAGE,KAAK,CAACY,UAAN,CAAiBF,EAF1B;AAGC,aAAO,EAAGtB,OAHX;AAIC,cAAQ,EAAKoB,CAAF,IAASR,KAAK,CAACS,aAAN,CAAqB;AAAEC,UAAE,EAAGF;AAAP,OAArB;AAJrB,MADD,CADD,CADD;AAWA,GAZD;;AAcAM,6EAAiB,CAAE3B,OAAF,EAAW;AAC3BmB,SAAK,EAAEpB,QAAQ,CAACiB,KAAT,CAAeG,KADK;AAE3BS,eAAW,EAAE7B,QAAQ,CAACiB,KAAT,CAAeY,WAFD;AAG3BC,YAAQ,EAAE9B,QAAQ,CAACiB,KAAT,CAAea,QAHE;AAI3BZ,QAAI,EAAElB,QAAQ,CAACiB,KAAT,CAAeC,IAJM;AAK3Ba,YAAQ,EAAE/B,QAAQ,CAACiB,KAAT,CAAec,QALE;AAM3BC,YAAQ,EAAE;AACTC,YAAM,EAAE,IADC;AAETC,UAAI,EAAE;AAFG,KANiB;AAW3BC,QAAI,EAAE,UAAUrB,KAAV,EAAkB;AACvB,UAAK,CAAEA,KAAK,CAACY,UAAN,CAAiBF,EAAnB,IAAyBxB,QAAQ,CAACG,KAAT,CAAekB,MAAf,KAA0B,CAAxD,EAA4D;AAC3DP,aAAK,CAACY,UAAN,CAAiBF,EAAjB,GAAsBY,MAAM,CAAEpC,QAAQ,CAACG,KAAT,CAAe,CAAf,EAAkBM,EAApB,CAA5B;AACA;;AAED,UAAI4B,cAAc,GACjBvB,KAAK,CAACY,UAAN,CAAiBF,EAAjB,GACAC,aAAa,CAAEX,KAAF,CADb,GAEAD,oBAAoB,CAAEC,KAAF,CAHrB;AAMA,UAAIwB,kBAAkB,GACrBtC,QAAQ,CAACG,KAAT,CAAekB,MAAf,GAAwB,CAAxB,GACAM,kBAAkB,CAAEb,KAAF,CADlB,GAEA,KAHD;AAMA,UAAIyB,SAAS,GACZD,kBAAkB,GAClB,CAAED,cAAF,EAAkBC,kBAAlB,CADkB,GAElB,CAAED,cAAF,CAHD;AAMA,aAAOE,SAAP;AACA,KAnC0B;AAqC3BC,QAAI,EAAE,YAAW;AAChB,aAAO,IAAP;AACA;AAvC0B,GAAX,CAAjB;AA0CA,CArGD,EAsGCC,wBAtGD,E;;;;;;;;;;;ACPA,aAAa,8CAA8C,EAAE,I;;;;;;;;;;;ACA7D,aAAa,yCAAyC,EAAE,I;;;;;;;;;;;ACAxD,aAAa,6CAA6C,EAAE,I;;;;;;;;;;;ACA5D,aAAa,0CAA0C,EAAE,I;;;;;;;;;;;ACAzD,aAAa,uCAAuC,EAAE,I;;;;;;;;;;;ACAtD,aAAa,mDAAmD,EAAE,I","file":"block.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./build/core/assets/jsx/src/admin/block.js\");\n","import { Placeholder, SelectControl, PanelBody, Icon, Button } from '@wordpress/components';\nimport ServerSideRender from '@wordpress/server-side-render';\nimport { InspectorControls } from '@wordpress/block-editor';\nimport { registerBlockType } from '@wordpress/blocks';\nimport { useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\n\n( function( settings ) {\n\n\tvar blockID = 'thethemefoundry/happyforms';\n\tvar options = settings.forms\n\t\t.map( function( form ) {\n\t\t\treturn { label: form.post_title, value: form.ID };\n\t\t} )\n\toptions.reverse().unshift( { label: __( 'Choose', 'happyforms' ), value: '' } );\n\n\tvar ComponentPlaceholder = function( props ) {\n\t\tconst [ form, setForm ] = useState( '' );\n\n\t\treturn (\n\t\t\t<Placeholder \n\t\t\t\ticon={ <Icon icon={ settings.block.icon } style={{ marginRight: \"14.66px\" }} /> } \n\t\t\t\tlabel={ settings.block.title }\n\t\t\t\tinstructions={ \n\t\t\t\t\tsettings.forms.length > 0 ? \n\t\t\t\t\t__( 'Pick a form to display on your site.', 'happyforms' ) :\n\t\t\t\t\t__( 'No forms found.', 'happyforms' )\n\t\t\t\t}\n\t\t\t\tclassName=\"happyforms-block-form-selector-wrap\"\n\t\t\t\tkey=\"happyforms-component-placeholder\">\n\n\t\t\t\t{ \n\t\t\t\t\tsettings.forms.length > 0 &&\n\t\t\t\t\t<div className=\"happyforms-block-placeholder__control-group\">\n\t\t\t\t\t\t<SelectControl value={ form } options={ options } onChange={ ( v ) => setForm( v ) } />\n\t\t\t\t\t\t<Button isPrimary=\"true\" onClick={ ( v ) => props.setAttributes( { id: form } ) }>{ __( 'Insert', 'happyforms' ) }</Button>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\n\t\t\t</Placeholder>\n\t\t);\n\t};\n\n\tvar ComponentForm = function( props ) {\n\t\treturn [\n\t\t\t<ServerSideRender\n\t\t\t\tblock={ blockID }\n\t\t\t\tattributes={ props.attributes }\n\t\t\t\tkey=\"happyforms-component-form\" />\n\t\t];\n\t};\n\n\tvar ComponentInspector = function( props ) {\n\t\treturn (\n\t\t\t<InspectorControls key=\"happyforms-inspector-controls\">\n\t\t\t\t<PanelBody title={ __( 'Settings', 'happyforms' ) }>\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\tlabel={ __( 'Pick a form', 'happyforms' ) }\n\t\t\t\t\t\tvalue={ props.attributes.id } \n\t\t\t\t\t\toptions={ options } \n\t\t\t\t\t\tonChange={ ( v ) => props.setAttributes( { id : v } ) } />\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t);\n\t};\n\n\tregisterBlockType( blockID, {\n\t\ttitle: settings.block.title,\n\t\tdescription: settings.block.description,\n\t\tcategory: settings.block.category,\n\t\ticon: settings.block.icon,\n\t\tkeywords: settings.block.keywords,\n\t\tsupports: {\n\t\t\tanchor: true,\n\t\t\thtml: false\n\t\t},\n\n\t\tedit: function( props ) {\n\t\t\tif ( ! props.attributes.id && settings.forms.length === 1 ) {\n\t\t\t\tprops.attributes.id = String( settings.forms[0].ID );\n\t\t\t}\n\n\t\t\tlet blockComponent = (\n\t\t\t\tprops.attributes.id ?\n\t\t\t\tComponentForm( props ) :\n\t\t\t\tComponentPlaceholder( props )\n\t\t\t);\n\n\t\t\tlet inspectorComponent = (\n\t\t\t\tsettings.forms.length > 1 ?\n\t\t\t\tComponentInspector( props ) :\n\t\t\t\tfalse\n\t\t\t);\n\t\t\t\n\t\t\tlet component = (\n\t\t\t\tinspectorComponent ? \n\t\t\t\t[ blockComponent, inspectorComponent ] :\n\t\t\t\t[ blockComponent ]\n\t\t\t);\n\n\t\t\treturn component;\n\t\t},\n\n\t\tsave: function() {\n\t\t\treturn null;\n\t\t},\n\t} );\n\n} )(\n\t_happyFormsBlockSettings,\n);","(function() { module.exports = window[\"wp\"][\"blockEditor\"]; }());","(function() { module.exports = window[\"wp\"][\"blocks\"]; }());","(function() { module.exports = window[\"wp\"][\"components\"]; }());","(function() { module.exports = window[\"wp\"][\"element\"]; }());","(function() { module.exports = window[\"wp\"][\"i18n\"]; }());","(function() { module.exports = window[\"wp\"][\"serverSideRender\"]; }());"],"sourceRoot":""}
core/assets/jsx/src/admin/block.js CHANGED
@@ -1,7 +1,9 @@
1
- import { Placeholder, SelectControl, PanelBody } from '@wordpress/components';
2
  import ServerSideRender from '@wordpress/server-side-render';
3
- import { InspectorControls } from '@wordpress/editor';
4
  import { registerBlockType } from '@wordpress/blocks';
 
 
5
 
6
  ( function( settings ) {
7
 
@@ -10,19 +12,29 @@ import { registerBlockType } from '@wordpress/blocks';
10
  .map( function( form ) {
11
  return { label: form.post_title, value: form.ID };
12
  } )
13
- options.reverse().unshift( { label: settings.i18n.select_default, value: '' } );
14
 
15
  var ComponentPlaceholder = function( props ) {
 
 
16
  return (
17
  <Placeholder
18
- icon={ settings.icon }
19
- label={ settings.i18n.placeholder_text }
20
- className={ settings.i18n.placeholder_class }
 
 
 
 
 
21
  key="happyforms-component-placeholder">
22
 
23
- { settings.forms.length > 0
24
- ? <SelectControl value="" options={ options } onChange={ ( v ) => props.setAttributes( { id: v } ) } />
25
- : <p>{ settings.i18n.no_forms_found_text }</p>
 
 
 
26
  }
27
 
28
  </Placeholder>
@@ -41,8 +53,12 @@ import { registerBlockType } from '@wordpress/blocks';
41
  var ComponentInspector = function( props ) {
42
  return (
43
  <InspectorControls key="happyforms-inspector-controls">
44
- <PanelBody title={ settings.i18n.settings_title }>
45
- <SelectControl value={ props.attributes.id } options={ options } onChange={ ( v ) => props.setAttributes( { id : v } ) } />
 
 
 
 
46
  </PanelBody>
47
  </InspectorControls>
48
  );
@@ -61,7 +77,7 @@ import { registerBlockType } from '@wordpress/blocks';
61
 
62
  edit: function( props ) {
63
  if ( ! props.attributes.id && settings.forms.length === 1 ) {
64
- props.attributes.id = settings.forms[0].ID;
65
  }
66
 
67
  let blockComponent = (
1
+ import { Placeholder, SelectControl, PanelBody, Icon, Button } from '@wordpress/components';
2
  import ServerSideRender from '@wordpress/server-side-render';
3
+ import { InspectorControls } from '@wordpress/block-editor';
4
  import { registerBlockType } from '@wordpress/blocks';
5
+ import { useState } from '@wordpress/element';
6
+ import { __, sprintf } from '@wordpress/i18n';
7
 
8
  ( function( settings ) {
9
 
12
  .map( function( form ) {
13
  return { label: form.post_title, value: form.ID };
14
  } )
15
+ options.reverse().unshift( { label: __( 'Choose', 'happyforms' ), value: '' } );
16
 
17
  var ComponentPlaceholder = function( props ) {
18
+ const [ form, setForm ] = useState( '' );
19
+
20
  return (
21
  <Placeholder
22
+ icon={ <Icon icon={ settings.block.icon } style={{ marginRight: "14.66px" }} /> }
23
+ label={ settings.block.title }
24
+ instructions={
25
+ settings.forms.length > 0 ?
26
+ __( 'Pick a form to display on your site.', 'happyforms' ) :
27
+ __( 'No forms found.', 'happyforms' )
28
+ }
29
+ className="happyforms-block-form-selector-wrap"
30
  key="happyforms-component-placeholder">
31
 
32
+ {
33
+ settings.forms.length > 0 &&
34
+ <div className="happyforms-block-placeholder__control-group">
35
+ <SelectControl value={ form } options={ options } onChange={ ( v ) => setForm( v ) } />
36
+ <Button isPrimary="true" onClick={ ( v ) => props.setAttributes( { id: form } ) }>{ __( 'Insert', 'happyforms' ) }</Button>
37
+ </div>
38
  }
39
 
40
  </Placeholder>
53
  var ComponentInspector = function( props ) {
54
  return (
55
  <InspectorControls key="happyforms-inspector-controls">
56
+ <PanelBody title={ __( 'Settings', 'happyforms' ) }>
57
+ <SelectControl
58
+ label={ __( 'Pick a form', 'happyforms' ) }
59
+ value={ props.attributes.id }
60
+ options={ options }
61
+ onChange={ ( v ) => props.setAttributes( { id : v } ) } />
62
  </PanelBody>
63
  </InspectorControls>
64
  );
77
 
78
  edit: function( props ) {
79
  if ( ! props.attributes.id && settings.forms.length === 1 ) {
80
+ props.attributes.id = String( settings.forms[0].ID );
81
  }
82
 
83
  let blockComponent = (
core/assets/jsx/src/admin/dashboard-modals.js ADDED
@@ -0,0 +1,119 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { SlotFillProvider, Button, Modal, Guide, Popover, Notice, ExternalLink, TextControl, CheckboxControl, BaseControl } from '@wordpress/components';
2
+ import { useState, useReducer, useRef } from '@wordpress/element';
3
+ import { __, sprintf } from '@wordpress/i18n';
4
+
5
+ /**
6
+ *
7
+ * Modal handler class
8
+ *
9
+ */
10
+ export default function( $, settings ) {
11
+
12
+ const { render } = wp.element;
13
+
14
+ /**
15
+ *
16
+ * Deactivation modal
17
+ *
18
+ */
19
+ const DeactivateModal = ( props ) => {
20
+ const [ option, setOption ] = useState( 'yes' );
21
+
22
+ const onChange = ( e ) => {
23
+ setOption( e.target.value );
24
+ };
25
+
26
+ const onSubmit = () => {
27
+ $.post( ajaxurl, {
28
+ action: settings.deactivateModalAction,
29
+ _wpnonce: settings.deactivateModalNonce,
30
+ keep_data: option,
31
+ }, function() {
32
+ window.location.href = props.redirectURL;
33
+ } );
34
+
35
+ return props.onRequestClose();
36
+ }
37
+
38
+ return (
39
+ <Modal className="happyforms-modal happyforms-modal--deactivate" title="What about your data?" onRequestClose={ props.onRequestClose }>
40
+ <div className="happyforms-modal__body" onChange={ onChange }>
41
+ <label htmlFor="happyforms-keep-data-yes">
42
+ <input
43
+ type="radio"
44
+ id="happyforms-keep-data-yes"
45
+ name="happyforms-keep-data"
46
+ value="yes"
47
+ defaultChecked
48
+ />
49
+ <span>{ __( 'Keep plugin data (recommended)', 'happyforms' ) }</span>
50
+ </label>
51
+ <label htmlFor="happyforms-keep-data-no">
52
+ <input
53
+ type="radio"
54
+ id="happyforms-keep-data-no"
55
+ name="happyforms-keep-data"
56
+ value="no"
57
+ />
58
+ <span>{ __( 'Permanently delete plugin data', 'happyforms' ) }</span>
59
+ </label>
60
+ </div>
61
+ <div className="happyforms-modal__footer">
62
+ <div className="happyforms-modal__footer-button-group">
63
+ <Button
64
+ isPrimary={true}
65
+ onClick={ onSubmit }
66
+ text={ option == 'yes' ?
67
+ __( 'Deactivate Plugin', 'happyforms' ) :
68
+ __( 'Delete Data and Deactivate Plugin', 'happyforms' ) }>
69
+ </Button>
70
+ </div>
71
+ </div>
72
+ </Modal>
73
+ );
74
+ };
75
+
76
+ /**
77
+ *
78
+ * Modal wrapper
79
+ *
80
+ */
81
+ const ModalProvider = ( props ) => {
82
+ return (
83
+ <SlotFillProvider>
84
+ { props.modal }
85
+ <Popover.Slot />
86
+ </SlotFillProvider>
87
+ );
88
+ };
89
+
90
+ return class DashboardModals {
91
+
92
+ area = null;
93
+
94
+ constructor() {
95
+ this.area = document.getElementById( 'happyforms-modals-area' );
96
+ }
97
+
98
+ openDeactivateModal( redirectURL ) {
99
+ var modal = <DeactivateModal onRequestClose={ this.closeModal.bind( this, 'deactivate' ) } redirectURL={ redirectURL } />
100
+
101
+ this.openModal( modal );
102
+ }
103
+
104
+ openModal( modal ) {
105
+ render( <ModalProvider modal={modal}></ModalProvider>, this.area );
106
+ }
107
+
108
+ closeModal( modal ) {
109
+ render( <></>, this.area );
110
+
111
+ $.post( ajaxurl, {
112
+ action: settings.actionModalDismiss,
113
+ id: modal,
114
+ } );
115
+ }
116
+
117
+ };
118
+
119
+ }
core/classes/class-block.php CHANGED
@@ -73,6 +73,10 @@ class HappyForms_Block {
73
  $block_classes = isset( $attrs['className'] ) ? trim( $attrs['className'] ) : '';
74
  $html_id = isset( $attrs['anchor'] ) ? trim( $attrs['anchor'] ) : '';
75
 
 
 
 
 
76
  if ( '' !== $block_classes ) {
77
  $block_classes = explode( ' ', $block_classes );
78
 
@@ -113,13 +117,6 @@ class HappyForms_Block {
113
  'ajaxurl' => admin_url( 'admin-ajax.php' ),
114
  'forms' => $forms,
115
  'block' => $block_properties,
116
- 'i18n' => array(
117
- 'select_default' => __( 'Choose', 'happyforms' ),
118
- 'placeholder_text' => __( 'Which form would you like to add here?', 'happyforms' ),
119
- 'no_forms_found_text' => __( 'No forms found.', 'happyforms' ),
120
- 'settings_title' => __( 'HappyForms Settings', 'happyforms' ),
121
- 'placeholder_class' => 'happyforms-block-form-selector-wrap'
122
- ),
123
  );
124
 
125
  wp_localize_script( 'happyforms-block', '_happyFormsBlockSettings', $data );
73
  $block_classes = isset( $attrs['className'] ) ? trim( $attrs['className'] ) : '';
74
  $html_id = isset( $attrs['anchor'] ) ? trim( $attrs['anchor'] ) : '';
75
 
76
+ if ( isset( $attrs['id'] ) && empty( $attrs['id'] ) ) {
77
+ return;
78
+ }
79
+
80
  if ( '' !== $block_classes ) {
81
  $block_classes = explode( ' ', $block_classes );
82
 
117
  'ajaxurl' => admin_url( 'admin-ajax.php' ),
118
  'forms' => $forms,
119
  'block' => $block_properties,
 
 
 
 
 
 
 
120
  );
121
 
122
  wp_localize_script( 'happyforms-block', '_happyFormsBlockSettings', $data );
core/classes/class-dashboard-modals.php CHANGED
@@ -6,7 +6,6 @@ class HappyForms_Dashboard_Modals {
6
 
7
  private $modals = array();
8
 
9
- public $fetch_action = 'happyforms-modal-fetch';
10
  public $dismiss_action = 'happyforms-modal-dismiss';
11
 
12
  public static function instance() {
@@ -20,8 +19,10 @@ class HappyForms_Dashboard_Modals {
20
  }
21
 
22
  public function hook() {
23
- add_action( "wp_ajax_{$this->fetch_action}", [ $this, 'fetch_modal' ] );
24
  add_action( "wp_ajax_{$this->dismiss_action}", [ $this, 'dismiss_modal' ] );
 
 
 
25
  }
26
 
27
  public function get_modal_defaults() {
@@ -33,34 +34,14 @@ class HappyForms_Dashboard_Modals {
33
  return $defaults;
34
  }
35
 
36
- public function register_modal( $id, $callback, $settings = array() ) {
37
  if ( $this->is_dismissed( $id ) ) {
38
  return;
39
  }
40
 
41
  $settings = wp_parse_args( $settings, $this->get_modal_defaults() );
42
 
43
- $this->modals[$id] = [ $callback, $settings ];
44
- }
45
-
46
- public function fetch_modal() {
47
- if ( ! isset( $_GET['id'] ) ) {
48
- die( '' );
49
- }
50
-
51
- $id = $_GET['id'];
52
-
53
- if ( ! isset( $this->modals[$id] ) ) {
54
- die( '' );
55
- }
56
-
57
- list( $callback, $settings ) = $this->modals[$id];
58
-
59
- require( happyforms_get_core_folder() . '/templates/partials/admin-modal-header.php' );
60
- call_user_func( $callback );
61
- require( happyforms_get_core_folder() . '/templates/partials/admin-modal-footer.php' );
62
-
63
- die();
64
  }
65
 
66
  public function dismiss_modal() {
@@ -86,7 +67,7 @@ class HappyForms_Dashboard_Modals {
86
  }
87
 
88
  public function is_dismissible( $id ) {
89
- list( $callback, $settings ) = $this->modals[$id];
90
  $dismissible = isset( $settings['dismissible'] ) ? $settings['dismissible'] : false;
91
 
92
  return $dismissible;
@@ -96,6 +77,42 @@ class HappyForms_Dashboard_Modals {
96
  return get_option( "happyforms_modal_dismissed_{$id}", false );
97
  }
98
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
  }
100
 
101
  if ( ! function_exists( 'happyforms_get_dashboard_modals' ) ):
@@ -106,4 +123,4 @@ function happyforms_get_dashboard_modals() {
106
 
107
  endif;
108
 
109
- happyforms_get_dashboard_modals();
6
 
7
  private $modals = array();
8
 
 
9
  public $dismiss_action = 'happyforms-modal-dismiss';
10
 
11
  public static function instance() {
19
  }
20
 
21
  public function hook() {
 
22
  add_action( "wp_ajax_{$this->dismiss_action}", [ $this, 'dismiss_modal' ] );
23
+ add_action( 'admin_enqueue_scripts', [ $this, 'admin_enqueue_scripts' ] );
24
+ add_action( 'in_admin_footer', [ $this, 'output_modal_area' ] );
25
+ add_action( 'customize_controls_print_footer_scripts', [ $this, 'output_modal_area' ] );
26
  }
27
 
28
  public function get_modal_defaults() {
34
  return $defaults;
35
  }
36
 
37
+ public function register_modal( $id, $settings = array() ) {
38
  if ( $this->is_dismissed( $id ) ) {
39
  return;
40
  }
41
 
42
  $settings = wp_parse_args( $settings, $this->get_modal_defaults() );
43
 
44
+ $this->modals[$id] = $settings;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  }
46
 
47
  public function dismiss_modal() {
67
  }
68
 
69
  public function is_dismissible( $id ) {
70
+ $settings = $this->modals[$id];
71
  $dismissible = isset( $settings['dismissible'] ) ? $settings['dismissible'] : false;
72
 
73
  return $dismissible;
77
  return get_option( "happyforms_modal_dismissed_{$id}", false );
78
  }
79
 
80
+ public function admin_enqueue_scripts() {
81
+ $asset_file = require( happyforms_get_include_folder() . '/assets/jsx/build/admin/dashboard-modals.asset.php' );
82
+ $dependencies = array_merge( $asset_file['dependencies'], array( 'happyforms-admin' ) );
83
+
84
+ wp_enqueue_script(
85
+ 'happyforms-dashboard-modals',
86
+ happyforms_get_plugin_url() . 'inc/assets/jsx/build/admin/dashboard-modals.js',
87
+ $dependencies, $asset_file['version'], true
88
+ );
89
+
90
+ wp_enqueue_style(
91
+ 'happyforms-dashboard-modals',
92
+ happyforms_get_plugin_url() . 'core/assets/css/dashboard-modals.css',
93
+ array( 'wp-components' ), HAPPYFORMS_VERSION
94
+ );
95
+
96
+ wp_localize_script( 'happyforms-dashboard-modals', '_happyFormsDashboardModalsSettings', $this->get_script_settings() );
97
+ }
98
+
99
+ public function get_script_settings() {
100
+ $settings = array(
101
+ 'actionModalDismiss' => $this->dismiss_action,
102
+ 'pluginURL' => happyforms_get_plugin_url(),
103
+ );
104
+
105
+ $settings = apply_filters( 'happyforms_dashboard_modal_settings', $settings );
106
+
107
+ return $settings;
108
+ }
109
+
110
+ public function output_modal_area() {
111
+ ?>
112
+ <div id="happyforms-modals-area"></div>
113
+ <?php
114
+ }
115
+
116
  }
117
 
118
  if ( ! function_exists( 'happyforms_get_dashboard_modals' ) ):
123
 
124
  endif;
125
 
126
+ happyforms_get_dashboard_modals();
core/classes/class-deactivation.php CHANGED
@@ -19,7 +19,7 @@ class HappyForms_Deactivation {
19
 
20
  public function hook() {
21
  add_action( 'admin_init', [ $this, 'register_modals' ] );
22
- add_filter( 'happyforms_dashboard_data', [ $this, 'get_dashboard_data' ] );
23
  add_action( 'wp_ajax_' . $this->modal_action, [ $this, 'deactivate_modal_submit' ] );
24
  }
25
 
@@ -32,21 +32,16 @@ class HappyForms_Deactivation {
32
  public function register_modals() {
33
  $modals = happyforms_get_dashboard_modals();
34
 
35
- $modals->register_modal( 'deactivate', [ $this, 'modal_deactivate_callback' ], [
36
  'classes' => 'happyforms-modal__frame--deactivate'
37
  ] );
38
  }
39
 
40
- public function modal_deactivate_callback() {
41
- require( happyforms_get_core_folder() . '/templates/admin/modal-deactivate.php' );
42
- }
43
-
44
- public function get_dashboard_data( $data ) {
45
- $data['actionDeactivateModalSubmit'] = $this->modal_action;
46
- $data['textDeactivateAndKeep'] = __( 'Deactivate Plugin', 'happyforms' );
47
- $data['textDeactivateAndCleanup'] = __( 'Delete Data and Deactivate Plugin', 'happyforms' );
48
-
49
- return $data;
50
  }
51
 
52
  public function deactivate_modal_submit() {
19
 
20
  public function hook() {
21
  add_action( 'admin_init', [ $this, 'register_modals' ] );
22
+ add_filter( 'happyforms_dashboard_modal_settings', [ $this, 'get_dashboard_modal_settings' ] );
23
  add_action( 'wp_ajax_' . $this->modal_action, [ $this, 'deactivate_modal_submit' ] );
24
  }
25
 
32
  public function register_modals() {
33
  $modals = happyforms_get_dashboard_modals();
34
 
35
+ $modals->register_modal( 'deactivate', [
36
  'classes' => 'happyforms-modal__frame--deactivate'
37
  ] );
38
  }
39
 
40
+ public function get_dashboard_modal_settings( $settings ) {
41
+ $settings['deactivateModalAction'] = $this->modal_action;
42
+ $settings['deactivateModalNonce'] = wp_create_nonce( $this->modal_action );
43
+
44
+ return $settings;
 
 
 
 
 
45
  }
46
 
47
  public function deactivate_modal_submit() {
core/classes/class-form-controller.php CHANGED
@@ -592,6 +592,17 @@ class HappyForms_Form_Controller {
592
  $form_meta = happyforms_unprefix_meta( get_post_meta( $result ) );
593
  $form_meta = array_diff_key( $form_meta, $this->get_meta_fields() );
594
  $stale_parts = array_diff_key( $form_meta, array_flip( $part_layout ) );
 
 
 
 
 
 
 
 
 
 
 
595
  $stale_parts = happyforms_prefix_meta( $stale_parts );
596
  $stale_parts = array_keys( $stale_parts );
597
 
@@ -835,28 +846,6 @@ class HappyForms_Form_Controller {
835
  return $steps;
836
  }
837
 
838
- public function count_by_option( $form_id, $option_id, $limit ) {
839
- global $wpdb;
840
-
841
- $meta_key = happyforms_get_option_counter_meta_key( $form_id, $option_id );
842
-
843
- $query = $wpdb->prepare( "
844
- SELECT COUNT(*) FROM (
845
- SELECT p.ID FROM $wpdb->posts p
846
- JOIN $wpdb->postmeta s ON p.ID = s.post_id AND s.meta_key = '_happyforms_read' AND s.meta_value != 2
847
- JOIN $wpdb->postmeta c ON p.ID = c.post_id AND c.meta_key = %s
848
- WHERE p.post_type = 'happyforms-message'
849
- AND p.post_status = 'publish'
850
- LIMIT 0, %d
851
- ) AS r;
852
- ", $meta_key, $limit );
853
-
854
- $count = $wpdb->get_col( $query );
855
- $count = empty( $count ) ? 0 : intval( $count[0] );
856
-
857
- return $count;
858
- }
859
-
860
  public function part_error_class( $classes, $part, $form ) {
861
  $part_name = happyforms_get_part_name( $part, $form );
862
  $notices = happyforms_get_session()->get_messages( $part_name );
592
  $form_meta = happyforms_unprefix_meta( get_post_meta( $result ) );
593
  $form_meta = array_diff_key( $form_meta, $this->get_meta_fields() );
594
  $stale_parts = array_diff_key( $form_meta, array_flip( $part_layout ) );
595
+ $part_library = happyforms_get_part_library();
596
+ $stale_parts = array_filter( $stale_parts, function( $stale_part ) use( $part_library ) {
597
+ if ( ! isset( $stale_part['type'] ) ) {
598
+ return false;
599
+ }
600
+
601
+ $part = $part_library->get_part( $stale_part['type'] );
602
+
603
+ return $part !== false;
604
+ } );
605
+
606
  $stale_parts = happyforms_prefix_meta( $stale_parts );
607
  $stale_parts = array_keys( $stale_parts );
608
 
846
  return $steps;
847
  }
848
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
849
  public function part_error_class( $classes, $part, $form ) {
850
  $part_name = happyforms_get_part_name( $part, $form );
851
  $notices = happyforms_get_session()->get_messages( $part_name );
core/classes/class-form-option-limiter.php CHANGED
@@ -3,7 +3,7 @@ class HappyForms_Form_Option_Limiter {
3
 
4
  private static $instance;
5
 
6
- private $part_types;
7
 
8
  public static function instance() {
9
  if ( is_null( self::$instance ) ) {
@@ -15,15 +15,6 @@ class HappyForms_Form_Option_Limiter {
15
  return self::$instance;
16
  }
17
 
18
- public function __construct() {
19
- $this->part_types = array(
20
- 'radio',
21
- 'checkbox',
22
- 'select',
23
- 'table',
24
- );
25
- }
26
-
27
  public function hook() {
28
  add_filter( 'happyforms_part_options', array( $this, 'get_part_options' ), 10, 3 );
29
  add_filter( 'happyforms_get_form_parts', array( $this, 'get_form_parts' ), 10, 2 );
@@ -42,16 +33,18 @@ class HappyForms_Form_Option_Limiter {
42
  return $defaults;
43
  }
44
 
 
45
  public function get_part_options( $options, $part, $form ) {
46
  $option_defaults = $this->get_option_fields();
 
47
 
48
  // Calculate remaining choices
49
- $options = array_map( function( $option ) use( $option_defaults, $form ) {
50
  $option = wp_parse_args( $option, $option_defaults );
51
 
52
  if ( intval( $option['limit_submissions'] ) ) {
53
  $limit = intval( $option['limit_submissions_amount'] );
54
- $count = happyforms_get_form_controller()->count_by_option( $form['ID'], $option['id'], $limit );
55
  $option['submissions_left'] = $limit - $count;
56
  }
57
 
@@ -94,10 +87,13 @@ class HappyForms_Form_Option_Limiter {
94
  }
95
 
96
  public function submission_success( $submission, $form, $message ) {
97
- $parts = array();
 
 
 
98
 
99
  foreach( $form['parts'] as $part ) {
100
- if ( ! in_array( $part['type'], $this->part_types ) ) {
101
  continue;
102
  }
103
 
@@ -107,8 +103,6 @@ class HappyForms_Form_Option_Limiter {
107
  $options_key = 'columns';
108
  }
109
 
110
- $options = $part[$options_key];
111
-
112
  foreach( $part[$options_key] as $o => $option ) {
113
  $option = wp_parse_args( $option, $this->get_option_fields() );
114
 
@@ -141,16 +135,26 @@ class HappyForms_Form_Option_Limiter {
141
  continue;
142
  }
143
 
144
- $meta_key = happyforms_get_option_counter_meta_key( $form['ID'], $option['id'] );
145
- update_post_meta( $message['ID'], $meta_key, 1 );
 
 
 
 
 
 
146
  }
147
  }
148
  }
 
 
149
  }
150
 
151
  public function get_form_parts( $parts, $form ) {
 
 
152
  foreach( $parts as $p => $part ) {
153
- if ( ! in_array( $part['type'], $this->part_types ) ) {
154
  continue;
155
  }
156
 
@@ -170,9 +174,7 @@ class HappyForms_Form_Option_Limiter {
170
  }
171
 
172
  $limit = intval( $option['limit_submissions_amount'] );
173
- $form_id = $form['ID'];
174
- $option_id = $option['id'];
175
- $count = happyforms_get_form_controller()->count_by_option( $form_id, $option_id, $limit );
176
 
177
  if ( $limit <= $count ) {
178
  unset( $part[$options_key][$o] );
@@ -187,6 +189,129 @@ class HappyForms_Form_Option_Limiter {
187
  return $parts;
188
  }
189
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
190
  }
191
 
192
  if ( ! function_exists( 'happyforms_upgrade_get_option_limiter' ) ) :
3
 
4
  private static $instance;
5
 
6
+ private $counter_key = 'counter_choices';
7
 
8
  public static function instance() {
9
  if ( is_null( self::$instance ) ) {
15
  return self::$instance;
16
  }
17
 
 
 
 
 
 
 
 
 
 
18
  public function hook() {
19
  add_filter( 'happyforms_part_options', array( $this, 'get_part_options' ), 10, 3 );
20
  add_filter( 'happyforms_get_form_parts', array( $this, 'get_form_parts' ), 10, 2 );
33
  return $defaults;
34
  }
35
 
36
+
37
  public function get_part_options( $options, $part, $form ) {
38
  $option_defaults = $this->get_option_fields();
39
+ $part_id = $part['id'];
40
 
41
  // Calculate remaining choices
42
+ $options = array_map( function( $option ) use( $option_defaults, $form, $part_id ) {
43
  $option = wp_parse_args( $option, $option_defaults );
44
 
45
  if ( intval( $option['limit_submissions'] ) ) {
46
  $limit = intval( $option['limit_submissions_amount'] );
47
+ $count = $this->count_by_option( $form['ID'], $part_id, $option['id'] );
48
  $option['submissions_left'] = $limit - $count;
49
  }
50
 
87
  }
88
 
89
  public function submission_success( $submission, $form, $message ) {
90
+ $meta_counters = happyforms_get_meta( $form['ID'], $this->counter_key, true );
91
+ if ( empty( $meta_counters ) ) {
92
+ $meta_counters = [];
93
+ }
94
 
95
  foreach( $form['parts'] as $part ) {
96
+ if ( ! in_array( $part['type'], $this->get_supported_parts() ) ) {
97
  continue;
98
  }
99
 
103
  $options_key = 'columns';
104
  }
105
 
 
 
106
  foreach( $part[$options_key] as $o => $option ) {
107
  $option = wp_parse_args( $option, $this->get_option_fields() );
108
 
135
  continue;
136
  }
137
 
138
+ $choice_id = $this->get_counter_choice_key( $part['id'], $option['id'] );
139
+ $count = 1;
140
+
141
+ if ( isset( $meta_counters[ $choice_id ] ) ) {
142
+ $count = $meta_counters[ $choice_id ] + 1;
143
+ }
144
+
145
+ $meta_counters[ $choice_id ] = $count;
146
  }
147
  }
148
  }
149
+
150
+ happyforms_update_meta( $form['ID'], $this->counter_key, $meta_counters );
151
  }
152
 
153
  public function get_form_parts( $parts, $form ) {
154
+ $this->try_migrate_limit_count_options( $form );
155
+
156
  foreach( $parts as $p => $part ) {
157
+ if ( ! in_array( $part['type'], $this->get_supported_parts() ) ) {
158
  continue;
159
  }
160
 
174
  }
175
 
176
  $limit = intval( $option['limit_submissions_amount'] );
177
+ $count = $this->count_by_option( $form['ID'], $part['id'], $option['id'] );
 
 
178
 
179
  if ( $limit <= $count ) {
180
  unset( $part[$options_key][$o] );
189
  return $parts;
190
  }
191
 
192
+ public function count_by_option( $form_id, $part_id, $option_id ) {
193
+ $count = 0;
194
+ $counters = happyforms_get_meta( $form_id, $this->counter_key, true );
195
+ $choice_id = $this->get_counter_choice_key( $part_id, $option_id );
196
+
197
+ if ( isset( $counters[ $choice_id ] ) ) {
198
+ $count = $counters[ $choice_id ];
199
+ }
200
+
201
+ return $count;
202
+ }
203
+
204
+ public function get_counter_choice_key( $part_id, $option_id ) {
205
+ return $part_id . '_' . $option_id;
206
+ }
207
+
208
+ public function get_supported_parts() {
209
+ $parts = array(
210
+ 'radio',
211
+ 'checkbox',
212
+ 'select',
213
+ );
214
+
215
+ $parts = apply_filters( 'happyforms_limited_options_supported_parts', $parts );
216
+
217
+ return $parts;
218
+ }
219
+
220
+ public function try_migrate_limit_count_options( $form ) {
221
+ $form_id = $form['ID'];
222
+ $meta_counters = happyforms_get_meta( $form_id, $this->counter_key, true );
223
+
224
+ if ( 0 == $form_id || ! empty( $meta_counters ) ) {
225
+ return;
226
+ }
227
+
228
+ $parts_with_limits = [];
229
+
230
+ foreach( $form['parts'] as $part ) {
231
+ if ( ! in_array( $part['type'], $this->get_supported_parts() ) ) {
232
+ continue;
233
+ }
234
+
235
+ $options_key = 'options';
236
+
237
+ if ( 'table' === $part['type'] ) {
238
+ $options_key = 'columns';
239
+ }
240
+
241
+ foreach( $part[$options_key] as $o => $option ) {
242
+ $option = wp_parse_args( $option, $this->get_option_fields() );
243
+
244
+ if ( ! $option['limit_submissions'] ) {
245
+ continue;
246
+ }
247
+ $part_name = happyforms_get_part_name( $part, $form );
248
+ if ( ! isset( $parts_with_limits[ $part_name ] ) ) {
249
+ $parts_with_limits[ $part_name ] = [
250
+ 'id' => $part['id'],
251
+ 'options' => [],
252
+ ];
253
+ }
254
+
255
+ $parts_with_limits[ $part_name ]['options'][ $option['id'] ] = $o;
256
+ }
257
+ }
258
+
259
+ if ( empty ( $parts_with_limits ) ) {
260
+ return;
261
+ }
262
+
263
+ $meta_counters = [];
264
+ $message_controller = happyforms_get_message_controller();
265
+ $messages = $message_controller->get_by_form( $form_id );
266
+
267
+ foreach( $messages as $message ){
268
+
269
+ foreach( $parts_with_limits as $part_name => $part ) {
270
+ $request_value = $message['request'];
271
+
272
+ if ( ! isset( $request_value[ $part_name ] ) ) {
273
+ continue;
274
+ }
275
+
276
+ $request_value = $request_value[ $part_name ];
277
+
278
+ if ( ! is_array( $request_value ) ) {
279
+ $request_value = array( $request_value );
280
+ }
281
+
282
+ foreach( $part['options'] as $option_id => $o ) {
283
+
284
+ foreach( $request_value as $submitted_value ) {
285
+ if ( ! is_array( $submitted_value ) ) {
286
+ $submitted_value = array( $submitted_value );
287
+ }
288
+
289
+ // Filter out "other" options
290
+ $submitted_value = array_filter( $submitted_value, 'is_numeric' );
291
+ $submitted_value = array_map( 'intval', $submitted_value );
292
+
293
+ if ( ! in_array( $o, $submitted_value ) ) {
294
+ continue;
295
+ }
296
+
297
+ $choice_id = $this->get_counter_choice_key( $part['id'], $option_id );
298
+ $count = 1;
299
+
300
+ if ( isset( $meta_counters[ $choice_id ] ) ) {
301
+ $count = $meta_counters[ $choice_id ] + 1;
302
+ }
303
+
304
+ $meta_counters[ $choice_id ] = $count;
305
+ }
306
+ }
307
+ }
308
+ }
309
+
310
+ happyforms_update_meta( $form_id, $this->counter_key, $meta_counters );
311
+
312
+ return $form;
313
+ }
314
+
315
  }
316
 
317
  if ( ! function_exists( 'happyforms_upgrade_get_option_limiter' ) ) :
core/classes/class-form-setup.php CHANGED
@@ -41,6 +41,7 @@ class HappyForms_Form_Setup {
41
  // Reviewable form display
42
  add_filter( 'happyforms_form_id', array( $this, 'form_html_id' ), 10, 2 );
43
  add_action( 'happyforms_do_setup_control', array( $this, 'do_control' ), 10, 3 );
 
44
 
45
  add_filter( 'happyforms_messages_fields', array( $this, 'get_messages_fields' ) );
46
  add_filter( 'happyforms_messages_controls', array( $this, 'messages_controls' ) );
@@ -109,10 +110,6 @@ class HappyForms_Form_Setup {
109
  'default' => '',
110
  'sanitize' => 'sanitize_text_field'
111
  ),
112
- 'disable_submit_until_valid' => array(
113
- 'default' => '',
114
- 'sanitize' => 'happyforms_sanitize_checkbox'
115
- ),
116
  'add_submit_button_class' => array(
117
  'default' => 0,
118
  'sanitize' => 'happyforms_sanitize_checkbox'
@@ -171,40 +168,40 @@ class HappyForms_Form_Setup {
171
  'type' => 'group_end'
172
  ),
173
  1100 => array(
174
- 'type' => 'checkbox',
175
  'label' => __( 'Add custom CSS classes to submit button', 'happyforms' ),
176
  'field' => 'add_submit_button_class',
177
  ),
178
  1101 => array(
179
- 'type' => 'group_start',
180
  'trigger' => 'add_submit_button_class'
181
  ),
182
  1102 => array(
183
- 'type' => 'text',
184
  'label' => __( 'Submit button CSS classes', 'happyforms' ),
185
  'autocomplete' => 'off',
186
  'field' => 'submit_button_html_class'
187
  ),
188
  1103 => array(
189
- 'type' => 'group_end',
190
  ),
191
  1200 => array(
192
- 'type' => 'checkbox',
193
  'label' => __( 'Add custom HTML ID to form', 'happyforms' ),
194
  'field' => 'use_html_id',
195
  ),
196
  1201 => array(
197
- 'type' => 'group_start',
198
  'trigger' => 'use_html_id'
199
  ),
200
  1202 => array(
201
- 'type' => 'text',
202
  'label' => __( 'Form HTML ID', 'happyforms' ),
203
  'field' => 'html_id',
204
  'autocomplete' => 'off',
205
  ),
206
  1203 => array(
207
- 'type' => 'group_end',
208
  ),
209
  );
210
 
@@ -261,6 +258,44 @@ class HappyForms_Form_Setup {
261
  }
262
  }
263
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
264
  /**
265
  * Filter: add fields to form meta.
266
  *
41
  // Reviewable form display
42
  add_filter( 'happyforms_form_id', array( $this, 'form_html_id' ), 10, 2 );
43
  add_action( 'happyforms_do_setup_control', array( $this, 'do_control' ), 10, 3 );
44
+ add_action( 'happyforms_do_setup_control', array( $this, 'do_deprecated_control' ), 10, 4 );
45
 
46
  add_filter( 'happyforms_messages_fields', array( $this, 'get_messages_fields' ) );
47
  add_filter( 'happyforms_messages_controls', array( $this, 'messages_controls' ) );
110
  'default' => '',
111
  'sanitize' => 'sanitize_text_field'
112
  ),
 
 
 
 
113
  'add_submit_button_class' => array(
114
  'default' => 0,
115
  'sanitize' => 'happyforms_sanitize_checkbox'
168
  'type' => 'group_end'
169
  ),
170
  1100 => array(
171
+ 'type' => 'add_submit_button_class-checkbox',
172
  'label' => __( 'Add custom CSS classes to submit button', 'happyforms' ),
173
  'field' => 'add_submit_button_class',
174
  ),
175
  1101 => array(
176
+ 'type' => 'add_submit_button_class-group_start',
177
  'trigger' => 'add_submit_button_class'
178
  ),
179
  1102 => array(
180
+ 'type' => 'add_submit_button_class-text',
181
  'label' => __( 'Submit button CSS classes', 'happyforms' ),
182
  'autocomplete' => 'off',
183
  'field' => 'submit_button_html_class'
184
  ),
185
  1103 => array(
186
+ 'type' => 'add_submit_button_class-group_end',
187
  ),
188
  1200 => array(
189
+ 'type' => 'use_html_id-checkbox',
190
  'label' => __( 'Add custom HTML ID to form', 'happyforms' ),
191
  'field' => 'use_html_id',
192
  ),
193
  1201 => array(
194
+ 'type' => 'use_html_id-group_start',
195
  'trigger' => 'use_html_id'
196
  ),
197
  1202 => array(
198
+ 'type' => 'use_html_id-text',
199
  'label' => __( 'Form HTML ID', 'happyforms' ),
200
  'field' => 'html_id',
201
  'autocomplete' => 'off',
202
  ),
203
  1203 => array(
204
+ 'type' => 'use_html_id-group_end',
205
  ),
206
  );
207
 
258
  }
259
  }
260
 
261
+ public function do_deprecated_control( $control, $field, $index ) {
262
+ $type = $control['type'];
263
+ $path = happyforms_get_core_folder() . '/templates/customize-controls/setup';
264
+
265
+ switch( $type ) {
266
+ case 'use_html_id-checkbox':
267
+ case 'use_html_id-group_start':
268
+ case 'use_html_id-text':
269
+ case 'use_html_id-group_end':
270
+ $form = happyforms_customize_get_current_form();
271
+
272
+ if ( 0 == $form['use_html_id'] ) {
273
+ break;
274
+ }
275
+
276
+ $true_type = str_replace( 'use_html_id-', '', $type );
277
+
278
+ require( "{$path}/{$true_type}.php" );
279
+ break;
280
+ case 'add_submit_button_class-checkbox':
281
+ case 'add_submit_button_class-group_start':
282
+ case 'add_submit_button_class-text':
283
+ case 'add_submit_button_class-group_end':
284
+ $form = happyforms_customize_get_current_form();
285
+
286
+ if ( 0 == $form['add_submit_button_class'] ) {
287
+ break;
288
+ }
289
+
290
+ $true_type = str_replace( 'add_submit_button_class-', '', $type );
291
+
292
+ require( "{$path}/{$true_type}.php" );
293
+ break;
294
+ default:
295
+ break;
296
+ }
297
+ }
298
+
299
  /**
300
  * Filter: add fields to form meta.
301
  *
core/classes/class-form-styles.php CHANGED
@@ -86,7 +86,7 @@ class HappyForms_Form_Styles {
86
  'sanitize' => 'sanitize_text_field'
87
  ),
88
  'form_title' => array(
89
- 'default' => '',
90
  'options' => array(
91
  '' => __( 'Show', 'happyforms' ),
92
  'happyforms-form--hide-title' => __( 'Hide', 'happyforms' )
@@ -528,15 +528,6 @@ class HappyForms_Form_Styles {
528
  'target' => 'css_var',
529
  'variable' => '--happyforms-color-dropdown-item-text-hover',
530
  ),
531
- 'notices_position' => array(
532
- 'default' => '',
533
- 'options' => array(
534
- '' => __( 'Above form', 'happyforms' ),
535
- 'happyforms-form--notices-below' => __( 'Below form', 'happyforms' ),
536
- ),
537
- 'target' => 'form_class',
538
- 'sanitize' => 'sanitize_text_field'
539
- ),
540
  'additional_css' => array(
541
  'default' => '',
542
  'mode' => 'css',
@@ -570,11 +561,6 @@ class HappyForms_Form_Styles {
570
  'label' => __( 'Direction', 'happyforms' ),
571
  'field' => 'form_direction'
572
  ),
573
- 500 => array(
574
- 'type' => 'buttonset',
575
- 'label' => __( 'Message location', 'happyforms' ),
576
- 'field' => 'notices_position'
577
- ),
578
  600 => array(
579
  'type' => 'heading',
580
  'id' => 'colors_general',
@@ -611,7 +597,7 @@ class HappyForms_Form_Styles {
611
  'field' => 'color_error_notice_text',
612
  ),
613
  1000 => array(
614
- 'type' => 'divider',
615
  'label' => __( 'Title', 'happyforms' ),
616
  'id' => 'form_title',
617
  ),
@@ -961,7 +947,7 @@ class HappyForms_Form_Styles {
961
  }
962
 
963
  $controls[99990] = array(
964
- 'type' => 'divider',
965
  'label' => __( 'Additional CSS', 'happyforms' ),
966
  'id' => 'additional_css_divider',
967
  'class' => "code-editor-mode--{$code_editor_mode}",
@@ -969,7 +955,7 @@ class HappyForms_Form_Styles {
969
  );
970
 
971
  $controls[99991] = array(
972
- 'type' => 'code',
973
  'mode' => $code_editor_mode,
974
  'hide_title' => true,
975
  'label' => __( 'Additional CSS', 'happyforms' ),
@@ -1041,10 +1027,10 @@ class HappyForms_Form_Styles {
1041
  public function do_deprecated_control( $control, $field, $index ) {
1042
  $type = $control['type'];
1043
  $path = happyforms_get_core_folder() . '/templates/customize-controls/style';
1044
-
 
1045
  switch( $control['type'] ) {
1046
  case 'form-width-range':
1047
- $form = happyforms_customize_get_current_form();
1048
  $form_width = $form['form_width'];
1049
 
1050
  if( '' == $form_width || 100 == $form_width ) {
@@ -1052,6 +1038,25 @@ class HappyForms_Form_Styles {
1052
  }
1053
  require( "{$path}/range.php" );
1054
  break;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1055
  default:
1056
  break;
1057
  }
86
  'sanitize' => 'sanitize_text_field'
87
  ),
88
  'form_title' => array(
89
+ 'default' => 'happyforms-form--hide-title',
90
  'options' => array(
91
  '' => __( 'Show', 'happyforms' ),
92
  'happyforms-form--hide-title' => __( 'Hide', 'happyforms' )
528
  'target' => 'css_var',
529
  'variable' => '--happyforms-color-dropdown-item-text-hover',
530
  ),
 
 
 
 
 
 
 
 
 
531
  'additional_css' => array(
532
  'default' => '',
533
  'mode' => 'css',
561
  'label' => __( 'Direction', 'happyforms' ),
562
  'field' => 'form_direction'
563
  ),
 
 
 
 
 
564
  600 => array(
565
  'type' => 'heading',
566
  'id' => 'colors_general',
597
  'field' => 'color_error_notice_text',
598
  ),
599
  1000 => array(
600
+ 'type' => 'deprecated-divider',
601
  'label' => __( 'Title', 'happyforms' ),
602
  'id' => 'form_title',
603
  ),
947
  }
948
 
949
  $controls[99990] = array(
950
+ 'type' => 'additional_css-divider',
951
  'label' => __( 'Additional CSS', 'happyforms' ),
952
  'id' => 'additional_css_divider',
953
  'class' => "code-editor-mode--{$code_editor_mode}",
955
  );
956
 
957
  $controls[99991] = array(
958
+ 'type' => 'additional_css-code',
959
  'mode' => $code_editor_mode,
960
  'hide_title' => true,
961
  'label' => __( 'Additional CSS', 'happyforms' ),
1027
  public function do_deprecated_control( $control, $field, $index ) {
1028
  $type = $control['type'];
1029
  $path = happyforms_get_core_folder() . '/templates/customize-controls/style';
1030
+ $form = happyforms_customize_get_current_form();
1031
+
1032
  switch( $control['type'] ) {
1033
  case 'form-width-range':
 
1034
  $form_width = $form['form_width'];
1035
 
1036
  if( '' == $form_width || 100 == $form_width ) {
1038
  }
1039
  require( "{$path}/range.php" );
1040
  break;
1041
+ case 'additional_css-divider':
1042
+ case 'additional_css-code':
1043
+ if ( '' == trim( $form['additional_css'] ) ) {
1044
+ break;
1045
+ }
1046
+
1047
+ $true_type = str_replace( 'additional_css-', '', $type );
1048
+
1049
+ require( "{$path}/{$true_type}.php" );
1050
+ break;
1051
+ case 'deprecated-divider':
1052
+ if( 'happyforms-form--hide-title' == $form['form_title'] ) {
1053
+ break;
1054
+ }
1055
+
1056
+ $true_type = str_replace( 'deprecated-', '', $type );
1057
+
1058
+ require( "{$path}/{$true_type}.php" );
1059
+ break;
1060
  default:
1061
  break;
1062
  }
core/classes/class-happyforms-core.php CHANGED
@@ -265,13 +265,9 @@ class HappyForms_Core {
265
 
266
  global $pagenow;
267
 
268
- $dashboard_modals = happyforms_get_dashboard_modals();
269
-
270
  $data = array(
271
  'editLink' => admin_url( happyforms_get_form_edit_link( 'ID', 'URL' ) ),
272
  'shortcode' => happyforms_get_shortcode(),
273
- 'actionModalFetch' => $dashboard_modals->fetch_action,
274
- 'actionModalDismiss' => $dashboard_modals->dismiss_action,
275
  );
276
 
277
  if ( 'post.php' === $pagenow || 'post-new.php' === $pagenow ) {
265
 
266
  global $pagenow;
267
 
 
 
268
  $data = array(
269
  'editLink' => admin_url( happyforms_get_form_edit_link( 'ID', 'URL' ) ),
270
  'shortcode' => happyforms_get_shortcode(),
 
 
271
  );
272
 
273
  if ( 'post.php' === $pagenow || 'post-new.php' === $pagenow ) {
core/classes/class-tracking.php CHANGED
@@ -10,9 +10,6 @@ class HappyForms_Tracking {
10
  * @var HappyForms_Tracking
11
  */
12
  private static $instance;
13
-
14
- private $first_time = false;
15
-
16
  /**
17
  * The name of the tracking option entry.
18
  *
@@ -103,102 +100,6 @@ class HappyForms_Tracking {
103
  wp_die( 1 );
104
  }
105
 
106
- /**
107
- * Action: redirect to the welcome page, if it's first run
108
- * and the user hasn't skipped this step yet.
109
- *
110
- * @since 1.0
111
- *
112
- * @hooked action admin_init
113
- *
114
- * @return void
115
- */
116
- public function redirect_to_settings_page() {
117
- $status = get_option( $this->activation_option );
118
- $show_welcome_page = apply_filters( 'happyforms_show_welcome_page', true );
119
-
120
- if ( $show_welcome_page && ( 1 === intval( $status['status'] ) ) ) {
121
- $url = admin_url( 'admin.php?page=happyforms-welcome' );
122
-
123
- $this->update_status( 2 );
124
- wp_safe_redirect( $url );
125
-
126
- exit;
127
- }
128
- }
129
-
130
- /**
131
- * Output the welcome page.
132
- *
133
- * @since 1.0
134
- *
135
- * @return void
136
- */
137
- public function settings_page() {
138
- if ( ! current_user_can( 'manage_options' ) ) {
139
- wp_die( __( 'Sorry, you are not allowed to access this page.', 'happyforms' ) );
140
- }
141
-
142
- require_once( happyforms_get_core_folder() . '/templates/admin-tracking.php' );
143
- }
144
-
145
- /**
146
- * Action: enqueue styles and scripts for the welcome page.
147
- *
148
- * @since 1.0
149
- *
150
- * @hooked action admin_enqueue_scripts
151
- *
152
- * @return void
153
- */
154
- public function admin_scripts() {
155
- if ( happyforms_is_admin_screen( 'happyforms-welcome' ) ) {
156
- wp_enqueue_script(
157
- 'happyforms-tracking',
158
- happyforms_get_plugin_url() . 'core/assets/js/welcome.js',
159
- array(), HAPPYFORMS_VERSION, true
160
- );
161
- }
162
- }
163
-
164
- /**
165
- * Output Javascript template partials used in the welcome page.
166
- *
167
- * @since 1.0
168
- *
169
- * @return void
170
- */
171
- public function print_template( $template ) {
172
- if ( 'success' === $template ): ?>
173
- <h2><?php _e( 'Thank you!', 'happyforms' ); ?></h2>
174
- <p class="about-description"><?php _e( 'Now let\'s go enjoy HappyForms.', 'happyforms' ); ?></p>
175
- <p><?php _e( 'You\'ve set up notifications and helped us to improve HappyForms. You\'re ready to get started with your first form.', 'happyforms' ); ?></p>
176
- <a href="<?php echo happyforms_get_form_edit_link( 0, happyforms_get_all_form_link() ); ?>" class="button button-primary button-hero" id="happyforms-tracking-proceed"><?php _e( 'Create your first form', 'happyforms' ); ?></a>
177
- <?php elseif ( 'error' === $template ): ?>
178
- <p class="about-description"><?php _e( 'Aw snap! Something went wrong.', 'happyforms' ); ?></p>
179
- <p><?php _e( 'Error description', 'happyforms' ); ?></p>
180
- <?php endif;
181
- }
182
-
183
- /**
184
- * Action: output Javascript templates for the welcome page.
185
- *
186
- * @since 1.0
187
- *
188
- * @hooked action admin_footer
189
- *
190
- * @return void
191
- */
192
- public function print_templates() {
193
- ?>
194
- <script type="text/template" id="happyforms-tracking-success">
195
- <?php $this->print_template( 'success' ); ?>
196
- </script>
197
- <script type="text/template" id="happyforms-tracking-error">
198
- <?php $this->print_template( 'error' ); ?>
199
- </script>
200
- <?php
201
- }
202
  }
203
 
204
  if ( ! function_exists( 'happyforms_get_tracking' ) ):
10
  * @var HappyForms_Tracking
11
  */
12
  private static $instance;
 
 
 
13
  /**
14
  * The name of the tracking option entry.
15
  *
100
  wp_die( 1 );
101
  }
102
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  }
104
 
105
  if ( ! function_exists( 'happyforms_get_tracking' ) ):
core/classes/parts/class-part-checkbox.php CHANGED
@@ -73,10 +73,6 @@ class HappyForms_Part_Checkbox extends HappyForms_Form_Part {
73
  'default' => array(),
74
  'sanitize' => 'happyforms_sanitize_array'
75
  ),
76
- 'options_width' => array(
77
- 'default' => 'auto',
78
- 'sanitize' => 'sanitize_text_field'
79
- ),
80
  'show_select_all' => array(
81
  'default' => 0,
82
  'sanitize' => 'happyforms_sanitize_checkbox'
@@ -407,9 +403,7 @@ class HappyForms_Part_Checkbox extends HappyForms_Form_Part {
407
  }
408
 
409
  $limit = intval( $option['limit_submissions_amount'] );
410
- $form_id = $form['ID'];
411
- $option_id = $option['id'];
412
- $count = happyforms_get_form_controller()->count_by_option( $form_id, $option_id, $limit );
413
 
414
  if ( $count === $limit ) {
415
  return new WP_Error( 'error', happyforms_get_validation_message( 'field_invalid' ) );
@@ -426,10 +420,6 @@ class HappyForms_Part_Checkbox extends HappyForms_Form_Part {
426
  if ( 'block' === $part['display_type'] ) {
427
  $class[] = 'display-type--block';
428
  }
429
-
430
- $part_options_width = $part['options_width'];
431
-
432
- $class[] = "happyforms-part-options-width--{$part_options_width}";
433
  }
434
 
435
  return $class;
73
  'default' => array(),
74
  'sanitize' => 'happyforms_sanitize_array'
75
  ),
 
 
 
 
76
  'show_select_all' => array(
77
  'default' => 0,
78
  'sanitize' => 'happyforms_sanitize_checkbox'
403
  }
404
 
405
  $limit = intval( $option['limit_submissions_amount'] );
406
+ $count = happyforms_upgrade_get_option_limiter()->count_by_option( $form['ID'], $part['id'], $option['id'] );
 
 
407
 
408
  if ( $count === $limit ) {
409
  return new WP_Error( 'error', happyforms_get_validation_message( 'field_invalid' ) );
420
  if ( 'block' === $part['display_type'] ) {
421
  $class[] = 'display-type--block';
422
  }
 
 
 
 
423
  }
424
 
425
  return $class;
core/classes/parts/class-part-radio.php CHANGED
@@ -74,10 +74,6 @@ class HappyForms_Part_Radio extends HappyForms_Form_Part {
74
  'default' => array(),
75
  'sanitize' => 'happyforms_sanitize_array'
76
  ),
77
- 'options_width' => array(
78
- 'default' => 'auto',
79
- 'sanitize' => 'sanitize_text_field'
80
- ),
81
  'other_option' => array(
82
  'default' => 0,
83
  'sanitize' => 'happyforms_sanitize_checkbox'
@@ -260,9 +256,7 @@ class HappyForms_Part_Radio extends HappyForms_Form_Part {
260
  }
261
 
262
  $limit = intval( $option['limit_submissions_amount'] );
263
- $form_id = $form['ID'];
264
- $option_id = $option['id'];
265
- $count = happyforms_get_form_controller()->count_by_option( $form_id, $option_id, $limit );
266
 
267
  if ( $count === $limit ) {
268
  return new WP_Error( 'error', happyforms_get_validation_message( 'field_invalid' ) );
@@ -320,10 +314,6 @@ class HappyForms_Part_Radio extends HappyForms_Form_Part {
320
  if ( isset( $part['display_type'] ) && 'block' === $part['display_type'] ) {
321
  $class[] = 'display-type--block';
322
  }
323
-
324
- $part_options_width = $part['options_width'];
325
-
326
- $class[] = "happyforms-part-options-width--{$part_options_width}";
327
  }
328
 
329
  return $class;
74
  'default' => array(),
75
  'sanitize' => 'happyforms_sanitize_array'
76
  ),
 
 
 
 
77
  'other_option' => array(
78
  'default' => 0,
79
  'sanitize' => 'happyforms_sanitize_checkbox'
256
  }
257
 
258
  $limit = intval( $option['limit_submissions_amount'] );
259
+ $count = happyforms_upgrade_get_option_limiter()->count_by_option( $form['ID'], $part['id'], $option['id'] );
 
 
260
 
261
  if ( $count === $limit ) {
262
  return new WP_Error( 'error', happyforms_get_validation_message( 'field_invalid' ) );
314
  if ( isset( $part['display_type'] ) && 'block' === $part['display_type'] ) {
315
  $class[] = 'display-type--block';
316
  }
 
 
 
 
317
  }
318
 
319
  return $class;
core/classes/parts/class-part-select.php CHANGED
@@ -269,9 +269,7 @@ class HappyForms_Part_Select extends HappyForms_Form_Part {
269
  }
270
 
271
  $limit = intval( $option['limit_submissions_amount'] );
272
- $form_id = $form['ID'];
273
- $option_id = $option['id'];
274
- $count = happyforms_get_form_controller()->count_by_option( $form_id, $option_id, $limit );
275
 
276
  if ( $count === $limit ) {
277
  return new WP_Error( 'error', happyforms_get_validation_message( 'field_invalid' ) );
@@ -312,9 +310,7 @@ class HappyForms_Part_Select extends HappyForms_Form_Part {
312
  }
313
 
314
  $limit = intval( $option['limit_submissions_amount'] );
315
- $form_id = $form['ID'];
316
- $option_id = $option['id'];
317
- $count = happyforms_get_form_controller()->count_by_option( $form_id, $option_id, $limit );
318
 
319
  return $limit > $count;
320
  } );
@@ -322,33 +318,6 @@ class HappyForms_Part_Select extends HappyForms_Form_Part {
322
  return $options;
323
  }
324
 
325
- public function submission_success( $submission, $form, $message ) {
326
- $parts = array();
327
-
328
- foreach( $form['parts'] as $part ) {
329
- if ( $this->type !== $part['type'] ) {
330
- continue;
331
- }
332
-
333
- foreach( $part['options'] as $o => $option ) {
334
- $option = wp_parse_args( $option, $this->get_option_defaults() );
335
-
336
- if ( ! $option['limit_submissions'] ) {
337
- continue;
338
- }
339
-
340
- $part_name = happyforms_get_part_name( $part, $form );
341
-
342
- if ( ! isset( $_REQUEST[$part_name] ) || ( $o !== intval( $_REQUEST[$part_name] ) ) ) {
343
- continue;
344
- }
345
-
346
- $meta_key = happyforms_get_option_counter_meta_key( $form['ID'], $option['id'] );
347
- update_post_meta( $message['ID'], $meta_key, 1 );
348
- }
349
- }
350
- }
351
-
352
  public function append_input( $part, $form ) {
353
  if ( $this->type !== $part['type'] ) {
354
  return;
269
  }
270
 
271
  $limit = intval( $option['limit_submissions_amount'] );
272
+ $count = happyforms_upgrade_get_option_limiter()->count_by_option( $form['ID'], $part['id'], $option['id'] );
 
 
273
 
274
  if ( $count === $limit ) {
275
  return new WP_Error( 'error', happyforms_get_validation_message( 'field_invalid' ) );
310
  }
311
 
312
  $limit = intval( $option['limit_submissions_amount'] );
313
+ $count = happyforms_upgrade_get_option_limiter()->count_by_option( $form['ID'], $part['id'], $option['id'] );
 
 
314
 
315
  return $limit > $count;
316
  } );
318
  return $options;
319
  }
320
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
321
  public function append_input( $part, $form ) {
322
  if ( $this->type !== $part['type'] ) {
323
  return;
core/helpers/helper-activation.php CHANGED
@@ -180,8 +180,6 @@ function happyforms_cleanup() {
180
  return;
181
  }
182
 
183
- return;
184
-
185
  // Forms
186
  $forms = get_posts( array(
187
  'post_type' => 'happyform',
@@ -209,11 +207,25 @@ function happyforms_cleanup() {
209
 
210
  // Migrations
211
  delete_option( 'happyforms-data-version' );
 
 
 
 
 
 
 
 
 
 
 
 
 
212
 
 
213
  // Deactivation
214
  delete_option( '_happyforms_cleanup_on_deactivate' );
215
  }
216
 
217
  endif;
218
 
219
- add_action( 'happyforms_deactivate', 'happyforms_cleanup' );
180
  return;
181
  }
182
 
 
 
183
  // Forms
184
  $forms = get_posts( array(
185
  'post_type' => 'happyform',
207
 
208
  // Migrations
209
  delete_option( 'happyforms-data-version' );
210
+ }
211
+
212
+ endif;
213
+
214
+ add_action( 'happyforms_deactivate', 'happyforms_cleanup' );
215
+
216
+ /**
217
+ *
218
+ * Late removal of deactivation settings.
219
+ * Allows for other code to rely on these settings.
220
+ *
221
+ */
222
+ if ( ! function_exists( 'happyforms_cleanup_deactivation_flag' ) ) :
223
 
224
+ function happyforms_cleanup_deactivation_flag() {
225
  // Deactivation
226
  delete_option( '_happyforms_cleanup_on_deactivate' );
227
  }
228
 
229
  endif;
230
 
231
+ add_action( 'happyforms_deactivate', 'happyforms_cleanup_deactivation_flag', PHP_INT_MAX );
core/helpers/helper-misc.php CHANGED
@@ -992,8 +992,28 @@ endif;
992
 
993
  if ( ! function_exists( 'happyforms_is_admin_screen' ) ):
994
 
995
- function happyforms_is_admin_screen( $id ) {
996
  $current_screen = get_current_screen();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
997
  $prefix = sanitize_title( __( 'Forms', 'happyforms' ) );
998
  $is_admin_screen = "{$prefix}_page_{$id}" === $current_screen->id;
999
 
@@ -1002,15 +1022,6 @@ function happyforms_is_admin_screen( $id ) {
1002
 
1003
  endif;
1004
 
1005
- if ( ! function_exists( 'happyforms_get_option_counter_meta_key' ) ):
1006
-
1007
- function happyforms_get_option_counter_meta_key( $form_id, $option_id ) {
1008
- $meta_key = "_happyforms_option_counter_{$form_id}_{$option_id}";
1009
-
1010
- return $meta_key;
1011
- }
1012
-
1013
- endif;
1014
 
1015
  if ( ! function_exists( 'happyforms_safe_array_merge' ) ):
1016
 
992
 
993
  if ( ! function_exists( 'happyforms_is_admin_screen' ) ):
994
 
995
+ function happyforms_is_admin_screen( $id = '' ) {
996
  $current_screen = get_current_screen();
997
+
998
+ if ( ! $current_screen ) {
999
+ return false;
1000
+ }
1001
+
1002
+ if ( empty( $id ) ) {
1003
+ $is_admin_screen = (
1004
+ in_array( $current_screen->id, array(
1005
+ 'edit-happyform',
1006
+ 'edit-happyforms-message',
1007
+ 'happyforms-message',
1008
+ ) ) ||
1009
+ happyforms_is_admin_screen( 'happyforms-welcome' ) ||
1010
+ happyforms_is_admin_screen( 'happyforms-settings' ) ||
1011
+ happyforms_is_admin_screen( 'happyforms-integrations' )
1012
+ );
1013
+
1014
+ return $is_admin_screen;
1015
+ }
1016
+
1017
  $prefix = sanitize_title( __( 'Forms', 'happyforms' ) );
1018
  $is_admin_screen = "{$prefix}_page_{$id}" === $current_screen->id;
1019
 
1022
 
1023
  endif;
1024
 
 
 
 
 
 
 
 
 
 
1025
 
1026
  if ( ! function_exists( 'happyforms_safe_array_merge' ) ):
1027
 
core/templates/admin/modal-deactivate.php DELETED
@@ -1,17 +0,0 @@
1
- <div class="happyforms-modal__heading">
2
- <h1><?php _e( 'What about your data?', 'happyforms' ); ?></h1>
3
- </div>
4
- <div class="happyforms-modal__content">
5
- <form>
6
- <?php wp_nonce_field( happyforms_get_deactivation()->modal_action ); ?>
7
- <label for="happyforms-deactivate-keep-data">
8
- <input type="radio" name="keep-data" value="yes" id="happyforms-deactivate-keep-data" checked />
9
- <span><?php _e( 'Keep plugin data (recommended)', 'happyforms' ); ?></span>
10
- </label>
11
- <label for="happyforms-deactivate-remove-data">
12
- <input type="radio" name="keep-data" value="no" id="happyforms-deactivate-remove-data" />
13
- <span><?php _e( 'Permanently delete plugin data', 'happyforms' ); ?></span>
14
- </label>
15
- <button type="submit" class="button button-primary button-hero"><?php _e( 'Deactivate Plugin', 'happyforms' ); ?></button>
16
- </form>
17
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
core/templates/customize-controls/style/code.php CHANGED
@@ -1,4 +1,4 @@
1
- <li class="customize-control <?php echo esc_attr( 'happyforms-' . $control['type'] . '-control' ); ?>" data-target="<?php echo esc_attr( $field['target'] ); ?>" data-mode="<?php echo $control['mode']; ?>" id="customize-control-<?php echo $control['field']; ?>">
2
  <?php if ( ! isset( $control['hide_title'] ) || ! $control['hide_title'] ) : ?>
3
  <label class="customize-control-title" for="<?php echo $control['field']; ?>"><?php echo $control['label']; ?> <?php if ( isset( $control['tooltip'] ) ) : ?> <i class="dashicons dashicons-editor-help" aria-hidden="true" data-pointer><span><?php echo $control['tooltip']; ?></span></i><?php endif; ?></label>
4
  <?php endif; ?>
1
+ <li class="customize-control happyforms-code-control" data-target="<?php echo esc_attr( $field['target'] ); ?>" data-mode="<?php echo $control['mode']; ?>" id="customize-control-<?php echo $control['field']; ?>">
2
  <?php if ( ! isset( $control['hide_title'] ) || ! $control['hide_title'] ) : ?>
3
  <label class="customize-control-title" for="<?php echo $control['field']; ?>"><?php echo $control['label']; ?> <?php if ( isset( $control['tooltip'] ) ) : ?> <i class="dashicons dashicons-editor-help" aria-hidden="true" data-pointer><span><?php echo $control['tooltip']; ?></span></i><?php endif; ?></label>
4
  <?php endif; ?>
core/templates/customize-controls/style/divider.php CHANGED
@@ -1,5 +1,5 @@
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
 
1
  <?php if ( $index > 0 ): ?></ul></li><?php endif; ?>
2
+ <li class="customize-control control-section happyforms-divider-control" id="customize-control-<?php echo $control['id']; ?>">
3
  <h3 class="accordion-section-title"><?php echo $control['label']; ?></h3>
4
  </li>
5
 
core/templates/partials/admin-modal-footer.php DELETED
@@ -1,3 +0,0 @@
1
- </div>
2
- </div>
3
- </div>
 
 
 
core/templates/partials/admin-modal-header.php DELETED
@@ -1,8 +0,0 @@
1
- <div class="happyforms-modal__overlay">
2
- <div class="happyforms-modal__frame <?php echo $settings['classes']; ?>" <?php if ( $settings['dismissible'] ) : ?>data-happyforms-modal-dismissible data-happyforms-modal-id="<?php echo $id; ?>"<?php endif; ?>>
3
- <div class="happyforms-modal__header">
4
- <button class="happyforms-modal__dismiss">
5
- <svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" role="img" aria-hidden="true" focusable="false"><path d="M13 11.8l6.1-6.3-1-1-6.1 6.2-6.1-6.2-1 1 6.1 6.3-6.5 6.7 1 1 6.5-6.6 6.5 6.6 1-1z"></path></svg>
6
- </button>
7
- </div>
8
- <div class="happyforms-modal__body">
 
 
 
 
 
 
 
 
core/templates/parts/customize-checkbox.php CHANGED
@@ -53,7 +53,7 @@
53
  <?php do_action( 'happyforms_part_customize_checkbox_after_options' ); ?>
54
 
55
  <?php do_action( 'happyforms_part_customize_checkbox_before_advanced_options' ); ?>
56
-
57
  <p>
58
  <label>
59
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.show_select_all ) { %>checked="checked"<% } %> data-bind="show_select_all" /> <?php _e( 'Add \'select all\' choice', 'happyforms' ); ?>
@@ -107,23 +107,13 @@
107
  <option value="block"<%= (instance.display_type == 'block') ? ' selected' : '' %>><?php _e( 'Vertical', 'happyforms' ); ?></option>
108
  </select>
109
  </p>
110
- <p class="part-options-width-setting">
111
- <label for="<%= instance.id %>_options_width"><?php _e( 'Choices width', 'happyforms' ); ?></label>
112
- <select id="<%= instance.id %>_options_width" name="options_width" data-bind="options_width" class="widefat">
113
- <option class="display-type--inline display-type--block" value="full"<%= (instance.options_width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
114
- <option class="display-type--inline" value="half" style="display: <%= ( instance.display_type == 'inline' ) ? 'block' : 'none' %>" <%= (instance.options_width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
115
- <option class="display-type--inline" value="third" style="display: <%= ( instance.display_type == 'inline' ) ? 'block' : 'none' %>" <%= (instance.options_width == 'third') ? ' selected' : '' %>><?php _e( 'Third', 'happyforms' ); ?></option>
116
- <option class="display-type--inline" value="quarter" style="display: <%= ( instance.display_type == 'inline' ) ? 'block' : 'none' %>" <%= (instance.options_width == 'quarter') ? ' selected' : '' %>><?php _e( 'Quarter', 'happyforms' ); ?></option>
117
- <option class="display-type--inline display-type--block" value="auto"<%= (instance.options_width == 'auto') ? ' selected' : '' %>><?php _e( 'Auto', 'happyforms' ); ?></option>
118
- </select>
119
- </p>
120
 
121
  <?php happyforms_customize_part_width_control(); ?>
122
 
123
  <?php do_action( 'happyforms_part_customize_checkbox_after_advanced_options' ); ?>
124
 
125
  <p>
126
- <label for="<%= instance.id %>_css_class"><?php _e( 'CSS classes', 'happyforms' ); ?></label>
127
  <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
128
  </p>
129
 
53
  <?php do_action( 'happyforms_part_customize_checkbox_after_options' ); ?>
54
 
55
  <?php do_action( 'happyforms_part_customize_checkbox_before_advanced_options' ); ?>
56
+
57
  <p>
58
  <label>
59
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.show_select_all ) { %>checked="checked"<% } %> data-bind="show_select_all" /> <?php _e( 'Add \'select all\' choice', 'happyforms' ); ?>
107
  <option value="block"<%= (instance.display_type == 'block') ? ' selected' : '' %>><?php _e( 'Vertical', 'happyforms' ); ?></option>
108
  </select>
109
  </p>
 
 
 
 
 
 
 
 
 
 
110
 
111
  <?php happyforms_customize_part_width_control(); ?>
112
 
113
  <?php do_action( 'happyforms_part_customize_checkbox_after_advanced_options' ); ?>
114
 
115
  <p>
116
+ <label for="<%= instance.id %>_css_class"><?php _e( 'Additional CSS class(es)', 'happyforms' ); ?></label>
117
  <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
118
  </p>
119
 
core/templates/parts/customize-email.php CHANGED
@@ -55,7 +55,7 @@
55
  <?php do_action( 'happyforms_part_customize_email_after_advanced_options' ); ?>
56
 
57
  <p>
58
- <label for="<%= instance.id %>_css_class"><?php _e( 'CSS classes', 'happyforms' ); ?></label>
59
  <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
60
  </p>
61
 
55
  <?php do_action( 'happyforms_part_customize_email_after_advanced_options' ); ?>
56
 
57
  <p>
58
+ <label for="<%= instance.id %>_css_class"><?php _e( 'Additional CSS class(es)', 'happyforms' ); ?></label>
59
  <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
60
  </p>
61
 
core/templates/parts/customize-multi-line-text.php CHANGED
@@ -79,7 +79,7 @@
79
  <?php do_action( 'happyforms_part_customize_multi_line_text_after_advanced_options' ); ?>
80
 
81
  <p>
82
- <label for="<%= instance.id %>_css_class"><?php _e( 'CSS classes', 'happyforms' ); ?></label>
83
  <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
84
  </p>
85
 
79
  <?php do_action( 'happyforms_part_customize_multi_line_text_after_advanced_options' ); ?>
80
 
81
  <p>
82
+ <label for="<%= instance.id %>_css_class"><?php _e( 'Additional CSS class(es)', 'happyforms' ); ?></label>
83
  <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
84
  </p>
85
 
core/templates/parts/customize-number.php CHANGED
@@ -78,7 +78,7 @@
78
  <?php happyforms_customize_part_width_control(); ?>
79
 
80
  <p>
81
- <label for="<%= instance.id %>_css_class"><?php _e( 'CSS classes', 'happyforms' ); ?></label>
82
  <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
83
  </p>
84
 
78
  <?php happyforms_customize_part_width_control(); ?>
79
 
80
  <p>
81
+ <label for="<%= instance.id %>_css_class"><?php _e( 'Additional CSS class(es)', 'happyforms' ); ?></label>
82
  <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
83
  </p>
84
 
core/templates/parts/customize-radio.php CHANGED
@@ -53,7 +53,7 @@
53
  <?php do_action( 'happyforms_part_customize_radio_after_options' ); ?>
54
 
55
  <?php do_action( 'happyforms_part_customize_radio_before_advanced_options' ); ?>
56
-
57
  <p>
58
  <label>
59
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.other_option ) { %>checked="checked"<% } %> data-bind="other_option" /> <?php _e( 'Add \'other\' choice', 'happyforms' ); ?>
@@ -81,21 +81,11 @@
81
  <option value="block"<%= (instance.display_type == 'block') ? ' selected' : '' %>><?php _e( 'Vertical', 'happyforms' ); ?></option>
82
  </select>
83
  </p>
84
- <p class="part-options-width-setting">
85
- <label for="<%= instance.id %>_options_width"><?php _e( 'Choices width', 'happyforms' ); ?></label>
86
- <select id="<%= instance.id %>_options_width" name="options_width" data-bind="options_width" class="widefat">
87
- <option class="display-type--inline display-type--block" value="full"<%= (instance.options_width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
88
- <option class="display-type--inline" value="half" style="display: <%= ( instance.display_type == 'inline' ) ? 'block' : 'none' %>" <%= (instance.options_width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
89
- <option class="display-type--inline" value="third" style="display: <%= ( instance.display_type == 'inline' ) ? 'block' : 'none' %>" <%= (instance.options_width == 'third') ? ' selected' : '' %>><?php _e( 'Third', 'happyforms' ); ?></option>
90
- <option class="display-type--inline" value="quarter" style="display: <%= ( instance.display_type == 'inline' ) ? 'block' : 'none' %>" <%= (instance.options_width == 'quarter') ? ' selected' : '' %>><?php _e( 'Quarter', 'happyforms' ); ?></option>
91
- <option class="display-type--inline display-type--block" value="auto"<%= (instance.options_width == 'auto') ? ' selected' : '' %>><?php _e( 'Auto', 'happyforms' ); ?></option>
92
- </select>
93
- </p>
94
 
95
  <?php happyforms_customize_part_width_control(); ?>
96
 
97
  <p>
98
- <label for="<%= instance.id %>_css_class"><?php _e( 'CSS classes', 'happyforms' ); ?></label>
99
  <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
100
  </p>
101
 
53
  <?php do_action( 'happyforms_part_customize_radio_after_options' ); ?>
54
 
55
  <?php do_action( 'happyforms_part_customize_radio_before_advanced_options' ); ?>
56
+
57
  <p>
58
  <label>
59
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.other_option ) { %>checked="checked"<% } %> data-bind="other_option" /> <?php _e( 'Add \'other\' choice', 'happyforms' ); ?>
81
  <option value="block"<%= (instance.display_type == 'block') ? ' selected' : '' %>><?php _e( 'Vertical', 'happyforms' ); ?></option>
82
  </select>
83
  </p>
 
 
 
 
 
 
 
 
 
 
84
 
85
  <?php happyforms_customize_part_width_control(); ?>
86
 
87
  <p>
88
+ <label for="<%= instance.id %>_css_class"><?php _e( 'Additional CSS class(es)', 'happyforms' ); ?></label>
89
  <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
90
  </p>
91
 
core/templates/parts/customize-select.php CHANGED
@@ -83,7 +83,7 @@
83
  <?php happyforms_customize_part_width_control(); ?>
84
 
85
  <p>
86
- <label for="<%= instance.id %>_css_class"><?php _e( 'CSS classes', 'happyforms' ); ?></label>
87
  <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
88
  </p>
89
 
83
  <?php happyforms_customize_part_width_control(); ?>
84
 
85
  <p>
86
+ <label for="<%= instance.id %>_css_class"><?php _e( 'Additional CSS class(es)', 'happyforms' ); ?></label>
87
  <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
88
  </p>
89
 
core/templates/parts/customize-single-line-text.php CHANGED
@@ -54,7 +54,7 @@
54
  <?php do_action( 'happyforms_part_customize_single_line_text_after_advanced_options' ); ?>
55
 
56
  <p>
57
- <label for="<%= instance.id %>_css_class"><?php _e( 'CSS classes', 'happyforms' ); ?></label>
58
  <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
59
  </p>
60
 
54
  <?php do_action( 'happyforms_part_customize_single_line_text_after_advanced_options' ); ?>
55
 
56
  <p>
57
+ <label for="<%= instance.id %>_css_class"><?php _e( 'Additional CSS class(es)', 'happyforms' ); ?></label>
58
  <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
59
  </p>
60
 
happyforms.php CHANGED
@@ -5,7 +5,7 @@
5
  * Plugin URI: https://happyforms.io
6
  * Description: We're changin' WordPress forms.
7
  * Author: Happyforms
8
- * Version: 1.13.3
9
  * Author URI: https://happyforms.io
10
  * Upgrade URI: https://happyforms.io/upgrade
11
  */
@@ -22,7 +22,7 @@ if ( defined( 'HAPPYFORMS_UPGRADE_VERSION' ) ) {
22
  /**
23
  * The current version of the plugin.
24
  */
25
- define( 'HAPPYFORMS_VERSION', '1.13.3' );
26
 
27
  if ( ! function_exists( 'happyforms_plugin_file' ) ):
28
  /**
5
  * Plugin URI: https://happyforms.io
6
  * Description: We're changin' WordPress forms.
7
  * Author: Happyforms
8
+ * Version: 1.13.4
9
  * Author URI: https://happyforms.io
10
  * Upgrade URI: https://happyforms.io/upgrade
11
  */
22
  /**
23
  * The current version of the plugin.
24
  */
25
+ define( 'HAPPYFORMS_VERSION', '1.13.4' );
26
 
27
  if ( ! function_exists( 'happyforms_plugin_file' ) ):
28
  /**
inc/assets/css/dashboard-modals.css ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ *
3
+ * Upgrade modal
4
+ *
5
+ */
6
+ .happyforms-modal.happyforms-modal--upgrade .components-modal__content {
7
+ padding-bottom: 32px;
8
+ }
9
+
10
+ /**
11
+ *
12
+ * Onboarding modal
13
+ *
14
+ */
15
+ .happyforms-modal--onboarding {
16
+ box-sizing: border-box;
17
+ overflow-x: hidden;
18
+ }
19
+
20
+ .happyforms-modal--onboarding .components-guide__page {
21
+ justify-content: flex-start;
22
+ }
23
+
24
+ .happyforms-modal--onboarding .happyforms-modal__header,
25
+ .happyforms-modal--onboarding .happyforms-modal__body {
26
+ padding: 24px 32px 0;
27
+ }
28
+
29
+ .happyforms-modal--onboarding .happyforms-modal__body {
30
+ display: flex;
31
+ flex-flow: column;
32
+ justify-content: flex-start;
33
+ }
34
+
35
+ .happyforms-modal--onboarding img {
36
+ display: block;
37
+ }
38
+
39
+ .happyforms-modal--onboarding h1 {
40
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
41
+ font-size: 24px;
42
+ line-height: 1.4;
43
+ margin: 0 0 8px 0;
44
+ }
45
+
46
+ .happyforms-modal--onboarding label {
47
+ display: block;
48
+ margin: 0 0 4px;
49
+ }
50
+
51
+ .happyforms-modal--onboarding .happyforms-modal__header p,
52
+ .happyforms-modal--onboarding .happyforms-modal__body p {
53
+ margin: 0;
54
+ }
55
+
56
+ .happyforms-modal--onboarding .happyforms-radio-label {
57
+ display: flex;
58
+ align-items: flex-start;
59
+ margin-top: 20px;
60
+ }
61
+
62
+ .happyforms-modal--onboarding .components-base-control__field .components-button {
63
+ width: 100%;
64
+ justify-content: center;
65
+ }
66
+
67
+ .happyforms-modal--onboarding .components-guide__footer {
68
+ display: none;
69
+ }
70
+
71
+ .happyforms-modal--onboarding .happyforms-modal__footer {
72
+ padding: 0 32px 32px;
73
+ }
inc/assets/js/admin/dashboard.js CHANGED
@@ -7,24 +7,13 @@
7
  dashboardInit.apply( this, arguments );
8
 
9
  $( document ).on( 'click', '#adminmenu #toplevel_page_happyforms a[href="#settings"]', this.openUpgradeModal );
10
- $( document ).on( 'click', '.happyforms-modal__navigation-item', this.onModalNavigationItemClick );
11
  },
12
 
13
  openUpgradeModal: function( e ) {
14
  e.preventDefault();
15
 
16
- happyForms.dashboard.openModal( 'upgrade' );
17
- },
18
-
19
- onModalNavigationItemClick: function( e ) {
20
- var $item = $( e.currentTarget );
21
-
22
- $( '.happyforms-modal__pages-page' ).removeClass( 'happyforms-modal__pages-page--active' );
23
- $( '.happyforms-modal__navigation-item' ).removeClass( 'happyforms-modal__navigation-item--active' );
24
-
25
- $item.addClass( 'happyforms-modal__navigation-item--active' );
26
- $( '.happyforms-modal__pages-page:nth-child(' + ( $item.index() + 1 ) + ')' )
27
- .addClass( 'happyforms-modal__pages-page--active' );
28
  },
29
  } );
30
 
7
  dashboardInit.apply( this, arguments );
8
 
9
  $( document ).on( 'click', '#adminmenu #toplevel_page_happyforms a[href="#settings"]', this.openUpgradeModal );
10
+ $( document ).on( 'click', '#adminmenu #toplevel_page_happyforms a[href="#integrations"]', this.openUpgradeModal );
11
  },
12
 
13
  openUpgradeModal: function( e ) {
14
  e.preventDefault();
15
 
16
+ happyForms.modals.openUpgradeModal();
 
 
 
 
 
 
 
 
 
 
 
17
  },
18
  } );
19
 
inc/assets/jsx/build/admin/dashboard-modals.asset.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php return array('dependencies' => array('wp-components', 'wp-element', 'wp-i18n', 'wp-polyfill'), 'version' => '2047e42fce51ae5a6e52eeebcb14dd39');
inc/assets/jsx/build/admin/dashboard-modals.js ADDED
@@ -0,0 +1,421 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /******/ (function(modules) { // webpackBootstrap
2
+ /******/ // The module cache
3
+ /******/ var installedModules = {};
4
+ /******/
5
+ /******/ // The require function
6
+ /******/ function __webpack_require__(moduleId) {
7
+ /******/
8
+ /******/ // Check if module is in cache
9
+ /******/ if(installedModules[moduleId]) {
10
+ /******/ return installedModules[moduleId].exports;
11
+ /******/ }
12
+ /******/ // Create a new module (and put it into the cache)
13
+ /******/ var module = installedModules[moduleId] = {
14
+ /******/ i: moduleId,
15
+ /******/ l: false,
16
+ /******/ exports: {}
17
+ /******/ };
18
+ /******/
19
+ /******/ // Execute the module function
20
+ /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21
+ /******/
22
+ /******/ // Flag the module as loaded
23
+ /******/ module.l = true;
24
+ /******/
25
+ /******/ // Return the exports of the module
26
+ /******/ return module.exports;
27
+ /******/ }
28
+ /******/
29
+ /******/
30
+ /******/ // expose the modules object (__webpack_modules__)
31
+ /******/ __webpack_require__.m = modules;
32
+ /******/
33
+ /******/ // expose the module cache
34
+ /******/ __webpack_require__.c = installedModules;
35
+ /******/
36
+ /******/ // define getter function for harmony exports
37
+ /******/ __webpack_require__.d = function(exports, name, getter) {
38
+ /******/ if(!__webpack_require__.o(exports, name)) {
39
+ /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
40
+ /******/ }
41
+ /******/ };
42
+ /******/
43
+ /******/ // define __esModule on exports
44
+ /******/ __webpack_require__.r = function(exports) {
45
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
46
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
47
+ /******/ }
48
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
49
+ /******/ };
50
+ /******/
51
+ /******/ // create a fake namespace object
52
+ /******/ // mode & 1: value is a module id, require it
53
+ /******/ // mode & 2: merge all properties of value into the ns
54
+ /******/ // mode & 4: return value when already ns object
55
+ /******/ // mode & 8|1: behave like require
56
+ /******/ __webpack_require__.t = function(value, mode) {
57
+ /******/ if(mode & 1) value = __webpack_require__(value);
58
+ /******/ if(mode & 8) return value;
59
+ /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
60
+ /******/ var ns = Object.create(null);
61
+ /******/ __webpack_require__.r(ns);
62
+ /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
63
+ /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
64
+ /******/ return ns;
65
+ /******/ };
66
+ /******/
67
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
68
+ /******/ __webpack_require__.n = function(module) {
69
+ /******/ var getter = module && module.__esModule ?
70
+ /******/ function getDefault() { return module['default']; } :
71
+ /******/ function getModuleExports() { return module; };
72
+ /******/ __webpack_require__.d(getter, 'a', getter);
73
+ /******/ return getter;
74
+ /******/ };
75
+ /******/
76
+ /******/ // Object.prototype.hasOwnProperty.call
77
+ /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
78
+ /******/
79
+ /******/ // __webpack_public_path__
80
+ /******/ __webpack_require__.p = "";
81
+ /******/
82
+ /******/
83
+ /******/ // Load entry module and return exports
84
+ /******/ return __webpack_require__(__webpack_require__.s = "./build/inc/assets/jsx/src/admin/dashboard-modals.js");
85
+ /******/ })
86
+ /************************************************************************/
87
+ /******/ ({
88
+
89
+ /***/ "./build/core/assets/jsx/src/admin/dashboard-modals.js":
90
+ /*!*************************************************************!*\
91
+ !*** ./build/core/assets/jsx/src/admin/dashboard-modals.js ***!
92
+ \*************************************************************/
93
+ /*! exports provided: default */
94
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
95
+
96
+ "use strict";
97
+ __webpack_require__.r(__webpack_exports__);
98
+ /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js");
99
+ /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
100
+ /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
101
+ /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__);
102
+ /* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
103
+ /* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__);
104
+ /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
105
+ /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
106
+
107
+
108
+
109
+
110
+
111
+ /**
112
+ *
113
+ * Modal handler class
114
+ *
115
+ */
116
+
117
+ /* harmony default export */ __webpack_exports__["default"] = (function ($, settings) {
118
+ const {
119
+ render
120
+ } = wp.element;
121
+ /**
122
+ *
123
+ * Deactivation modal
124
+ *
125
+ */
126
+
127
+ const DeactivateModal = props => {
128
+ const [option, setOption] = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["useState"])('yes');
129
+
130
+ const onChange = e => {
131
+ setOption(e.target.value);
132
+ };
133
+
134
+ const onSubmit = () => {
135
+ $.post(ajaxurl, {
136
+ action: settings.deactivateModalAction,
137
+ _wpnonce: settings.deactivateModalNonce,
138
+ keep_data: option
139
+ }, function () {
140
+ window.location.href = props.redirectURL;
141
+ });
142
+ return props.onRequestClose();
143
+ };
144
+
145
+ return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__["Modal"], {
146
+ className: "happyforms-modal happyforms-modal--deactivate",
147
+ title: "What about your data?",
148
+ onRequestClose: props.onRequestClose
149
+ }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("div", {
150
+ className: "happyforms-modal__body",
151
+ onChange: onChange
152
+ }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("label", {
153
+ htmlFor: "happyforms-keep-data-yes"
154
+ }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("input", {
155
+ type: "radio",
156
+ id: "happyforms-keep-data-yes",
157
+ name: "happyforms-keep-data",
158
+ value: "yes",
159
+ defaultChecked: true
160
+ }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("span", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Keep plugin data (recommended)', 'happyforms'))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("label", {
161
+ htmlFor: "happyforms-keep-data-no"
162
+ }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("input", {
163
+ type: "radio",
164
+ id: "happyforms-keep-data-no",
165
+ name: "happyforms-keep-data",
166
+ value: "no"
167
+ }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("span", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Permanently delete plugin data', 'happyforms')))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("div", {
168
+ className: "happyforms-modal__footer"
169
+ }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("div", {
170
+ className: "happyforms-modal__footer-button-group"
171
+ }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__["Button"], {
172
+ isPrimary: true,
173
+ onClick: onSubmit,
174
+ text: option == 'yes' ? Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Deactivate Plugin', 'happyforms') : Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Delete Data and Deactivate Plugin', 'happyforms')
175
+ }))));
176
+ };
177
+ /**
178
+ *
179
+ * Modal wrapper
180
+ *
181
+ */
182
+
183
+
184
+ const ModalProvider = props => {
185
+ return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__["SlotFillProvider"], null, props.modal, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__["Popover"].Slot, null));
186
+ };
187
+
188
+ return class DashboardModals {
189
+ constructor() {
190
+ _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, "area", null);
191
+
192
+ this.area = document.getElementById('happyforms-modals-area');
193
+ }
194
+
195
+ openDeactivateModal(redirectURL) {
196
+ var modal = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(DeactivateModal, {
197
+ onRequestClose: this.closeModal.bind(this, 'deactivate'),
198
+ redirectURL: redirectURL
199
+ });
200
+ this.openModal(modal);
201
+ }
202
+
203
+ openModal(modal) {
204
+ render(Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(ModalProvider, {
205
+ modal: modal
206
+ }), this.area);
207
+ }
208
+
209
+ closeModal(modal) {
210
+ render(Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["Fragment"], null), this.area);
211
+ $.post(ajaxurl, {
212
+ action: settings.actionModalDismiss,
213
+ id: modal
214
+ });
215
+ }
216
+
217
+ };
218
+ });
219
+
220
+ /***/ }),
221
+
222
+ /***/ "./build/inc/assets/jsx/src/admin/dashboard-modals.js":
223
+ /*!************************************************************!*\
224
+ !*** ./build/inc/assets/jsx/src/admin/dashboard-modals.js ***!
225
+ \************************************************************/
226
+ /*! no exports provided */
227
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
228
+
229
+ "use strict";
230
+ __webpack_require__.r(__webpack_exports__);
231
+ /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
232
+ /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
233
+ /* harmony import */ var _happyforms_core_jsx_src_admin_dashboard_modals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @happyforms/core/jsx/src/admin/dashboard-modals */ "./build/core/assets/jsx/src/admin/dashboard-modals.js");
234
+ /* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
235
+ /* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__);
236
+ /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
237
+ /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
238
+
239
+
240
+
241
+
242
+
243
+
244
+ (function ($, settings) {
245
+ /**
246
+ *
247
+ * Onboarding modal
248
+ *
249
+ */
250
+ const OnboardingModal = props => {
251
+ const imageURL = `${settings.pluginURL}/inc/assets/img/welcome.gif`;
252
+ const [email, setEmail] = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["useState"])('');
253
+ const [poweredBy, setPoweredBy] = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["useState"])(false);
254
+
255
+ const onEmailChange = e => {
256
+ setEmail(e.target.value);
257
+ };
258
+
259
+ const onRequestClose = () => {
260
+ $.post(ajaxurl, {
261
+ action: settings.onboardingModalAction,
262
+ _wpnonce: settings.onboardingModalNonce,
263
+ email: email,
264
+ powered_by: poweredBy ? 1 : 0
265
+ });
266
+ return props.onRequestClose();
267
+ };
268
+
269
+ return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__["Guide"], {
270
+ onFinish: onRequestClose,
271
+ className: "happyforms-modal happyforms-modal--onboarding",
272
+ pages: [{
273
+ image: Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("picture", null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("img", {
274
+ src: imageURL,
275
+ width: "450",
276
+ height: "276"
277
+ })),
278
+ content: Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
279
+ className: "happyforms-modal__header"
280
+ }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("h1", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Welcome to Happyforms', 'happyforms')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('We\'ll send you a few emails each month about plugin updates. And don\'t sweat it, you can unsubscribe anytime.', 'happyforms'))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
281
+ className: "happyforms-modal__body"
282
+ }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("label", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Email address', 'happyforms')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("input", {
283
+ type: "email",
284
+ value: email,
285
+ onChange: onEmailChange,
286
+ autoFocus: true
287
+ }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("label", {
288
+ className: "happyforms-radio-label"
289
+ }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__["CheckboxControl"], {
290
+ checked: poweredBy,
291
+ onChange: setPoweredBy
292
+ }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Yes, I want to help support the free plugin by adding a powered by link in the footer of my forms and emails.', 'happyforms')))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
293
+ className: "happyforms-modal__footer"
294
+ }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__["BaseControl"], null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__["Button"], {
295
+ isPrimary: true,
296
+ onClick: onRequestClose,
297
+ text: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Continue', 'happyforms')
298
+ }))))
299
+ }]
300
+ });
301
+ };
302
+ /**
303
+ *
304
+ * Upgrade modal
305
+ *
306
+ */
307
+
308
+
309
+ const UpgradeModal = props => {
310
+ return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__["Modal"], {
311
+ className: "happyforms-modal happyforms-modal--upgrade",
312
+ title: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('You\’ll need to upgrade to access this', 'happyforms'),
313
+ onRequestClose: props.onRequestClose
314
+ }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
315
+ className: "happyforms-modal__body"
316
+ }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('We offer several, affordable paid plans that include our best features. Upgrade today and increase your customer interactions.', 'happyforms'))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
317
+ className: "happyforms-modal__footer"
318
+ }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
319
+ className: "happyforms-modal__footer-button-group"
320
+ }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__["Button"], {
321
+ isPrimary: true,
322
+ href: "https://happyforms.io/upgrade",
323
+ target: "_blank",
324
+ text: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Start Your Risk-Free 14-Day Trial', 'happyforms')
325
+ })), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Or', 'happyforms'), " ", Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__["Button"], {
326
+ isLink: true,
327
+ onClick: props.onRequestClose,
328
+ text: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('continue with free version', 'happyforms')
329
+ }), ".")));
330
+ };
331
+
332
+ const DashboardModalsBaseClass = Object(_happyforms_core_jsx_src_admin_dashboard_modals__WEBPACK_IMPORTED_MODULE_1__["default"])($, settings);
333
+
334
+ class DashboardModalsClass extends DashboardModalsBaseClass {
335
+ openOnboardingModal() {
336
+ var modal = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(OnboardingModal, {
337
+ onRequestClose: this.closeModal.bind(this, 'onboarding'),
338
+ status: settings.trackingStatus
339
+ });
340
+ this.openModal(modal);
341
+ }
342
+
343
+ openUpgradeModal() {
344
+ var modal = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(UpgradeModal, {
345
+ onRequestClose: this.closeModal.bind(this, 'upgrade')
346
+ });
347
+ this.openModal(modal);
348
+ }
349
+
350
+ }
351
+
352
+ ;
353
+ var happyForms = window.happyForms || {};
354
+ window.happyForms = happyForms;
355
+ happyForms.modals = new DashboardModalsClass();
356
+ })(jQuery, _happyFormsDashboardModalsSettings);
357
+
358
+ /***/ }),
359
+
360
+ /***/ "./node_modules/@babel/runtime/helpers/defineProperty.js":
361
+ /*!***************************************************************!*\
362
+ !*** ./node_modules/@babel/runtime/helpers/defineProperty.js ***!
363
+ \***************************************************************/
364
+ /*! no static exports found */
365
+ /***/ (function(module, exports) {
366
+
367
+ function _defineProperty(obj, key, value) {
368
+ if (key in obj) {
369
+ Object.defineProperty(obj, key, {
370
+ value: value,
371
+ enumerable: true,
372
+ configurable: true,
373
+ writable: true
374
+ });
375
+ } else {
376
+ obj[key] = value;
377
+ }
378
+
379
+ return obj;
380
+ }
381
+
382
+ module.exports = _defineProperty;
383
+ module.exports["default"] = module.exports, module.exports.__esModule = true;
384
+
385
+ /***/ }),
386
+
387
+ /***/ "@wordpress/components":
388
+ /*!************************************!*\
389
+ !*** external ["wp","components"] ***!
390
+ \************************************/
391
+ /*! no static exports found */
392
+ /***/ (function(module, exports) {
393
+
394
+ (function() { module.exports = window["wp"]["components"]; }());
395
+
396
+ /***/ }),
397
+
398
+ /***/ "@wordpress/element":
399
+ /*!*********************************!*\
400
+ !*** external ["wp","element"] ***!
401
+ \*********************************/
402
+ /*! no static exports found */
403
+ /***/ (function(module, exports) {
404
+
405
+ (function() { module.exports = window["wp"]["element"]; }());
406
+
407
+ /***/ }),
408
+
409
+ /***/ "@wordpress/i18n":
410
+ /*!******************************!*\
411
+ !*** external ["wp","i18n"] ***!
412
+ \******************************/
413
+ /*! no static exports found */
414
+ /***/ (function(module, exports) {
415
+
416
+ (function() { module.exports = window["wp"]["i18n"]; }());
417
+
418
+ /***/ })
419
+
420
+ /******/ });
421
+ //# sourceMappingURL=dashboard-modals.js.map
inc/assets/jsx/build/admin/dashboard-modals.js.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./build/core/assets/jsx/src/admin/dashboard-modals.js","webpack:///./build/inc/assets/jsx/src/admin/dashboard-modals.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///external [\"wp\",\"components\"]","webpack:///external [\"wp\",\"element\"]","webpack:///external [\"wp\",\"i18n\"]"],"names":["$","settings","render","wp","element","DeactivateModal","props","option","setOption","useState","onChange","e","target","value","onSubmit","post","ajaxurl","action","deactivateModalAction","_wpnonce","deactivateModalNonce","keep_data","window","location","href","redirectURL","onRequestClose","__","ModalProvider","modal","DashboardModals","constructor","area","document","getElementById","openDeactivateModal","closeModal","bind","openModal","actionModalDismiss","id","OnboardingModal","imageURL","pluginURL","email","setEmail","poweredBy","setPoweredBy","onEmailChange","onboardingModalAction","onboardingModalNonce","powered_by","image","content","UpgradeModal","DashboardModalsBaseClass","DashboardModalsClass","openOnboardingModal","trackingStatus","openUpgradeModal","happyForms","modals","jQuery","_happyFormsDashboardModalsSettings"],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;;;;;;;;;;;;AClFA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AACe,yEAAUA,CAAV,EAAaC,QAAb,EAAwB;AAEtC,QAAM;AAAEC;AAAF,MAAaC,EAAE,CAACC,OAAtB;AAEA;AACD;AACA;AACA;AACA;;AACC,QAAMC,eAAe,GAAKC,KAAF,IAAa;AACpC,UAAM,CAAEC,MAAF,EAAUC,SAAV,IAAwBC,mEAAQ,CAAE,KAAF,CAAtC;;AAEA,UAAMC,QAAQ,GAAKC,CAAF,IAAS;AACzBH,eAAS,CAAEG,CAAC,CAACC,MAAF,CAASC,KAAX,CAAT;AACA,KAFD;;AAIA,UAAMC,QAAQ,GAAG,MAAM;AACtBd,OAAC,CAACe,IAAF,CAAQC,OAAR,EAAiB;AAChBC,cAAM,EAAEhB,QAAQ,CAACiB,qBADD;AAEhBC,gBAAQ,EAAElB,QAAQ,CAACmB,oBAFH;AAGhBC,iBAAS,EAAEd;AAHK,OAAjB,EAIG,YAAW;AACbe,cAAM,CAACC,QAAP,CAAgBC,IAAhB,GAAuBlB,KAAK,CAACmB,WAA7B;AACA,OAND;AAQA,aAAOnB,KAAK,CAACoB,cAAN,EAAP;AACA,KAVD;;AAYA,WACC,yEAAC,2DAAD;AAAO,eAAS,EAAC,+CAAjB;AAAiE,WAAK,EAAC,uBAAvE;AAA+F,oBAAc,EAAGpB,KAAK,CAACoB;AAAtH,OACC;AAAK,eAAS,EAAC,wBAAf;AAAwC,cAAQ,EAAGhB;AAAnD,OACC;AAAO,aAAO,EAAC;AAAf,OACC;AACC,UAAI,EAAC,OADN;AAEC,QAAE,EAAC,0BAFJ;AAGC,UAAI,EAAC,sBAHN;AAIC,WAAK,EAAC,KAJP;AAKC,oBAAc;AALf,MADD,EAQC,uFAAQiB,0DAAE,CAAE,gCAAF,EAAoC,YAApC,CAAV,CARD,CADD,EAWC;AAAO,aAAO,EAAC;AAAf,OACC;AACC,UAAI,EAAC,OADN;AAEC,QAAE,EAAC,yBAFJ;AAGC,UAAI,EAAC,sBAHN;AAIC,WAAK,EAAC;AAJP,MADD,EAOC,uFAAQA,0DAAE,CAAE,gCAAF,EAAoC,YAApC,CAAV,CAPD,CAXD,CADD,EAsBC;AAAK,eAAS,EAAC;AAAf,OACC;AAAK,eAAS,EAAC;AAAf,OACC,yEAAC,4DAAD;AACC,eAAS,EAAE,IADZ;AAEC,aAAO,EAAGb,QAFX;AAGC,UAAI,EAAGP,MAAM,IAAI,KAAV,GACNoB,0DAAE,CAAE,mBAAF,EAAuB,YAAvB,CADI,GAENA,0DAAE,CAAE,mCAAF,EAAuC,YAAvC;AALJ,MADD,CADD,CAtBD,CADD;AAoCA,GAvDD;AAyDA;AACD;AACA;AACA;AACA;;;AACC,QAAMC,aAAa,GAAKtB,KAAF,IAAa;AAClC,WACC,yEAAC,sEAAD,QACGA,KAAK,CAACuB,KADT,EAEC,yEAAC,6DAAD,CAAS,IAAT,OAFD,CADD;AAMA,GAPD;;AASA,SAAO,MAAMC,eAAN,CAAsB;AAI5BC,eAAW,GAAG;AAAA,iGAFP,IAEO;;AACb,WAAKC,IAAL,GAAYC,QAAQ,CAACC,cAAT,CAAyB,wBAAzB,CAAZ;AACA;;AAEDC,uBAAmB,CAAEV,WAAF,EAAgB;AAClC,UAAII,KAAK,GAAG,yEAAC,eAAD;AAAiB,sBAAc,EAAG,KAAKO,UAAL,CAAgBC,IAAhB,CAAsB,IAAtB,EAA4B,YAA5B,CAAlC;AAA+E,mBAAW,EAAGZ;AAA7F,QAAZ;AAEA,WAAKa,SAAL,CAAgBT,KAAhB;AACA;;AAEDS,aAAS,CAAET,KAAF,EAAU;AAClB3B,YAAM,CAAE,yEAAC,aAAD;AAAe,aAAK,EAAE2B;AAAtB,QAAF,EAAiD,KAAKG,IAAtD,CAAN;AACA;;AAEDI,cAAU,CAAEP,KAAF,EAAU;AACnB3B,YAAM,CAAE,2IAAF,EAAS,KAAK8B,IAAd,CAAN;AAEAhC,OAAC,CAACe,IAAF,CAAQC,OAAR,EAAiB;AAChBC,cAAM,EAAEhB,QAAQ,CAACsC,kBADD;AAEhBC,UAAE,EAAEX;AAFY,OAAjB;AAIA;;AAzB2B,GAA7B;AA6BA,C;;;;;;;;;;;;;;;;;;;;;ACtHD;AACA;AACA;AACA;;AAEA,CAAE,UAAU7B,CAAV,EAAaC,QAAb,EAAwB;AAEzB;AACD;AACA;AACA;AACA;AACC,QAAMwC,eAAe,GAAKnC,KAAF,IAAa;AACpC,UAAMoC,QAAQ,GAAI,GAAEzC,QAAQ,CAAC0C,SAAU,6BAAvC;AACA,UAAM,CAAEC,KAAF,EAASC,QAAT,IAAsBpC,mEAAQ,CAAE,EAAF,CAApC;AACA,UAAM,CAAEqC,SAAF,EAAaC,YAAb,IAA8BtC,mEAAQ,CAAE,KAAF,CAA5C;;AAEA,UAAMuC,aAAa,GAAKrC,CAAF,IAAS;AAC9BkC,cAAQ,CAAElC,CAAC,CAACC,MAAF,CAASC,KAAX,CAAR;AACA,KAFD;;AAIA,UAAMa,cAAc,GAAG,MAAM;AAC5B1B,OAAC,CAACe,IAAF,CAAQC,OAAR,EAAiB;AAChBC,cAAM,EAAEhB,QAAQ,CAACgD,qBADD;AAEhB9B,gBAAQ,EAAElB,QAAQ,CAACiD,oBAFH;AAGhBN,aAAK,EAAEA,KAHS;AAIhBO,kBAAU,EAAEL,SAAS,GAAG,CAAH,GAAO;AAJZ,OAAjB;AAOA,aAAOxC,KAAK,CAACoB,cAAN,EAAP;AACA,KATD;;AAWA,WACC,yEAAC,2DAAD;AACC,cAAQ,EAAGA,cADZ;AAEC,eAAS,EAAC,+CAFX;AAGC,WAAK,EAAG,CACP;AACC0B,aAAK,EACJ,0FACC;AAAK,aAAG,EAAEV,QAAV;AAAoB,eAAK,EAAC,KAA1B;AAAgC,gBAAM,EAAC;AAAvC,UADD,CAFF;AAMCW,eAAO,EACN,4IACA;AAAK,mBAAS,EAAC;AAAf,WACC,qFAAM1B,0DAAE,CAAE,uBAAF,EAA2B,YAA3B,CAAR,CADD,EAEC,oFAAKA,0DAAE,CAAE,iHAAF,EAAqH,YAArH,CAAP,CAFD,CADA,EAKA;AAAK,mBAAS,EAAC;AAAf,WACC,wFAASA,0DAAE,CAAE,eAAF,EAAmB,YAAnB,CAAX,CADD,EAEC;AAAO,cAAI,EAAC,OAAZ;AAAoB,eAAK,EAAGiB,KAA5B;AAAoC,kBAAQ,EAAGI,aAA/C;AAA+D,mBAAS;AAAxE,UAFD,EAGC;AAAO,mBAAS,EAAC;AAAjB,WACC,yEAAC,qEAAD;AAAiB,iBAAO,EAAGF,SAA3B;AAAuC,kBAAQ,EAAGC;AAAlD,UADD,EAEC,uFAAQpB,0DAAE,CAAE,+GAAF,EAAmH,YAAnH,CAAV,CAFD,CAHD,CALA,EAaA;AAAK,mBAAS,EAAC;AAAf,WACC,yEAAC,iEAAD,QACC,yEAAC,4DAAD;AAAQ,mBAAS,EAAE,IAAnB;AAAyB,iBAAO,EAAGD,cAAnC;AAAoD,cAAI,EAAGC,0DAAE,CAAE,UAAF,EAAc,YAAd;AAA7D,UADD,CADD,CAbA;AAPF,OADO;AAHT,MADD;AAoCA,GAxDD;AA0DA;AACD;AACA;AACA;AACA;;;AACC,QAAM2B,YAAY,GAAKhD,KAAF,IAAa;AACjC,WACC,yEAAC,2DAAD;AACC,eAAS,EAAC,4CADX;AAEC,WAAK,EAAIqB,0DAAE,CAAE,wCAAF,EAA4C,YAA5C,CAFZ;AAGC,oBAAc,EAAGrB,KAAK,CAACoB;AAHxB,OAIC;AAAK,eAAS,EAAC;AAAf,OACC,oFAAKC,0DAAE,CAAE,gIAAF,EAAoI,YAApI,CAAP,CADD,CAJD,EAOC;AAAK,eAAS,EAAC;AAAf,OACC;AAAK,eAAS,EAAC;AAAf,OACC,yEAAC,4DAAD;AACC,eAAS,EAAG,IADb;AAEC,UAAI,EAAC,+BAFN;AAGC,YAAM,EAAC,QAHR;AAIC,UAAI,EAAGA,0DAAE,CAAE,mCAAF,EAAuC,YAAvC;AAJV,MADD,CADD,EASC,oFAAKA,0DAAE,CAAE,IAAF,EAAQ,YAAR,CAAP,OAAgC,yEAAC,4DAAD;AAAQ,YAAM,EAAG,IAAjB;AAAwB,aAAO,EAAGrB,KAAK,CAACoB,cAAxC;AAAyD,UAAI,EAAGC,0DAAE,CAAE,4BAAF,EAAgC,YAAhC;AAAlE,MAAhC,MATD,CAPD,CADD;AAqBA,GAtBD;;AAwBA,QAAM4B,wBAAwB,GAAGzB,+FAAe,CAAE9B,CAAF,EAAKC,QAAL,CAAhD;;AAEA,QAAMuD,oBAAN,SAAmCD,wBAAnC,CAA4D;AAE3DE,uBAAmB,GAAG;AACrB,UAAI5B,KAAK,GACR,yEAAC,eAAD;AACC,sBAAc,EAAG,KAAKO,UAAL,CAAgBC,IAAhB,CAAsB,IAAtB,EAA4B,YAA5B,CADlB;AAEC,cAAM,EAAGpC,QAAQ,CAACyD;AAFnB,QADD;AAMA,WAAKpB,SAAL,CAAgBT,KAAhB;AACA;;AAED8B,oBAAgB,GAAG;AAClB,UAAI9B,KAAK,GAAG,yEAAC,YAAD;AAAc,sBAAc,EAAG,KAAKO,UAAL,CAAgBC,IAAhB,CAAsB,IAAtB,EAA4B,SAA5B;AAA/B,QAAZ;AAEA,WAAKC,SAAL,CAAgBT,KAAhB;AACA;;AAhB0D;;AAkB3D;AAED,MAAI+B,UAAU,GAAGtC,MAAM,CAACsC,UAAP,IAAqB,EAAtC;AACAtC,QAAM,CAACsC,UAAP,GAAoBA,UAApB;AAEAA,YAAU,CAACC,MAAX,GAAoB,IAAIL,oBAAJ,EAApB;AAEA,CAzHD,EAyHKM,MAzHL,EAyHaC,kCAzHb,E;;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA,6E;;;;;;;;;;;AChBA,aAAa,6CAA6C,EAAE,I;;;;;;;;;;;ACA5D,aAAa,0CAA0C,EAAE,I;;;;;;;;;;;ACAzD,aAAa,uCAAuC,EAAE,I","file":"dashboard-modals.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./build/inc/assets/jsx/src/admin/dashboard-modals.js\");\n","import { SlotFillProvider, Button, Modal, Guide, Popover, Notice, ExternalLink, TextControl, CheckboxControl, BaseControl } from '@wordpress/components';\nimport { useState, useReducer, useRef } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n *\n * Modal handler class\n *\n */\nexport default function( $, settings ) {\n\n\tconst { render } = wp.element;\n\n\t/**\n\t *\n\t * Deactivation modal\n\t *\n\t */\n\tconst DeactivateModal = ( props ) => {\n\t\tconst [ option, setOption ] = useState( 'yes' );\n\n\t\tconst onChange = ( e ) => {\n\t\t\tsetOption( e.target.value );\n\t\t};\n\n\t\tconst onSubmit = () => {\n\t\t\t$.post( ajaxurl, {\n\t\t\t\taction: settings.deactivateModalAction,\n\t\t\t\t_wpnonce: settings.deactivateModalNonce,\n\t\t\t\tkeep_data: option, \n\t\t\t}, function() {\n\t\t\t\twindow.location.href = props.redirectURL;\n\t\t\t} );\n\t\t\t\n\t\t\treturn props.onRequestClose();\n\t\t}\n\n\t\treturn (\n\t\t\t<Modal className=\"happyforms-modal happyforms-modal--deactivate\" title=\"What about your data?\" onRequestClose={ props.onRequestClose }>\n\t\t\t\t<div className=\"happyforms-modal__body\" onChange={ onChange }>\n\t\t\t\t\t<label htmlFor=\"happyforms-keep-data-yes\">\n\t\t\t\t\t\t<input \n\t\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\t\tid=\"happyforms-keep-data-yes\"\n\t\t\t\t\t\t\tname=\"happyforms-keep-data\" \n\t\t\t\t\t\t\tvalue=\"yes\"\n\t\t\t\t\t\t\tdefaultChecked\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<span>{ __( 'Keep plugin data (recommended)', 'happyforms' ) }</span>\n\t\t\t\t\t</label>\n\t\t\t\t\t<label htmlFor=\"happyforms-keep-data-no\">\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\t\tid=\"happyforms-keep-data-no\"\n\t\t\t\t\t\t\tname=\"happyforms-keep-data\"\n\t\t\t\t\t\t\tvalue=\"no\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<span>{ __( 'Permanently delete plugin data', 'happyforms' ) }</span>\n\t\t\t\t\t</label>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"happyforms-modal__footer\">\n\t\t\t\t\t<div className=\"happyforms-modal__footer-button-group\">\n\t\t\t\t\t\t<Button \n\t\t\t\t\t\t\tisPrimary={true} \n\t\t\t\t\t\t\tonClick={ onSubmit } \n\t\t\t\t\t\t\ttext={ option == 'yes' ? \n\t\t\t\t\t\t\t\t__( 'Deactivate Plugin', 'happyforms' ) : \n\t\t\t\t\t\t\t\t__( 'Delete Data and Deactivate Plugin', 'happyforms' ) }>\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</Modal>\n\t\t);\n\t};\n\n\t/**\n\t *\n\t * Modal wrapper\n\t *\n\t */\n\tconst ModalProvider = ( props ) => {\n\t\treturn (\n\t\t\t<SlotFillProvider>\n\t\t\t\t{ props.modal }\n\t\t\t\t<Popover.Slot />\n\t\t\t</SlotFillProvider>\n\t\t);\n\t};\n\t\n\treturn class DashboardModals {\n\n\t\tarea = null;\n\t\t\n\t\tconstructor() {\n\t\t\tthis.area = document.getElementById( 'happyforms-modals-area' );\n\t\t}\n\n\t\topenDeactivateModal( redirectURL ) {\n\t\t\tvar modal = <DeactivateModal onRequestClose={ this.closeModal.bind( this, 'deactivate' ) } redirectURL={ redirectURL } />\n\n\t\t\tthis.openModal( modal );\n\t\t}\n\n\t\topenModal( modal ) {\n\t\t\trender( <ModalProvider modal={modal}></ModalProvider>, this.area );\n\t\t}\n\n\t\tcloseModal( modal ) {\n\t\t\trender( <></>, this.area );\n\n\t\t\t$.post( ajaxurl, {\n\t\t\t\taction: settings.actionModalDismiss,\n\t\t\t\tid: modal, \n\t\t\t} );\n\t\t}\n\n\t};\n\n}","import DashboardModals from '@happyforms/core/jsx/src/admin/dashboard-modals';\nimport { SlotFillProvider, Button, Modal, Guide, Popover, Notice, ExternalLink, TextControl, CheckboxControl, BaseControl } from '@wordpress/components';\nimport { useState, useReducer, useRef } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\n\n( function( $, settings ) {\n\n\t/**\n\t *\n\t * Onboarding modal\n\t *\n\t */\n\tconst OnboardingModal = ( props ) => {\n\t\tconst imageURL = `${settings.pluginURL}/inc/assets/img/welcome.gif`;\n\t\tconst [ email, setEmail ] = useState( '' );\n\t\tconst [ poweredBy, setPoweredBy ] = useState( false );\n\n\t\tconst onEmailChange = ( e ) => {\n\t\t\tsetEmail( e.target.value );\n\t\t};\n\n\t\tconst onRequestClose = () => {\n\t\t\t$.post( ajaxurl, {\n\t\t\t\taction: settings.onboardingModalAction,\n\t\t\t\t_wpnonce: settings.onboardingModalNonce,\n\t\t\t\temail: email,\n\t\t\t\tpowered_by: poweredBy ? 1 : 0,\n\t\t\t} );\n\n\t\t\treturn props.onRequestClose();\n\t\t}\n\n\t\treturn(\n\t\t\t<Guide\n\t\t\t\tonFinish={ onRequestClose }\n\t\t\t\tclassName=\"happyforms-modal happyforms-modal--onboarding\"\n\t\t\t\tpages={ [\n\t\t\t\t\t{\n\t\t\t\t\t\timage: (\n\t\t\t\t\t\t\t<picture>\n\t\t\t\t\t\t\t\t<img src={imageURL} width=\"450\" height=\"276\" />\n\t\t\t\t\t\t\t</picture>\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcontent: (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<div className=\"happyforms-modal__header\">\n\t\t\t\t\t\t\t\t<h1>{ __( 'Welcome to Happyforms', 'happyforms' ) }</h1>\n\t\t\t\t\t\t\t\t<p>{ __( 'We\\'ll send you a few emails each month about plugin updates. And don\\'t sweat it, you can unsubscribe anytime.', 'happyforms' ) }</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"happyforms-modal__body\">\n\t\t\t\t\t\t\t\t<label>{ __( 'Email address', 'happyforms' ) }</label>\n\t\t\t\t\t\t\t\t<input type=\"email\" value={ email } onChange={ onEmailChange } autoFocus />\n\t\t\t\t\t\t\t\t<label className=\"happyforms-radio-label\">\n\t\t\t\t\t\t\t\t\t<CheckboxControl checked={ poweredBy } onChange={ setPoweredBy } />\n\t\t\t\t\t\t\t\t\t<span>{ __( 'Yes, I want to help support the free plugin by adding a powered by link in the footer of my forms and emails.', 'happyforms' ) }</span>\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"happyforms-modal__footer\">\n\t\t\t\t\t\t\t\t<BaseControl>\n\t\t\t\t\t\t\t\t\t<Button isPrimary={true} onClick={ onRequestClose } text={ __( 'Continue', 'happyforms' ) }></Button>\n\t\t\t\t\t\t\t\t</BaseControl>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t] }\n\t\t\t/>\n\t\t);\n\t}\n\n\t/**\n\t *\n\t * Upgrade modal\n\t *\n\t */\n\tconst UpgradeModal = ( props ) => {\n\t\treturn (\n\t\t\t<Modal \n\t\t\t\tclassName=\"happyforms-modal happyforms-modal--upgrade\" \n\t\t\t\ttitle={ __( 'You\\’ll need to upgrade to access this', 'happyforms' ) } \n\t\t\t\tonRequestClose={ props.onRequestClose }>\n\t\t\t\t<div className=\"happyforms-modal__body\">\n\t\t\t\t\t<p>{ __( 'We offer several, affordable paid plans that include our best features. Upgrade today and increase your customer interactions.', 'happyforms' ) }</p>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"happyforms-modal__footer\">\n\t\t\t\t\t<div className=\"happyforms-modal__footer-button-group\">\n\t\t\t\t\t\t<Button \n\t\t\t\t\t\t\tisPrimary={ true } \n\t\t\t\t\t\t\thref=\"https://happyforms.io/upgrade\" \n\t\t\t\t\t\t\ttarget=\"_blank\" \n\t\t\t\t\t\t\ttext={ __( 'Start Your Risk-Free 14-Day Trial', 'happyforms' ) }>\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<p>{ __( 'Or', 'happyforms' ) } <Button isLink={ true } onClick={ props.onRequestClose } text={ __( 'continue with free version', 'happyforms' ) }></Button>.</p>\n\t\t\t\t</div>\n\t\t\t</Modal>\n\t\t);\n\t}\n\n\tconst DashboardModalsBaseClass = DashboardModals( $, settings );\n\t\n\tclass DashboardModalsClass extends DashboardModalsBaseClass {\n\n\t\topenOnboardingModal() {\n\t\t\tvar modal = (\n\t\t\t\t<OnboardingModal \n\t\t\t\t\tonRequestClose={ this.closeModal.bind( this, 'onboarding' ) } \n\t\t\t\t\tstatus={ settings.trackingStatus } />\n\t\t\t);\n\n\t\t\tthis.openModal( modal );\n\t\t}\n\n\t\topenUpgradeModal() {\n\t\t\tvar modal = <UpgradeModal onRequestClose={ this.closeModal.bind( this, 'upgrade' ) } />\n\n\t\t\tthis.openModal( modal );\n\t\t}\n\n\t};\n\n\tvar happyForms = window.happyForms || {};\n\twindow.happyForms = happyForms;\n\t\n\thappyForms.modals = new DashboardModalsClass();\n\n} )( jQuery, _happyFormsDashboardModalsSettings );","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","(function() { module.exports = window[\"wp\"][\"components\"]; }());","(function() { module.exports = window[\"wp\"][\"element\"]; }());","(function() { module.exports = window[\"wp\"][\"i18n\"]; }());"],"sourceRoot":""}
inc/assets/jsx/src/admin/dashboard-modals.js ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import DashboardModals from '@happyforms/core/jsx/src/admin/dashboard-modals';
2
+ import { SlotFillProvider, Button, Modal, Guide, Popover, Notice, ExternalLink, TextControl, CheckboxControl, BaseControl } from '@wordpress/components';
3
+ import { useState, useReducer, useRef } from '@wordpress/element';
4
+ import { __, sprintf } from '@wordpress/i18n';
5
+
6
+ ( function( $, settings ) {
7
+
8
+ /**
9
+ *
10
+ * Onboarding modal
11
+ *
12
+ */
13
+ const OnboardingModal = ( props ) => {
14
+ const imageURL = `${settings.pluginURL}/inc/assets/img/welcome.gif`;
15
+ const [ email, setEmail ] = useState( '' );
16
+ const [ poweredBy, setPoweredBy ] = useState( false );
17
+
18
+ const onEmailChange = ( e ) => {
19
+ setEmail( e.target.value );
20
+ };
21
+
22
+ const onRequestClose = () => {
23
+ $.post( ajaxurl, {
24
+ action: settings.onboardingModalAction,
25
+ _wpnonce: settings.onboardingModalNonce,
26
+ email: email,
27
+ powered_by: poweredBy ? 1 : 0,
28
+ } );
29
+
30
+ return props.onRequestClose();
31
+ }
32
+
33
+ return(
34
+ <Guide
35
+ onFinish={ onRequestClose }
36
+ className="happyforms-modal happyforms-modal--onboarding"
37
+ pages={ [
38
+ {
39
+ image: (
40
+ <picture>
41
+ <img src={imageURL} width="450" height="276" />
42
+ </picture>
43
+ ),
44
+ content: (
45
+ <>
46
+ <div className="happyforms-modal__header">
47
+ <h1>{ __( 'Welcome to Happyforms', 'happyforms' ) }</h1>
48
+ <p>{ __( 'We\'ll send you a few emails each month about plugin updates. And don\'t sweat it, you can unsubscribe anytime.', 'happyforms' ) }</p>
49
+ </div>
50
+ <div className="happyforms-modal__body">
51
+ <label>{ __( 'Email address', 'happyforms' ) }</label>
52
+ <input type="email" value={ email } onChange={ onEmailChange } autoFocus />
53
+ <label className="happyforms-radio-label">
54
+ <CheckboxControl checked={ poweredBy } onChange={ setPoweredBy } />
55
+ <span>{ __( 'Yes, I want to help support the free plugin by adding a powered by link in the footer of my forms and emails.', 'happyforms' ) }</span>
56
+ </label>
57
+ </div>
58
+ <div className="happyforms-modal__footer">
59
+ <BaseControl>
60
+ <Button isPrimary={true} onClick={ onRequestClose } text={ __( 'Continue', 'happyforms' ) }></Button>
61
+ </BaseControl>
62
+ </div>
63
+ </>
64
+ ),
65
+ },
66
+ ] }
67
+ />
68
+ );
69
+ }
70
+
71
+ /**
72
+ *
73
+ * Upgrade modal
74
+ *
75
+ */
76
+ const UpgradeModal = ( props ) => {
77
+ return (
78
+ <Modal
79
+ className="happyforms-modal happyforms-modal--upgrade"
80
+ title={ __( 'You\’ll need to upgrade to access this', 'happyforms' ) }
81
+ onRequestClose={ props.onRequestClose }>
82
+ <div className="happyforms-modal__body">
83
+ <p>{ __( 'We offer several, affordable paid plans that include our best features. Upgrade today and increase your customer interactions.', 'happyforms' ) }</p>
84
+ </div>
85
+ <div className="happyforms-modal__footer">
86
+ <div className="happyforms-modal__footer-button-group">
87
+ <Button
88
+ isPrimary={ true }
89
+ href="https://happyforms.io/upgrade"
90
+ target="_blank"
91
+ text={ __( 'Start Your Risk-Free 14-Day Trial', 'happyforms' ) }>
92
+ </Button>
93
+ </div>
94
+ <p>{ __( 'Or', 'happyforms' ) } <Button isLink={ true } onClick={ props.onRequestClose } text={ __( 'continue with free version', 'happyforms' ) }></Button>.</p>
95
+ </div>
96
+ </Modal>
97
+ );
98
+ }
99
+
100
+ const DashboardModalsBaseClass = DashboardModals( $, settings );
101
+
102
+ class DashboardModalsClass extends DashboardModalsBaseClass {
103
+
104
+ openOnboardingModal() {
105
+ var modal = (
106
+ <OnboardingModal
107
+ onRequestClose={ this.closeModal.bind( this, 'onboarding' ) }
108
+ status={ settings.trackingStatus } />
109
+ );
110
+
111
+ this.openModal( modal );
112
+ }
113
+
114
+ openUpgradeModal() {
115
+ var modal = <UpgradeModal onRequestClose={ this.closeModal.bind( this, 'upgrade' ) } />
116
+
117
+ this.openModal( modal );
118
+ }
119
+
120
+ };
121
+
122
+ var happyForms = window.happyForms || {};
123
+ window.happyForms = happyForms;
124
+
125
+ happyForms.modals = new DashboardModalsClass();
126
+
127
+ } )( jQuery, _happyFormsDashboardModalsSettings );
inc/classes/class-happyforms.php CHANGED
@@ -2,7 +2,7 @@
2
  class HappyForms extends HappyForms_Core {
3
 
4
  public $default_notice;
5
-
6
  public $action_archive = 'archive';
7
 
8
  public $onboarding_list_url = 'https://emailoctopus.com/lists/a58bf658-425e-11ea-be00-06b4694bee2a/members/embedded/1.3/add';
@@ -21,9 +21,10 @@ class HappyForms extends HappyForms_Core {
21
  add_filter( 'happyforms_email_controls', array( $this, 'add_dummy_email_controls' ) );
22
  add_action( 'parse_request', array( $this, 'parse_archive_request' ) );
23
  add_action( 'admin_init', [ $this, 'register_modals' ] );
24
- add_action( 'admin_init', array( $this, 'redirect_to_forms_page' ) );
25
  add_action( 'happyforms_modal_dismissed', [ $this, 'modal_dismissed' ] );
26
  add_action( "wp_ajax_{$this->action_onboarding}", [ $this, 'ajax_action_onboarding' ] );
 
27
  add_action( 'happyforms_form_after', [ $this, 'output_powered_by_form' ] );
28
  add_action( 'happyforms_email_owner_after', [ $this, 'output_powered_by_email' ] );
29
  add_action( 'happyforms_email_user_after', [ $this, 'output_powered_by_email' ] );
@@ -148,12 +149,6 @@ class HappyForms extends HappyForms_Core {
148
  'label' => __( 'Require respondents to review a submission before submitting', 'happyforms' ),
149
  );
150
 
151
- $controls[1900] = array(
152
- 'type' => 'checkbox_dummy',
153
- 'dummy_id' => 'disable_submit_until_valid',
154
- 'label' => __( 'Disable buttons until required fields are answered', 'happyforms' ),
155
- );
156
-
157
  $controls[2300] = array(
158
  'type' => 'checkbox_dummy',
159
  'dummy_id' => 'restrict_entries',
@@ -260,6 +255,12 @@ class HappyForms extends HappyForms_Core {
260
  array( 'happyforms-admin' ), HAPPYFORMS_VERSION, true
261
  );
262
 
 
 
 
 
 
 
263
  $this->enqueue_onboarding_modal();
264
  }
265
 
@@ -332,78 +333,59 @@ class HappyForms extends HappyForms_Core {
332
  public function register_modals() {
333
  $modals = happyforms_get_dashboard_modals();
334
 
335
- $modals->register_modal( 'upgrade', [ $this, 'modal_upgrade_callback' ], [
336
- 'classes' => 'happyforms-modal__frame--upgrade'
337
- ] );
338
-
339
- $modals->register_modal( 'onboarding', [ $this, 'modal_onboarding_callback' ], [
340
- 'classes' => 'happyforms-modal__frame--onboarding',
341
- 'dismissible' => true,
342
- ] );
343
  }
344
 
345
- public function enqueue_onboarding_modal() {
346
  $screen = get_current_screen();
347
 
348
  if ( ! $screen ) {
349
  return;
350
  }
351
 
352
- if ( 'edit-happyform' !== $screen->id ) {
353
  return;
354
  }
355
 
356
- $modals = happyforms_get_dashboard_modals();
357
-
358
- if ( $modals->is_dismissed( 'onboarding' ) ) {
359
  return;
360
  }
361
 
362
- wp_enqueue_script(
363
- 'happyforms-onboarding',
364
- happyforms_get_plugin_url() . 'inc/assets/js/admin/onboarding.js',
365
- array( 'happyforms-free-admin' ), HAPPYFORMS_VERSION, true
366
- );
367
 
368
- wp_localize_script( 'happyforms-onboarding', '_happyFormsOnboardingSettings', array(
369
- 'action' => $this->action_onboarding,
370
- ) );
371
- }
372
 
373
- public function modal_upgrade_callback() {
374
- require( happyforms_get_include_folder() . '/templates/admin/modal-upgrade.php' );
375
- }
376
 
377
- public function modal_onboarding_callback() {
378
- require( happyforms_get_include_folder() . '/templates/admin/modal-onboarding.php' );
379
  }
380
 
381
- public function redirect_to_forms_page() {
382
  $screen = get_current_screen();
383
 
384
  if ( ! $screen ) {
385
  return;
386
  }
387
 
388
- if ( 'edit-happyform' === $screen->id ) {
389
- return;
390
- }
391
-
392
- if ( happyforms_get_dashboard_modals()->is_dismissed( 'onboarding' ) ) {
393
  return;
394
  }
395
 
396
- $tracking = happyforms_get_tracking();
397
- $status = $tracking->get_status();
398
 
399
- if ( 1 < intval( $status['status'] ) ) {
400
  return;
401
  }
402
 
403
- $url = admin_url( 'edit.php?post_type=happyform' );
404
- wp_safe_redirect( $url );
405
-
406
- exit;
407
  }
408
 
409
  public function modal_dismissed( $id ) {
@@ -426,11 +408,18 @@ class HappyForms extends HappyForms_Core {
426
  wp_remote_post( $this->onboarding_list_url, array(
427
  'body' => array(
428
  'field_0' => $email,
429
- ),
430
  ) );
431
  }
432
  }
433
 
 
 
 
 
 
 
 
434
  public function output_powered_by_form() {
435
  if ( apply_filters( 'happyforms_force_hide_powered_by', false ) === true ) {
436
  return;
@@ -441,8 +430,8 @@ class HappyForms extends HappyForms_Core {
441
  }
442
 
443
  ?>
444
- <p class="happyforms-powered-by"><?php printf(
445
- '<a href="%1$s" style="font-size: 12px; color: black; text-decoration: underline;">%2$s</a>',
446
  'https://happyforms.io/?utm_source=footer&utm_medium=form&utm_campaign=public_form_footer',
447
  __( 'Build your own WordPress form with Happyforms', 'happyforms' )
448
  ); ?></p>
@@ -459,8 +448,8 @@ class HappyForms extends HappyForms_Core {
459
  }
460
 
461
  ?>
462
- <p><?php printf(
463
- '<a href="%1$s">%2$s</a>',
464
  'https://happyforms.io/?utm_source=footer&utm_medium=email&utm_campaign=public_email_footer',
465
  __( 'Build your own WordPress form with Happyforms', 'happyforms' )
466
  ); ?></p>
@@ -488,14 +477,14 @@ class HappyForms extends HappyForms_Core {
488
  $message_post_type = happyforms_get_message_controller()->dummy_type;
489
  $current_post_type = get_current_screen()->post_type;
490
 
491
- $is_activity_screen = (
492
  in_array( $pagenow, array( 'edit.php', 'post.php' ) )
493
- && ( $current_post_type === $message_post_type )
494
  );
495
 
496
- $is_integrations_screen = (
497
- isset( $_GET['page'] )
498
- && 'happyforms-integrations' === $_GET['page']
499
  );
500
 
501
  if ( ! $is_activity_screen && ! $is_integrations_screen ) {
@@ -503,38 +492,15 @@ class HappyForms extends HappyForms_Core {
503
  }
504
 
505
  ?>
506
- <script type="text/html" id="happyforms-upgrade-modal-template">
507
- <?php
508
- $settings = array(
509
- 'classes' => 'happyforms-modal__frame--upgrade',
510
- 'dismissible' => false
511
- );
512
- require( happyforms_get_core_folder() . '/templates/partials/admin-modal-header.php' );
513
- require( happyforms_get_include_folder() . '/templates/admin/modal-upgrade.php' );
514
- require( happyforms_get_core_folder() . '/templates/partials/admin-modal-footer.php' );
515
- ?>
516
- </script>
517
-
518
  <script type="text/javascript">
519
  ( function( $ ) {
520
 
521
- var openModal = happyForms.dashboard.openModal;
522
- var closeModal = happyForms.dashboard.closeModal;
523
-
524
- happyForms.dashboard.openModal = function() {
525
- $( 'body' ).addClass( 'modal-open' );
526
- $( 'body' ).append( $( '#happyforms-upgrade-modal-template' ).html() );
527
-
528
- $( document ).one( 'click', '.happyforms-modal__overlay', happyForms.dashboard.closeModal );
529
- $( document ).one( 'click', '.happyforms-modal__dismiss', happyForms.dashboard.closeModal );
530
- }
531
-
532
- happyForms.dashboard.closeModal = function() {
533
  window.location.href = '<?php echo get_admin_url() . 'edit.php?post_type=happyform'; ?>';
534
  }
535
 
536
  $( function() {
537
- happyForms.dashboard.openModal( 'upgrade' );
538
  } );
539
 
540
  } )( jQuery );
2
  class HappyForms extends HappyForms_Core {
3
 
4
  public $default_notice;
5
+
6
  public $action_archive = 'archive';
7
 
8
  public $onboarding_list_url = 'https://emailoctopus.com/lists/a58bf658-425e-11ea-be00-06b4694bee2a/members/embedded/1.3/add';
21
  add_filter( 'happyforms_email_controls', array( $this, 'add_dummy_email_controls' ) );
22
  add_action( 'parse_request', array( $this, 'parse_archive_request' ) );
23
  add_action( 'admin_init', [ $this, 'register_modals' ] );
24
+ add_action( 'current_screen', array( $this, 'redirect_to_forms_page' ) );
25
  add_action( 'happyforms_modal_dismissed', [ $this, 'modal_dismissed' ] );
26
  add_action( "wp_ajax_{$this->action_onboarding}", [ $this, 'ajax_action_onboarding' ] );
27
+ add_filter( 'happyforms_dashboard_modal_settings', [ $this, 'get_dashboard_modal_settings' ] );
28
  add_action( 'happyforms_form_after', [ $this, 'output_powered_by_form' ] );
29
  add_action( 'happyforms_email_owner_after', [ $this, 'output_powered_by_email' ] );
30
  add_action( 'happyforms_email_user_after', [ $this, 'output_powered_by_email' ] );
149
  'label' => __( 'Require respondents to review a submission before submitting', 'happyforms' ),
150
  );
151
 
 
 
 
 
 
 
152
  $controls[2300] = array(
153
  'type' => 'checkbox_dummy',
154
  'dummy_id' => 'restrict_entries',
255
  array( 'happyforms-admin' ), HAPPYFORMS_VERSION, true
256
  );
257
 
258
+ wp_enqueue_style(
259
+ 'happyforms-dashboard-modals-upgrade',
260
+ happyforms_get_plugin_url() . 'inc/assets/css/dashboard-modals.css',
261
+ array( 'happyforms-dashboard-modals' ), HAPPYFORMS_VERSION
262
+ );
263
+
264
  $this->enqueue_onboarding_modal();
265
  }
266
 
333
  public function register_modals() {
334
  $modals = happyforms_get_dashboard_modals();
335
 
336
+ $modals->register_modal( 'upgrade' );
337
+ $modals->register_modal( 'onboarding', [ 'dismissible' => true ] );
 
 
 
 
 
 
338
  }
339
 
340
+ public function redirect_to_forms_page() {
341
  $screen = get_current_screen();
342
 
343
  if ( ! $screen ) {
344
  return;
345
  }
346
 
347
+ if ( 'edit-happyform' === $screen->id ) {
348
  return;
349
  }
350
 
351
+ if ( happyforms_get_dashboard_modals()->is_dismissed( 'onboarding' ) ) {
 
 
352
  return;
353
  }
354
 
355
+ $tracking = happyforms_get_tracking();
356
+ $status = $tracking->get_status();
 
 
 
357
 
358
+ if ( 1 < intval( $status['status'] ) ) {
359
+ return;
360
+ }
 
361
 
362
+ $url = admin_url( 'edit.php?post_type=happyform' );
363
+ wp_safe_redirect( $url );
 
364
 
365
+ exit;
 
366
  }
367
 
368
+ public function enqueue_onboarding_modal() {
369
  $screen = get_current_screen();
370
 
371
  if ( ! $screen ) {
372
  return;
373
  }
374
 
375
+ if ( 'edit-happyform' !== $screen->id ) {
 
 
 
 
376
  return;
377
  }
378
 
379
+ $modals = happyforms_get_dashboard_modals();
 
380
 
381
+ if ( $modals->is_dismissed( 'onboarding' ) ) {
382
  return;
383
  }
384
 
385
+ wp_add_inline_script(
386
+ 'happyforms-dashboard-modals',
387
+ "( function( $ ) { $( function() { happyForms.modals.openOnboardingModal(); } ); } )( jQuery );"
388
+ );
389
  }
390
 
391
  public function modal_dismissed( $id ) {
408
  wp_remote_post( $this->onboarding_list_url, array(
409
  'body' => array(
410
  'field_0' => $email,
411
+ ),
412
  ) );
413
  }
414
  }
415
 
416
+ public function get_dashboard_modal_settings( $settings ) {
417
+ $settings['onboardingModalAction'] = $this->action_onboarding;
418
+ $settings['onboardingModalNonce'] = wp_create_nonce( $this->action_onboarding );
419
+
420
+ return $settings;
421
+ }
422
+
423
  public function output_powered_by_form() {
424
  if ( apply_filters( 'happyforms_force_hide_powered_by', false ) === true ) {
425
  return;
430
  }
431
 
432
  ?>
433
+ <p class="happyforms-powered-by"><?php printf(
434
+ '<a href="%1$s" style="font-size: 12px; color: black; text-decoration: underline;">%2$s</a>',
435
  'https://happyforms.io/?utm_source=footer&utm_medium=form&utm_campaign=public_form_footer',
436
  __( 'Build your own WordPress form with Happyforms', 'happyforms' )
437
  ); ?></p>
448
  }
449
 
450
  ?>
451
+ <p><?php printf(
452
+ '<a href="%1$s">%2$s</a>',
453
  'https://happyforms.io/?utm_source=footer&utm_medium=email&utm_campaign=public_email_footer',
454
  __( 'Build your own WordPress form with Happyforms', 'happyforms' )
455
  ); ?></p>
477
  $message_post_type = happyforms_get_message_controller()->dummy_type;
478
  $current_post_type = get_current_screen()->post_type;
479
 
480
+ $is_activity_screen = (
481
  in_array( $pagenow, array( 'edit.php', 'post.php' ) )
482
+ && ( $current_post_type === $message_post_type )
483
  );
484
 
485
+ $is_integrations_screen = (
486
+ isset( $_GET['page'] )
487
+ && 'happyforms-integrations' === $_GET['page']
488
  );
489
 
490
  if ( ! $is_activity_screen && ! $is_integrations_screen ) {
492
  }
493
 
494
  ?>
 
 
 
 
 
 
 
 
 
 
 
 
495
  <script type="text/javascript">
496
  ( function( $ ) {
497
 
498
+ happyForms.modals.closeModal = function() {
 
 
 
 
 
 
 
 
 
 
 
499
  window.location.href = '<?php echo get_admin_url() . 'edit.php?post_type=happyform'; ?>';
500
  }
501
 
502
  $( function() {
503
+ happyForms.modals.openUpgradeModal();
504
  } );
505
 
506
  } )( jQuery );
inc/classes/class-message-controller.php CHANGED
@@ -92,118 +92,6 @@ class HappyForms_Message_Controller {
92
  return self::$instance;
93
  }
94
 
95
- public function get_post_fields() {
96
- $fields = array(
97
- 'post_title' => '',
98
- 'post_type' => $this->post_type,
99
- 'post_status' => 'publish',
100
- );
101
-
102
- return $fields;
103
- }
104
-
105
- /**
106
- * Create a new message post object.
107
- *
108
- * @since 1.0
109
- *
110
- * @param array $form The message form data.
111
- * @param array $submission The message form data.
112
- *
113
- * @return int|boolean
114
- */
115
- public function create( $form, $submission ) {
116
- $post_data = $this->get_insert_post_data( $form, $submission );
117
- $message_id = wp_insert_post( wp_slash( $post_data ), true );
118
-
119
- wp_update_post( array(
120
- 'ID' => $message_id,
121
- 'post_title' => happyforms_get_message_title( $message_id ),
122
- ) );
123
-
124
- do_action( 'happyforms_response_created', $message_id, $form );
125
-
126
- return $message_id;
127
- }
128
-
129
- public function get( $post_ids, $force = false ) {
130
- $args = md5( serialize( func_get_args() ) );
131
- $key = "_happyforms_cache_responses_get_{$args}";
132
- $found = false;
133
- $result = happyforms_cache_get( $key, $found );
134
-
135
- if ( false === $found || $force ) {
136
- $result = $this->do_get( $post_ids );
137
- happyforms_cache_set( $key, $result );
138
- }
139
-
140
- return $result;
141
- }
142
-
143
- public function do_get( $post_ids = '' ) {
144
- $query_params = array(
145
- 'post_type' => $this->post_type,
146
- 'post_status' => array( 'publish', 'draft', 'trash' ),
147
- 'posts_per_page' => -1,
148
- );
149
-
150
- if ( ! empty( $post_ids ) ) {
151
- if ( is_numeric( $post_ids ) ) {
152
- $query_params['p'] = $post_ids;
153
- } else if ( is_array( $post_ids ) ) {
154
- $query_params['post__in'] = $post_ids;
155
- }
156
- }
157
-
158
- $messages = get_posts( $query_params );
159
- $message_entries = array_map( array( $this, 'to_array'), $messages );
160
-
161
- if ( is_numeric( $post_ids ) ) {
162
- if ( count( $message_entries ) > 0 ) {
163
- return $message_entries[0];
164
- } else {
165
- return false;
166
- }
167
- }
168
-
169
- return $message_entries;
170
- }
171
-
172
- public function get_insert_post_data( $form, $submission ) {
173
- $defaults = $this->get_post_fields();
174
- $defaults_meta = $this->get_meta_fields();
175
- $raw_request = $this->get_raw_request( $form, $submission );
176
- $message_meta = wp_parse_args( array(
177
- 'form_id' => $form['ID'],
178
- 'request' => $raw_request,
179
- ), $defaults_meta );
180
- $message_meta = array_merge( $message_meta, $submission );
181
- $message_meta = happyforms_prefix_meta( $message_meta );
182
- $post_data = array_merge( $defaults, array(
183
- 'meta_input' => $message_meta
184
- ) );
185
-
186
- return $post_data;
187
- }
188
-
189
- public function get_raw_request( $form, $submission ) {
190
- $request = array();
191
-
192
- foreach( $form['parts'] as $part_id => $part ) {
193
- $part_name = happyforms_get_part_name( $part, $form );
194
-
195
- if ( ! isset( $_REQUEST[$part_name] ) ) {
196
- continue;
197
- }
198
-
199
- $part_class = happyforms_get_part_library()->get_part( $part['type'] );
200
- $value = $part_class->sanitize_value( $part, $form, $_REQUEST );
201
- $request[$part_name] = $value;
202
- }
203
-
204
- return $request;
205
- }
206
-
207
  /**
208
  * Register hooks.
209
  *
@@ -371,10 +259,6 @@ class HappyForms_Message_Controller {
371
  $this->email_user_confirmation( $form, $submission );
372
  }
373
 
374
- // Create message post
375
- $message_id = $this->create( $form, $submission );
376
- $message = $this->get( $message_id );
377
-
378
  /**
379
  * This action fires once a message is succesfully submitted.
380
  *
@@ -385,7 +269,7 @@ class HappyForms_Message_Controller {
385
  *
386
  * @return void
387
  */
388
- do_action( 'happyforms_submission_success', $submission, $form, $message );
389
 
390
  // Render the form
391
  $response['html'] = $form_controller->render( $form );
@@ -729,6 +613,39 @@ class HappyForms_Message_Controller {
729
  return $url;
730
  }
731
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
732
  }
733
 
734
  if ( ! function_exists( 'happyforms_get_message_controller' ) ):
92
  return self::$instance;
93
  }
94
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  /**
96
  * Register hooks.
97
  *
259
  $this->email_user_confirmation( $form, $submission );
260
  }
261
 
 
 
 
 
262
  /**
263
  * This action fires once a message is succesfully submitted.
264
  *
269
  *
270
  * @return void
271
  */
272
+ do_action( 'happyforms_submission_success', $submission, $form, array() );
273
 
274
  // Render the form
275
  $response['html'] = $form_controller->render( $form );
613
  return $url;
614
  }
615
 
616
+ public function get_by_form( $form_id, $ids_only = false, $count = -1 ) {
617
+ if ( $ids_only ) {
618
+ global $wpdb;
619
+
620
+ $query = $wpdb->prepare( "
621
+ SELECT p.ID FROM $wpdb->posts p
622
+ JOIN $wpdb->postmeta m ON p.ID = m.post_id
623
+ WHERE p.post_type = 'happyforms-message'
624
+ AND m.meta_key = '_happyforms_form_id'
625
+ AND m.meta_value = %d;
626
+ ", $form_id );
627
+
628
+ $results = $wpdb->get_col( $query );
629
+
630
+ return $results;
631
+ }
632
+
633
+ $query_params = array(
634
+ 'post_type' => $this->post_type,
635
+ 'post_status' => 'any',
636
+ 'posts_per_page' => $count,
637
+ 'meta_query' => array( array(
638
+ 'key' => '_happyforms_form_id',
639
+ 'value' => $form_id,
640
+ ) )
641
+ );
642
+
643
+ $messages = get_posts( $query_params );
644
+ $message_entries = array_map( array( $this, 'to_array'), $messages );
645
+
646
+ return $message_entries;
647
+ }
648
+
649
  }
650
 
651
  if ( ! function_exists( 'happyforms_get_message_controller' ) ):
inc/templates/admin/modal-onboarding.php DELETED
@@ -1,36 +0,0 @@
1
- <?php $status = happyforms_get_tracking()->get_status(); ?>
2
- <?php if ( 2 > $status['status'] ) : ?>
3
- <div class="happyforms-modal__heading">
4
- <h1><?php _e( 'Welcome to Happyforms', 'happyforms' ); ?></h1>
5
- <p><?php _e( 'Tell us about yourself and we\'ll get you set up in no time*' ); ?></p>
6
- </div>
7
- <div class="happyforms-modal__content">
8
- <form>
9
- <label for="happyforms-onboarding-email"><?php _e( 'Email address', 'happyforms' ); ?></label>
10
- <input type="email" id="happyforms-onboarding-email" />
11
- <label for="happyforms-onboarding-byline-optin">
12
- <input type="checkbox" id="happyforms-onboarding-byline-optin" />
13
- <span><?php _e( 'Yes, I want to help support the free plugin by adding a powered by link in the footer of my forms and emails.', 'happyforms' ); ?></span>
14
- </label>
15
- <button type="submit" class="button button-primary button-hero"><?php _e( 'Complete Set Up', 'happyforms' ); ?></button>
16
- <p><?php _e( '*By submitting you\'re okay for us to send you occasional marketing emails.', 'happyforms' ); ?></p>
17
- </form>
18
- </div>
19
- <script type="text/javascript">
20
- jQuery( function( $ ) { $( '#happyforms-onboarding-email' ).trigger( 'focus' ); } );
21
- </script>
22
- <?php else : ?>
23
- <div class="happyforms-modal__heading">
24
- <h1><?php _e( 'Powered by Happyforms', 'happyforms' ); ?></h1>
25
- <p><?php _e( 'All it takes is one little "yes" from you to help us out.', 'happyforms' ); ?></p>
26
- </div>
27
- <div class="happyforms-modal__content">
28
- <form>
29
- <label for="happyforms-onboarding-byline-optin">
30
- <input type="checkbox" id="happyforms-onboarding-byline-optin" />
31
- <span><?php _e( 'Yes, I want to help support the free plugin by adding a powered by link in the footer of my forms and emails.', 'happyforms' ); ?></span>
32
- </label>
33
- <button type="submit" class="button button-primary button-hero"><?php _e( 'Complete', 'happyforms' ); ?></button>
34
- </form>
35
- </div>
36
- <?php endif; ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/templates/admin/modal-upgrade.php DELETED
@@ -1,8 +0,0 @@
1
- <div class="happyforms-modal__heading">
2
- <h1><?php _e( 'You’ll need to upgrade<br> to access this', 'happyforms' ); ?></h1>
3
- <p><?php _e( 'We offer several, affordable paid plans that include our best features. Upgrade today and increase your customer interactions.', 'happyforms' ); ?></p>
4
- </div>
5
- <div class="happyforms-modal__content">
6
- <a href="https://happyforms.io/upgrade" target="_blank" class="button button-primary button-hero"><?php _e( 'Start Your Risk-Free 14-Day Trial', 'happyforms' ); ?></a>
7
- <p><?php printf( 'Or %1$scontinue with free version%2$s', '<a href="#" class="happyforms-continue-link" onclick="happyForms.dashboard.closeModal(); return false;">', '</a>' ); ?></p>
8
- </div>
 
 
 
 
 
 
 
 
inc/templates/admin/upgrade-modal.php DELETED
@@ -1,2 +0,0 @@
1
- <?php
2
- // To be removed.
 
 
languages/happyforms.pot CHANGED
@@ -1,129 +1,50 @@
1
  # Copyright (C) 2021 Happyforms
2
- # This file is distributed under the same license as the Happyforms (free) package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Happyforms (free) 1.13.3\n"
6
- "Report-Msgid-Bugs-To: https://thethemefoundry.com/support/\n"
7
- "POT-Creation-Date: 2021-09-27 06:30:44+00:00\n"
8
- "MIME-Version: 1.0\n"
9
- "Content-Type: text/plain; charset=utf-8\n"
10
- "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2021-MO-DA HO:MI+ZONE\n"
12
  "Last-Translator: The Theme Foundry\n"
13
  "Language-Team: The Theme Foundry\n"
14
- "X-Generator: grunt-wp-i18n 0.4.9\n"
15
-
16
- #: core/classes/class-block.php:52 core/classes/class-form-controller.php:72
17
- #: core/classes/class-happyforms-core.php:173
18
- #: core/classes/class-happyforms-core.php:174
19
- #: core/classes/class-happyforms-widget.php:13 core/helpers/helper-misc.php:997
20
- msgid "Forms"
21
- msgstr ""
22
-
23
- #: core/classes/class-block.php:53 core/classes/class-happyforms-widget.php:15
24
- msgid "Displays a form."
25
- msgstr ""
26
-
27
- #: core/classes/class-block.php:117 core/classes/parts/class-part-select.php:56
28
- msgid "Choose"
29
- msgstr ""
30
-
31
- #: core/classes/class-block.php:118
32
- msgid "Which form would you like to add here?"
33
- msgstr ""
34
-
35
- #: core/classes/class-block.php:119 core/classes/class-form-controller.php:81
36
- msgid "No forms found."
37
- msgstr ""
38
-
39
- #: core/classes/class-block.php:120
40
- msgid "HappyForms Settings"
41
- msgstr ""
42
-
43
- #: core/classes/class-deactivation.php:46
44
- #: core/templates/admin/modal-deactivate.php:15
45
- msgid "Deactivate Plugin"
46
- msgstr ""
47
-
48
- #: core/classes/class-deactivation.php:47
49
- msgid "Delete Data and Deactivate Plugin"
50
- msgstr ""
51
-
52
- #: core/classes/class-form-admin.php:159
53
- #: core/classes/class-form-controller.php:78
54
- msgid "View form"
55
- msgstr ""
56
-
57
- #: core/classes/class-form-admin.php:164
58
- msgid "Preview form"
59
- msgstr ""
60
-
61
- #: core/classes/class-form-admin.php:169 core/classes/class-form-admin.php:172
62
- msgid "Form updated."
63
- msgstr ""
64
-
65
- #: core/classes/class-form-admin.php:170
66
- msgid "Custom field updated."
67
- msgstr ""
68
-
69
- #: core/classes/class-form-admin.php:171
70
- msgid "Custom field deleted."
71
- msgstr ""
72
 
73
- #: core/classes/class-form-admin.php:173
74
- msgid "Form restored to revision from %s."
75
  msgstr ""
76
 
77
- #: core/classes/class-form-admin.php:174
78
- msgid "Form published."
 
79
  msgstr ""
80
 
81
- #: core/classes/class-form-admin.php:175
82
- msgid "Form saved."
83
  msgstr ""
84
 
85
- #: core/classes/class-form-admin.php:176
86
- msgid "Form submitted."
87
  msgstr ""
88
 
89
- #: core/classes/class-form-admin.php:177
90
- msgid "Form scheduled."
 
 
 
 
 
91
  msgstr ""
92
 
93
- #: core/classes/class-form-admin.php:178
94
- msgid "Form draft updated."
 
95
  msgstr ""
96
 
97
- #: core/classes/class-form-admin.php:201
98
- msgid "%s form updated."
99
- msgid_plural "%s forms updated."
100
- msgstr[0] ""
101
- msgstr[1] ""
102
-
103
- #: core/classes/class-form-admin.php:202
104
- msgid "%s form not updated, somebody is editing it."
105
- msgid_plural "%s forms not updated, somebody is editing them."
106
- msgstr[0] ""
107
- msgstr[1] ""
108
-
109
- #: core/classes/class-form-admin.php:203
110
- msgid "%s form permanently deleted."
111
- msgid_plural "%s forms permanently deleted."
112
- msgstr[0] ""
113
- msgstr[1] ""
114
-
115
- #: core/classes/class-form-admin.php:204
116
- msgid "%s form moved to the Trash."
117
- msgid_plural "%s forms moved to the Trash."
118
- msgstr[0] ""
119
- msgstr[1] ""
120
-
121
- #: core/classes/class-form-admin.php:205
122
- msgid "%s form restored from the Trash."
123
- msgid_plural "%s forms restored from the Trash."
124
- msgstr[0] ""
125
- msgstr[1] ""
126
-
127
  #: core/classes/class-form-admin.php:282
128
  msgid "Shortcode"
129
  msgstr ""
@@ -140,18 +61,6 @@ msgstr ""
140
  msgid "Copy to clipboard"
141
  msgstr ""
142
 
143
- #: core/classes/class-form-admin.php:338
144
- msgid "%1$s at %2$s"
145
- msgstr ""
146
-
147
- #: core/classes/class-form-admin.php:339
148
- msgid "Y/m/d"
149
- msgstr ""
150
-
151
- #: core/classes/class-form-admin.php:340
152
- msgid "g:i a"
153
- msgstr ""
154
-
155
  #: core/classes/class-form-admin.php:343
156
  msgid "Last modified"
157
  msgstr ""
@@ -166,7 +75,8 @@ msgstr ""
166
  msgid "Duplicate"
167
  msgstr ""
168
 
169
- #: core/classes/class-form-admin.php:423 inc/classes/class-message-admin.php:83
 
170
  msgid "Trash"
171
  msgstr ""
172
 
@@ -197,6 +107,10 @@ msgstr ""
197
  msgid "Edit form"
198
  msgstr ""
199
 
 
 
 
 
200
  #: core/classes/class-form-controller.php:79
201
  msgid "View forms"
202
  msgstr ""
@@ -205,6 +119,12 @@ msgstr ""
205
  msgid "Search Forms"
206
  msgstr ""
207
 
 
 
 
 
 
 
208
  #: core/classes/class-form-controller.php:82
209
  msgid "No forms found in Trash."
210
  msgstr ""
@@ -220,7 +140,7 @@ msgstr ""
220
  msgid "(no title)"
221
  msgstr ""
222
 
223
- #: core/classes/class-form-controller.php:626
224
  msgid " Copy"
225
  msgstr ""
226
 
@@ -233,9 +153,7 @@ msgid "We received your message"
233
  msgstr ""
234
 
235
  #: core/classes/class-form-email.php:71
236
- msgid ""
237
- "Your message has been successfully sent. We appreciate you contacting us "
238
- "and we’ll be in touch soon."
239
  msgstr ""
240
 
241
  #: core/classes/class-form-email.php:87
@@ -243,7 +161,8 @@ msgid "Email me a copy of each submission"
243
  msgstr ""
244
 
245
  #: core/classes/class-form-email.php:96
246
- #: inc/templates/admin/modal-onboarding.php:9
 
247
  msgid "Email address"
248
  msgstr ""
249
 
@@ -251,11 +170,13 @@ msgstr ""
251
  msgid "Email Bcc address"
252
  msgstr ""
253
 
254
- #: core/classes/class-form-email.php:106 core/classes/class-form-email.php:138
 
255
  msgid "Email display name"
256
  msgstr ""
257
 
258
- #: core/classes/class-form-email.php:111 core/classes/class-form-email.php:143
 
259
  msgid "Email subject"
260
  msgstr ""
261
 
@@ -334,9 +255,7 @@ msgid "Alerts"
334
  msgstr ""
335
 
336
  #: core/classes/class-form-messages.php:94
337
- msgid ""
338
- "These messages are shown to respondents at the very top of the form to "
339
- "communicate the form’s status."
340
  msgstr ""
341
 
342
  #: core/classes/class-form-messages.php:104
@@ -344,9 +263,7 @@ msgid "Buttons"
344
  msgstr ""
345
 
346
  #: core/classes/class-form-messages.php:105
347
- msgid ""
348
- "The messages are shown to respondents as they fill out the form to help "
349
- "them trigger an action."
350
  msgstr ""
351
 
352
  #: core/classes/class-form-messages.php:114
@@ -354,9 +271,7 @@ msgid "Errors"
354
  msgstr ""
355
 
356
  #: core/classes/class-form-messages.php:115
357
- msgid ""
358
- "These messages are shown to respondents when they try to submit their reply "
359
- "but one or more fields has a mistake."
360
  msgstr ""
361
 
362
  #: core/classes/class-form-messages.php:124
@@ -364,9 +279,7 @@ msgid "Hints"
364
  msgstr ""
365
 
366
  #: core/classes/class-form-messages.php:125
367
- msgid ""
368
- "These messages are shown to respondents as they fill out the form to help "
369
- "them avoid mistakes."
370
  msgstr ""
371
 
372
  #: core/classes/class-form-messages.php:132
@@ -417,79 +330,72 @@ msgstr ""
417
  msgid "Remaining submissions"
418
  msgstr ""
419
 
420
- #: core/classes/class-form-part-library.php:189
421
- msgid "Invalid data"
422
- msgstr ""
423
-
424
- #: core/classes/class-form-part-library.php:196
425
- msgid "Field definition not found"
426
- msgstr ""
427
-
428
  #: core/classes/class-form-part-library.php:227
429
  msgid "Missing validation callback for field %s"
430
  msgstr ""
431
 
432
- #: core/classes/class-form-setup.php:97
433
  msgid "Validate your submission"
434
  msgstr ""
435
 
436
- #: core/classes/class-form-setup.php:136
437
  msgid "Thank you. Your reply has been sent."
438
  msgstr ""
439
 
440
- #: core/classes/class-form-setup.php:140
441
  msgid "Bummer. We can't submit your reply. Please check for mistakes."
442
  msgstr ""
443
 
444
- #: core/classes/class-form-setup.php:144
445
  msgid "Send"
446
  msgstr ""
447
 
448
- #: core/classes/class-form-setup.php:158
449
  msgid "After the form is submitted"
450
  msgstr ""
451
 
452
- #: core/classes/class-form-setup.php:160
453
  msgid "Show a message"
454
  msgstr ""
455
 
456
- #: core/classes/class-form-setup.php:161
457
  msgid "Show a message and allow to resubmit the form"
458
  msgstr ""
459
 
460
- #: core/classes/class-form-setup.php:162
461
  msgid "Redirect to a web address"
462
  msgstr ""
463
 
464
- #: core/classes/class-form-setup.php:175
465
  msgid "Add custom CSS classes to submit button"
466
  msgstr ""
467
 
468
- #: core/classes/class-form-setup.php:184
469
  msgid "Submit button CSS classes"
470
  msgstr ""
471
 
472
- #: core/classes/class-form-setup.php:193
473
  msgid "Add custom HTML ID to form"
474
  msgstr ""
475
 
476
- #: core/classes/class-form-setup.php:202
477
  msgid "Form HTML ID"
478
  msgstr ""
479
 
480
- #: core/classes/class-form-setup.php:222
481
  msgid "Form is successfully submitted"
482
  msgstr ""
483
 
484
- #: core/classes/class-form-setup.php:227
485
  msgid "Form can’t be submitted"
486
  msgstr ""
487
 
488
- #: core/classes/class-form-setup.php:232
489
  msgid "Submit form"
490
  msgstr ""
491
 
492
- #: core/classes/class-form-shuffle.php:43 inc/classes/class-happyforms.php:124
 
493
  msgid "Randomize fields to prevent bias"
494
  msgstr ""
495
 
@@ -501,26 +407,30 @@ msgstr ""
501
  msgid "Right-to-left"
502
  msgstr ""
503
 
504
- #: core/classes/class-form-styles.php:75 core/classes/class-form-styles.php:149
 
505
  #: core/classes/class-form-styles.php:159
506
  #: core/classes/class-form-styles.php:282
507
  #: core/classes/class-form-styles.php:292
508
  msgid "Default"
509
  msgstr ""
510
 
511
- #: core/classes/class-form-styles.php:76 core/classes/class-form-styles.php:148
 
512
  #: core/classes/class-form-styles.php:158
513
  #: core/classes/class-form-styles.php:291
514
  msgid "Narrow"
515
  msgstr ""
516
 
517
- #: core/classes/class-form-styles.php:77 core/classes/class-form-styles.php:150
 
518
  #: core/classes/class-form-styles.php:160
519
  #: core/classes/class-form-styles.php:293
520
  msgid "Wide"
521
  msgstr ""
522
 
523
- #: core/classes/class-form-styles.php:91 core/classes/class-form-styles.php:120
 
524
  #: core/classes/class-form-styles.php:263
525
  #: core/templates/parts/customize-checkbox.php:8
526
  #: core/templates/parts/customize-email.php:8
@@ -532,7 +442,8 @@ msgstr ""
532
  msgid "Show"
533
  msgstr ""
534
 
535
- #: core/classes/class-form-styles.php:92 core/classes/class-form-styles.php:121
 
536
  #: core/classes/class-form-styles.php:264
537
  #: core/templates/parts/customize-checkbox.php:15
538
  #: core/templates/parts/customize-email.php:15
@@ -640,193 +551,181 @@ msgstr ""
640
  msgid "Full width"
641
  msgstr ""
642
 
643
- #: core/classes/class-form-styles.php:534
644
- msgid "Above form"
645
- msgstr ""
646
-
647
- #: core/classes/class-form-styles.php:535
648
- msgid "Below form"
649
- msgstr ""
650
-
651
- #: core/classes/class-form-styles.php:555
652
  msgid "General"
653
  msgstr ""
654
 
655
- #: core/classes/class-form-styles.php:560
656
- #: core/classes/class-form-styles.php:880
657
  #: core/templates/partials/customize-field-width.php:2
658
  msgid "Width"
659
  msgstr ""
660
 
661
- #: core/classes/class-form-styles.php:565
662
- #: core/classes/class-form-styles.php:885
663
  msgid "Padding"
664
  msgstr ""
665
 
666
- #: core/classes/class-form-styles.php:570
667
  msgid "Direction"
668
  msgstr ""
669
 
670
- #: core/classes/class-form-styles.php:575
671
- msgid "Message location"
672
- msgstr ""
673
-
674
- #: core/classes/class-form-styles.php:581
675
- #: core/classes/class-form-styles.php:666
676
- #: core/classes/class-form-styles.php:741
677
- #: core/classes/class-form-styles.php:911
678
  msgid "Colors"
679
  msgstr ""
680
 
681
- #: core/classes/class-form-styles.php:585
682
  msgid "Primary"
683
  msgstr ""
684
 
685
- #: core/classes/class-form-styles.php:590
686
  msgid "Success message background"
687
  msgstr ""
688
 
689
- #: core/classes/class-form-styles.php:595
690
  msgid "Success message text"
691
  msgstr ""
692
 
693
- #: core/classes/class-form-styles.php:600
694
  msgid "Validation message text"
695
  msgstr ""
696
 
697
- #: core/classes/class-form-styles.php:605
698
  msgid "Error message background"
699
  msgstr ""
700
 
701
- #: core/classes/class-form-styles.php:610
702
  msgid "Error message text"
703
  msgstr ""
704
 
705
- #: core/classes/class-form-styles.php:615
706
  #: inc/classes/parts/class-part-layout-title-dummy.php:8
707
  #: inc/classes/parts/class-part-title-dummy.php:8
708
  msgid "Title"
709
  msgstr ""
710
 
711
- #: core/classes/class-form-styles.php:620
712
  msgid "Display"
713
  msgstr ""
714
 
715
- #: core/classes/class-form-styles.php:625
716
- #: core/classes/class-form-styles.php:900
717
  msgid "Alignment"
718
  msgstr ""
719
 
720
- #: core/classes/class-form-styles.php:630
721
- #: core/classes/class-form-styles.php:890
722
  msgid "Font size"
723
  msgstr ""
724
 
725
- #: core/classes/class-form-styles.php:635
726
  msgid "Field borders & spacing"
727
  msgstr ""
728
 
729
- #: core/classes/class-form-styles.php:640
730
- #: core/classes/class-form-styles.php:670
731
- #: core/classes/class-form-styles.php:870
732
- #: core/classes/class-form-styles.php:925
733
  msgid "Border"
734
  msgstr ""
735
 
736
- #: core/classes/class-form-styles.php:645
737
  msgid "Border location"
738
  msgstr ""
739
 
740
- #: core/classes/class-form-styles.php:650
741
- #: core/classes/class-form-styles.php:875
742
  msgid "Border radius"
743
  msgstr ""
744
 
745
- #: core/classes/class-form-styles.php:655
746
  msgid "Outer spacing"
747
  msgstr ""
748
 
749
- #: core/classes/class-form-styles.php:660
750
  msgid "Inner spacing"
751
  msgstr ""
752
 
753
- #: core/classes/class-form-styles.php:675
754
  msgid "Border on focus"
755
  msgstr ""
756
 
757
- #: core/classes/class-form-styles.php:680
758
- #: core/classes/class-form-styles.php:775
759
- #: core/classes/class-form-styles.php:800
760
- #: core/classes/class-form-styles.php:915
761
  msgid "Background"
762
  msgstr ""
763
 
764
- #: core/classes/class-form-styles.php:685
765
- #: core/classes/class-form-styles.php:785
766
- #: core/classes/class-form-styles.php:805
767
- #: core/classes/class-form-styles.php:920
768
  msgid "Background on focus"
769
  msgstr ""
770
 
771
- #: core/classes/class-form-styles.php:690
772
  msgid "Field labels & text"
773
  msgstr ""
774
 
775
- #: core/classes/class-form-styles.php:695
776
  msgid "Toggle placeholder on field focus"
777
  msgstr ""
778
 
779
- #: core/classes/class-form-styles.php:700
780
  msgid "Label alignment"
781
  msgstr ""
782
 
783
- #: core/classes/class-form-styles.php:705
784
  msgid "Label font size"
785
  msgstr ""
786
 
787
- #: core/classes/class-form-styles.php:710
788
  msgid "Label font weight"
789
  msgstr ""
790
 
791
- #: core/classes/class-form-styles.php:715
792
  msgid "Hint alignment"
793
  msgstr ""
794
 
795
- #: core/classes/class-form-styles.php:720
796
  msgid "Hint font size"
797
  msgstr ""
798
 
799
- #: core/classes/class-form-styles.php:725
800
  msgid "Hint display"
801
  msgstr ""
802
 
803
- #: core/classes/class-form-styles.php:730
804
  msgid "Placeholder &amp; value alignment"
805
  msgstr ""
806
 
807
- #: core/classes/class-form-styles.php:735
808
  msgid "Value font size"
809
  msgstr ""
810
 
811
- #: core/classes/class-form-styles.php:745
812
  #: core/templates/parts/customize-checkbox.php:4
813
- #: core/templates/parts/customize-checkbox.php:143
814
  #: core/templates/parts/customize-email.php:4
815
  #: core/templates/parts/customize-multi-line-text.php:4
816
  #: core/templates/parts/customize-number.php:4
817
  #: core/templates/parts/customize-radio.php:4
818
- #: core/templates/parts/customize-radio.php:117
819
  #: core/templates/parts/customize-select.php:4
820
  #: core/templates/parts/customize-select.php:105
821
  #: core/templates/parts/customize-single-line-text.php:4
822
  msgid "Label"
823
  msgstr ""
824
 
825
- #: core/classes/class-form-styles.php:750
826
  msgid "Value"
827
  msgstr ""
828
 
829
- #: core/classes/class-form-styles.php:755
830
  #: core/templates/parts/customize-email.php:20
831
  #: core/templates/parts/customize-multi-line-text.php:20
832
  #: core/templates/parts/customize-number.php:20
@@ -836,7 +735,7 @@ msgstr ""
836
  msgid "Placeholder"
837
  msgstr ""
838
 
839
- #: core/classes/class-form-styles.php:760
840
  #: core/templates/parts/customize-checkbox.php:20
841
  #: core/templates/parts/customize-email.php:28
842
  #: core/templates/parts/customize-multi-line-text.php:28
@@ -847,113 +746,108 @@ msgstr ""
847
  msgid "Hint"
848
  msgstr ""
849
 
850
- #: core/classes/class-form-styles.php:765
851
  msgid "Dropdowns"
852
  msgstr ""
853
 
854
- #: core/classes/class-form-styles.php:771
855
  msgid "Items"
856
  msgstr ""
857
 
858
- #: core/classes/class-form-styles.php:780
859
- #: core/classes/class-form-styles.php:930
860
  msgid "Text"
861
  msgstr ""
862
 
863
- #: core/classes/class-form-styles.php:790
864
  msgid "Text focused"
865
  msgstr ""
866
 
867
- #: core/classes/class-form-styles.php:795
868
  msgid "Checkboxes & Radios"
869
  msgstr ""
870
 
871
- #: core/classes/class-form-styles.php:810
872
  msgid "Checkmark"
873
  msgstr ""
874
 
875
- #: core/classes/class-form-styles.php:815
876
  msgid "Rating"
877
  msgstr ""
878
 
879
- #: core/classes/class-form-styles.php:820
880
  msgid "Rating star color"
881
  msgstr ""
882
 
883
- #: core/classes/class-form-styles.php:825
884
  msgid "Rating star color on hover"
885
  msgstr ""
886
 
887
- #: core/classes/class-form-styles.php:830
888
  msgid "Tables"
889
  msgstr ""
890
 
891
- #: core/classes/class-form-styles.php:835
892
  msgid "Odd row primary"
893
  msgstr ""
894
 
895
- #: core/classes/class-form-styles.php:840
896
  msgid "Odd row secondary"
897
  msgstr ""
898
 
899
- #: core/classes/class-form-styles.php:845
900
  msgid "Even row primary"
901
  msgstr ""
902
 
903
- #: core/classes/class-form-styles.php:850
904
  msgid "Even row secondary"
905
  msgstr ""
906
 
907
- #: core/classes/class-form-styles.php:855
908
  msgid "Dividers"
909
  msgstr ""
910
 
911
- #: core/classes/class-form-styles.php:860
912
  msgid "Color"
913
  msgstr ""
914
 
915
- #: core/classes/class-form-styles.php:865
916
  msgid "Submit button"
917
  msgstr ""
918
 
919
- #: core/classes/class-form-styles.php:895
920
  msgid "Font weight"
921
  msgstr ""
922
 
923
- #: core/classes/class-form-styles.php:905
924
  msgid "Make button a field of last input"
925
  msgstr ""
926
 
927
- #: core/classes/class-form-styles.php:935
928
  msgid "Text on focus"
929
  msgstr ""
930
 
931
- #: core/classes/class-form-styles.php:947
932
  msgid "Add your own CSS code here to customize the appearance of your form."
933
  msgstr ""
934
 
935
- #: core/classes/class-form-styles.php:949
936
- msgid ""
937
- "For each rule you add, we'll prepend your form's HTML ID. This makes sure "
938
- "all styles added will only apply to this form. For example %s becomes %s."
939
  msgstr ""
940
 
941
- #: core/classes/class-form-styles.php:957
942
- msgid ""
943
- "The edit field automatically highlights code syntax. You can disable this "
944
- "in your <a href=\"%s\" class=\"%s\" target=\"_blank\">user profile</a> to "
945
- "work in plain text mode."
946
  msgstr ""
947
 
948
- #: core/classes/class-form-styles.php:965
949
- #: core/classes/class-form-styles.php:975
950
  msgid "Additional CSS"
951
  msgstr ""
952
 
953
  #: core/classes/class-happyforms-core.php:197
954
  #: core/classes/class-happyforms-core.php:198
955
- #: inc/classes/class-message-controller.php:700
956
- #: inc/classes/class-message-controller.php:701
957
  msgid "Activity"
958
  msgstr ""
959
 
@@ -965,10 +859,12 @@ msgstr ""
965
 
966
  #: core/classes/class-happyforms-core.php:215
967
  #: core/classes/class-happyforms-core.php:216
 
 
968
  msgid "Settings"
969
  msgstr ""
970
 
971
- #: core/classes/class-happyforms-core.php:459
972
  msgid "Add Form"
973
  msgstr ""
974
 
@@ -980,36 +876,6 @@ msgstr ""
980
  msgid "Form:"
981
  msgstr ""
982
 
983
- #: core/classes/class-tracking.php:139
984
- msgid "Sorry, you are not allowed to access this page."
985
- msgstr ""
986
-
987
- #: core/classes/class-tracking.php:173
988
- msgid "Thank you!"
989
- msgstr ""
990
-
991
- #: core/classes/class-tracking.php:174
992
- msgid "Now let's go enjoy HappyForms."
993
- msgstr ""
994
-
995
- #: core/classes/class-tracking.php:175
996
- msgid ""
997
- "You've set up notifications and helped us to improve HappyForms. You're "
998
- "ready to get started with your first form."
999
- msgstr ""
1000
-
1001
- #: core/classes/class-tracking.php:176
1002
- msgid "Create your first form"
1003
- msgstr ""
1004
-
1005
- #: core/classes/class-tracking.php:178
1006
- msgid "Aw snap! Something went wrong."
1007
- msgstr ""
1008
-
1009
- #: core/classes/class-tracking.php:179
1010
- msgid "Error description"
1011
- msgstr ""
1012
-
1013
  #: core/classes/class-validation-messages.php:72
1014
  msgid "Field is answered incorrectly"
1015
  msgstr ""
@@ -1096,16 +962,11 @@ msgid "All done!"
1096
  msgstr ""
1097
 
1098
  #: core/classes/class-wp-customize-form-manager.php:178
1099
- msgid ""
1100
- "Still have questions? Head over to our <a href=\"%s\" "
1101
- "target=\"_blank\">help guide</a>."
1102
  msgstr ""
1103
 
1104
  #: core/classes/class-wp-customize-form-manager.php:185
1105
- msgid ""
1106
- "Form saved. You can add this form to any Page, Post and Widget area. Have "
1107
- "questions? <a href=\"%s\" target=\"_blank\">Ask for help in our support "
1108
- "forums</a>."
1109
  msgstr ""
1110
 
1111
  #: core/classes/parts/class-part-checkbox.php:10
@@ -1116,12 +977,12 @@ msgstr ""
1116
  msgid "For checkboxes allowing multiple selections."
1117
  msgstr ""
1118
 
1119
- #: core/classes/parts/class-part-checkbox.php:85
1120
  msgid "Select all"
1121
  msgstr ""
1122
 
1123
- #: core/classes/parts/class-part-checkbox.php:93
1124
- #: core/classes/parts/class-part-radio.php:86
1125
  #: core/classes/parts/class-part-select.php:80
1126
  msgid "Other"
1127
  msgstr ""
@@ -1166,6 +1027,12 @@ msgstr ""
1166
  msgid "For selecting one option from a long list. Default value adjustable."
1167
  msgstr ""
1168
 
 
 
 
 
 
 
1169
  #: core/classes/parts/class-part-single-line-text.php:8
1170
  msgid "Short Answer"
1171
  msgstr ""
@@ -1266,55 +1133,68 @@ msgstr ""
1266
  msgid "Ascension Island"
1267
  msgstr ""
1268
 
1269
- #: core/helpers/helper-form-templates.php:1067 core/helpers/helper-misc.php:228
 
1270
  msgid "Andorra"
1271
  msgstr ""
1272
 
1273
- #: core/helpers/helper-form-templates.php:1068 core/helpers/helper-misc.php:446
 
1274
  msgid "United Arab Emirates"
1275
  msgstr ""
1276
 
1277
- #: core/helpers/helper-form-templates.php:1069 core/helpers/helper-misc.php:224
 
1278
  msgid "Afghanistan"
1279
  msgstr ""
1280
 
1281
- #: core/helpers/helper-form-templates.php:1070 core/helpers/helper-misc.php:232
 
1282
  msgid "Antigua and Barbuda"
1283
  msgstr ""
1284
 
1285
- #: core/helpers/helper-form-templates.php:1071 core/helpers/helper-misc.php:230
 
1286
  msgid "Anguilla"
1287
  msgstr ""
1288
 
1289
- #: core/helpers/helper-form-templates.php:1072 core/helpers/helper-misc.php:225
 
1290
  msgid "Albania"
1291
  msgstr ""
1292
 
1293
- #: core/helpers/helper-form-templates.php:1073 core/helpers/helper-misc.php:234
 
1294
  msgid "Armenia"
1295
  msgstr ""
1296
 
1297
- #: core/helpers/helper-form-templates.php:1074 core/helpers/helper-misc.php:229
 
1298
  msgid "Angola"
1299
  msgstr ""
1300
 
1301
- #: core/helpers/helper-form-templates.php:1075 core/helpers/helper-misc.php:233
 
1302
  msgid "Argentina"
1303
  msgstr ""
1304
 
1305
- #: core/helpers/helper-form-templates.php:1076 core/helpers/helper-misc.php:227
 
1306
  msgid "American Samoa"
1307
  msgstr ""
1308
 
1309
- #: core/helpers/helper-form-templates.php:1077 core/helpers/helper-misc.php:237
 
1310
  msgid "Austria"
1311
  msgstr ""
1312
 
1313
- #: core/helpers/helper-form-templates.php:1078 core/helpers/helper-misc.php:236
 
1314
  msgid "Australia"
1315
  msgstr ""
1316
 
1317
- #: core/helpers/helper-form-templates.php:1079 core/helpers/helper-misc.php:235
 
1318
  msgid "Aruba"
1319
  msgstr ""
1320
 
@@ -1322,7 +1202,8 @@ msgstr ""
1322
  msgid "Åland Islands"
1323
  msgstr ""
1324
 
1325
- #: core/helpers/helper-form-templates.php:1081 core/helpers/helper-misc.php:238
 
1326
  msgid "Azerbaijan"
1327
  msgstr ""
1328
 
@@ -1330,35 +1211,43 @@ msgstr ""
1330
  msgid "Bosnia and Herzegovina"
1331
  msgstr ""
1332
 
1333
- #: core/helpers/helper-form-templates.php:1083 core/helpers/helper-misc.php:242
 
1334
  msgid "Barbados"
1335
  msgstr ""
1336
 
1337
- #: core/helpers/helper-form-templates.php:1084 core/helpers/helper-misc.php:241
 
1338
  msgid "Bangladesh"
1339
  msgstr ""
1340
 
1341
- #: core/helpers/helper-form-templates.php:1085 core/helpers/helper-misc.php:244
 
1342
  msgid "Belgium"
1343
  msgstr ""
1344
 
1345
- #: core/helpers/helper-form-templates.php:1086 core/helpers/helper-misc.php:257
 
1346
  msgid "Burkina Faso"
1347
  msgstr ""
1348
 
1349
- #: core/helpers/helper-form-templates.php:1087 core/helpers/helper-misc.php:256
 
1350
  msgid "Bulgaria"
1351
  msgstr ""
1352
 
1353
- #: core/helpers/helper-form-templates.php:1088 core/helpers/helper-misc.php:240
 
1354
  msgid "Bahrain"
1355
  msgstr ""
1356
 
1357
- #: core/helpers/helper-form-templates.php:1089 core/helpers/helper-misc.php:258
 
1358
  msgid "Burundi"
1359
  msgstr ""
1360
 
1361
- #: core/helpers/helper-form-templates.php:1090 core/helpers/helper-misc.php:246
 
1362
  msgid "Benin"
1363
  msgstr ""
1364
 
@@ -1366,15 +1255,18 @@ msgstr ""
1366
  msgid "Saint Barthélemy"
1367
  msgstr ""
1368
 
1369
- #: core/helpers/helper-form-templates.php:1092 core/helpers/helper-misc.php:247
 
1370
  msgid "Bermuda"
1371
  msgstr ""
1372
 
1373
- #: core/helpers/helper-form-templates.php:1093 core/helpers/helper-misc.php:255
 
1374
  msgid "Brunei Darussalam"
1375
  msgstr ""
1376
 
1377
- #: core/helpers/helper-form-templates.php:1094 core/helpers/helper-misc.php:249
 
1378
  msgid "Bolivia"
1379
  msgstr ""
1380
 
@@ -1382,51 +1274,63 @@ msgstr ""
1382
  msgid "Bonaire, Sint Eustatius and Saba"
1383
  msgstr ""
1384
 
1385
- #: core/helpers/helper-form-templates.php:1096 core/helpers/helper-misc.php:253
 
1386
  msgid "Brazil"
1387
  msgstr ""
1388
 
1389
- #: core/helpers/helper-form-templates.php:1097 core/helpers/helper-misc.php:239
 
1390
  msgid "Bahamas"
1391
  msgstr ""
1392
 
1393
- #: core/helpers/helper-form-templates.php:1098 core/helpers/helper-misc.php:248
 
1394
  msgid "Bhutan"
1395
  msgstr ""
1396
 
1397
- #: core/helpers/helper-form-templates.php:1099 core/helpers/helper-misc.php:251
 
1398
  msgid "Botswana"
1399
  msgstr ""
1400
 
1401
- #: core/helpers/helper-form-templates.php:1100 core/helpers/helper-misc.php:243
 
1402
  msgid "Belarus"
1403
  msgstr ""
1404
 
1405
- #: core/helpers/helper-form-templates.php:1101 core/helpers/helper-misc.php:245
 
1406
  msgid "Belize"
1407
  msgstr ""
1408
 
1409
- #: core/helpers/helper-form-templates.php:1102 core/helpers/helper-misc.php:261
 
1410
  msgid "Canada"
1411
  msgstr ""
1412
 
1413
- #: core/helpers/helper-form-templates.php:1103 core/helpers/helper-misc.php:269
 
1414
  msgid "Cocos (Keeling) Islands"
1415
  msgstr ""
1416
 
1417
- #: core/helpers/helper-form-templates.php:1104 core/helpers/helper-misc.php:273
 
1418
  msgid "Congo, the Democratic Republic of the"
1419
  msgstr ""
1420
 
1421
- #: core/helpers/helper-form-templates.php:1105 core/helpers/helper-misc.php:264
 
1422
  msgid "Central African Republic"
1423
  msgstr ""
1424
 
1425
- #: core/helpers/helper-form-templates.php:1106 core/helpers/helper-misc.php:272
 
1426
  msgid "Congo"
1427
  msgstr ""
1428
 
1429
- #: core/helpers/helper-form-templates.php:1107 core/helpers/helper-misc.php:429
 
1430
  msgid "Switzerland"
1431
  msgstr ""
1432
 
@@ -1434,35 +1338,43 @@ msgstr ""
1434
  msgid "Cote D'Ivoire"
1435
  msgstr ""
1436
 
1437
- #: core/helpers/helper-form-templates.php:1109 core/helpers/helper-misc.php:274
 
1438
  msgid "Cook Islands"
1439
  msgstr ""
1440
 
1441
- #: core/helpers/helper-form-templates.php:1110 core/helpers/helper-misc.php:266
 
1442
  msgid "Chile"
1443
  msgstr ""
1444
 
1445
- #: core/helpers/helper-form-templates.php:1111 core/helpers/helper-misc.php:260
 
1446
  msgid "Cameroon"
1447
  msgstr ""
1448
 
1449
- #: core/helpers/helper-form-templates.php:1112 core/helpers/helper-misc.php:267
 
1450
  msgid "China"
1451
  msgstr ""
1452
 
1453
- #: core/helpers/helper-form-templates.php:1113 core/helpers/helper-misc.php:270
 
1454
  msgid "Colombia"
1455
  msgstr ""
1456
 
1457
- #: core/helpers/helper-form-templates.php:1114 core/helpers/helper-misc.php:275
 
1458
  msgid "Costa Rica"
1459
  msgstr ""
1460
 
1461
- #: core/helpers/helper-form-templates.php:1115 core/helpers/helper-misc.php:278
 
1462
  msgid "Cuba"
1463
  msgstr ""
1464
 
1465
- #: core/helpers/helper-form-templates.php:1116 core/helpers/helper-misc.php:262
 
1466
  msgid "Cape Verde"
1467
  msgstr ""
1468
 
@@ -1470,111 +1382,138 @@ msgstr ""
1470
  msgid "Curaçao"
1471
  msgstr ""
1472
 
1473
- #: core/helpers/helper-form-templates.php:1118 core/helpers/helper-misc.php:268
 
1474
  msgid "Christmas Island"
1475
  msgstr ""
1476
 
1477
- #: core/helpers/helper-form-templates.php:1119 core/helpers/helper-misc.php:279
 
1478
  msgid "Cyprus"
1479
  msgstr ""
1480
 
1481
- #: core/helpers/helper-form-templates.php:1120 core/helpers/helper-misc.php:280
 
1482
  msgid "Czech Republic"
1483
  msgstr ""
1484
 
1485
- #: core/helpers/helper-form-templates.php:1121 core/helpers/helper-misc.php:305
 
1486
  msgid "Germany"
1487
  msgstr ""
1488
 
1489
- #: core/helpers/helper-form-templates.php:1122 core/helpers/helper-misc.php:282
 
1490
  msgid "Djibouti"
1491
  msgstr ""
1492
 
1493
- #: core/helpers/helper-form-templates.php:1123 core/helpers/helper-misc.php:281
 
1494
  msgid "Denmark"
1495
  msgstr ""
1496
 
1497
- #: core/helpers/helper-form-templates.php:1124 core/helpers/helper-misc.php:283
 
1498
  msgid "Dominica"
1499
  msgstr ""
1500
 
1501
- #: core/helpers/helper-form-templates.php:1125 core/helpers/helper-misc.php:284
 
1502
  msgid "Dominican Republic"
1503
  msgstr ""
1504
 
1505
- #: core/helpers/helper-form-templates.php:1126 core/helpers/helper-misc.php:226
 
1506
  msgid "Algeria"
1507
  msgstr ""
1508
 
1509
- #: core/helpers/helper-form-templates.php:1127 core/helpers/helper-misc.php:286
 
1510
  msgid "Ecuador"
1511
  msgstr ""
1512
 
1513
- #: core/helpers/helper-form-templates.php:1128 core/helpers/helper-misc.php:291
 
1514
  msgid "Estonia"
1515
  msgstr ""
1516
 
1517
- #: core/helpers/helper-form-templates.php:1129 core/helpers/helper-misc.php:287
 
1518
  msgid "Egypt"
1519
  msgstr ""
1520
 
1521
- #: core/helpers/helper-form-templates.php:1130 core/helpers/helper-misc.php:458
 
1522
  msgid "Western Sahara"
1523
  msgstr ""
1524
 
1525
- #: core/helpers/helper-form-templates.php:1131 core/helpers/helper-misc.php:290
 
1526
  msgid "Eritrea"
1527
  msgstr ""
1528
 
1529
- #: core/helpers/helper-form-templates.php:1132 core/helpers/helper-misc.php:420
 
1530
  msgid "Spain"
1531
  msgstr ""
1532
 
1533
- #: core/helpers/helper-form-templates.php:1133 core/helpers/helper-misc.php:292
 
1534
  msgid "Ethiopia"
1535
  msgstr ""
1536
 
1537
- #: core/helpers/helper-form-templates.php:1134 core/helpers/helper-misc.php:296
 
1538
  msgid "Finland"
1539
  msgstr ""
1540
 
1541
- #: core/helpers/helper-form-templates.php:1135 core/helpers/helper-misc.php:295
 
1542
  msgid "Fiji"
1543
  msgstr ""
1544
 
1545
- #: core/helpers/helper-form-templates.php:1136 core/helpers/helper-misc.php:293
 
1546
  msgid "Falkland Islands (Malvinas)"
1547
  msgstr ""
1548
 
1549
- #: core/helpers/helper-form-templates.php:1137 core/helpers/helper-misc.php:364
 
1550
  msgid "Micronesia, Federated States of"
1551
  msgstr ""
1552
 
1553
- #: core/helpers/helper-form-templates.php:1138 core/helpers/helper-misc.php:294
 
1554
  msgid "Faroe Islands"
1555
  msgstr ""
1556
 
1557
- #: core/helpers/helper-form-templates.php:1139 core/helpers/helper-misc.php:297
 
1558
  msgid "France"
1559
  msgstr ""
1560
 
1561
- #: core/helpers/helper-form-templates.php:1140 core/helpers/helper-misc.php:302
 
1562
  msgid "Gabon"
1563
  msgstr ""
1564
 
1565
- #: core/helpers/helper-form-templates.php:1141 core/helpers/helper-misc.php:447
 
1566
  msgid "United Kingdom"
1567
  msgstr ""
1568
 
1569
- #: core/helpers/helper-form-templates.php:1142 core/helpers/helper-misc.php:310
 
1570
  msgid "Grenada"
1571
  msgstr ""
1572
 
1573
- #: core/helpers/helper-form-templates.php:1143 core/helpers/helper-misc.php:304
 
1574
  msgid "Georgia"
1575
  msgstr ""
1576
 
1577
- #: core/helpers/helper-form-templates.php:1144 core/helpers/helper-misc.php:299
 
1578
  msgid "French Guiana"
1579
  msgstr ""
1580
 
@@ -1582,59 +1521,73 @@ msgstr ""
1582
  msgid "Guernsey"
1583
  msgstr ""
1584
 
1585
- #: core/helpers/helper-form-templates.php:1146 core/helpers/helper-misc.php:306
 
1586
  msgid "Ghana"
1587
  msgstr ""
1588
 
1589
- #: core/helpers/helper-form-templates.php:1147 core/helpers/helper-misc.php:307
 
1590
  msgid "Gibraltar"
1591
  msgstr ""
1592
 
1593
- #: core/helpers/helper-form-templates.php:1148 core/helpers/helper-misc.php:309
 
1594
  msgid "Greenland"
1595
  msgstr ""
1596
 
1597
- #: core/helpers/helper-form-templates.php:1149 core/helpers/helper-misc.php:303
 
1598
  msgid "Gambia"
1599
  msgstr ""
1600
 
1601
- #: core/helpers/helper-form-templates.php:1150 core/helpers/helper-misc.php:314
 
1602
  msgid "Guinea"
1603
  msgstr ""
1604
 
1605
- #: core/helpers/helper-form-templates.php:1151 core/helpers/helper-misc.php:311
 
1606
  msgid "Guadeloupe"
1607
  msgstr ""
1608
 
1609
- #: core/helpers/helper-form-templates.php:1152 core/helpers/helper-misc.php:289
 
1610
  msgid "Equatorial Guinea"
1611
  msgstr ""
1612
 
1613
- #: core/helpers/helper-form-templates.php:1153 core/helpers/helper-misc.php:308
 
1614
  msgid "Greece"
1615
  msgstr ""
1616
 
1617
- #: core/helpers/helper-form-templates.php:1154 core/helpers/helper-misc.php:313
 
1618
  msgid "Guatemala"
1619
  msgstr ""
1620
 
1621
- #: core/helpers/helper-form-templates.php:1155 core/helpers/helper-misc.php:312
 
1622
  msgid "Guam"
1623
  msgstr ""
1624
 
1625
- #: core/helpers/helper-form-templates.php:1156 core/helpers/helper-misc.php:315
 
1626
  msgid "Guinea-Bissau"
1627
  msgstr ""
1628
 
1629
- #: core/helpers/helper-form-templates.php:1157 core/helpers/helper-misc.php:316
 
1630
  msgid "Guyana"
1631
  msgstr ""
1632
 
1633
- #: core/helpers/helper-form-templates.php:1158 core/helpers/helper-misc.php:321
 
1634
  msgid "Hong Kong"
1635
  msgstr ""
1636
 
1637
- #: core/helpers/helper-form-templates.php:1159 core/helpers/helper-misc.php:320
 
1638
  msgid "Honduras"
1639
  msgstr ""
1640
 
@@ -1642,23 +1595,28 @@ msgstr ""
1642
  msgid "Croatia"
1643
  msgstr ""
1644
 
1645
- #: core/helpers/helper-form-templates.php:1161 core/helpers/helper-misc.php:317
 
1646
  msgid "Haiti"
1647
  msgstr ""
1648
 
1649
- #: core/helpers/helper-form-templates.php:1162 core/helpers/helper-misc.php:322
 
1650
  msgid "Hungary"
1651
  msgstr ""
1652
 
1653
- #: core/helpers/helper-form-templates.php:1163 core/helpers/helper-misc.php:325
 
1654
  msgid "Indonesia"
1655
  msgstr ""
1656
 
1657
- #: core/helpers/helper-form-templates.php:1164 core/helpers/helper-misc.php:328
 
1658
  msgid "Ireland"
1659
  msgstr ""
1660
 
1661
- #: core/helpers/helper-form-templates.php:1165 core/helpers/helper-misc.php:329
 
1662
  msgid "Israel"
1663
  msgstr ""
1664
 
@@ -1666,15 +1624,18 @@ msgstr ""
1666
  msgid "Isle of Man"
1667
  msgstr ""
1668
 
1669
- #: core/helpers/helper-form-templates.php:1167 core/helpers/helper-misc.php:324
 
1670
  msgid "India"
1671
  msgstr ""
1672
 
1673
- #: core/helpers/helper-form-templates.php:1168 core/helpers/helper-misc.php:254
 
1674
  msgid "British Indian Ocean Territory"
1675
  msgstr ""
1676
 
1677
- #: core/helpers/helper-form-templates.php:1169 core/helpers/helper-misc.php:327
 
1678
  msgid "Iraq"
1679
  msgstr ""
1680
 
@@ -1682,11 +1643,13 @@ msgstr ""
1682
  msgid "Iran, Islamic Republic of"
1683
  msgstr ""
1684
 
1685
- #: core/helpers/helper-form-templates.php:1171 core/helpers/helper-misc.php:323
 
1686
  msgid "Iceland"
1687
  msgstr ""
1688
 
1689
- #: core/helpers/helper-form-templates.php:1172 core/helpers/helper-misc.php:330
 
1690
  msgid "Italy"
1691
  msgstr ""
1692
 
@@ -1694,39 +1657,48 @@ msgstr ""
1694
  msgid "Jersey"
1695
  msgstr ""
1696
 
1697
- #: core/helpers/helper-form-templates.php:1174 core/helpers/helper-misc.php:331
 
1698
  msgid "Jamaica"
1699
  msgstr ""
1700
 
1701
- #: core/helpers/helper-form-templates.php:1175 core/helpers/helper-misc.php:333
 
1702
  msgid "Jordan"
1703
  msgstr ""
1704
 
1705
- #: core/helpers/helper-form-templates.php:1176 core/helpers/helper-misc.php:332
 
1706
  msgid "Japan"
1707
  msgstr ""
1708
 
1709
- #: core/helpers/helper-form-templates.php:1177 core/helpers/helper-misc.php:335
 
1710
  msgid "Kenya"
1711
  msgstr ""
1712
 
1713
- #: core/helpers/helper-form-templates.php:1178 core/helpers/helper-misc.php:340
 
1714
  msgid "Kyrgyzstan"
1715
  msgstr ""
1716
 
1717
- #: core/helpers/helper-form-templates.php:1179 core/helpers/helper-misc.php:259
 
1718
  msgid "Cambodia"
1719
  msgstr ""
1720
 
1721
- #: core/helpers/helper-form-templates.php:1180 core/helpers/helper-misc.php:336
 
1722
  msgid "Kiribati"
1723
  msgstr ""
1724
 
1725
- #: core/helpers/helper-form-templates.php:1181 core/helpers/helper-misc.php:271
 
1726
  msgid "Comoros"
1727
  msgstr ""
1728
 
1729
- #: core/helpers/helper-form-templates.php:1182 core/helpers/helper-misc.php:403
 
1730
  msgid "Saint Kitts and Nevis"
1731
  msgstr ""
1732
 
@@ -1738,15 +1710,18 @@ msgstr ""
1738
  msgid "South Korea"
1739
  msgstr ""
1740
 
1741
- #: core/helpers/helper-form-templates.php:1185 core/helpers/helper-misc.php:339
 
1742
  msgid "Kuwait"
1743
  msgstr ""
1744
 
1745
- #: core/helpers/helper-form-templates.php:1186 core/helpers/helper-misc.php:263
 
1746
  msgid "Cayman Islands"
1747
  msgstr ""
1748
 
1749
- #: core/helpers/helper-form-templates.php:1187 core/helpers/helper-misc.php:334
 
1750
  msgid "Kazakhstan"
1751
  msgstr ""
1752
 
@@ -1754,39 +1729,48 @@ msgstr ""
1754
  msgid "Lao People's Democratic Republic"
1755
  msgstr ""
1756
 
1757
- #: core/helpers/helper-form-templates.php:1189 core/helpers/helper-misc.php:343
 
1758
  msgid "Lebanon"
1759
  msgstr ""
1760
 
1761
- #: core/helpers/helper-form-templates.php:1190 core/helpers/helper-misc.php:404
 
1762
  msgid "Saint Lucia"
1763
  msgstr ""
1764
 
1765
- #: core/helpers/helper-form-templates.php:1191 core/helpers/helper-misc.php:347
 
1766
  msgid "Liechtenstein"
1767
  msgstr ""
1768
 
1769
- #: core/helpers/helper-form-templates.php:1192 core/helpers/helper-misc.php:421
 
1770
  msgid "Sri Lanka"
1771
  msgstr ""
1772
 
1773
- #: core/helpers/helper-form-templates.php:1193 core/helpers/helper-misc.php:345
 
1774
  msgid "Liberia"
1775
  msgstr ""
1776
 
1777
- #: core/helpers/helper-form-templates.php:1194 core/helpers/helper-misc.php:344
 
1778
  msgid "Lesotho"
1779
  msgstr ""
1780
 
1781
- #: core/helpers/helper-form-templates.php:1195 core/helpers/helper-misc.php:348
 
1782
  msgid "Lithuania"
1783
  msgstr ""
1784
 
1785
- #: core/helpers/helper-form-templates.php:1196 core/helpers/helper-misc.php:349
 
1786
  msgid "Luxembourg"
1787
  msgstr ""
1788
 
1789
- #: core/helpers/helper-form-templates.php:1197 core/helpers/helper-misc.php:342
 
1790
  msgid "Latvia"
1791
  msgstr ""
1792
 
@@ -1794,15 +1778,18 @@ msgstr ""
1794
  msgid "Libya"
1795
  msgstr ""
1796
 
1797
- #: core/helpers/helper-form-templates.php:1199 core/helpers/helper-misc.php:369
 
1798
  msgid "Morocco"
1799
  msgstr ""
1800
 
1801
- #: core/helpers/helper-form-templates.php:1200 core/helpers/helper-misc.php:366
 
1802
  msgid "Monaco"
1803
  msgstr ""
1804
 
1805
- #: core/helpers/helper-form-templates.php:1201 core/helpers/helper-misc.php:365
 
1806
  msgid "Moldova, Republic of"
1807
  msgstr ""
1808
 
@@ -1814,11 +1801,13 @@ msgstr ""
1814
  msgid "Saint Martin (French part)"
1815
  msgstr ""
1816
 
1817
- #: core/helpers/helper-form-templates.php:1204 core/helpers/helper-misc.php:352
 
1818
  msgid "Madagascar"
1819
  msgstr ""
1820
 
1821
- #: core/helpers/helper-form-templates.php:1205 core/helpers/helper-misc.php:358
 
1822
  msgid "Marshall Islands"
1823
  msgstr ""
1824
 
@@ -1826,15 +1815,18 @@ msgstr ""
1826
  msgid "North Macedonia, Republic of"
1827
  msgstr ""
1828
 
1829
- #: core/helpers/helper-form-templates.php:1207 core/helpers/helper-misc.php:356
 
1830
  msgid "Mali"
1831
  msgstr ""
1832
 
1833
- #: core/helpers/helper-form-templates.php:1208 core/helpers/helper-misc.php:371
 
1834
  msgid "Myanmar"
1835
  msgstr ""
1836
 
1837
- #: core/helpers/helper-form-templates.php:1209 core/helpers/helper-misc.php:367
 
1838
  msgid "Mongolia"
1839
  msgstr ""
1840
 
@@ -1842,127 +1834,158 @@ msgstr ""
1842
  msgid "Macao"
1843
  msgstr ""
1844
 
1845
- #: core/helpers/helper-form-templates.php:1211 core/helpers/helper-misc.php:384
 
1846
  msgid "Northern Mariana Islands"
1847
  msgstr ""
1848
 
1849
- #: core/helpers/helper-form-templates.php:1212 core/helpers/helper-misc.php:359
 
1850
  msgid "Martinique"
1851
  msgstr ""
1852
 
1853
- #: core/helpers/helper-form-templates.php:1213 core/helpers/helper-misc.php:360
 
1854
  msgid "Mauritania"
1855
  msgstr ""
1856
 
1857
- #: core/helpers/helper-form-templates.php:1214 core/helpers/helper-misc.php:368
 
1858
  msgid "Montserrat"
1859
  msgstr ""
1860
 
1861
- #: core/helpers/helper-form-templates.php:1215 core/helpers/helper-misc.php:357
 
1862
  msgid "Malta"
1863
  msgstr ""
1864
 
1865
- #: core/helpers/helper-form-templates.php:1216 core/helpers/helper-misc.php:361
 
1866
  msgid "Mauritius"
1867
  msgstr ""
1868
 
1869
- #: core/helpers/helper-form-templates.php:1217 core/helpers/helper-misc.php:355
 
1870
  msgid "Maldives"
1871
  msgstr ""
1872
 
1873
- #: core/helpers/helper-form-templates.php:1218 core/helpers/helper-misc.php:353
 
1874
  msgid "Malawi"
1875
  msgstr ""
1876
 
1877
- #: core/helpers/helper-form-templates.php:1219 core/helpers/helper-misc.php:363
 
1878
  msgid "Mexico"
1879
  msgstr ""
1880
 
1881
- #: core/helpers/helper-form-templates.php:1220 core/helpers/helper-misc.php:354
 
1882
  msgid "Malaysia"
1883
  msgstr ""
1884
 
1885
- #: core/helpers/helper-form-templates.php:1221 core/helpers/helper-misc.php:370
 
1886
  msgid "Mozambique"
1887
  msgstr ""
1888
 
1889
- #: core/helpers/helper-form-templates.php:1222 core/helpers/helper-misc.php:372
 
1890
  msgid "Namibia"
1891
  msgstr ""
1892
 
1893
- #: core/helpers/helper-form-templates.php:1223 core/helpers/helper-misc.php:377
 
1894
  msgid "New Caledonia"
1895
  msgstr ""
1896
 
1897
- #: core/helpers/helper-form-templates.php:1224 core/helpers/helper-misc.php:380
 
1898
  msgid "Niger"
1899
  msgstr ""
1900
 
1901
- #: core/helpers/helper-form-templates.php:1225 core/helpers/helper-misc.php:383
 
1902
  msgid "Norfolk Island"
1903
  msgstr ""
1904
 
1905
- #: core/helpers/helper-form-templates.php:1226 core/helpers/helper-misc.php:381
 
1906
  msgid "Nigeria"
1907
  msgstr ""
1908
 
1909
- #: core/helpers/helper-form-templates.php:1227 core/helpers/helper-misc.php:379
 
1910
  msgid "Nicaragua"
1911
  msgstr ""
1912
 
1913
- #: core/helpers/helper-form-templates.php:1228 core/helpers/helper-misc.php:375
 
1914
  msgid "Netherlands"
1915
  msgstr ""
1916
 
1917
- #: core/helpers/helper-form-templates.php:1229 core/helpers/helper-misc.php:385
 
1918
  msgid "Norway"
1919
  msgstr ""
1920
 
1921
- #: core/helpers/helper-form-templates.php:1230 core/helpers/helper-misc.php:374
 
1922
  msgid "Nepal"
1923
  msgstr ""
1924
 
1925
- #: core/helpers/helper-form-templates.php:1231 core/helpers/helper-misc.php:373
 
1926
  msgid "Nauru"
1927
  msgstr ""
1928
 
1929
- #: core/helpers/helper-form-templates.php:1232 core/helpers/helper-misc.php:382
 
1930
  msgid "Niue"
1931
  msgstr ""
1932
 
1933
- #: core/helpers/helper-form-templates.php:1233 core/helpers/helper-misc.php:378
 
1934
  msgid "New Zealand"
1935
  msgstr ""
1936
 
1937
- #: core/helpers/helper-form-templates.php:1234 core/helpers/helper-misc.php:386
 
1938
  msgid "Oman"
1939
  msgstr ""
1940
 
1941
- #: core/helpers/helper-form-templates.php:1235 core/helpers/helper-misc.php:389
 
1942
  msgid "Panama"
1943
  msgstr ""
1944
 
1945
- #: core/helpers/helper-form-templates.php:1236 core/helpers/helper-misc.php:392
 
1946
  msgid "Peru"
1947
  msgstr ""
1948
 
1949
- #: core/helpers/helper-form-templates.php:1237 core/helpers/helper-misc.php:300
 
1950
  msgid "French Polynesia"
1951
  msgstr ""
1952
 
1953
- #: core/helpers/helper-form-templates.php:1238 core/helpers/helper-misc.php:390
 
1954
  msgid "Papua New Guinea"
1955
  msgstr ""
1956
 
1957
- #: core/helpers/helper-form-templates.php:1239 core/helpers/helper-misc.php:393
 
1958
  msgid "Philippines"
1959
  msgstr ""
1960
 
1961
- #: core/helpers/helper-form-templates.php:1240 core/helpers/helper-misc.php:387
 
1962
  msgid "Pakistan"
1963
  msgstr ""
1964
 
1965
- #: core/helpers/helper-form-templates.php:1241 core/helpers/helper-misc.php:395
 
1966
  msgid "Poland"
1967
  msgstr ""
1968
 
@@ -1970,7 +1993,8 @@ msgstr ""
1970
  msgid "Saint Pierre and Miquelon"
1971
  msgstr ""
1972
 
1973
- #: core/helpers/helper-form-templates.php:1243 core/helpers/helper-misc.php:397
 
1974
  msgid "Puerto Rico"
1975
  msgstr ""
1976
 
@@ -1978,27 +2002,33 @@ msgstr ""
1978
  msgid "Palestinian Territory, Occupied"
1979
  msgstr ""
1980
 
1981
- #: core/helpers/helper-form-templates.php:1245 core/helpers/helper-misc.php:396
 
1982
  msgid "Portugal"
1983
  msgstr ""
1984
 
1985
- #: core/helpers/helper-form-templates.php:1246 core/helpers/helper-misc.php:388
 
1986
  msgid "Palau"
1987
  msgstr ""
1988
 
1989
- #: core/helpers/helper-form-templates.php:1247 core/helpers/helper-misc.php:391
 
1990
  msgid "Paraguay"
1991
  msgstr ""
1992
 
1993
- #: core/helpers/helper-form-templates.php:1248 core/helpers/helper-misc.php:398
 
1994
  msgid "Qatar"
1995
  msgstr ""
1996
 
1997
- #: core/helpers/helper-form-templates.php:1249 core/helpers/helper-misc.php:399
 
1998
  msgid "Reunion"
1999
  msgstr ""
2000
 
2001
- #: core/helpers/helper-form-templates.php:1250 core/helpers/helper-misc.php:400
 
2002
  msgid "Romania"
2003
  msgstr ""
2004
 
@@ -2006,35 +2036,43 @@ msgstr ""
2006
  msgid "Serbia"
2007
  msgstr ""
2008
 
2009
- #: core/helpers/helper-form-templates.php:1252 core/helpers/helper-misc.php:401
 
2010
  msgid "Russian Federation"
2011
  msgstr ""
2012
 
2013
- #: core/helpers/helper-form-templates.php:1253 core/helpers/helper-misc.php:402
 
2014
  msgid "Rwanda"
2015
  msgstr ""
2016
 
2017
- #: core/helpers/helper-form-templates.php:1254 core/helpers/helper-misc.php:409
 
2018
  msgid "Saudi Arabia"
2019
  msgstr ""
2020
 
2021
- #: core/helpers/helper-form-templates.php:1255 core/helpers/helper-misc.php:416
 
2022
  msgid "Solomon Islands"
2023
  msgstr ""
2024
 
2025
- #: core/helpers/helper-form-templates.php:1256 core/helpers/helper-misc.php:411
 
2026
  msgid "Seychelles"
2027
  msgstr ""
2028
 
2029
- #: core/helpers/helper-form-templates.php:1257 core/helpers/helper-misc.php:424
 
2030
  msgid "Sudan"
2031
  msgstr ""
2032
 
2033
- #: core/helpers/helper-form-templates.php:1258 core/helpers/helper-misc.php:428
 
2034
  msgid "Sweden"
2035
  msgstr ""
2036
 
2037
- #: core/helpers/helper-form-templates.php:1259 core/helpers/helper-misc.php:413
 
2038
  msgid "Singapore"
2039
  msgstr ""
2040
 
@@ -2043,7 +2081,8 @@ msgstr ""
2043
  msgid "Saint Helena"
2044
  msgstr ""
2045
 
2046
- #: core/helpers/helper-form-templates.php:1261 core/helpers/helper-misc.php:415
 
2047
  msgid "Slovenia"
2048
  msgstr ""
2049
 
@@ -2055,23 +2094,28 @@ msgstr ""
2055
  msgid "Slovakia"
2056
  msgstr ""
2057
 
2058
- #: core/helpers/helper-form-templates.php:1264 core/helpers/helper-misc.php:412
 
2059
  msgid "Sierra Leone"
2060
  msgstr ""
2061
 
2062
- #: core/helpers/helper-form-templates.php:1265 core/helpers/helper-misc.php:407
 
2063
  msgid "San Marino"
2064
  msgstr ""
2065
 
2066
- #: core/helpers/helper-form-templates.php:1266 core/helpers/helper-misc.php:410
 
2067
  msgid "Senegal"
2068
  msgstr ""
2069
 
2070
- #: core/helpers/helper-form-templates.php:1267 core/helpers/helper-misc.php:417
 
2071
  msgid "Somalia"
2072
  msgstr ""
2073
 
2074
- #: core/helpers/helper-form-templates.php:1268 core/helpers/helper-misc.php:425
 
2075
  msgid "Suriname"
2076
  msgstr ""
2077
 
@@ -2079,11 +2123,13 @@ msgstr ""
2079
  msgid "South Sudan"
2080
  msgstr ""
2081
 
2082
- #: core/helpers/helper-form-templates.php:1270 core/helpers/helper-misc.php:408
 
2083
  msgid "Sao Tome and Principe"
2084
  msgstr ""
2085
 
2086
- #: core/helpers/helper-form-templates.php:1271 core/helpers/helper-misc.php:288
 
2087
  msgid "El Salvador"
2088
  msgstr ""
2089
 
@@ -2091,7 +2137,8 @@ msgstr ""
2091
  msgid "Sint Maarten (Dutch part)"
2092
  msgstr ""
2093
 
2094
- #: core/helpers/helper-form-templates.php:1273 core/helpers/helper-misc.php:430
 
2095
  msgid "Syrian Arab Republic"
2096
  msgstr ""
2097
 
@@ -2099,27 +2146,33 @@ msgstr ""
2099
  msgid "Eswatini"
2100
  msgstr ""
2101
 
2102
- #: core/helpers/helper-form-templates.php:1276 core/helpers/helper-misc.php:442
 
2103
  msgid "Turks and Caicos Islands"
2104
  msgstr ""
2105
 
2106
- #: core/helpers/helper-form-templates.php:1277 core/helpers/helper-misc.php:265
 
2107
  msgid "Chad"
2108
  msgstr ""
2109
 
2110
- #: core/helpers/helper-form-templates.php:1278 core/helpers/helper-misc.php:435
 
2111
  msgid "Togo"
2112
  msgstr ""
2113
 
2114
- #: core/helpers/helper-form-templates.php:1279 core/helpers/helper-misc.php:434
 
2115
  msgid "Thailand"
2116
  msgstr ""
2117
 
2118
- #: core/helpers/helper-form-templates.php:1280 core/helpers/helper-misc.php:432
 
2119
  msgid "Tajikistan"
2120
  msgstr ""
2121
 
2122
- #: core/helpers/helper-form-templates.php:1281 core/helpers/helper-misc.php:436
 
2123
  msgid "Tokelau"
2124
  msgstr ""
2125
 
@@ -2127,27 +2180,33 @@ msgstr ""
2127
  msgid "Timor-Leste"
2128
  msgstr ""
2129
 
2130
- #: core/helpers/helper-form-templates.php:1283 core/helpers/helper-misc.php:441
 
2131
  msgid "Turkmenistan"
2132
  msgstr ""
2133
 
2134
- #: core/helpers/helper-form-templates.php:1284 core/helpers/helper-misc.php:439
 
2135
  msgid "Tunisia"
2136
  msgstr ""
2137
 
2138
- #: core/helpers/helper-form-templates.php:1285 core/helpers/helper-misc.php:437
 
2139
  msgid "Tonga"
2140
  msgstr ""
2141
 
2142
- #: core/helpers/helper-form-templates.php:1286 core/helpers/helper-misc.php:440
 
2143
  msgid "Turkey"
2144
  msgstr ""
2145
 
2146
- #: core/helpers/helper-form-templates.php:1287 core/helpers/helper-misc.php:438
 
2147
  msgid "Trinidad and Tobago"
2148
  msgstr ""
2149
 
2150
- #: core/helpers/helper-form-templates.php:1288 core/helpers/helper-misc.php:443
 
2151
  msgid "Tuvalu"
2152
  msgstr ""
2153
 
@@ -2155,15 +2214,18 @@ msgstr ""
2155
  msgid "Taiwan"
2156
  msgstr ""
2157
 
2158
- #: core/helpers/helper-form-templates.php:1290 core/helpers/helper-misc.php:433
 
2159
  msgid "Tanzania, United Republic of"
2160
  msgstr ""
2161
 
2162
- #: core/helpers/helper-form-templates.php:1291 core/helpers/helper-misc.php:445
 
2163
  msgid "Ukraine"
2164
  msgstr ""
2165
 
2166
- #: core/helpers/helper-form-templates.php:1292 core/helpers/helper-misc.php:444
 
2167
  msgid "Uganda"
2168
  msgstr ""
2169
 
@@ -2171,23 +2233,28 @@ msgstr ""
2171
  msgid "United States of America"
2172
  msgstr ""
2173
 
2174
- #: core/helpers/helper-form-templates.php:1294 core/helpers/helper-misc.php:450
 
2175
  msgid "Uruguay"
2176
  msgstr ""
2177
 
2178
- #: core/helpers/helper-form-templates.php:1295 core/helpers/helper-misc.php:451
 
2179
  msgid "Uzbekistan"
2180
  msgstr ""
2181
 
2182
- #: core/helpers/helper-form-templates.php:1296 core/helpers/helper-misc.php:319
 
2183
  msgid "Holy See (Vatican City State)"
2184
  msgstr ""
2185
 
2186
- #: core/helpers/helper-form-templates.php:1297 core/helpers/helper-misc.php:405
 
2187
  msgid "Saint Vincent and the Grenadines"
2188
  msgstr ""
2189
 
2190
- #: core/helpers/helper-form-templates.php:1298 core/helpers/helper-misc.php:453
 
2191
  msgid "Venezuela"
2192
  msgstr ""
2193
 
@@ -2199,11 +2266,13 @@ msgstr ""
2199
  msgid "Virgin Islands, U.S."
2200
  msgstr ""
2201
 
2202
- #: core/helpers/helper-form-templates.php:1301 core/helpers/helper-misc.php:454
 
2203
  msgid "Vietnam"
2204
  msgstr ""
2205
 
2206
- #: core/helpers/helper-form-templates.php:1302 core/helpers/helper-misc.php:452
 
2207
  msgid "Vanuatu"
2208
  msgstr ""
2209
 
@@ -2211,7 +2280,8 @@ msgstr ""
2211
  msgid "Wallis and Futuna"
2212
  msgstr ""
2213
 
2214
- #: core/helpers/helper-form-templates.php:1304 core/helpers/helper-misc.php:406
 
2215
  msgid "Samoa"
2216
  msgstr ""
2217
 
@@ -2219,23 +2289,28 @@ msgstr ""
2219
  msgid "Kosovo"
2220
  msgstr ""
2221
 
2222
- #: core/helpers/helper-form-templates.php:1306 core/helpers/helper-misc.php:459
 
2223
  msgid "Yemen"
2224
  msgstr ""
2225
 
2226
- #: core/helpers/helper-form-templates.php:1307 core/helpers/helper-misc.php:362
 
2227
  msgid "Mayotte"
2228
  msgstr ""
2229
 
2230
- #: core/helpers/helper-form-templates.php:1308 core/helpers/helper-misc.php:418
 
2231
  msgid "South Africa"
2232
  msgstr ""
2233
 
2234
- #: core/helpers/helper-form-templates.php:1309 core/helpers/helper-misc.php:461
 
2235
  msgid "Zambia"
2236
  msgstr ""
2237
 
2238
- #: core/helpers/helper-form-templates.php:1310 core/helpers/helper-misc.php:462
 
2239
  msgid "Zimbabwe"
2240
  msgstr ""
2241
 
@@ -2915,23 +2990,13 @@ msgstr ""
2915
  msgid "Yoruba"
2916
  msgstr ""
2917
 
2918
- #: core/templates/admin/modal-deactivate.php:2
2919
- msgid "What about your data?"
2920
- msgstr ""
2921
-
2922
- #: core/templates/admin/modal-deactivate.php:9
2923
- msgid "Keep plugin data (recommended)"
2924
- msgstr ""
2925
-
2926
- #: core/templates/admin/modal-deactivate.php:13
2927
- msgid "Permanently delete plugin data"
2928
- msgstr ""
2929
-
2930
  #: core/templates/admin-form-modal.php:5
2931
  msgid "Choose a form"
2932
  msgstr ""
2933
 
2934
  #: core/templates/admin-form-modal.php:12
 
 
2935
  msgid "Insert"
2936
  msgstr ""
2937
 
@@ -2975,8 +3040,8 @@ msgstr ""
2975
 
2976
  #: core/templates/customize-form-item.php:33
2977
  #: core/templates/customize-form-part-footer.php:3
2978
- #: core/templates/parts/customize-checkbox.php:164
2979
- #: core/templates/parts/customize-radio.php:138
2980
  #: core/templates/parts/customize-select.php:126
2981
  msgid "Delete"
2982
  msgstr ""
@@ -3004,7 +3069,7 @@ msgid "Clear Results"
3004
  msgstr ""
3005
 
3006
  #: core/templates/customize-form-parts-drawer.php:38
3007
- #: inc/classes/class-happyforms.php:116
3008
  #: inc/templates/customize-controls/checkbox_dummy.php:7
3009
  #: inc/templates/customize-controls/email-parts-list-dummy.php:11
3010
  msgid "Upgrade"
@@ -3051,32 +3116,22 @@ msgid "Close"
3051
  msgstr ""
3052
 
3053
  #: core/templates/partials/customize-field-width.php:4
3054
- #: core/templates/parts/customize-checkbox.php:113
3055
- #: core/templates/parts/customize-radio.php:87
3056
  msgid "Full"
3057
  msgstr ""
3058
 
3059
  #: core/templates/partials/customize-field-width.php:5
3060
- #: core/templates/parts/customize-checkbox.php:114
3061
- #: core/templates/parts/customize-radio.php:88
3062
  msgid "Half"
3063
  msgstr ""
3064
 
3065
  #: core/templates/partials/customize-field-width.php:6
3066
- #: core/templates/parts/customize-checkbox.php:115
3067
- #: core/templates/parts/customize-radio.php:89
3068
  msgid "Third"
3069
  msgstr ""
3070
 
3071
  #: core/templates/partials/customize-field-width.php:7
3072
- #: core/templates/parts/customize-checkbox.php:116
3073
- #: core/templates/parts/customize-radio.php:90
3074
  msgid "Quarter"
3075
  msgstr ""
3076
 
3077
  #: core/templates/partials/customize-field-width.php:8
3078
- #: core/templates/parts/customize-checkbox.php:117
3079
- #: core/templates/parts/customize-radio.php:91
3080
  msgid "Auto"
3081
  msgstr ""
3082
 
@@ -3099,12 +3154,6 @@ msgstr ""
3099
  msgid "No choices added yet."
3100
  msgstr ""
3101
 
3102
- #: core/templates/parts/customize-checkbox.php:33
3103
- #: core/templates/parts/customize-radio.php:33
3104
- #: core/templates/parts/customize-select.php:37
3105
- msgid "Type or paste your choices here, adding each on a new line."
3106
- msgstr ""
3107
-
3108
  #: core/templates/parts/customize-checkbox.php:36
3109
  #: core/templates/parts/customize-radio.php:36
3110
  #: core/templates/parts/customize-select.php:40
@@ -3198,48 +3247,43 @@ msgstr ""
3198
  msgid "Vertical"
3199
  msgstr ""
3200
 
3201
- #: core/templates/parts/customize-checkbox.php:111
3202
- #: core/templates/parts/customize-radio.php:85
3203
- msgid "Choices width"
3204
- msgstr ""
3205
-
3206
- #: core/templates/parts/customize-checkbox.php:126
3207
  #: core/templates/parts/customize-email.php:58
3208
  #: core/templates/parts/customize-multi-line-text.php:82
3209
  #: core/templates/parts/customize-number.php:81
3210
- #: core/templates/parts/customize-radio.php:98
3211
  #: core/templates/parts/customize-select.php:86
3212
  #: core/templates/parts/customize-single-line-text.php:57
3213
- msgid "CSS classes"
3214
  msgstr ""
3215
 
3216
- #: core/templates/parts/customize-checkbox.php:148
3217
- #: core/templates/parts/customize-radio.php:122
3218
  #: core/templates/parts/customize-select.php:110
3219
  msgid "Make this choice default"
3220
  msgstr ""
3221
 
3222
- #: core/templates/parts/customize-checkbox.php:151
3223
- #: core/templates/parts/customize-radio.php:125
3224
  #: core/templates/parts/customize-select.php:113
3225
- #: inc/classes/class-happyforms.php:160
3226
  msgid "Limit submissions"
3227
  msgstr ""
3228
 
3229
- #: core/templates/parts/customize-checkbox.php:155
3230
- #: core/templates/parts/customize-radio.php:129
3231
  #: core/templates/parts/customize-select.php:117
3232
  msgid "Max submissions"
3233
  msgstr ""
3234
 
3235
- #: core/templates/parts/customize-checkbox.php:159
3236
- #: core/templates/parts/customize-radio.php:133
3237
  #: core/templates/parts/customize-select.php:121
3238
  msgid "Show remaining submissions"
3239
  msgstr ""
3240
 
3241
- #: core/templates/parts/customize-checkbox.php:165
3242
- #: core/templates/parts/customize-radio.php:139
3243
  #: core/templates/parts/customize-select.php:127
3244
  msgid "More"
3245
  msgstr ""
@@ -3307,67 +3351,65 @@ msgstr ""
3307
  msgid "Click to edit this part."
3308
  msgstr ""
3309
 
3310
- #: inc/classes/class-happyforms.php:130
3311
  msgid "Use reCAPTCHA"
3312
  msgstr ""
3313
 
3314
- #: inc/classes/class-happyforms.php:136
3315
  msgid "Save incomplete and abandoned submissions"
3316
  msgstr ""
3317
 
3318
- #: inc/classes/class-happyforms.php:142
3319
  msgid "Let respondents save a draft submission and come back to it later"
3320
  msgstr ""
3321
 
3322
- #: inc/classes/class-happyforms.php:148
3323
  msgid "Require respondents to review a submission before submitting"
3324
  msgstr ""
3325
 
3326
- #: inc/classes/class-happyforms.php:154
3327
- msgid "Disable buttons until required fields are answered"
3328
- msgstr ""
3329
-
3330
- #: inc/classes/class-happyforms.php:166
3331
  msgid "Schedule visibility"
3332
  msgstr ""
3333
 
3334
- #: inc/classes/class-happyforms.php:172
3335
  msgid "Store activity in database"
3336
  msgstr ""
3337
 
3338
- #: inc/classes/class-happyforms.php:178
3339
  msgid "Capture user metadata (IP, language, platform, time and timezone)"
3340
  msgstr ""
3341
 
3342
- #: inc/classes/class-happyforms.php:184
3343
  msgid "Block these email addresses, email domains and email partials"
3344
  msgstr ""
3345
 
3346
- #: inc/classes/class-happyforms.php:190
3347
  msgid "Block these words, phrases and letters"
3348
  msgstr ""
3349
 
3350
- #: inc/classes/class-happyforms.php:200
3351
  msgid "Include reply link"
3352
  msgstr ""
3353
 
3354
- #: inc/classes/class-happyforms.php:206
3355
  msgid "Include referral web address"
3356
  msgstr ""
3357
 
3358
- #: inc/classes/class-happyforms.php:212 inc/classes/class-happyforms.php:224
 
3359
  msgid "Attach .pdf"
3360
  msgstr ""
3361
 
3362
- #: inc/classes/class-happyforms.php:218
3363
  msgid "To email address"
3364
  msgstr ""
3365
 
3366
- #: inc/classes/class-happyforms.php:230
3367
  msgid "Send abandonment email"
3368
  msgstr ""
3369
 
3370
- #: inc/classes/class-happyforms.php:447 inc/classes/class-happyforms.php:465
 
3371
  msgid "Build your own WordPress form with Happyforms"
3372
  msgstr ""
3373
 
@@ -3403,12 +3445,12 @@ msgstr ""
3403
  msgid "Spam"
3404
  msgstr ""
3405
 
3406
- #: inc/classes/class-message-controller.php:702
3407
- #: inc/classes/class-message-controller.php:703
3408
  msgid "All Activity"
3409
  msgstr ""
3410
 
3411
- #: inc/classes/class-message-controller.php:704
3412
  msgid "No activity found."
3413
  msgstr ""
3414
 
@@ -3588,55 +3630,6 @@ msgstr ""
3588
  msgid "For formatted site URLs."
3589
  msgstr ""
3590
 
3591
- #: inc/templates/admin/modal-onboarding.php:4
3592
- msgid "Welcome to Happyforms"
3593
- msgstr ""
3594
-
3595
- #: inc/templates/admin/modal-onboarding.php:5
3596
- msgid "Tell us about yourself and we'll get you set up in no time*"
3597
- msgstr ""
3598
-
3599
- #: inc/templates/admin/modal-onboarding.php:13
3600
- #: inc/templates/admin/modal-onboarding.php:31
3601
- msgid ""
3602
- "Yes, I want to help support the free plugin by adding a powered by link in "
3603
- "the footer of my forms and emails."
3604
- msgstr ""
3605
-
3606
- #: inc/templates/admin/modal-onboarding.php:15
3607
- msgid "Complete Set Up"
3608
- msgstr ""
3609
-
3610
- #: inc/templates/admin/modal-onboarding.php:16
3611
- msgid "*By submitting you're okay for us to send you occasional marketing emails."
3612
- msgstr ""
3613
-
3614
- #: inc/templates/admin/modal-onboarding.php:24
3615
- msgid "Powered by Happyforms"
3616
- msgstr ""
3617
-
3618
- #: inc/templates/admin/modal-onboarding.php:25
3619
- msgid "All it takes is one little \"yes\" from you to help us out."
3620
- msgstr ""
3621
-
3622
- #: inc/templates/admin/modal-onboarding.php:33
3623
- msgid "Complete"
3624
- msgstr ""
3625
-
3626
- #: inc/templates/admin/modal-upgrade.php:2
3627
- msgid "You’ll need to upgrade<br> to access this"
3628
- msgstr ""
3629
-
3630
- #: inc/templates/admin/modal-upgrade.php:3
3631
- msgid ""
3632
- "We offer several, affordable paid plans that include our best features. "
3633
- "Upgrade today and increase your customer interactions."
3634
- msgstr ""
3635
-
3636
- #: inc/templates/admin/modal-upgrade.php:6
3637
- msgid "Start Your Risk-Free 14-Day Trial"
3638
- msgstr ""
3639
-
3640
  #: inc/templates/customize-controls/email-parts-list-dummy.php:8
3641
  msgid "field"
3642
  msgstr ""
@@ -3821,9 +3814,7 @@ msgid "Tracking ID"
3821
  msgstr ""
3822
 
3823
  #: integrations/templates/widget-mailpoet-dummy.php:5
3824
- msgid ""
3825
- "MailPoet plugin must first be installed and activated to use this "
3826
- "integration."
3827
  msgstr ""
3828
 
3829
  #: integrations/templates/widget-paypal-dummy.php:4
@@ -3862,18 +3853,73 @@ msgstr ""
3862
  msgid "Publishable key"
3863
  msgstr ""
3864
 
3865
- #. Plugin Name of the plugin/theme
3866
- msgid "Happyforms (free)"
 
3867
  msgstr ""
3868
 
3869
- #. Author URI of the plugin/theme
3870
- msgid "https://happyforms.io"
 
3871
  msgstr ""
3872
 
3873
- #. Description of the plugin/theme
3874
- msgid "We're changin' WordPress forms."
3875
  msgstr ""
3876
 
3877
- #. Author of the plugin/theme
3878
- msgid "Happyforms"
3879
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  # Copyright (C) 2021 Happyforms
2
+ # This file is distributed under the same license as the Happyforms (free) plugin.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Happyforms (free) 1.13.4\n"
6
+ "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/happyforms/\n"
 
 
 
 
 
7
  "Last-Translator: The Theme Foundry\n"
8
  "Language-Team: The Theme Foundry\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "POT-Creation-Date: 2021-10-06T08:13:31+00:00\n"
13
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
+ "X-Generator: WP-CLI 2.4.0\n"
15
+ "X-Domain: happyforms\n"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
 
17
+ #. Plugin Name of the plugin
18
+ msgid "Happyforms (free)"
19
  msgstr ""
20
 
21
+ #. Plugin URI of the plugin
22
+ #. Author URI of the plugin
23
+ msgid "https://happyforms.io"
24
  msgstr ""
25
 
26
+ #. Description of the plugin
27
+ msgid "We're changin' WordPress forms."
28
  msgstr ""
29
 
30
+ #. Author of the plugin
31
+ msgid "Happyforms"
32
  msgstr ""
33
 
34
+ #: core/classes/class-block.php:52
35
+ #: core/classes/class-form-controller.php:72
36
+ #: core/classes/class-happyforms-core.php:173
37
+ #: core/classes/class-happyforms-core.php:174
38
+ #: core/classes/class-happyforms-widget.php:13
39
+ #: core/helpers/helper-misc.php:1017
40
+ msgid "Forms"
41
  msgstr ""
42
 
43
+ #: core/classes/class-block.php:53
44
+ #: core/classes/class-happyforms-widget.php:15
45
+ msgid "Displays a form."
46
  msgstr ""
47
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  #: core/classes/class-form-admin.php:282
49
  msgid "Shortcode"
50
  msgstr ""
61
  msgid "Copy to clipboard"
62
  msgstr ""
63
 
 
 
 
 
 
 
 
 
 
 
 
 
64
  #: core/classes/class-form-admin.php:343
65
  msgid "Last modified"
66
  msgstr ""
75
  msgid "Duplicate"
76
  msgstr ""
77
 
78
+ #: core/classes/class-form-admin.php:423
79
+ #: inc/classes/class-message-admin.php:83
80
  msgid "Trash"
81
  msgstr ""
82
 
107
  msgid "Edit form"
108
  msgstr ""
109
 
110
+ #: core/classes/class-form-controller.php:78
111
+ msgid "View form"
112
+ msgstr ""
113
+
114
  #: core/classes/class-form-controller.php:79
115
  msgid "View forms"
116
  msgstr ""
119
  msgid "Search Forms"
120
  msgstr ""
121
 
122
+ #: core/classes/class-form-controller.php:81
123
+ #: core/assets/jsx/build/admin/block.js:141
124
+ #: core/assets/jsx/src/admin/block.js:27
125
+ msgid "No forms found."
126
+ msgstr ""
127
+
128
  #: core/classes/class-form-controller.php:82
129
  msgid "No forms found in Trash."
130
  msgstr ""
140
  msgid "(no title)"
141
  msgstr ""
142
 
143
+ #: core/classes/class-form-controller.php:637
144
  msgid " Copy"
145
  msgstr ""
146
 
153
  msgstr ""
154
 
155
  #: core/classes/class-form-email.php:71
156
+ msgid "Your message has been successfully sent. We appreciate you contacting us and we’ll be in touch soon."
 
 
157
  msgstr ""
158
 
159
  #: core/classes/class-form-email.php:87
161
  msgstr ""
162
 
163
  #: core/classes/class-form-email.php:96
164
+ #: inc/assets/jsx/build/admin/dashboard-modals.js:282
165
+ #: inc/assets/jsx/src/admin/dashboard-modals.js:51
166
  msgid "Email address"
167
  msgstr ""
168
 
170
  msgid "Email Bcc address"
171
  msgstr ""
172
 
173
+ #: core/classes/class-form-email.php:106
174
+ #: core/classes/class-form-email.php:138
175
  msgid "Email display name"
176
  msgstr ""
177
 
178
+ #: core/classes/class-form-email.php:111
179
+ #: core/classes/class-form-email.php:143
180
  msgid "Email subject"
181
  msgstr ""
182
 
255
  msgstr ""
256
 
257
  #: core/classes/class-form-messages.php:94
258
+ msgid "These messages are shown to respondents at the very top of the form to communicate the form’s status."
 
 
259
  msgstr ""
260
 
261
  #: core/classes/class-form-messages.php:104
263
  msgstr ""
264
 
265
  #: core/classes/class-form-messages.php:105
266
+ msgid "The messages are shown to respondents as they fill out the form to help them trigger an action."
 
 
267
  msgstr ""
268
 
269
  #: core/classes/class-form-messages.php:114
271
  msgstr ""
272
 
273
  #: core/classes/class-form-messages.php:115
274
+ msgid "These messages are shown to respondents when they try to submit their reply but one or more fields has a mistake."
 
 
275
  msgstr ""
276
 
277
  #: core/classes/class-form-messages.php:124
279
  msgstr ""
280
 
281
  #: core/classes/class-form-messages.php:125
282
+ msgid "These messages are shown to respondents as they fill out the form to help them avoid mistakes."
 
 
283
  msgstr ""
284
 
285
  #: core/classes/class-form-messages.php:132
330
  msgid "Remaining submissions"
331
  msgstr ""
332
 
 
 
 
 
 
 
 
 
333
  #: core/classes/class-form-part-library.php:227
334
  msgid "Missing validation callback for field %s"
335
  msgstr ""
336
 
337
+ #: core/classes/class-form-setup.php:98
338
  msgid "Validate your submission"
339
  msgstr ""
340
 
341
+ #: core/classes/class-form-setup.php:133
342
  msgid "Thank you. Your reply has been sent."
343
  msgstr ""
344
 
345
+ #: core/classes/class-form-setup.php:137
346
  msgid "Bummer. We can't submit your reply. Please check for mistakes."
347
  msgstr ""
348
 
349
+ #: core/classes/class-form-setup.php:141
350
  msgid "Send"
351
  msgstr ""
352
 
353
+ #: core/classes/class-form-setup.php:155
354
  msgid "After the form is submitted"
355
  msgstr ""
356
 
357
+ #: core/classes/class-form-setup.php:157
358
  msgid "Show a message"
359
  msgstr ""
360
 
361
+ #: core/classes/class-form-setup.php:158
362
  msgid "Show a message and allow to resubmit the form"
363
  msgstr ""
364
 
365
+ #: core/classes/class-form-setup.php:159
366
  msgid "Redirect to a web address"
367
  msgstr ""
368
 
369
+ #: core/classes/class-form-setup.php:172
370
  msgid "Add custom CSS classes to submit button"
371
  msgstr ""
372
 
373
+ #: core/classes/class-form-setup.php:181
374
  msgid "Submit button CSS classes"
375
  msgstr ""
376
 
377
+ #: core/classes/class-form-setup.php:190
378
  msgid "Add custom HTML ID to form"
379
  msgstr ""
380
 
381
+ #: core/classes/class-form-setup.php:199
382
  msgid "Form HTML ID"
383
  msgstr ""
384
 
385
+ #: core/classes/class-form-setup.php:219
386
  msgid "Form is successfully submitted"
387
  msgstr ""
388
 
389
+ #: core/classes/class-form-setup.php:224
390
  msgid "Form can’t be submitted"
391
  msgstr ""
392
 
393
+ #: core/classes/class-form-setup.php:229
394
  msgid "Submit form"
395
  msgstr ""
396
 
397
+ #: core/classes/class-form-shuffle.php:43
398
+ #: inc/classes/class-happyforms.php:125
399
  msgid "Randomize fields to prevent bias"
400
  msgstr ""
401
 
407
  msgid "Right-to-left"
408
  msgstr ""
409
 
410
+ #: core/classes/class-form-styles.php:75
411
+ #: core/classes/class-form-styles.php:149
412
  #: core/classes/class-form-styles.php:159
413
  #: core/classes/class-form-styles.php:282
414
  #: core/classes/class-form-styles.php:292
415
  msgid "Default"
416
  msgstr ""
417
 
418
+ #: core/classes/class-form-styles.php:76
419
+ #: core/classes/class-form-styles.php:148
420
  #: core/classes/class-form-styles.php:158
421
  #: core/classes/class-form-styles.php:291
422
  msgid "Narrow"
423
  msgstr ""
424
 
425
+ #: core/classes/class-form-styles.php:77
426
+ #: core/classes/class-form-styles.php:150
427
  #: core/classes/class-form-styles.php:160
428
  #: core/classes/class-form-styles.php:293
429
  msgid "Wide"
430
  msgstr ""
431
 
432
+ #: core/classes/class-form-styles.php:91
433
+ #: core/classes/class-form-styles.php:120
434
  #: core/classes/class-form-styles.php:263
435
  #: core/templates/parts/customize-checkbox.php:8
436
  #: core/templates/parts/customize-email.php:8
442
  msgid "Show"
443
  msgstr ""
444
 
445
+ #: core/classes/class-form-styles.php:92
446
+ #: core/classes/class-form-styles.php:121
447
  #: core/classes/class-form-styles.php:264
448
  #: core/templates/parts/customize-checkbox.php:15
449
  #: core/templates/parts/customize-email.php:15
551
  msgid "Full width"
552
  msgstr ""
553
 
554
+ #: core/classes/class-form-styles.php:546
 
 
 
 
 
 
 
 
555
  msgid "General"
556
  msgstr ""
557
 
558
+ #: core/classes/class-form-styles.php:551
559
+ #: core/classes/class-form-styles.php:866
560
  #: core/templates/partials/customize-field-width.php:2
561
  msgid "Width"
562
  msgstr ""
563
 
564
+ #: core/classes/class-form-styles.php:556
565
+ #: core/classes/class-form-styles.php:871
566
  msgid "Padding"
567
  msgstr ""
568
 
569
+ #: core/classes/class-form-styles.php:561
570
  msgid "Direction"
571
  msgstr ""
572
 
573
+ #: core/classes/class-form-styles.php:567
574
+ #: core/classes/class-form-styles.php:652
575
+ #: core/classes/class-form-styles.php:727
576
+ #: core/classes/class-form-styles.php:897
 
 
 
 
577
  msgid "Colors"
578
  msgstr ""
579
 
580
+ #: core/classes/class-form-styles.php:571
581
  msgid "Primary"
582
  msgstr ""
583
 
584
+ #: core/classes/class-form-styles.php:576
585
  msgid "Success message background"
586
  msgstr ""
587
 
588
+ #: core/classes/class-form-styles.php:581
589
  msgid "Success message text"
590
  msgstr ""
591
 
592
+ #: core/classes/class-form-styles.php:586
593
  msgid "Validation message text"
594
  msgstr ""
595
 
596
+ #: core/classes/class-form-styles.php:591
597
  msgid "Error message background"
598
  msgstr ""
599
 
600
+ #: core/classes/class-form-styles.php:596
601
  msgid "Error message text"
602
  msgstr ""
603
 
604
+ #: core/classes/class-form-styles.php:601
605
  #: inc/classes/parts/class-part-layout-title-dummy.php:8
606
  #: inc/classes/parts/class-part-title-dummy.php:8
607
  msgid "Title"
608
  msgstr ""
609
 
610
+ #: core/classes/class-form-styles.php:606
611
  msgid "Display"
612
  msgstr ""
613
 
614
+ #: core/classes/class-form-styles.php:611
615
+ #: core/classes/class-form-styles.php:886
616
  msgid "Alignment"
617
  msgstr ""
618
 
619
+ #: core/classes/class-form-styles.php:616
620
+ #: core/classes/class-form-styles.php:876
621
  msgid "Font size"
622
  msgstr ""
623
 
624
+ #: core/classes/class-form-styles.php:621
625
  msgid "Field borders & spacing"
626
  msgstr ""
627
 
628
+ #: core/classes/class-form-styles.php:626
629
+ #: core/classes/class-form-styles.php:656
630
+ #: core/classes/class-form-styles.php:856
631
+ #: core/classes/class-form-styles.php:911
632
  msgid "Border"
633
  msgstr ""
634
 
635
+ #: core/classes/class-form-styles.php:631
636
  msgid "Border location"
637
  msgstr ""
638
 
639
+ #: core/classes/class-form-styles.php:636
640
+ #: core/classes/class-form-styles.php:861
641
  msgid "Border radius"
642
  msgstr ""
643
 
644
+ #: core/classes/class-form-styles.php:641
645
  msgid "Outer spacing"
646
  msgstr ""
647
 
648
+ #: core/classes/class-form-styles.php:646
649
  msgid "Inner spacing"
650
  msgstr ""
651
 
652
+ #: core/classes/class-form-styles.php:661
653
  msgid "Border on focus"
654
  msgstr ""
655
 
656
+ #: core/classes/class-form-styles.php:666
657
+ #: core/classes/class-form-styles.php:761
658
+ #: core/classes/class-form-styles.php:786
659
+ #: core/classes/class-form-styles.php:901
660
  msgid "Background"
661
  msgstr ""
662
 
663
+ #: core/classes/class-form-styles.php:671
664
+ #: core/classes/class-form-styles.php:771
665
+ #: core/classes/class-form-styles.php:791
666
+ #: core/classes/class-form-styles.php:906
667
  msgid "Background on focus"
668
  msgstr ""
669
 
670
+ #: core/classes/class-form-styles.php:676
671
  msgid "Field labels & text"
672
  msgstr ""
673
 
674
+ #: core/classes/class-form-styles.php:681
675
  msgid "Toggle placeholder on field focus"
676
  msgstr ""
677
 
678
+ #: core/classes/class-form-styles.php:686
679
  msgid "Label alignment"
680
  msgstr ""
681
 
682
+ #: core/classes/class-form-styles.php:691
683
  msgid "Label font size"
684
  msgstr ""
685
 
686
+ #: core/classes/class-form-styles.php:696
687
  msgid "Label font weight"
688
  msgstr ""
689
 
690
+ #: core/classes/class-form-styles.php:701
691
  msgid "Hint alignment"
692
  msgstr ""
693
 
694
+ #: core/classes/class-form-styles.php:706
695
  msgid "Hint font size"
696
  msgstr ""
697
 
698
+ #: core/classes/class-form-styles.php:711
699
  msgid "Hint display"
700
  msgstr ""
701
 
702
+ #: core/classes/class-form-styles.php:716
703
  msgid "Placeholder &amp; value alignment"
704
  msgstr ""
705
 
706
+ #: core/classes/class-form-styles.php:721
707
  msgid "Value font size"
708
  msgstr ""
709
 
710
+ #: core/classes/class-form-styles.php:731
711
  #: core/templates/parts/customize-checkbox.php:4
712
+ #: core/templates/parts/customize-checkbox.php:133
713
  #: core/templates/parts/customize-email.php:4
714
  #: core/templates/parts/customize-multi-line-text.php:4
715
  #: core/templates/parts/customize-number.php:4
716
  #: core/templates/parts/customize-radio.php:4
717
+ #: core/templates/parts/customize-radio.php:107
718
  #: core/templates/parts/customize-select.php:4
719
  #: core/templates/parts/customize-select.php:105
720
  #: core/templates/parts/customize-single-line-text.php:4
721
  msgid "Label"
722
  msgstr ""
723
 
724
+ #: core/classes/class-form-styles.php:736
725
  msgid "Value"
726
  msgstr ""
727
 
728
+ #: core/classes/class-form-styles.php:741
729
  #: core/templates/parts/customize-email.php:20
730
  #: core/templates/parts/customize-multi-line-text.php:20
731
  #: core/templates/parts/customize-number.php:20
735
  msgid "Placeholder"
736
  msgstr ""
737
 
738
+ #: core/classes/class-form-styles.php:746
739
  #: core/templates/parts/customize-checkbox.php:20
740
  #: core/templates/parts/customize-email.php:28
741
  #: core/templates/parts/customize-multi-line-text.php:28
746
  msgid "Hint"
747
  msgstr ""
748
 
749
+ #: core/classes/class-form-styles.php:751
750
  msgid "Dropdowns"
751
  msgstr ""
752
 
753
+ #: core/classes/class-form-styles.php:757
754
  msgid "Items"
755
  msgstr ""
756
 
757
+ #: core/classes/class-form-styles.php:766
758
+ #: core/classes/class-form-styles.php:916
759
  msgid "Text"
760
  msgstr ""
761
 
762
+ #: core/classes/class-form-styles.php:776
763
  msgid "Text focused"
764
  msgstr ""
765
 
766
+ #: core/classes/class-form-styles.php:781
767
  msgid "Checkboxes & Radios"
768
  msgstr ""
769
 
770
+ #: core/classes/class-form-styles.php:796
771
  msgid "Checkmark"
772
  msgstr ""
773
 
774
+ #: core/classes/class-form-styles.php:801
775
  msgid "Rating"
776
  msgstr ""
777
 
778
+ #: core/classes/class-form-styles.php:806
779
  msgid "Rating star color"
780
  msgstr ""
781
 
782
+ #: core/classes/class-form-styles.php:811
783
  msgid "Rating star color on hover"
784
  msgstr ""
785
 
786
+ #: core/classes/class-form-styles.php:816
787
  msgid "Tables"
788
  msgstr ""
789
 
790
+ #: core/classes/class-form-styles.php:821
791
  msgid "Odd row primary"
792
  msgstr ""
793
 
794
+ #: core/classes/class-form-styles.php:826
795
  msgid "Odd row secondary"
796
  msgstr ""
797
 
798
+ #: core/classes/class-form-styles.php:831
799
  msgid "Even row primary"
800
  msgstr ""
801
 
802
+ #: core/classes/class-form-styles.php:836
803
  msgid "Even row secondary"
804
  msgstr ""
805
 
806
+ #: core/classes/class-form-styles.php:841
807
  msgid "Dividers"
808
  msgstr ""
809
 
810
+ #: core/classes/class-form-styles.php:846
811
  msgid "Color"
812
  msgstr ""
813
 
814
+ #: core/classes/class-form-styles.php:851
815
  msgid "Submit button"
816
  msgstr ""
817
 
818
+ #: core/classes/class-form-styles.php:881
819
  msgid "Font weight"
820
  msgstr ""
821
 
822
+ #: core/classes/class-form-styles.php:891
823
  msgid "Make button a field of last input"
824
  msgstr ""
825
 
826
+ #: core/classes/class-form-styles.php:921
827
  msgid "Text on focus"
828
  msgstr ""
829
 
830
+ #: core/classes/class-form-styles.php:933
831
  msgid "Add your own CSS code here to customize the appearance of your form."
832
  msgstr ""
833
 
834
+ #: core/classes/class-form-styles.php:935
835
+ msgid "For each rule you add, we'll prepend your form's HTML ID. This makes sure all styles added will only apply to this form. For example %s becomes %s."
 
 
836
  msgstr ""
837
 
838
+ #: core/classes/class-form-styles.php:943
839
+ msgid "The edit field automatically highlights code syntax. You can disable this in your <a href=\"%s\" class=\"%s\" target=\"_blank\">user profile</a> to work in plain text mode."
 
 
 
840
  msgstr ""
841
 
842
+ #: core/classes/class-form-styles.php:951
843
+ #: core/classes/class-form-styles.php:961
844
  msgid "Additional CSS"
845
  msgstr ""
846
 
847
  #: core/classes/class-happyforms-core.php:197
848
  #: core/classes/class-happyforms-core.php:198
849
+ #: inc/classes/class-message-controller.php:584
850
+ #: inc/classes/class-message-controller.php:585
851
  msgid "Activity"
852
  msgstr ""
853
 
859
 
860
  #: core/classes/class-happyforms-core.php:215
861
  #: core/classes/class-happyforms-core.php:216
862
+ #: core/assets/jsx/build/admin/block.js:170
863
+ #: core/assets/jsx/src/admin/block.js:56
864
  msgid "Settings"
865
  msgstr ""
866
 
867
+ #: core/classes/class-happyforms-core.php:455
868
  msgid "Add Form"
869
  msgstr ""
870
 
876
  msgid "Form:"
877
  msgstr ""
878
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
879
  #: core/classes/class-validation-messages.php:72
880
  msgid "Field is answered incorrectly"
881
  msgstr ""
962
  msgstr ""
963
 
964
  #: core/classes/class-wp-customize-form-manager.php:178
965
+ msgid "Still have questions? Head over to our <a href=\"%s\" target=\"_blank\">help guide</a>."
 
 
966
  msgstr ""
967
 
968
  #: core/classes/class-wp-customize-form-manager.php:185
969
+ msgid "Form saved. You can add this form to any Page, Post and Widget area. Have questions? <a href=\"%s\" target=\"_blank\">Ask for help in our support forums</a>."
 
 
 
970
  msgstr ""
971
 
972
  #: core/classes/parts/class-part-checkbox.php:10
977
  msgid "For checkboxes allowing multiple selections."
978
  msgstr ""
979
 
980
+ #: core/classes/parts/class-part-checkbox.php:81
981
  msgid "Select all"
982
  msgstr ""
983
 
984
+ #: core/classes/parts/class-part-checkbox.php:89
985
+ #: core/classes/parts/class-part-radio.php:82
986
  #: core/classes/parts/class-part-select.php:80
987
  msgid "Other"
988
  msgstr ""
1027
  msgid "For selecting one option from a long list. Default value adjustable."
1028
  msgstr ""
1029
 
1030
+ #: core/classes/parts/class-part-select.php:56
1031
+ #: core/assets/jsx/build/admin/block.js:127
1032
+ #: core/assets/jsx/src/admin/block.js:15
1033
+ msgid "Choose"
1034
+ msgstr ""
1035
+
1036
  #: core/classes/parts/class-part-single-line-text.php:8
1037
  msgid "Short Answer"
1038
  msgstr ""
1133
  msgid "Ascension Island"
1134
  msgstr ""
1135
 
1136
+ #: core/helpers/helper-form-templates.php:1067
1137
+ #: core/helpers/helper-misc.php:228
1138
  msgid "Andorra"
1139
  msgstr ""
1140
 
1141
+ #: core/helpers/helper-form-templates.php:1068
1142
+ #: core/helpers/helper-misc.php:446
1143
  msgid "United Arab Emirates"
1144
  msgstr ""
1145
 
1146
+ #: core/helpers/helper-form-templates.php:1069
1147
+ #: core/helpers/helper-misc.php:224
1148
  msgid "Afghanistan"
1149
  msgstr ""
1150
 
1151
+ #: core/helpers/helper-form-templates.php:1070
1152
+ #: core/helpers/helper-misc.php:232
1153
  msgid "Antigua and Barbuda"
1154
  msgstr ""
1155
 
1156
+ #: core/helpers/helper-form-templates.php:1071
1157
+ #: core/helpers/helper-misc.php:230
1158
  msgid "Anguilla"
1159
  msgstr ""
1160
 
1161
+ #: core/helpers/helper-form-templates.php:1072
1162
+ #: core/helpers/helper-misc.php:225
1163
  msgid "Albania"
1164
  msgstr ""
1165
 
1166
+ #: core/helpers/helper-form-templates.php:1073
1167
+ #: core/helpers/helper-misc.php:234
1168
  msgid "Armenia"
1169
  msgstr ""
1170
 
1171
+ #: core/helpers/helper-form-templates.php:1074
1172
+ #: core/helpers/helper-misc.php:229
1173
  msgid "Angola"
1174
  msgstr ""
1175
 
1176
+ #: core/helpers/helper-form-templates.php:1075
1177
+ #: core/helpers/helper-misc.php:233
1178
  msgid "Argentina"
1179
  msgstr ""
1180
 
1181
+ #: core/helpers/helper-form-templates.php:1076
1182
+ #: core/helpers/helper-misc.php:227
1183
  msgid "American Samoa"
1184
  msgstr ""
1185
 
1186
+ #: core/helpers/helper-form-templates.php:1077
1187
+ #: core/helpers/helper-misc.php:237
1188
  msgid "Austria"
1189
  msgstr ""
1190
 
1191
+ #: core/helpers/helper-form-templates.php:1078
1192
+ #: core/helpers/helper-misc.php:236
1193
  msgid "Australia"
1194
  msgstr ""
1195
 
1196
+ #: core/helpers/helper-form-templates.php:1079
1197
+ #: core/helpers/helper-misc.php:235
1198
  msgid "Aruba"
1199
  msgstr ""
1200
 
1202
  msgid "Åland Islands"
1203
  msgstr ""
1204
 
1205
+ #: core/helpers/helper-form-templates.php:1081
1206
+ #: core/helpers/helper-misc.php:238
1207
  msgid "Azerbaijan"
1208
  msgstr ""
1209
 
1211
  msgid "Bosnia and Herzegovina"
1212
  msgstr ""
1213
 
1214
+ #: core/helpers/helper-form-templates.php:1083
1215
+ #: core/helpers/helper-misc.php:242
1216
  msgid "Barbados"
1217
  msgstr ""
1218
 
1219
+ #: core/helpers/helper-form-templates.php:1084
1220
+ #: core/helpers/helper-misc.php:241
1221
  msgid "Bangladesh"
1222
  msgstr ""
1223
 
1224
+ #: core/helpers/helper-form-templates.php:1085
1225
+ #: core/helpers/helper-misc.php:244
1226
  msgid "Belgium"
1227
  msgstr ""
1228
 
1229
+ #: core/helpers/helper-form-templates.php:1086
1230
+ #: core/helpers/helper-misc.php:257
1231
  msgid "Burkina Faso"
1232
  msgstr ""
1233
 
1234
+ #: core/helpers/helper-form-templates.php:1087
1235
+ #: core/helpers/helper-misc.php:256
1236
  msgid "Bulgaria"
1237
  msgstr ""
1238
 
1239
+ #: core/helpers/helper-form-templates.php:1088
1240
+ #: core/helpers/helper-misc.php:240
1241
  msgid "Bahrain"
1242
  msgstr ""
1243
 
1244
+ #: core/helpers/helper-form-templates.php:1089
1245
+ #: core/helpers/helper-misc.php:258
1246
  msgid "Burundi"
1247
  msgstr ""
1248
 
1249
+ #: core/helpers/helper-form-templates.php:1090
1250
+ #: core/helpers/helper-misc.php:246
1251
  msgid "Benin"
1252
  msgstr ""
1253
 
1255
  msgid "Saint Barthélemy"
1256
  msgstr ""
1257
 
1258
+ #: core/helpers/helper-form-templates.php:1092
1259
+ #: core/helpers/helper-misc.php:247
1260
  msgid "Bermuda"
1261
  msgstr ""
1262
 
1263
+ #: core/helpers/helper-form-templates.php:1093
1264
+ #: core/helpers/helper-misc.php:255
1265
  msgid "Brunei Darussalam"
1266
  msgstr ""
1267
 
1268
+ #: core/helpers/helper-form-templates.php:1094
1269
+ #: core/helpers/helper-misc.php:249
1270
  msgid "Bolivia"
1271
  msgstr ""
1272
 
1274
  msgid "Bonaire, Sint Eustatius and Saba"
1275
  msgstr ""
1276
 
1277
+ #: core/helpers/helper-form-templates.php:1096
1278
+ #: core/helpers/helper-misc.php:253
1279
  msgid "Brazil"
1280
  msgstr ""
1281
 
1282
+ #: core/helpers/helper-form-templates.php:1097
1283
+ #: core/helpers/helper-misc.php:239
1284
  msgid "Bahamas"
1285
  msgstr ""
1286
 
1287
+ #: core/helpers/helper-form-templates.php:1098
1288
+ #: core/helpers/helper-misc.php:248
1289
  msgid "Bhutan"
1290
  msgstr ""
1291
 
1292
+ #: core/helpers/helper-form-templates.php:1099
1293
+ #: core/helpers/helper-misc.php:251
1294
  msgid "Botswana"
1295
  msgstr ""
1296
 
1297
+ #: core/helpers/helper-form-templates.php:1100
1298
+ #: core/helpers/helper-misc.php:243
1299
  msgid "Belarus"
1300
  msgstr ""
1301
 
1302
+ #: core/helpers/helper-form-templates.php:1101
1303
+ #: core/helpers/helper-misc.php:245
1304
  msgid "Belize"
1305
  msgstr ""
1306
 
1307
+ #: core/helpers/helper-form-templates.php:1102
1308
+ #: core/helpers/helper-misc.php:261
1309
  msgid "Canada"
1310
  msgstr ""
1311
 
1312
+ #: core/helpers/helper-form-templates.php:1103
1313
+ #: core/helpers/helper-misc.php:269
1314
  msgid "Cocos (Keeling) Islands"
1315
  msgstr ""
1316
 
1317
+ #: core/helpers/helper-form-templates.php:1104
1318
+ #: core/helpers/helper-misc.php:273
1319
  msgid "Congo, the Democratic Republic of the"
1320
  msgstr ""
1321
 
1322
+ #: core/helpers/helper-form-templates.php:1105
1323
+ #: core/helpers/helper-misc.php:264
1324
  msgid "Central African Republic"
1325
  msgstr ""
1326
 
1327
+ #: core/helpers/helper-form-templates.php:1106
1328
+ #: core/helpers/helper-misc.php:272
1329
  msgid "Congo"
1330
  msgstr ""
1331
 
1332
+ #: core/helpers/helper-form-templates.php:1107
1333
+ #: core/helpers/helper-misc.php:429
1334
  msgid "Switzerland"
1335
  msgstr ""
1336
 
1338
  msgid "Cote D'Ivoire"
1339
  msgstr ""
1340
 
1341
+ #: core/helpers/helper-form-templates.php:1109
1342
+ #: core/helpers/helper-misc.php:274
1343
  msgid "Cook Islands"
1344
  msgstr ""
1345
 
1346
+ #: core/helpers/helper-form-templates.php:1110
1347
+ #: core/helpers/helper-misc.php:266
1348
  msgid "Chile"
1349
  msgstr ""
1350
 
1351
+ #: core/helpers/helper-form-templates.php:1111
1352
+ #: core/helpers/helper-misc.php:260
1353
  msgid "Cameroon"
1354
  msgstr ""
1355
 
1356
+ #: core/helpers/helper-form-templates.php:1112
1357
+ #: core/helpers/helper-misc.php:267
1358
  msgid "China"
1359
  msgstr ""
1360
 
1361
+ #: core/helpers/helper-form-templates.php:1113
1362
+ #: core/helpers/helper-misc.php:270
1363
  msgid "Colombia"
1364
  msgstr ""
1365
 
1366
+ #: core/helpers/helper-form-templates.php:1114
1367
+ #: core/helpers/helper-misc.php:275
1368
  msgid "Costa Rica"
1369
  msgstr ""
1370
 
1371
+ #: core/helpers/helper-form-templates.php:1115
1372
+ #: core/helpers/helper-misc.php:278
1373
  msgid "Cuba"
1374
  msgstr ""
1375
 
1376
+ #: core/helpers/helper-form-templates.php:1116
1377
+ #: core/helpers/helper-misc.php:262
1378
  msgid "Cape Verde"
1379
  msgstr ""
1380
 
1382
  msgid "Curaçao"
1383
  msgstr ""
1384
 
1385
+ #: core/helpers/helper-form-templates.php:1118
1386
+ #: core/helpers/helper-misc.php:268
1387
  msgid "Christmas Island"
1388
  msgstr ""
1389
 
1390
+ #: core/helpers/helper-form-templates.php:1119
1391
+ #: core/helpers/helper-misc.php:279
1392
  msgid "Cyprus"
1393
  msgstr ""
1394
 
1395
+ #: core/helpers/helper-form-templates.php:1120
1396
+ #: core/helpers/helper-misc.php:280
1397
  msgid "Czech Republic"
1398
  msgstr ""
1399
 
1400
+ #: core/helpers/helper-form-templates.php:1121
1401
+ #: core/helpers/helper-misc.php:305
1402
  msgid "Germany"
1403
  msgstr ""
1404
 
1405
+ #: core/helpers/helper-form-templates.php:1122
1406
+ #: core/helpers/helper-misc.php:282
1407
  msgid "Djibouti"
1408
  msgstr ""
1409
 
1410
+ #: core/helpers/helper-form-templates.php:1123
1411
+ #: core/helpers/helper-misc.php:281
1412
  msgid "Denmark"
1413
  msgstr ""
1414
 
1415
+ #: core/helpers/helper-form-templates.php:1124
1416
+ #: core/helpers/helper-misc.php:283
1417
  msgid "Dominica"
1418
  msgstr ""
1419
 
1420
+ #: core/helpers/helper-form-templates.php:1125
1421
+ #: core/helpers/helper-misc.php:284
1422
  msgid "Dominican Republic"
1423
  msgstr ""
1424
 
1425
+ #: core/helpers/helper-form-templates.php:1126
1426
+ #: core/helpers/helper-misc.php:226
1427
  msgid "Algeria"
1428
  msgstr ""
1429
 
1430
+ #: core/helpers/helper-form-templates.php:1127
1431
+ #: core/helpers/helper-misc.php:286
1432
  msgid "Ecuador"
1433
  msgstr ""
1434
 
1435
+ #: core/helpers/helper-form-templates.php:1128
1436
+ #: core/helpers/helper-misc.php:291
1437
  msgid "Estonia"
1438
  msgstr ""
1439
 
1440
+ #: core/helpers/helper-form-templates.php:1129
1441
+ #: core/helpers/helper-misc.php:287
1442
  msgid "Egypt"
1443
  msgstr ""
1444
 
1445
+ #: core/helpers/helper-form-templates.php:1130
1446
+ #: core/helpers/helper-misc.php:458
1447
  msgid "Western Sahara"
1448
  msgstr ""
1449
 
1450
+ #: core/helpers/helper-form-templates.php:1131
1451
+ #: core/helpers/helper-misc.php:290
1452
  msgid "Eritrea"
1453
  msgstr ""
1454
 
1455
+ #: core/helpers/helper-form-templates.php:1132
1456
+ #: core/helpers/helper-misc.php:420
1457
  msgid "Spain"
1458
  msgstr ""
1459
 
1460
+ #: core/helpers/helper-form-templates.php:1133
1461
+ #: core/helpers/helper-misc.php:292
1462
  msgid "Ethiopia"
1463
  msgstr ""
1464
 
1465
+ #: core/helpers/helper-form-templates.php:1134
1466
+ #: core/helpers/helper-misc.php:296
1467
  msgid "Finland"
1468
  msgstr ""
1469
 
1470
+ #: core/helpers/helper-form-templates.php:1135
1471
+ #: core/helpers/helper-misc.php:295
1472
  msgid "Fiji"
1473
  msgstr ""
1474
 
1475
+ #: core/helpers/helper-form-templates.php:1136
1476
+ #: core/helpers/helper-misc.php:293
1477
  msgid "Falkland Islands (Malvinas)"
1478
  msgstr ""
1479
 
1480
+ #: core/helpers/helper-form-templates.php:1137
1481
+ #: core/helpers/helper-misc.php:364
1482
  msgid "Micronesia, Federated States of"
1483
  msgstr ""
1484
 
1485
+ #: core/helpers/helper-form-templates.php:1138
1486
+ #: core/helpers/helper-misc.php:294
1487
  msgid "Faroe Islands"
1488
  msgstr ""
1489
 
1490
+ #: core/helpers/helper-form-templates.php:1139
1491
+ #: core/helpers/helper-misc.php:297
1492
  msgid "France"
1493
  msgstr ""
1494
 
1495
+ #: core/helpers/helper-form-templates.php:1140
1496
+ #: core/helpers/helper-misc.php:302
1497
  msgid "Gabon"
1498
  msgstr ""
1499
 
1500
+ #: core/helpers/helper-form-templates.php:1141
1501
+ #: core/helpers/helper-misc.php:447
1502
  msgid "United Kingdom"
1503
  msgstr ""
1504
 
1505
+ #: core/helpers/helper-form-templates.php:1142
1506
+ #: core/helpers/helper-misc.php:310
1507
  msgid "Grenada"
1508
  msgstr ""
1509
 
1510
+ #: core/helpers/helper-form-templates.php:1143
1511
+ #: core/helpers/helper-misc.php:304
1512
  msgid "Georgia"
1513
  msgstr ""
1514
 
1515
+ #: core/helpers/helper-form-templates.php:1144
1516
+ #: core/helpers/helper-misc.php:299
1517
  msgid "French Guiana"
1518
  msgstr ""
1519
 
1521
  msgid "Guernsey"
1522
  msgstr ""
1523
 
1524
+ #: core/helpers/helper-form-templates.php:1146
1525
+ #: core/helpers/helper-misc.php:306
1526
  msgid "Ghana"
1527
  msgstr ""
1528
 
1529
+ #: core/helpers/helper-form-templates.php:1147
1530
+ #: core/helpers/helper-misc.php:307
1531
  msgid "Gibraltar"
1532
  msgstr ""
1533
 
1534
+ #: core/helpers/helper-form-templates.php:1148
1535
+ #: core/helpers/helper-misc.php:309
1536
  msgid "Greenland"
1537
  msgstr ""
1538
 
1539
+ #: core/helpers/helper-form-templates.php:1149
1540
+ #: core/helpers/helper-misc.php:303
1541
  msgid "Gambia"
1542
  msgstr ""
1543
 
1544
+ #: core/helpers/helper-form-templates.php:1150
1545
+ #: core/helpers/helper-misc.php:314
1546
  msgid "Guinea"
1547
  msgstr ""
1548
 
1549
+ #: core/helpers/helper-form-templates.php:1151
1550
+ #: core/helpers/helper-misc.php:311
1551
  msgid "Guadeloupe"
1552
  msgstr ""
1553
 
1554
+ #: core/helpers/helper-form-templates.php:1152
1555
+ #: core/helpers/helper-misc.php:289
1556
  msgid "Equatorial Guinea"
1557
  msgstr ""
1558
 
1559
+ #: core/helpers/helper-form-templates.php:1153
1560
+ #: core/helpers/helper-misc.php:308
1561
  msgid "Greece"
1562
  msgstr ""
1563
 
1564
+ #: core/helpers/helper-form-templates.php:1154
1565
+ #: core/helpers/helper-misc.php:313
1566
  msgid "Guatemala"
1567
  msgstr ""
1568
 
1569
+ #: core/helpers/helper-form-templates.php:1155
1570
+ #: core/helpers/helper-misc.php:312
1571
  msgid "Guam"
1572
  msgstr ""
1573
 
1574
+ #: core/helpers/helper-form-templates.php:1156
1575
+ #: core/helpers/helper-misc.php:315
1576
  msgid "Guinea-Bissau"
1577
  msgstr ""
1578
 
1579
+ #: core/helpers/helper-form-templates.php:1157
1580
+ #: core/helpers/helper-misc.php:316
1581
  msgid "Guyana"
1582
  msgstr ""
1583
 
1584
+ #: core/helpers/helper-form-templates.php:1158
1585
+ #: core/helpers/helper-misc.php:321
1586
  msgid "Hong Kong"
1587
  msgstr ""
1588
 
1589
+ #: core/helpers/helper-form-templates.php:1159
1590
+ #: core/helpers/helper-misc.php:320
1591
  msgid "Honduras"
1592
  msgstr ""
1593
 
1595
  msgid "Croatia"
1596
  msgstr ""
1597
 
1598
+ #: core/helpers/helper-form-templates.php:1161
1599
+ #: core/helpers/helper-misc.php:317
1600
  msgid "Haiti"
1601
  msgstr ""
1602
 
1603
+ #: core/helpers/helper-form-templates.php:1162
1604
+ #: core/helpers/helper-misc.php:322
1605
  msgid "Hungary"
1606
  msgstr ""
1607
 
1608
+ #: core/helpers/helper-form-templates.php:1163
1609
+ #: core/helpers/helper-misc.php:325
1610
  msgid "Indonesia"
1611
  msgstr ""
1612
 
1613
+ #: core/helpers/helper-form-templates.php:1164
1614
+ #: core/helpers/helper-misc.php:328
1615
  msgid "Ireland"
1616
  msgstr ""
1617
 
1618
+ #: core/helpers/helper-form-templates.php:1165
1619
+ #: core/helpers/helper-misc.php:329
1620
  msgid "Israel"
1621
  msgstr ""
1622
 
1624
  msgid "Isle of Man"
1625
  msgstr ""
1626
 
1627
+ #: core/helpers/helper-form-templates.php:1167
1628
+ #: core/helpers/helper-misc.php:324
1629
  msgid "India"
1630
  msgstr ""
1631
 
1632
+ #: core/helpers/helper-form-templates.php:1168
1633
+ #: core/helpers/helper-misc.php:254
1634
  msgid "British Indian Ocean Territory"
1635
  msgstr ""
1636
 
1637
+ #: core/helpers/helper-form-templates.php:1169
1638
+ #: core/helpers/helper-misc.php:327
1639
  msgid "Iraq"
1640
  msgstr ""
1641
 
1643
  msgid "Iran, Islamic Republic of"
1644
  msgstr ""
1645
 
1646
+ #: core/helpers/helper-form-templates.php:1171
1647
+ #: core/helpers/helper-misc.php:323
1648
  msgid "Iceland"
1649
  msgstr ""
1650
 
1651
+ #: core/helpers/helper-form-templates.php:1172
1652
+ #: core/helpers/helper-misc.php:330
1653
  msgid "Italy"
1654
  msgstr ""
1655
 
1657
  msgid "Jersey"
1658
  msgstr ""
1659
 
1660
+ #: core/helpers/helper-form-templates.php:1174
1661
+ #: core/helpers/helper-misc.php:331
1662
  msgid "Jamaica"
1663
  msgstr ""
1664
 
1665
+ #: core/helpers/helper-form-templates.php:1175
1666
+ #: core/helpers/helper-misc.php:333
1667
  msgid "Jordan"
1668
  msgstr ""
1669
 
1670
+ #: core/helpers/helper-form-templates.php:1176
1671
+ #: core/helpers/helper-misc.php:332
1672
  msgid "Japan"
1673
  msgstr ""
1674
 
1675
+ #: core/helpers/helper-form-templates.php:1177
1676
+ #: core/helpers/helper-misc.php:335
1677
  msgid "Kenya"
1678
  msgstr ""
1679
 
1680
+ #: core/helpers/helper-form-templates.php:1178
1681
+ #: core/helpers/helper-misc.php:340
1682
  msgid "Kyrgyzstan"
1683
  msgstr ""
1684
 
1685
+ #: core/helpers/helper-form-templates.php:1179
1686
+ #: core/helpers/helper-misc.php:259
1687
  msgid "Cambodia"
1688
  msgstr ""
1689
 
1690
+ #: core/helpers/helper-form-templates.php:1180
1691
+ #: core/helpers/helper-misc.php:336
1692
  msgid "Kiribati"
1693
  msgstr ""
1694
 
1695
+ #: core/helpers/helper-form-templates.php:1181
1696
+ #: core/helpers/helper-misc.php:271
1697
  msgid "Comoros"
1698
  msgstr ""
1699
 
1700
+ #: core/helpers/helper-form-templates.php:1182
1701
+ #: core/helpers/helper-misc.php:403
1702
  msgid "Saint Kitts and Nevis"
1703
  msgstr ""
1704
 
1710
  msgid "South Korea"
1711
  msgstr ""
1712
 
1713
+ #: core/helpers/helper-form-templates.php:1185
1714
+ #: core/helpers/helper-misc.php:339
1715
  msgid "Kuwait"
1716
  msgstr ""
1717
 
1718
+ #: core/helpers/helper-form-templates.php:1186
1719
+ #: core/helpers/helper-misc.php:263
1720
  msgid "Cayman Islands"
1721
  msgstr ""
1722
 
1723
+ #: core/helpers/helper-form-templates.php:1187
1724
+ #: core/helpers/helper-misc.php:334
1725
  msgid "Kazakhstan"
1726
  msgstr ""
1727
 
1729
  msgid "Lao People's Democratic Republic"
1730
  msgstr ""
1731
 
1732
+ #: core/helpers/helper-form-templates.php:1189
1733
+ #: core/helpers/helper-misc.php:343
1734
  msgid "Lebanon"
1735
  msgstr ""
1736
 
1737
+ #: core/helpers/helper-form-templates.php:1190
1738
+ #: core/helpers/helper-misc.php:404
1739
  msgid "Saint Lucia"
1740
  msgstr ""
1741
 
1742
+ #: core/helpers/helper-form-templates.php:1191
1743
+ #: core/helpers/helper-misc.php:347
1744
  msgid "Liechtenstein"
1745
  msgstr ""
1746
 
1747
+ #: core/helpers/helper-form-templates.php:1192
1748
+ #: core/helpers/helper-misc.php:421
1749
  msgid "Sri Lanka"
1750
  msgstr ""
1751
 
1752
+ #: core/helpers/helper-form-templates.php:1193
1753
+ #: core/helpers/helper-misc.php:345
1754
  msgid "Liberia"
1755
  msgstr ""
1756
 
1757
+ #: core/helpers/helper-form-templates.php:1194
1758
+ #: core/helpers/helper-misc.php:344
1759
  msgid "Lesotho"
1760
  msgstr ""
1761
 
1762
+ #: core/helpers/helper-form-templates.php:1195
1763
+ #: core/helpers/helper-misc.php:348
1764
  msgid "Lithuania"
1765
  msgstr ""
1766
 
1767
+ #: core/helpers/helper-form-templates.php:1196
1768
+ #: core/helpers/helper-misc.php:349
1769
  msgid "Luxembourg"
1770
  msgstr ""
1771
 
1772
+ #: core/helpers/helper-form-templates.php:1197
1773
+ #: core/helpers/helper-misc.php:342
1774
  msgid "Latvia"
1775
  msgstr ""
1776
 
1778
  msgid "Libya"
1779
  msgstr ""
1780
 
1781
+ #: core/helpers/helper-form-templates.php:1199
1782
+ #: core/helpers/helper-misc.php:369
1783
  msgid "Morocco"
1784
  msgstr ""
1785
 
1786
+ #: core/helpers/helper-form-templates.php:1200
1787
+ #: core/helpers/helper-misc.php:366
1788
  msgid "Monaco"
1789
  msgstr ""
1790
 
1791
+ #: core/helpers/helper-form-templates.php:1201
1792
+ #: core/helpers/helper-misc.php:365
1793
  msgid "Moldova, Republic of"
1794
  msgstr ""
1795
 
1801
  msgid "Saint Martin (French part)"
1802
  msgstr ""
1803
 
1804
+ #: core/helpers/helper-form-templates.php:1204
1805
+ #: core/helpers/helper-misc.php:352
1806
  msgid "Madagascar"
1807
  msgstr ""
1808
 
1809
+ #: core/helpers/helper-form-templates.php:1205
1810
+ #: core/helpers/helper-misc.php:358
1811
  msgid "Marshall Islands"
1812
  msgstr ""
1813
 
1815
  msgid "North Macedonia, Republic of"
1816
  msgstr ""
1817
 
1818
+ #: core/helpers/helper-form-templates.php:1207
1819
+ #: core/helpers/helper-misc.php:356
1820
  msgid "Mali"
1821
  msgstr ""
1822
 
1823
+ #: core/helpers/helper-form-templates.php:1208
1824
+ #: core/helpers/helper-misc.php:371
1825
  msgid "Myanmar"
1826
  msgstr ""
1827
 
1828
+ #: core/helpers/helper-form-templates.php:1209
1829
+ #: core/helpers/helper-misc.php:367
1830
  msgid "Mongolia"
1831
  msgstr ""
1832
 
1834
  msgid "Macao"
1835
  msgstr ""
1836
 
1837
+ #: core/helpers/helper-form-templates.php:1211
1838
+ #: core/helpers/helper-misc.php:384
1839
  msgid "Northern Mariana Islands"
1840
  msgstr ""
1841
 
1842
+ #: core/helpers/helper-form-templates.php:1212
1843
+ #: core/helpers/helper-misc.php:359
1844
  msgid "Martinique"
1845
  msgstr ""
1846
 
1847
+ #: core/helpers/helper-form-templates.php:1213
1848
+ #: core/helpers/helper-misc.php:360
1849
  msgid "Mauritania"
1850
  msgstr ""
1851
 
1852
+ #: core/helpers/helper-form-templates.php:1214
1853
+ #: core/helpers/helper-misc.php:368
1854
  msgid "Montserrat"
1855
  msgstr ""
1856
 
1857
+ #: core/helpers/helper-form-templates.php:1215
1858
+ #: core/helpers/helper-misc.php:357
1859
  msgid "Malta"
1860
  msgstr ""
1861
 
1862
+ #: core/helpers/helper-form-templates.php:1216
1863
+ #: core/helpers/helper-misc.php:361
1864
  msgid "Mauritius"
1865
  msgstr ""
1866
 
1867
+ #: core/helpers/helper-form-templates.php:1217
1868
+ #: core/helpers/helper-misc.php:355
1869
  msgid "Maldives"
1870
  msgstr ""
1871
 
1872
+ #: core/helpers/helper-form-templates.php:1218
1873
+ #: core/helpers/helper-misc.php:353
1874
  msgid "Malawi"
1875
  msgstr ""
1876
 
1877
+ #: core/helpers/helper-form-templates.php:1219
1878
+ #: core/helpers/helper-misc.php:363
1879
  msgid "Mexico"
1880
  msgstr ""
1881
 
1882
+ #: core/helpers/helper-form-templates.php:1220
1883
+ #: core/helpers/helper-misc.php:354
1884
  msgid "Malaysia"
1885
  msgstr ""
1886
 
1887
+ #: core/helpers/helper-form-templates.php:1221
1888
+ #: core/helpers/helper-misc.php:370
1889
  msgid "Mozambique"
1890
  msgstr ""
1891
 
1892
+ #: core/helpers/helper-form-templates.php:1222
1893
+ #: core/helpers/helper-misc.php:372
1894
  msgid "Namibia"
1895
  msgstr ""
1896
 
1897
+ #: core/helpers/helper-form-templates.php:1223
1898
+ #: core/helpers/helper-misc.php:377
1899
  msgid "New Caledonia"
1900
  msgstr ""
1901
 
1902
+ #: core/helpers/helper-form-templates.php:1224
1903
+ #: core/helpers/helper-misc.php:380
1904
  msgid "Niger"
1905
  msgstr ""
1906
 
1907
+ #: core/helpers/helper-form-templates.php:1225
1908
+ #: core/helpers/helper-misc.php:383
1909
  msgid "Norfolk Island"
1910
  msgstr ""
1911
 
1912
+ #: core/helpers/helper-form-templates.php:1226
1913
+ #: core/helpers/helper-misc.php:381
1914
  msgid "Nigeria"
1915
  msgstr ""
1916
 
1917
+ #: core/helpers/helper-form-templates.php:1227
1918
+ #: core/helpers/helper-misc.php:379
1919
  msgid "Nicaragua"
1920
  msgstr ""
1921
 
1922
+ #: core/helpers/helper-form-templates.php:1228
1923
+ #: core/helpers/helper-misc.php:375
1924
  msgid "Netherlands"
1925
  msgstr ""
1926
 
1927
+ #: core/helpers/helper-form-templates.php:1229
1928
+ #: core/helpers/helper-misc.php:385
1929
  msgid "Norway"
1930
  msgstr ""
1931
 
1932
+ #: core/helpers/helper-form-templates.php:1230
1933
+ #: core/helpers/helper-misc.php:374
1934
  msgid "Nepal"
1935
  msgstr ""
1936
 
1937
+ #: core/helpers/helper-form-templates.php:1231
1938
+ #: core/helpers/helper-misc.php:373
1939
  msgid "Nauru"
1940
  msgstr ""
1941
 
1942
+ #: core/helpers/helper-form-templates.php:1232
1943
+ #: core/helpers/helper-misc.php:382
1944
  msgid "Niue"
1945
  msgstr ""
1946
 
1947
+ #: core/helpers/helper-form-templates.php:1233
1948
+ #: core/helpers/helper-misc.php:378
1949
  msgid "New Zealand"
1950
  msgstr ""
1951
 
1952
+ #: core/helpers/helper-form-templates.php:1234
1953
+ #: core/helpers/helper-misc.php:386
1954
  msgid "Oman"
1955
  msgstr ""
1956
 
1957
+ #: core/helpers/helper-form-templates.php:1235
1958
+ #: core/helpers/helper-misc.php:389
1959
  msgid "Panama"
1960
  msgstr ""
1961
 
1962
+ #: core/helpers/helper-form-templates.php:1236
1963
+ #: core/helpers/helper-misc.php:392
1964
  msgid "Peru"
1965
  msgstr ""
1966
 
1967
+ #: core/helpers/helper-form-templates.php:1237
1968
+ #: core/helpers/helper-misc.php:300
1969
  msgid "French Polynesia"
1970
  msgstr ""
1971
 
1972
+ #: core/helpers/helper-form-templates.php:1238
1973
+ #: core/helpers/helper-misc.php:390
1974
  msgid "Papua New Guinea"
1975
  msgstr ""
1976
 
1977
+ #: core/helpers/helper-form-templates.php:1239
1978
+ #: core/helpers/helper-misc.php:393
1979
  msgid "Philippines"
1980
  msgstr ""
1981
 
1982
+ #: core/helpers/helper-form-templates.php:1240
1983
+ #: core/helpers/helper-misc.php:387
1984
  msgid "Pakistan"
1985
  msgstr ""
1986
 
1987
+ #: core/helpers/helper-form-templates.php:1241
1988
+ #: core/helpers/helper-misc.php:395
1989
  msgid "Poland"
1990
  msgstr ""
1991
 
1993
  msgid "Saint Pierre and Miquelon"
1994
  msgstr ""
1995
 
1996
+ #: core/helpers/helper-form-templates.php:1243
1997
+ #: core/helpers/helper-misc.php:397
1998
  msgid "Puerto Rico"
1999
  msgstr ""
2000
 
2002
  msgid "Palestinian Territory, Occupied"
2003
  msgstr ""
2004
 
2005
+ #: core/helpers/helper-form-templates.php:1245
2006
+ #: core/helpers/helper-misc.php:396
2007
  msgid "Portugal"
2008
  msgstr ""
2009
 
2010
+ #: core/helpers/helper-form-templates.php:1246
2011
+ #: core/helpers/helper-misc.php:388
2012
  msgid "Palau"
2013
  msgstr ""
2014
 
2015
+ #: core/helpers/helper-form-templates.php:1247
2016
+ #: core/helpers/helper-misc.php:391
2017
  msgid "Paraguay"
2018
  msgstr ""
2019
 
2020
+ #: core/helpers/helper-form-templates.php:1248
2021
+ #: core/helpers/helper-misc.php:398
2022
  msgid "Qatar"
2023
  msgstr ""
2024
 
2025
+ #: core/helpers/helper-form-templates.php:1249
2026
+ #: core/helpers/helper-misc.php:399
2027
  msgid "Reunion"
2028
  msgstr ""
2029
 
2030
+ #: core/helpers/helper-form-templates.php:1250
2031
+ #: core/helpers/helper-misc.php:400
2032
  msgid "Romania"
2033
  msgstr ""
2034
 
2036
  msgid "Serbia"
2037
  msgstr ""
2038
 
2039
+ #: core/helpers/helper-form-templates.php:1252
2040
+ #: core/helpers/helper-misc.php:401
2041
  msgid "Russian Federation"
2042
  msgstr ""
2043
 
2044
+ #: core/helpers/helper-form-templates.php:1253
2045
+ #: core/helpers/helper-misc.php:402
2046
  msgid "Rwanda"
2047
  msgstr ""
2048
 
2049
+ #: core/helpers/helper-form-templates.php:1254
2050
+ #: core/helpers/helper-misc.php:409
2051
  msgid "Saudi Arabia"
2052
  msgstr ""
2053
 
2054
+ #: core/helpers/helper-form-templates.php:1255
2055
+ #: core/helpers/helper-misc.php:416
2056
  msgid "Solomon Islands"
2057
  msgstr ""
2058
 
2059
+ #: core/helpers/helper-form-templates.php:1256
2060
+ #: core/helpers/helper-misc.php:411
2061
  msgid "Seychelles"
2062
  msgstr ""
2063
 
2064
+ #: core/helpers/helper-form-templates.php:1257
2065
+ #: core/helpers/helper-misc.php:424
2066
  msgid "Sudan"
2067
  msgstr ""
2068
 
2069
+ #: core/helpers/helper-form-templates.php:1258
2070
+ #: core/helpers/helper-misc.php:428
2071
  msgid "Sweden"
2072
  msgstr ""
2073
 
2074
+ #: core/helpers/helper-form-templates.php:1259
2075
+ #: core/helpers/helper-misc.php:413
2076
  msgid "Singapore"
2077
  msgstr ""
2078
 
2081
  msgid "Saint Helena"
2082
  msgstr ""
2083
 
2084
+ #: core/helpers/helper-form-templates.php:1261
2085
+ #: core/helpers/helper-misc.php:415
2086
  msgid "Slovenia"
2087
  msgstr ""
2088
 
2094
  msgid "Slovakia"
2095
  msgstr ""
2096
 
2097
+ #: core/helpers/helper-form-templates.php:1264
2098
+ #: core/helpers/helper-misc.php:412
2099
  msgid "Sierra Leone"
2100
  msgstr ""
2101
 
2102
+ #: core/helpers/helper-form-templates.php:1265
2103
+ #: core/helpers/helper-misc.php:407
2104
  msgid "San Marino"
2105
  msgstr ""
2106
 
2107
+ #: core/helpers/helper-form-templates.php:1266
2108
+ #: core/helpers/helper-misc.php:410
2109
  msgid "Senegal"
2110
  msgstr ""
2111
 
2112
+ #: core/helpers/helper-form-templates.php:1267
2113
+ #: core/helpers/helper-misc.php:417
2114
  msgid "Somalia"
2115
  msgstr ""
2116
 
2117
+ #: core/helpers/helper-form-templates.php:1268
2118
+ #: core/helpers/helper-misc.php:425
2119
  msgid "Suriname"
2120
  msgstr ""
2121
 
2123
  msgid "South Sudan"
2124
  msgstr ""
2125
 
2126
+ #: core/helpers/helper-form-templates.php:1270
2127
+ #: core/helpers/helper-misc.php:408
2128
  msgid "Sao Tome and Principe"
2129
  msgstr ""
2130
 
2131
+ #: core/helpers/helper-form-templates.php:1271
2132
+ #: core/helpers/helper-misc.php:288
2133
  msgid "El Salvador"
2134
  msgstr ""
2135
 
2137
  msgid "Sint Maarten (Dutch part)"
2138
  msgstr ""
2139
 
2140
+ #: core/helpers/helper-form-templates.php:1273
2141
+ #: core/helpers/helper-misc.php:430
2142
  msgid "Syrian Arab Republic"
2143
  msgstr ""
2144
 
2146
  msgid "Eswatini"
2147
  msgstr ""
2148
 
2149
+ #: core/helpers/helper-form-templates.php:1276
2150
+ #: core/helpers/helper-misc.php:442
2151
  msgid "Turks and Caicos Islands"
2152
  msgstr ""
2153
 
2154
+ #: core/helpers/helper-form-templates.php:1277
2155
+ #: core/helpers/helper-misc.php:265
2156
  msgid "Chad"
2157
  msgstr ""
2158
 
2159
+ #: core/helpers/helper-form-templates.php:1278
2160
+ #: core/helpers/helper-misc.php:435
2161
  msgid "Togo"
2162
  msgstr ""
2163
 
2164
+ #: core/helpers/helper-form-templates.php:1279
2165
+ #: core/helpers/helper-misc.php:434
2166
  msgid "Thailand"
2167
  msgstr ""
2168
 
2169
+ #: core/helpers/helper-form-templates.php:1280
2170
+ #: core/helpers/helper-misc.php:432
2171
  msgid "Tajikistan"
2172
  msgstr ""
2173
 
2174
+ #: core/helpers/helper-form-templates.php:1281
2175
+ #: core/helpers/helper-misc.php:436
2176
  msgid "Tokelau"
2177
  msgstr ""
2178
 
2180
  msgid "Timor-Leste"
2181
  msgstr ""
2182
 
2183
+ #: core/helpers/helper-form-templates.php:1283
2184
+ #: core/helpers/helper-misc.php:441
2185
  msgid "Turkmenistan"
2186
  msgstr ""
2187
 
2188
+ #: core/helpers/helper-form-templates.php:1284
2189
+ #: core/helpers/helper-misc.php:439
2190
  msgid "Tunisia"
2191
  msgstr ""
2192
 
2193
+ #: core/helpers/helper-form-templates.php:1285
2194
+ #: core/helpers/helper-misc.php:437
2195
  msgid "Tonga"
2196
  msgstr ""
2197
 
2198
+ #: core/helpers/helper-form-templates.php:1286
2199
+ #: core/helpers/helper-misc.php:440
2200
  msgid "Turkey"
2201
  msgstr ""
2202
 
2203
+ #: core/helpers/helper-form-templates.php:1287
2204
+ #: core/helpers/helper-misc.php:438
2205
  msgid "Trinidad and Tobago"
2206
  msgstr ""
2207
 
2208
+ #: core/helpers/helper-form-templates.php:1288
2209
+ #: core/helpers/helper-misc.php:443
2210
  msgid "Tuvalu"
2211
  msgstr ""
2212
 
2214
  msgid "Taiwan"
2215
  msgstr ""
2216
 
2217
+ #: core/helpers/helper-form-templates.php:1290
2218
+ #: core/helpers/helper-misc.php:433
2219
  msgid "Tanzania, United Republic of"
2220
  msgstr ""
2221
 
2222
+ #: core/helpers/helper-form-templates.php:1291
2223
+ #: core/helpers/helper-misc.php:445
2224
  msgid "Ukraine"
2225
  msgstr ""
2226
 
2227
+ #: core/helpers/helper-form-templates.php:1292
2228
+ #: core/helpers/helper-misc.php:444
2229
  msgid "Uganda"
2230
  msgstr ""
2231
 
2233
  msgid "United States of America"
2234
  msgstr ""
2235
 
2236
+ #: core/helpers/helper-form-templates.php:1294
2237
+ #: core/helpers/helper-misc.php:450
2238
  msgid "Uruguay"
2239
  msgstr ""
2240
 
2241
+ #: core/helpers/helper-form-templates.php:1295
2242
+ #: core/helpers/helper-misc.php:451
2243
  msgid "Uzbekistan"
2244
  msgstr ""
2245
 
2246
+ #: core/helpers/helper-form-templates.php:1296
2247
+ #: core/helpers/helper-misc.php:319
2248
  msgid "Holy See (Vatican City State)"
2249
  msgstr ""
2250
 
2251
+ #: core/helpers/helper-form-templates.php:1297
2252
+ #: core/helpers/helper-misc.php:405
2253
  msgid "Saint Vincent and the Grenadines"
2254
  msgstr ""
2255
 
2256
+ #: core/helpers/helper-form-templates.php:1298
2257
+ #: core/helpers/helper-misc.php:453
2258
  msgid "Venezuela"
2259
  msgstr ""
2260
 
2266
  msgid "Virgin Islands, U.S."
2267
  msgstr ""
2268
 
2269
+ #: core/helpers/helper-form-templates.php:1301
2270
+ #: core/helpers/helper-misc.php:454
2271
  msgid "Vietnam"
2272
  msgstr ""
2273
 
2274
+ #: core/helpers/helper-form-templates.php:1302
2275
+ #: core/helpers/helper-misc.php:452
2276
  msgid "Vanuatu"
2277
  msgstr ""
2278
 
2280
  msgid "Wallis and Futuna"
2281
  msgstr ""
2282
 
2283
+ #: core/helpers/helper-form-templates.php:1304
2284
+ #: core/helpers/helper-misc.php:406
2285
  msgid "Samoa"
2286
  msgstr ""
2287
 
2289
  msgid "Kosovo"
2290
  msgstr ""
2291
 
2292
+ #: core/helpers/helper-form-templates.php:1306
2293
+ #: core/helpers/helper-misc.php:459
2294
  msgid "Yemen"
2295
  msgstr ""
2296
 
2297
+ #: core/helpers/helper-form-templates.php:1307
2298
+ #: core/helpers/helper-misc.php:362
2299
  msgid "Mayotte"
2300
  msgstr ""
2301
 
2302
+ #: core/helpers/helper-form-templates.php:1308
2303
+ #: core/helpers/helper-misc.php:418
2304
  msgid "South Africa"
2305
  msgstr ""
2306
 
2307
+ #: core/helpers/helper-form-templates.php:1309
2308
+ #: core/helpers/helper-misc.php:461
2309
  msgid "Zambia"
2310
  msgstr ""
2311
 
2312
+ #: core/helpers/helper-form-templates.php:1310
2313
+ #: core/helpers/helper-misc.php:462
2314
  msgid "Zimbabwe"
2315
  msgstr ""
2316
 
2990
  msgid "Yoruba"
2991
  msgstr ""
2992
 
 
 
 
 
 
 
 
 
 
 
 
 
2993
  #: core/templates/admin-form-modal.php:5
2994
  msgid "Choose a form"
2995
  msgstr ""
2996
 
2997
  #: core/templates/admin-form-modal.php:12
2998
+ #: core/assets/jsx/build/admin/block.js:155
2999
+ #: core/assets/jsx/src/admin/block.js:36
3000
  msgid "Insert"
3001
  msgstr ""
3002
 
3040
 
3041
  #: core/templates/customize-form-item.php:33
3042
  #: core/templates/customize-form-part-footer.php:3
3043
+ #: core/templates/parts/customize-checkbox.php:154
3044
+ #: core/templates/parts/customize-radio.php:128
3045
  #: core/templates/parts/customize-select.php:126
3046
  msgid "Delete"
3047
  msgstr ""
3069
  msgstr ""
3070
 
3071
  #: core/templates/customize-form-parts-drawer.php:38
3072
+ #: inc/classes/class-happyforms.php:117
3073
  #: inc/templates/customize-controls/checkbox_dummy.php:7
3074
  #: inc/templates/customize-controls/email-parts-list-dummy.php:11
3075
  msgid "Upgrade"
3116
  msgstr ""
3117
 
3118
  #: core/templates/partials/customize-field-width.php:4
 
 
3119
  msgid "Full"
3120
  msgstr ""
3121
 
3122
  #: core/templates/partials/customize-field-width.php:5
 
 
3123
  msgid "Half"
3124
  msgstr ""
3125
 
3126
  #: core/templates/partials/customize-field-width.php:6
 
 
3127
  msgid "Third"
3128
  msgstr ""
3129
 
3130
  #: core/templates/partials/customize-field-width.php:7
 
 
3131
  msgid "Quarter"
3132
  msgstr ""
3133
 
3134
  #: core/templates/partials/customize-field-width.php:8
 
 
3135
  msgid "Auto"
3136
  msgstr ""
3137
 
3154
  msgid "No choices added yet."
3155
  msgstr ""
3156
 
 
 
 
 
 
 
3157
  #: core/templates/parts/customize-checkbox.php:36
3158
  #: core/templates/parts/customize-radio.php:36
3159
  #: core/templates/parts/customize-select.php:40
3247
  msgid "Vertical"
3248
  msgstr ""
3249
 
3250
+ #: core/templates/parts/customize-checkbox.php:116
 
 
 
 
 
3251
  #: core/templates/parts/customize-email.php:58
3252
  #: core/templates/parts/customize-multi-line-text.php:82
3253
  #: core/templates/parts/customize-number.php:81
3254
+ #: core/templates/parts/customize-radio.php:88
3255
  #: core/templates/parts/customize-select.php:86
3256
  #: core/templates/parts/customize-single-line-text.php:57
3257
+ msgid "Additional CSS class(es)"
3258
  msgstr ""
3259
 
3260
+ #: core/templates/parts/customize-checkbox.php:138
3261
+ #: core/templates/parts/customize-radio.php:112
3262
  #: core/templates/parts/customize-select.php:110
3263
  msgid "Make this choice default"
3264
  msgstr ""
3265
 
3266
+ #: core/templates/parts/customize-checkbox.php:141
3267
+ #: core/templates/parts/customize-radio.php:115
3268
  #: core/templates/parts/customize-select.php:113
3269
+ #: inc/classes/class-happyforms.php:155
3270
  msgid "Limit submissions"
3271
  msgstr ""
3272
 
3273
+ #: core/templates/parts/customize-checkbox.php:145
3274
+ #: core/templates/parts/customize-radio.php:119
3275
  #: core/templates/parts/customize-select.php:117
3276
  msgid "Max submissions"
3277
  msgstr ""
3278
 
3279
+ #: core/templates/parts/customize-checkbox.php:149
3280
+ #: core/templates/parts/customize-radio.php:123
3281
  #: core/templates/parts/customize-select.php:121
3282
  msgid "Show remaining submissions"
3283
  msgstr ""
3284
 
3285
+ #: core/templates/parts/customize-checkbox.php:155
3286
+ #: core/templates/parts/customize-radio.php:129
3287
  #: core/templates/parts/customize-select.php:127
3288
  msgid "More"
3289
  msgstr ""
3351
  msgid "Click to edit this part."
3352
  msgstr ""
3353
 
3354
+ #: inc/classes/class-happyforms.php:131
3355
  msgid "Use reCAPTCHA"
3356
  msgstr ""
3357
 
3358
+ #: inc/classes/class-happyforms.php:137
3359
  msgid "Save incomplete and abandoned submissions"
3360
  msgstr ""
3361
 
3362
+ #: inc/classes/class-happyforms.php:143
3363
  msgid "Let respondents save a draft submission and come back to it later"
3364
  msgstr ""
3365
 
3366
+ #: inc/classes/class-happyforms.php:149
3367
  msgid "Require respondents to review a submission before submitting"
3368
  msgstr ""
3369
 
3370
+ #: inc/classes/class-happyforms.php:161
 
 
 
 
3371
  msgid "Schedule visibility"
3372
  msgstr ""
3373
 
3374
+ #: inc/classes/class-happyforms.php:167
3375
  msgid "Store activity in database"
3376
  msgstr ""
3377
 
3378
+ #: inc/classes/class-happyforms.php:173
3379
  msgid "Capture user metadata (IP, language, platform, time and timezone)"
3380
  msgstr ""
3381
 
3382
+ #: inc/classes/class-happyforms.php:179
3383
  msgid "Block these email addresses, email domains and email partials"
3384
  msgstr ""
3385
 
3386
+ #: inc/classes/class-happyforms.php:185
3387
  msgid "Block these words, phrases and letters"
3388
  msgstr ""
3389
 
3390
+ #: inc/classes/class-happyforms.php:195
3391
  msgid "Include reply link"
3392
  msgstr ""
3393
 
3394
+ #: inc/classes/class-happyforms.php:201
3395
  msgid "Include referral web address"
3396
  msgstr ""
3397
 
3398
+ #: inc/classes/class-happyforms.php:207
3399
+ #: inc/classes/class-happyforms.php:219
3400
  msgid "Attach .pdf"
3401
  msgstr ""
3402
 
3403
+ #: inc/classes/class-happyforms.php:213
3404
  msgid "To email address"
3405
  msgstr ""
3406
 
3407
+ #: inc/classes/class-happyforms.php:225
3408
  msgid "Send abandonment email"
3409
  msgstr ""
3410
 
3411
+ #: inc/classes/class-happyforms.php:436
3412
+ #: inc/classes/class-happyforms.php:454
3413
  msgid "Build your own WordPress form with Happyforms"
3414
  msgstr ""
3415
 
3445
  msgid "Spam"
3446
  msgstr ""
3447
 
3448
+ #: inc/classes/class-message-controller.php:586
3449
+ #: inc/classes/class-message-controller.php:587
3450
  msgid "All Activity"
3451
  msgstr ""
3452
 
3453
+ #: inc/classes/class-message-controller.php:588
3454
  msgid "No activity found."
3455
  msgstr ""
3456
 
3630
  msgid "For formatted site URLs."
3631
  msgstr ""
3632
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3633
  #: inc/templates/customize-controls/email-parts-list-dummy.php:8
3634
  msgid "field"
3635
  msgstr ""
3814
  msgstr ""
3815
 
3816
  #: integrations/templates/widget-mailpoet-dummy.php:5
3817
+ msgid "MailPoet plugin must first be installed and activated to use this integration."
 
 
3818
  msgstr ""
3819
 
3820
  #: integrations/templates/widget-paypal-dummy.php:4
3853
  msgid "Publishable key"
3854
  msgstr ""
3855
 
3856
+ #: core/assets/jsx/build/admin/block.js:141
3857
+ #: core/assets/jsx/src/admin/block.js:26
3858
+ msgid "Pick a form to display on your site."
3859
  msgstr ""
3860
 
3861
+ #: core/assets/jsx/build/admin/block.js:172
3862
+ #: core/assets/jsx/src/admin/block.js:58
3863
+ msgid "Pick a form"
3864
  msgstr ""
3865
 
3866
+ #: inc/assets/jsx/build/admin/dashboard-modals.js:160
3867
+ msgid "Keep plugin data (recommended)"
3868
  msgstr ""
3869
 
3870
+ #: inc/assets/jsx/build/admin/dashboard-modals.js:167
3871
+ msgid "Permanently delete plugin data"
3872
+ msgstr ""
3873
+
3874
+ #: inc/assets/jsx/build/admin/dashboard-modals.js:174
3875
+ msgid "Deactivate Plugin"
3876
+ msgstr ""
3877
+
3878
+ #: inc/assets/jsx/build/admin/dashboard-modals.js:174
3879
+ msgid "Delete Data and Deactivate Plugin"
3880
+ msgstr ""
3881
+
3882
+ #: inc/assets/jsx/build/admin/dashboard-modals.js:280
3883
+ #: inc/assets/jsx/src/admin/dashboard-modals.js:47
3884
+ msgid "Welcome to Happyforms"
3885
+ msgstr ""
3886
+
3887
+ #: inc/assets/jsx/build/admin/dashboard-modals.js:280
3888
+ #: inc/assets/jsx/src/admin/dashboard-modals.js:48
3889
+ msgid "We'll send you a few emails each month about plugin updates. And don't sweat it, you can unsubscribe anytime."
3890
+ msgstr ""
3891
+
3892
+ #: inc/assets/jsx/build/admin/dashboard-modals.js:292
3893
+ #: inc/assets/jsx/src/admin/dashboard-modals.js:55
3894
+ msgid "Yes, I want to help support the free plugin by adding a powered by link in the footer of my forms and emails."
3895
+ msgstr ""
3896
+
3897
+ #: inc/assets/jsx/build/admin/dashboard-modals.js:297
3898
+ #: inc/assets/jsx/src/admin/dashboard-modals.js:60
3899
+ msgid "Continue"
3900
+ msgstr ""
3901
+
3902
+ #: inc/assets/jsx/build/admin/dashboard-modals.js:312
3903
+ #: inc/assets/jsx/src/admin/dashboard-modals.js:80
3904
+ msgid "You’ll need to upgrade to access this"
3905
+ msgstr ""
3906
+
3907
+ #: inc/assets/jsx/build/admin/dashboard-modals.js:316
3908
+ #: inc/assets/jsx/src/admin/dashboard-modals.js:83
3909
+ msgid "We offer several, affordable paid plans that include our best features. Upgrade today and increase your customer interactions."
3910
+ msgstr ""
3911
+
3912
+ #: inc/assets/jsx/build/admin/dashboard-modals.js:324
3913
+ #: inc/assets/jsx/src/admin/dashboard-modals.js:91
3914
+ msgid "Start Your Risk-Free 14-Day Trial"
3915
+ msgstr ""
3916
+
3917
+ #: inc/assets/jsx/build/admin/dashboard-modals.js:325
3918
+ #: inc/assets/jsx/src/admin/dashboard-modals.js:94
3919
+ msgid "Or"
3920
+ msgstr ""
3921
+
3922
+ #: inc/assets/jsx/build/admin/dashboard-modals.js:328
3923
+ #: inc/assets/jsx/src/admin/dashboard-modals.js:94
3924
+ msgid "continue with free version"
3925
+ msgstr ""
readme.txt CHANGED
@@ -2,10 +2,10 @@
2
 
3
  Contributors: happyforms
4
  Tags: contact form, contact form plugin, forms, form builder, custom form, intake form, registration form, survey form, quiz form, payment form, newsletter form, giveaway form, fundraising form, donation form, nomination form, order form, questionnaire form, onboarding form, contract form, estimate form, research form, qualitative form, quantitative form, membership form, mobile form, feedback form, release form, inquiry form, request form, evaluation form, RSVP form, reservation form, sales lead form, popup form, quote form, event form, booking form, application form, agreement form, safety form, compliance form, assessment form, sponsorship form, report form, file upload form, satisfaction form
5
- Requires at least: 4.8
6
  Tested up to: 5.8
7
- Requires PHP: 5.3
8
- Stable tag: 1.13.3
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -151,6 +151,11 @@ Aw, honestly, the thought that you're writing about our contact form builder is
151
 
152
  == Changelog ==
153
 
 
 
 
 
 
154
  = 1.13.3 =
155
  * Bugfix: A typo was causing errors on older PHP versions.
156
 
@@ -855,6 +860,9 @@ Aw, honestly, the thought that you're writing about our contact form builder is
855
 
856
  == Upgrade Notice ==
857
 
 
 
 
858
  = 1.13.3 =
859
  * Minor bugfixes.
860
 
2
 
3
  Contributors: happyforms
4
  Tags: contact form, contact form plugin, forms, form builder, custom form, intake form, registration form, survey form, quiz form, payment form, newsletter form, giveaway form, fundraising form, donation form, nomination form, order form, questionnaire form, onboarding form, contract form, estimate form, research form, qualitative form, quantitative form, membership form, mobile form, feedback form, release form, inquiry form, request form, evaluation form, RSVP form, reservation form, sales lead form, popup form, quote form, event form, booking form, application form, agreement form, safety form, compliance form, assessment form, sponsorship form, report form, file upload form, satisfaction form
5
+ Requires at least: 5.0
6
  Tested up to: 5.8
7
+ Requires PHP: 7.0
8
+ Stable tag: 1.13.4
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
151
 
152
  == Changelog ==
153
 
154
+ = 1.13.4 =
155
+ * Removal: "Message location" control led to degraded usability.
156
+ * Removal: "Title" section in "Style" tab added clutter and duplicated core functionality.
157
+ * Improvement: Better selection and insertion of forms in block interface.
158
+
159
  = 1.13.3 =
160
  * Bugfix: A typo was causing errors on older PHP versions.
161
 
860
 
861
  == Upgrade Notice ==
862
 
863
+ = 1.13.4 =
864
+ * Usability improvements.
865
+
866
  = 1.13.3 =
867
  * Minor bugfixes.
868