Version Description
Improvement: New Confirm submission control in Setup step. Improvement: Various improvements to HappyForms UI. Improvement: Compatibility with WordPress 5.4. Bugfix: Form width slider in Style tab General was not updating value in preview.
Download this release
Release Info
Developer | thethemefoundry |
Plugin | Form builder to get in touch with visitors, grow your email list and collect payments — Happyforms |
Version | 1.9.7 |
Comparing to | |
See all releases |
Code changes from version 1.9.6 to 1.9.7
- core/assets/css/admin.css +4 -0
- core/assets/css/customize.css +28 -3
- core/assets/css/layout.css +4 -0
- core/assets/js/frontend/long-text.js +2 -2
- core/assets/js/parts/part-checkbox.js +26 -1
- core/assets/js/parts/part-multi-line-text.js +59 -2
- core/classes/class-form-admin.php +56 -1
- core/classes/class-form-setup.php +28 -1
- core/classes/class-happyforms-core.php +6 -6
- core/classes/class-session.php +2 -2
- core/classes/parts/class-part-checkbox.php +4 -0
- core/classes/parts/class-part-multi-line-text.php +23 -8
- core/helpers/helper-form-templates.php +3 -3
- core/templates/customize-controls/setup/select.php +1 -1
- core/templates/customize-controls/setup/upsell.php +3 -0
- core/templates/parts/customize-email.php +7 -7
- core/templates/parts/customize-multi-line-text.php +18 -7
- core/templates/parts/customize-number.php +12 -12
- happyforms.php +2 -2
- inc/assets/js/customize.js +8 -0
- inc/classes/class-happyforms.php +24 -10
- inc/classes/parts/class-part-website-url-dummy.php +1 -1
- languages/happyforms.pot +170 -136
- readme.txt +11 -2
core/assets/css/admin.css
CHANGED
@@ -255,3 +255,7 @@ p.welcome-panel-footer a:active {
|
|
255 |
#happyforms-notice-happyforms_form_saved_guide {
|
256 |
border-left-color: #46b450;
|
257 |
}
|
|
|
|
|
|
|
|
255 |
#happyforms-notice-happyforms_form_saved_guide {
|
256 |
border-left-color: #46b450;
|
257 |
}
|
258 |
+
|
259 |
+
.type-happyform .column-date span[title] {
|
260 |
+
text-decoration: none;
|
261 |
+
}
|
core/assets/css/customize.css
CHANGED
@@ -164,7 +164,8 @@ p.description a {
|
|
164 |
margin-left: 5px;
|
165 |
}
|
166 |
|
167 |
-
.customize-control.customize-control-checkbox_dummy label a:after
|
|
|
168 |
content: "\f504";
|
169 |
font-family: dashicons;
|
170 |
}
|
@@ -678,7 +679,7 @@ body.adding-happyforms-parts #customize-preview iframe {
|
|
678 |
display: inline-block;
|
679 |
padding: 2px 8px 4px;
|
680 |
border: 1px solid #fff;
|
681 |
-
border-bottom-color: #
|
682 |
text-decoration: none;
|
683 |
}
|
684 |
|
@@ -689,7 +690,7 @@ body.adding-happyforms-parts #customize-preview iframe {
|
|
689 |
}
|
690 |
|
691 |
.happyforms-part-widget .tab-links a.active {
|
692 |
-
border: 1px solid #
|
693 |
border-bottom-color: #fff;
|
694 |
color: #444;
|
695 |
}
|
@@ -1419,3 +1420,27 @@ div.customize-section-description {
|
|
1419 |
color: #555d66;
|
1420 |
background: #fff;
|
1421 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
164 |
margin-left: 5px;
|
165 |
}
|
166 |
|
167 |
+
.customize-control.customize-control-checkbox_dummy label a:after,
|
168 |
+
.customize-control.customize-control--upsell a:after {
|
169 |
content: "\f504";
|
170 |
font-family: dashicons;
|
171 |
}
|
679 |
display: inline-block;
|
680 |
padding: 2px 8px 4px;
|
681 |
border: 1px solid #fff;
|
682 |
+
border-bottom-color: #ddd;
|
683 |
text-decoration: none;
|
684 |
}
|
685 |
|
690 |
}
|
691 |
|
692 |
.happyforms-part-widget .tab-links a.active {
|
693 |
+
border: 1px solid #ddd;
|
694 |
border-bottom-color: #fff;
|
695 |
color: #444;
|
696 |
}
|
1420 |
color: #555d66;
|
1421 |
background: #fff;
|
1422 |
}
|
1423 |
+
|
1424 |
+
#customize-control-confirmation_message {
|
1425 |
+
display: none;
|
1426 |
+
}
|
1427 |
+
|
1428 |
+
#customize-control-confirm_submission[data-value="success_message"] ~ .customize-control-group #customize-control-confirmation_message {
|
1429 |
+
display: block;
|
1430 |
+
}
|
1431 |
+
|
1432 |
+
.happyforms-nested-settings[data-trigger="confirm_submission"] {
|
1433 |
+
display: block;
|
1434 |
+
}
|
1435 |
+
|
1436 |
+
.wp-editor-float-right {
|
1437 |
+
float: right;
|
1438 |
+
}
|
1439 |
+
|
1440 |
+
#happyforms-redirect-upsell {
|
1441 |
+
display: none;
|
1442 |
+
}
|
1443 |
+
|
1444 |
+
#customize-control-confirm_submission[data-value="redirect"] ~ #happyforms-redirect-upsell {
|
1445 |
+
display: block;
|
1446 |
+
}
|
core/assets/css/layout.css
CHANGED
@@ -1234,6 +1234,10 @@ input[type=submit][disabled].happyforms-button--submit {
|
|
1234 |
padding: 45px 1% 10px;
|
1235 |
}
|
1236 |
|
|
|
|
|
|
|
|
|
1237 |
.screen-reader-text {
|
1238 |
position: absolute;
|
1239 |
top: 0;
|
1234 |
padding: 45px 1% 10px;
|
1235 |
}
|
1236 |
|
1237 |
+
.happyforms-part__char-counter .counter-label {
|
1238 |
+
text-transform: lowercase;
|
1239 |
+
}
|
1240 |
+
|
1241 |
.screen-reader-text {
|
1242 |
position: absolute;
|
1243 |
top: 0;
|
core/assets/js/frontend/long-text.js
CHANGED
@@ -6,7 +6,7 @@
|
|
6 |
init: function() {
|
7 |
this.type = this.$el.data( 'happyforms-type' );
|
8 |
this.$input = $( 'textarea', this.$el );
|
9 |
-
this.$counter = $( '.happyforms-part__char-counter span', this.$el );
|
10 |
|
11 |
this.$input.on( 'blur', this.onBlur.bind( this ) );
|
12 |
this.$input.on( 'keyup', this.triggerChange.bind( this ) );
|
@@ -41,4 +41,4 @@
|
|
41 |
},
|
42 |
};
|
43 |
|
44 |
-
} )( jQuery );
|
6 |
init: function() {
|
7 |
this.type = this.$el.data( 'happyforms-type' );
|
8 |
this.$input = $( 'textarea', this.$el );
|
9 |
+
this.$counter = $( '.happyforms-part__char-counter span.counter', this.$el );
|
10 |
|
11 |
this.$input.on( 'blur', this.onBlur.bind( this ) );
|
12 |
this.$input.on( 'keyup', this.triggerChange.bind( this ) );
|
41 |
},
|
42 |
};
|
43 |
|
44 |
+
} )( jQuery );
|
core/assets/js/parts/part-checkbox.js
CHANGED
@@ -161,6 +161,7 @@
|
|
161 |
this.listenTo( this, 'sort-stop', this.onOptionSortStop );
|
162 |
this.listenTo( this, 'ready', this.onReady );
|
163 |
this.listenTo( this.model, 'change:show_select_all', this.onSelectAllChange );
|
|
|
164 |
this.listenTo( this.model, 'change:options_width', this.onOptionsWidthChange );
|
165 |
},
|
166 |
|
@@ -401,6 +402,14 @@
|
|
401 |
},
|
402 |
|
403 |
onSelectAllChange: function( model, value ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
404 |
this.model.fetchHtml( function( response ) {
|
405 |
var data = {
|
406 |
id: model.get( 'id' ),
|
@@ -409,6 +418,15 @@
|
|
409 |
|
410 |
happyForms.previewSend( 'happyforms-form-part-refresh', data );
|
411 |
} );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
412 |
}
|
413 |
} );
|
414 |
|
@@ -470,7 +488,14 @@
|
|
470 |
$part.removeClass( 'happyforms-part-options-width--full' );
|
471 |
|
472 |
$part.addClass( 'happyforms-part-options-width--' + part.get( 'options_width' ) );
|
473 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
474 |
} );
|
475 |
|
476 |
} ) ( jQuery, _, Backbone, wp.customize, _happyFormsSettings );
|
161 |
this.listenTo( this, 'sort-stop', this.onOptionSortStop );
|
162 |
this.listenTo( this, 'ready', this.onReady );
|
163 |
this.listenTo( this.model, 'change:show_select_all', this.onSelectAllChange );
|
164 |
+
this.listenTo( this.model, 'change:select_all_label', this.onSelectAllLabelChange );
|
165 |
this.listenTo( this.model, 'change:options_width', this.onOptionsWidthChange );
|
166 |
},
|
167 |
|
402 |
},
|
403 |
|
404 |
onSelectAllChange: function( model, value ) {
|
405 |
+
var $selectAllOptions = $( '.happyforms-nested-settings[data-trigger="show_select_all"]', this.$el );
|
406 |
+
|
407 |
+
if ( 1 == value ) {
|
408 |
+
$selectAllOptions.show();
|
409 |
+
} else {
|
410 |
+
$selectAllOptions.hide();
|
411 |
+
}
|
412 |
+
|
413 |
this.model.fetchHtml( function( response ) {
|
414 |
var data = {
|
415 |
id: model.get( 'id' ),
|
418 |
|
419 |
happyForms.previewSend( 'happyforms-form-part-refresh', data );
|
420 |
} );
|
421 |
+
},
|
422 |
+
|
423 |
+
onSelectAllLabelChange: function( model, value ) {
|
424 |
+
var data = {
|
425 |
+
id: this.model.get( 'id' ),
|
426 |
+
callback: 'onCheckboxSelectAllLabelChangeCallback'
|
427 |
+
};
|
428 |
+
|
429 |
+
happyForms.previewSend( 'happyforms-part-dom-update', data );
|
430 |
}
|
431 |
} );
|
432 |
|
488 |
$part.removeClass( 'happyforms-part-options-width--full' );
|
489 |
|
490 |
$part.addClass( 'happyforms-part-options-width--' + part.get( 'options_width' ) );
|
491 |
+
},
|
492 |
+
|
493 |
+
onCheckboxSelectAllLabelChangeCallback: function( id, html, options ) {
|
494 |
+
var part = this.getPartModel( id );
|
495 |
+
var $part = this.getPartElement( html );
|
496 |
+
|
497 |
+
this.$( '.happyforms-part-option--select-all .label', $part ).text( part.get( 'select_all_label' ) );
|
498 |
+
},
|
499 |
} );
|
500 |
|
501 |
} ) ( jQuery, _, Backbone, wp.customize, _happyFormsSettings );
|
core/assets/js/parts/part-multi-line-text.js
CHANGED
@@ -20,6 +20,8 @@
|
|
20 |
this.listenTo( this.model, 'change:limit_input', this.onLimitInputChange );
|
21 |
this.listenTo( this.model, 'change:character_limit', this.onCharacterLimitChange );
|
22 |
this.listenTo( this.model, 'change:character_limit_mode', this.onCharacterLimitChange );
|
|
|
|
|
23 |
},
|
24 |
|
25 |
/**
|
@@ -58,8 +60,45 @@
|
|
58 |
} );
|
59 |
},
|
60 |
|
61 |
-
|
62 |
-
var
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
|
64 |
model.fetchHtml( function( response ) {
|
65 |
var data = {
|
@@ -70,6 +109,18 @@
|
|
70 |
happyForms.previewSend( 'happyforms-form-part-refresh', data );
|
71 |
} );
|
72 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
} );
|
74 |
|
75 |
happyForms.previewer = _.extend( happyForms.previewer, {
|
@@ -79,6 +130,12 @@
|
|
79 |
|
80 |
this.$( 'textarea', $part ).attr( 'placeholder', part.get( 'placeholder' ) );
|
81 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
} );
|
83 |
|
84 |
} ) ( jQuery, _, Backbone, wp.customize, _happyFormsSettings );
|
20 |
this.listenTo( this.model, 'change:limit_input', this.onLimitInputChange );
|
21 |
this.listenTo( this.model, 'change:character_limit', this.onCharacterLimitChange );
|
22 |
this.listenTo( this.model, 'change:character_limit_mode', this.onCharacterLimitChange );
|
23 |
+
this.listenTo( this.model, 'change:characters_label', this.onLimitWordsCharactersLabelChange );
|
24 |
+
this.listenTo( this.model, 'change:words_label', this.onLimitWordsCharactersLabelChange );
|
25 |
},
|
26 |
|
27 |
/**
|
60 |
} );
|
61 |
},
|
62 |
|
63 |
+
toggleMinMaxLabel: function( labelAttribute, $labelControl, limitValue ) {
|
64 |
+
var label = this.model.get( labelAttribute ).toLowerCase();
|
65 |
+
|
66 |
+
if ( -1 !== label.indexOf( 'min ' ) || -1 !== label.indexOf( 'max ' ) ) {
|
67 |
+
if ( 'word_max' === limitValue || 'character_max' === limitValue ) {
|
68 |
+
label = label.replace( 'min ', 'max ' );
|
69 |
+
} else {
|
70 |
+
label = label.replace( 'max ', 'min ' );
|
71 |
+
}
|
72 |
+
|
73 |
+
label = label.charAt(0).toUpperCase() + label.slice( 1 );
|
74 |
+
|
75 |
+
$( 'input', $labelControl ).val( label );
|
76 |
+
this.model.set( labelAttribute, label );
|
77 |
+
}
|
78 |
+
},
|
79 |
+
|
80 |
+
onCharacterLimitChange: function( model, value ) {
|
81 |
+
switch ( value ) {
|
82 |
+
case 'word_min':
|
83 |
+
case 'word_max':
|
84 |
+
var $wordsLabel = $( '.character-limit__words-label', this.$el );
|
85 |
+
this.toggleMinMaxLabel( 'words_label', $wordsLabel, value );
|
86 |
+
|
87 |
+
$wordsLabel.show();
|
88 |
+
$( '.character-limit__characters-label', this.$el ).hide();
|
89 |
+
|
90 |
+
break;
|
91 |
+
case 'character_min':
|
92 |
+
case 'character_max':
|
93 |
+
var $charactersLabel = $( '.character-limit__characters-label', this.$el );
|
94 |
+
this.toggleMinMaxLabel( 'characters_label', $charactersLabel, value );
|
95 |
+
|
96 |
+
$charactersLabel.show();
|
97 |
+
$( '.character-limit__words-label', this.$el ).hide();
|
98 |
+
break;
|
99 |
+
default:
|
100 |
+
break;
|
101 |
+
}
|
102 |
|
103 |
model.fetchHtml( function( response ) {
|
104 |
var data = {
|
109 |
happyForms.previewSend( 'happyforms-form-part-refresh', data );
|
110 |
} );
|
111 |
},
|
112 |
+
|
113 |
+
onLimitWordsCharactersLabelChange: function( model, value ) {
|
114 |
+
var data = {
|
115 |
+
id: this.model.get( 'id' ),
|
116 |
+
callback: 'onLimitWordsCharactersLabelChangeCallback',
|
117 |
+
options: {
|
118 |
+
label: value
|
119 |
+
}
|
120 |
+
};
|
121 |
+
|
122 |
+
happyForms.previewSend( 'happyforms-part-dom-update', data );
|
123 |
+
}
|
124 |
} );
|
125 |
|
126 |
happyForms.previewer = _.extend( happyForms.previewer, {
|
130 |
|
131 |
this.$( 'textarea', $part ).attr( 'placeholder', part.get( 'placeholder' ) );
|
132 |
},
|
133 |
+
|
134 |
+
onLimitWordsCharactersLabelChangeCallback: function( id, html, options ) {
|
135 |
+
var $part = this.getPartElement( html );
|
136 |
+
|
137 |
+
this.$( 'span.counter-label', $part ).text( options.label );
|
138 |
+
}
|
139 |
} );
|
140 |
|
141 |
} ) ( jQuery, _, Backbone, wp.customize, _happyFormsSettings );
|
core/classes/class-form-admin.php
CHANGED
@@ -48,6 +48,8 @@ class HappyForms_Form_Admin {
|
|
48 |
add_action( 'load-edit.php', array( $this, 'define_screen_settings' ) );
|
49 |
add_filter( "manage_{$post_type}_posts_columns", array( $this, 'column_headers' ), PHP_INT_MAX );
|
50 |
add_action( "manage_{$post_type}_posts_custom_column", array( $this, 'column_content' ), 10, 2 );
|
|
|
|
|
51 |
add_filter( 'post_row_actions', array( $this, 'row_actions' ), 10, 2 );
|
52 |
add_action( 'load-edit.php', array( $this, 'duplicate_form_redirect' ) );
|
53 |
add_action( 'admin_footer', array( $this, 'admin_footer' ) );
|
@@ -286,6 +288,59 @@ class HappyForms_Form_Admin {
|
|
286 |
}
|
287 |
}
|
288 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
289 |
/**
|
290 |
* Filter: filter the row actions contents for the
|
291 |
* All Form admin screen table.
|
@@ -370,7 +425,7 @@ class HappyForms_Form_Admin {
|
|
370 |
admin_url( 'edit.php' )
|
371 |
);
|
372 |
|
373 |
-
$notice = sprintf(
|
374 |
'%s <a href="%s">%s</a>',
|
375 |
__( '1 form duplicated.', HAPPYFORMS_TEXT_DOMAIN ),
|
376 |
get_delete_post_link( $new_form_id, '', true ),
|
48 |
add_action( 'load-edit.php', array( $this, 'define_screen_settings' ) );
|
49 |
add_filter( "manage_{$post_type}_posts_columns", array( $this, 'column_headers' ), PHP_INT_MAX );
|
50 |
add_action( "manage_{$post_type}_posts_custom_column", array( $this, 'column_content' ), 10, 2 );
|
51 |
+
add_filter( 'post_date_column_status', array( $this, 'date_column_status' ), 10, 4 );
|
52 |
+
add_filter( 'post_date_column_time', array( $this, 'date_column_time' ), 10, 4 );
|
53 |
add_filter( 'post_row_actions', array( $this, 'row_actions' ), 10, 2 );
|
54 |
add_action( 'load-edit.php', array( $this, 'duplicate_form_redirect' ) );
|
55 |
add_action( 'admin_footer', array( $this, 'admin_footer' ) );
|
288 |
}
|
289 |
}
|
290 |
|
291 |
+
/**
|
292 |
+
* Filter: Change status in Date column to blank. By default
|
293 |
+
* the column has value of "Published" or "Scheduled" for posts.
|
294 |
+
*
|
295 |
+
* @hooked filter post_date_column_status
|
296 |
+
*
|
297 |
+
* @param string $status Current status.
|
298 |
+
* @param object $post Post object.
|
299 |
+
* @param string $column_name Name of the column, always 'date'.
|
300 |
+
* @param string $mode Date mode.
|
301 |
+
*
|
302 |
+
* @return string
|
303 |
+
*/
|
304 |
+
public function date_column_status( $status, $post, $column_name, $mode ) {
|
305 |
+
if ( 'date' !== $column_name ) {
|
306 |
+
return $status;
|
307 |
+
}
|
308 |
+
|
309 |
+
$post_type = happyforms_get_form_controller()->post_type;
|
310 |
+
|
311 |
+
if ( $post->post_type === $post_type ) {
|
312 |
+
$status = '';
|
313 |
+
}
|
314 |
+
|
315 |
+
return $status;
|
316 |
+
}
|
317 |
+
|
318 |
+
/**
|
319 |
+
* Filter: Change date format in date column.
|
320 |
+
*
|
321 |
+
* @hooked filter post_date_column_time
|
322 |
+
*
|
323 |
+
* @param string $time Current time value.
|
324 |
+
* @param object $post Post object.
|
325 |
+
* @param string $column_name Name of the column, always 'date'.
|
326 |
+
* @param string $mode Date mode.
|
327 |
+
*
|
328 |
+
* @return string
|
329 |
+
*/
|
330 |
+
public function date_column_time( $time, $post, $column_name, $mode ) {
|
331 |
+
if ( 'date' !== $column_name ) {
|
332 |
+
return $time;
|
333 |
+
}
|
334 |
+
|
335 |
+
$post_type = happyforms_get_form_controller()->post_type;
|
336 |
+
|
337 |
+
if ( $post->post_type === $post_type ) {
|
338 |
+
$time = get_the_time( __( 'Y/m/d' ), $post );
|
339 |
+
}
|
340 |
+
|
341 |
+
return $time;
|
342 |
+
}
|
343 |
+
|
344 |
/**
|
345 |
* Filter: filter the row actions contents for the
|
346 |
* All Form admin screen table.
|
425 |
admin_url( 'edit.php' )
|
426 |
);
|
427 |
|
428 |
+
$notice = sprintf(
|
429 |
'%s <a href="%s">%s</a>',
|
430 |
__( '1 form duplicated.', HAPPYFORMS_TEXT_DOMAIN ),
|
431 |
get_delete_post_link( $new_form_id, '', true ),
|
core/classes/class-form-setup.php
CHANGED
@@ -48,6 +48,10 @@ class HappyForms_Form_Setup {
|
|
48 |
global $current_user;
|
49 |
|
50 |
$fields = array(
|
|
|
|
|
|
|
|
|
51 |
'confirmation_message' => array(
|
52 |
'default' => __( 'Thank you! Your submission has been sent.', HAPPYFORMS_TEXT_DOMAIN ),
|
53 |
'sanitize' => 'esc_html',
|
@@ -159,12 +163,34 @@ class HappyForms_Form_Setup {
|
|
159 |
|
160 |
public function get_controls() {
|
161 |
$controls = array(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
162 |
100 => array(
|
163 |
'type' => 'editor',
|
164 |
'label' => __( 'Success message', HAPPYFORMS_TEXT_DOMAIN ),
|
165 |
-
'tooltip' => __( 'This is the message your users will see after succesfully submitting your form.', HAPPYFORMS_TEXT_DOMAIN ),
|
166 |
'field' => 'confirmation_message',
|
167 |
),
|
|
|
|
|
|
|
168 |
110 => array(
|
169 |
'type' => 'editor',
|
170 |
'label' => __( 'Error message', HAPPYFORMS_TEXT_DOMAIN ),
|
@@ -241,6 +267,7 @@ class HappyForms_Form_Setup {
|
|
241 |
case 'textarea':
|
242 |
case 'group_start':
|
243 |
case 'group_end':
|
|
|
244 |
require( "{$path}/{$type}.php" );
|
245 |
break;
|
246 |
default:
|
48 |
global $current_user;
|
49 |
|
50 |
$fields = array(
|
51 |
+
'confirm_submission' => array(
|
52 |
+
'default' => 'success_message',
|
53 |
+
'sanitize' => 'sanitize_text_field',
|
54 |
+
),
|
55 |
'confirmation_message' => array(
|
56 |
'default' => __( 'Thank you! Your submission has been sent.', HAPPYFORMS_TEXT_DOMAIN ),
|
57 |
'sanitize' => 'esc_html',
|
163 |
|
164 |
public function get_controls() {
|
165 |
$controls = array(
|
166 |
+
10 => array(
|
167 |
+
'type' => 'select',
|
168 |
+
'label' => __( 'Confirm submission', HAPPYFORMS_TEXT_DOMAIN ),
|
169 |
+
'options' => array(
|
170 |
+
'success_message' => __( 'Success message', HAPPYFORMS_TEXT_DOMAIN ),
|
171 |
+
'redirect' => __( 'Redirect to web address', HAPPYFORMS_TEXT_DOMAIN ),
|
172 |
+
),
|
173 |
+
'field' => 'confirm_submission',
|
174 |
+
'tooltip' => __( 'Choose how the form should confirm successful submission.', HAPPYFORMS_TEXT_DOMAIN ),
|
175 |
+
),
|
176 |
+
11 => array(
|
177 |
+
'type' => 'upsell',
|
178 |
+
'label' => __( 'Upgrade', HAPPYFORMS_TEXT_DOMAIN ),
|
179 |
+
'field' => '',
|
180 |
+
'id' => 'happyforms-redirect-upsell',
|
181 |
+
),
|
182 |
+
20 => array(
|
183 |
+
'type' => 'group_start',
|
184 |
+
'trigger' => 'confirm_submission',
|
185 |
+
),
|
186 |
100 => array(
|
187 |
'type' => 'editor',
|
188 |
'label' => __( 'Success message', HAPPYFORMS_TEXT_DOMAIN ),
|
|
|
189 |
'field' => 'confirmation_message',
|
190 |
),
|
191 |
+
101 => array(
|
192 |
+
'type' => 'group_end'
|
193 |
+
),
|
194 |
110 => array(
|
195 |
'type' => 'editor',
|
196 |
'label' => __( 'Error message', HAPPYFORMS_TEXT_DOMAIN ),
|
267 |
case 'textarea':
|
268 |
case 'group_start':
|
269 |
case 'group_end':
|
270 |
+
case 'upsell':
|
271 |
require( "{$path}/{$type}.php" );
|
272 |
break;
|
273 |
default:
|
core/classes/class-happyforms-core.php
CHANGED
@@ -91,7 +91,7 @@ class HappyForms_Core {
|
|
91 |
add_action( 'admin_menu', array( $this, 'admin_menu' ) );
|
92 |
add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
|
93 |
add_action( 'current_screen', array( $this, 'admin_screens' ) );
|
94 |
-
|
95 |
add_filter( 'mce_external_plugins', array( $this, 'mce_external_plugins' ) );
|
96 |
|
97 |
// Widget
|
@@ -417,24 +417,24 @@ class HappyForms_Core {
|
|
417 |
*
|
418 |
* @since 1.1.0.
|
419 |
*
|
420 |
-
* @hooked filter
|
421 |
*
|
422 |
-
* @param string $
|
423 |
*
|
424 |
* @return void
|
425 |
*/
|
426 |
-
public function insert_editor_buttons( $
|
427 |
global $pagenow;
|
428 |
|
429 |
if ( 'post.php' !== $pagenow && 'post-new.php' !== $pagenow ) {
|
430 |
-
return
|
431 |
}
|
432 |
|
433 |
$button_html = '<a href="#" class="button happyforms-editor-button" data-title="' . __( 'Insert HappyForm', HAPPYFORMS_TEXT_DOMAIN ) . '"><span class="dashicons dashicons-format-status"></span><span>'. __( 'Add HappyForms', HAPPYFORMS_TEXT_DOMAIN ) .'</span></a>';
|
434 |
|
435 |
add_action( 'admin_footer', array( $this, 'output_happyforms_modal' ) );
|
436 |
|
437 |
-
|
438 |
}
|
439 |
|
440 |
public function mce_external_plugins( $plugins ) {
|
91 |
add_action( 'admin_menu', array( $this, 'admin_menu' ) );
|
92 |
add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
|
93 |
add_action( 'current_screen', array( $this, 'admin_screens' ) );
|
94 |
+
add_action( 'media_buttons', array( $this, 'insert_editor_buttons' ) );
|
95 |
add_filter( 'mce_external_plugins', array( $this, 'mce_external_plugins' ) );
|
96 |
|
97 |
// Widget
|
417 |
*
|
418 |
* @since 1.1.0.
|
419 |
*
|
420 |
+
* @hooked filter media_buttons
|
421 |
*
|
422 |
+
* @param string $editor_id Editor ID.
|
423 |
*
|
424 |
* @return void
|
425 |
*/
|
426 |
+
public function insert_editor_buttons( $editor_id ) {
|
427 |
global $pagenow;
|
428 |
|
429 |
if ( 'post.php' !== $pagenow && 'post-new.php' !== $pagenow ) {
|
430 |
+
return;
|
431 |
}
|
432 |
|
433 |
$button_html = '<a href="#" class="button happyforms-editor-button" data-title="' . __( 'Insert HappyForm', HAPPYFORMS_TEXT_DOMAIN ) . '"><span class="dashicons dashicons-format-status"></span><span>'. __( 'Add HappyForms', HAPPYFORMS_TEXT_DOMAIN ) .'</span></a>';
|
434 |
|
435 |
add_action( 'admin_footer', array( $this, 'output_happyforms_modal' ) );
|
436 |
|
437 |
+
echo ' ' . $button_html;
|
438 |
}
|
439 |
|
440 |
public function mce_external_plugins( $plugins ) {
|
core/classes/class-session.php
CHANGED
@@ -200,13 +200,13 @@ class HappyForms_Session {
|
|
200 |
'step' => $this->step,
|
201 |
) );
|
202 |
|
203 |
-
$serialized = wp_slash( json_encode( $data
|
204 |
|
205 |
return $serialized;
|
206 |
}
|
207 |
|
208 |
public function unserialize( $data ) {
|
209 |
-
$data = json_decode(
|
210 |
|
211 |
if ( ! isset( $data['step'] ) ) {
|
212 |
$data['step'] = 0;
|
200 |
'step' => $this->step,
|
201 |
) );
|
202 |
|
203 |
+
$serialized = wp_slash( json_encode( $data, JSON_UNESCAPED_UNICODE ) );
|
204 |
|
205 |
return $serialized;
|
206 |
}
|
207 |
|
208 |
public function unserialize( $data ) {
|
209 |
+
$data = json_decode( $data, true );
|
210 |
|
211 |
if ( ! isset( $data['step'] ) ) {
|
212 |
$data['step'] = 0;
|
core/classes/parts/class-part-checkbox.php
CHANGED
@@ -79,6 +79,10 @@ class HappyForms_Part_Checkbox extends HappyForms_Form_Part {
|
|
79 |
'default' => 0,
|
80 |
'sanitize' => 'happyforms_sanitize_checkbox'
|
81 |
),
|
|
|
|
|
|
|
|
|
82 |
);
|
83 |
|
84 |
return happyforms_get_part_customize_fields( $fields, $this->type );
|
79 |
'default' => 0,
|
80 |
'sanitize' => 'happyforms_sanitize_checkbox'
|
81 |
),
|
82 |
+
'select_all_label' => array(
|
83 |
+
'default' => __( 'Select all', HAPPYFORMS_TEXT_DOMAIN ),
|
84 |
+
'sanitize' => 'sanitize_text_field',
|
85 |
+
)
|
86 |
);
|
87 |
|
88 |
return happyforms_get_part_customize_fields( $fields, $this->type );
|
core/classes/parts/class-part-multi-line-text.php
CHANGED
@@ -55,8 +55,8 @@ class HappyForms_Part_MultiLineText extends HappyForms_Form_Part {
|
|
55 |
'sanitize' => 'happyforms_sanitize_checkbox',
|
56 |
),
|
57 |
'character_limit' => array(
|
58 |
-
'default' =>
|
59 |
-
'sanitize' => '
|
60 |
),
|
61 |
'character_limit_mode' => array(
|
62 |
'default' => 'word_max',
|
@@ -65,6 +65,14 @@ class HappyForms_Part_MultiLineText extends HappyForms_Form_Part {
|
|
65 |
array( 'character_max', 'character_min', 'word_max', 'word_min' ),
|
66 |
),
|
67 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
'width' => array(
|
69 |
'default' => 'full',
|
70 |
'sanitize' => 'sanitize_key'
|
@@ -224,23 +232,30 @@ class HappyForms_Part_MultiLineText extends HappyForms_Form_Part {
|
|
224 |
}
|
225 |
|
226 |
private function get_limit_label( $part ) {
|
227 |
-
$
|
|
|
228 |
|
229 |
switch( $part['character_limit_mode'] ) {
|
230 |
case 'character_min':
|
231 |
-
$
|
232 |
break;
|
233 |
case 'character_max':
|
234 |
-
$
|
235 |
break;
|
236 |
case 'word_min':
|
237 |
-
$
|
238 |
break;
|
239 |
case 'word_max':
|
240 |
-
$
|
241 |
break;
|
242 |
}
|
243 |
|
|
|
|
|
|
|
|
|
|
|
|
|
244 |
return $label;
|
245 |
}
|
246 |
|
@@ -275,7 +290,7 @@ class HappyForms_Part_MultiLineText extends HappyForms_Form_Part {
|
|
275 |
$label = $this->get_limit_label( $part );
|
276 |
?>
|
277 |
<div class="happyforms-part__char-counter" <?php if ( happyforms_is_preview() && ! $character_limit ) : ?>style="display: none;"<?php endif; ?>>
|
278 |
-
<span>0</span>/<?php echo $character_limit; ?> <?php echo $label; ?>
|
279 |
</div>
|
280 |
<?php
|
281 |
}
|
55 |
'sanitize' => 'happyforms_sanitize_checkbox',
|
56 |
),
|
57 |
'character_limit' => array(
|
58 |
+
'default' => 250,
|
59 |
+
'sanitize' => 'intval',
|
60 |
),
|
61 |
'character_limit_mode' => array(
|
62 |
'default' => 'word_max',
|
65 |
array( 'character_max', 'character_min', 'word_max', 'word_min' ),
|
66 |
),
|
67 |
),
|
68 |
+
'characters_label' => array(
|
69 |
+
'default' => __( 'Min characters', 'happyforms-upgrade' ),
|
70 |
+
'sanitize' => 'sanitize_text_field',
|
71 |
+
),
|
72 |
+
'words_label' => array(
|
73 |
+
'default' => __( 'Max words', 'happyforms-upgrade' ),
|
74 |
+
'sanitize' => 'sanitize_text_field',
|
75 |
+
),
|
76 |
'width' => array(
|
77 |
'default' => 'full',
|
78 |
'sanitize' => 'sanitize_key'
|
232 |
}
|
233 |
|
234 |
private function get_limit_label( $part ) {
|
235 |
+
$min_or_max = '';
|
236 |
+
$type = '';
|
237 |
|
238 |
switch( $part['character_limit_mode'] ) {
|
239 |
case 'character_min':
|
240 |
+
$type = $part['characters_label'];
|
241 |
break;
|
242 |
case 'character_max':
|
243 |
+
$type = $part['characters_label'];
|
244 |
break;
|
245 |
case 'word_min':
|
246 |
+
$type = $part['words_label'];
|
247 |
break;
|
248 |
case 'word_max':
|
249 |
+
$type = $part['words_label'];
|
250 |
break;
|
251 |
}
|
252 |
|
253 |
+
$label = sprintf(
|
254 |
+
'<span class="counter-label">%s</span>',
|
255 |
+
$type,
|
256 |
+
$min_or_max
|
257 |
+
);
|
258 |
+
|
259 |
return $label;
|
260 |
}
|
261 |
|
290 |
$label = $this->get_limit_label( $part );
|
291 |
?>
|
292 |
<div class="happyforms-part__char-counter" <?php if ( happyforms_is_preview() && ! $character_limit ) : ?>style="display: none;"<?php endif; ?>>
|
293 |
+
<span class="counter">0</span>/<?php echo $character_limit; ?> <?php echo $label; ?>
|
294 |
</div>
|
295 |
<?php
|
296 |
}
|
core/helpers/helper-form-templates.php
CHANGED
@@ -1438,7 +1438,7 @@ endif;
|
|
1438 |
if ( ! function_exists( 'happyforms_get_narrative_format' ) ) :
|
1439 |
|
1440 |
function happyforms_get_narrative_format( $format ) {
|
1441 |
-
$format = preg_replace( '/\[([
|
1442 |
|
1443 |
return $format;
|
1444 |
}
|
@@ -1448,7 +1448,7 @@ endif;
|
|
1448 |
if ( ! function_exists( 'happyforms_get_narrative_tokens' ) ) :
|
1449 |
|
1450 |
function happyforms_get_narrative_tokens( $format, $with_placeholders = false ) {
|
1451 |
-
$matches = preg_match_all( '/\[([
|
1452 |
|
1453 |
if ( ! $matches ) {
|
1454 |
return array();
|
@@ -1457,7 +1457,7 @@ function happyforms_get_narrative_tokens( $format, $with_placeholders = false )
|
|
1457 |
$tokens = $tokens[1];
|
1458 |
|
1459 |
if ( ! $with_placeholders ) {
|
1460 |
-
|
1461 |
}
|
1462 |
|
1463 |
return $tokens;
|
1438 |
if ( ! function_exists( 'happyforms_get_narrative_format' ) ) :
|
1439 |
|
1440 |
function happyforms_get_narrative_format( $format ) {
|
1441 |
+
$format = preg_replace( '/\[([^\/\]]*)\]/m', '%s', $format );
|
1442 |
|
1443 |
return $format;
|
1444 |
}
|
1448 |
if ( ! function_exists( 'happyforms_get_narrative_tokens' ) ) :
|
1449 |
|
1450 |
function happyforms_get_narrative_tokens( $format, $with_placeholders = false ) {
|
1451 |
+
$matches = preg_match_all( '/\[([^\/\]]*)\]/m', $format, $tokens );
|
1452 |
|
1453 |
if ( ! $matches ) {
|
1454 |
return array();
|
1457 |
$tokens = $tokens[1];
|
1458 |
|
1459 |
if ( ! $with_placeholders ) {
|
1460 |
+
$tokens = array_fill( 0, count( $tokens ), '' );
|
1461 |
}
|
1462 |
|
1463 |
return $tokens;
|
core/templates/customize-controls/setup/select.php
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
<div class="customize-control customize-control-select" id="customize-control-<?php echo $control['field']; ?>">
|
2 |
<?php do_action( "happyforms_setup_control_{$control['field']}_before", $control ); ?>
|
3 |
|
4 |
<label for="<?php echo $control['field']; ?>" class="customize-control-title"><?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>
|
1 |
+
<div class="customize-control customize-control-select" id="customize-control-<?php echo $control['field']; ?>" data-value="<%= <?php echo $control['field']; ?> %>">
|
2 |
<?php do_action( "happyforms_setup_control_{$control['field']}_before", $control ); ?>
|
3 |
|
4 |
<label for="<?php echo $control['field']; ?>" class="customize-control-title"><?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>
|
core/templates/customize-controls/setup/upsell.php
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
<div class="customize-control customize-control--upsell" id="<?php echo $control['id']; ?>">
|
2 |
+
<a href="https://happyforms.me/upgrade" target="_blank" class="external"><?php echo $control['label']; ?></a>
|
3 |
+
</div>
|
core/templates/parts/customize-email.php
CHANGED
@@ -44,11 +44,6 @@
|
|
44 |
<div class="happyforms-part-advanced-settings-wrap">
|
45 |
<?php do_action( 'happyforms_part_customize_email_before_advanced_options' ); ?>
|
46 |
|
47 |
-
<p>
|
48 |
-
<label for="<%= instance.id %>_suffix"><?php _e( 'Suffix', HAPPYFORMS_TEXT_DOMAIN ); ?></label>
|
49 |
-
<input type="text" id="<%= instance.id %>_suffix" class="widefat title" value="<%= instance.suffix %>" data-bind="suffix" maxlength="50" />
|
50 |
-
</p>
|
51 |
-
|
52 |
<p style="display: <%= ( instance.suffix.length ) ? 'none' : 'block' %>">
|
53 |
<label>
|
54 |
<input type="checkbox" class="checkbox" value="1" <% if ( instance.autocomplete_domains ) { %>checked="checked"<% } %> data-bind="autocomplete_domains" /> <?php _e( 'Suggest common email domains', HAPPYFORMS_TEXT_DOMAIN ); ?>
|
@@ -61,15 +56,20 @@
|
|
61 |
</p>
|
62 |
<div class="happyforms-nested-settings" data-trigger="confirmation_field" style="display: <%= (instance.confirmation_field == 1) ? 'block' : 'none' %>">
|
63 |
<p>
|
64 |
-
<label for="<%= instance.id %>_confirmation_field_label"><?php _e( '
|
65 |
<input type="text" id="<%= instance.id %>_confirmation_field_label" class="widefat title" value="<%= instance.confirmation_field_label %>" data-bind="confirmation_field_label" />
|
66 |
</p>
|
67 |
<p>
|
68 |
-
<label for="<%= instance.id %>_confirmation_field_placeholder"><?php _e( '
|
69 |
<input type="text" id="<%= instance.id %>_confirmation_field_placeholder" class="widefat title" value="<%= instance.confirmation_field_placeholder %>" data-bind="confirmation_field_placeholder" />
|
70 |
</p>
|
71 |
</div>
|
72 |
|
|
|
|
|
|
|
|
|
|
|
73 |
<?php happyforms_customize_part_width_control(); ?>
|
74 |
|
75 |
<?php do_action( 'happyforms_part_customize_email_after_advanced_options' ); ?>
|
44 |
<div class="happyforms-part-advanced-settings-wrap">
|
45 |
<?php do_action( 'happyforms_part_customize_email_before_advanced_options' ); ?>
|
46 |
|
|
|
|
|
|
|
|
|
|
|
47 |
<p style="display: <%= ( instance.suffix.length ) ? 'none' : 'block' %>">
|
48 |
<label>
|
49 |
<input type="checkbox" class="checkbox" value="1" <% if ( instance.autocomplete_domains ) { %>checked="checked"<% } %> data-bind="autocomplete_domains" /> <?php _e( 'Suggest common email domains', HAPPYFORMS_TEXT_DOMAIN ); ?>
|
56 |
</p>
|
57 |
<div class="happyforms-nested-settings" data-trigger="confirmation_field" style="display: <%= (instance.confirmation_field == 1) ? 'block' : 'none' %>">
|
58 |
<p>
|
59 |
+
<label for="<%= instance.id %>_confirmation_field_label"><?php _e( '\'Confirmation\' label', HAPPYFORMS_TEXT_DOMAIN ); ?></label>
|
60 |
<input type="text" id="<%= instance.id %>_confirmation_field_label" class="widefat title" value="<%= instance.confirmation_field_label %>" data-bind="confirmation_field_label" />
|
61 |
</p>
|
62 |
<p>
|
63 |
+
<label for="<%= instance.id %>_confirmation_field_placeholder"><?php _e( '\'Confirmation\' placeholder', HAPPYFORMS_TEXT_DOMAIN ); ?></label>
|
64 |
<input type="text" id="<%= instance.id %>_confirmation_field_placeholder" class="widefat title" value="<%= instance.confirmation_field_placeholder %>" data-bind="confirmation_field_placeholder" />
|
65 |
</p>
|
66 |
</div>
|
67 |
|
68 |
+
<p>
|
69 |
+
<label for="<%= instance.id %>_suffix"><?php _e( 'Suffix', HAPPYFORMS_TEXT_DOMAIN ); ?></label>
|
70 |
+
<input type="text" id="<%= instance.id %>_suffix" class="widefat title" value="<%= instance.suffix %>" data-bind="suffix" maxlength="50" />
|
71 |
+
</p>
|
72 |
+
|
73 |
<?php happyforms_customize_part_width_control(); ?>
|
74 |
|
75 |
<?php do_action( 'happyforms_part_customize_email_after_advanced_options' ); ?>
|
core/templates/parts/customize-multi-line-text.php
CHANGED
@@ -52,15 +52,26 @@
|
|
52 |
|
53 |
<div class="happyforms-nested-settings character-limit-settings" <% if ( ! instance.limit_input ) { %>style="display: none;"<% } %>>
|
54 |
<p>
|
55 |
-
<label for="<%= instance.id %>_character_limit"><?php _e( '
|
56 |
<input type="number" id="<%= instance.id %>_character_limit" class="widefat title" step="1" min="1" value="<%= instance.character_limit %>" data-bind="character_limit" />
|
57 |
</p>
|
58 |
-
<
|
59 |
-
<
|
60 |
-
<
|
61 |
-
|
62 |
-
|
63 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
</div>
|
65 |
|
66 |
<?php happyforms_customize_part_width_control(); ?>
|
52 |
|
53 |
<div class="happyforms-nested-settings character-limit-settings" <% if ( ! instance.limit_input ) { %>style="display: none;"<% } %>>
|
54 |
<p>
|
55 |
+
<label for="<%= instance.id %>_character_limit"><?php _e( 'Limit', HAPPYFORMS_TEXT_DOMAIN ); ?></label>
|
56 |
<input type="number" id="<%= instance.id %>_character_limit" class="widefat title" step="1" min="1" value="<%= instance.character_limit %>" data-bind="character_limit" />
|
57 |
</p>
|
58 |
+
<p>
|
59 |
+
<label for="<%= instance.id %>_character_limit_mode"><?php _e( 'Count', HAPPYFORMS_TEXT_DOMAIN ); ?></label>
|
60 |
+
<select id="<%= instance.id %>_character_limit_mode" data-bind="character_limit_mode">
|
61 |
+
<option value="word_max"<%= (instance.character_limit_mode == 'word_max') ? ' selected' : '' %>><?php _e( 'Max words', HAPPYFORMS_TEXT_DOMAIN ); ?></option>
|
62 |
+
<option value="word_min"<%= (instance.character_limit_mode == 'word_min') ? ' selected' : '' %>><?php _e( 'Min words', HAPPYFORMS_TEXT_DOMAIN ); ?></option>
|
63 |
+
<option value="character_max"<%= (instance.character_limit_mode == 'character_max') ? ' selected' : '' %>><?php _e( 'Max characters', HAPPYFORMS_TEXT_DOMAIN ); ?></option>
|
64 |
+
<option value="character_min"<%= (instance.character_limit_mode == 'character_min') ? ' selected' : '' %>><?php _e( 'Min characters', HAPPYFORMS_TEXT_DOMAIN ); ?></option>
|
65 |
+
</select>
|
66 |
+
</p>
|
67 |
+
<p class="character-limit__characters-label" style="display: <%= ( 'character_min' === instance.character_limit_mode || 'character_max' === instance.character_limit_mode ) ? 'block' : 'none' %>">
|
68 |
+
<label for="<%= instance.id %>_characters_label"><?php _e( '\'Characters\' label', HAPPYFORMS_TEXT_DOMAIN ); ?></label>
|
69 |
+
<input type="text" id="<%= instance.id %>_characters_label" class="widefat title" value="<%= instance.characters_label %>" data-bind="characters_label" />
|
70 |
+
</p>
|
71 |
+
<p class="character-limit__words-label" style="display: <%= ( 'word_max' === instance.character_limit_mode || 'word_min' === instance.character_limit_mode ) ? 'block' : 'none' %>">
|
72 |
+
<label for="<%= instance.id %>_words_label"><?php _e( '\'Words\' label', HAPPYFORMS_TEXT_DOMAIN ); ?></label>
|
73 |
+
<input type="text" id="<%= instance.id %>_words_label" class="widefat title" value="<%= instance.words_label %>" data-bind="words_label" />
|
74 |
+
</p>
|
75 |
</div>
|
76 |
|
77 |
<?php happyforms_customize_part_width_control(); ?>
|
core/templates/parts/customize-number.php
CHANGED
@@ -35,11 +35,11 @@
|
|
35 |
|
36 |
<div class="min-max-wrapper">
|
37 |
<p>
|
38 |
-
<label for="<%= instance.id %>_min_value"><?php _e( 'Min
|
39 |
<input type="number" id="<%= instance.id %>_min_value" class="widefat title" value="<%= instance.min_value %>" data-bind="min_value" />
|
40 |
</p>
|
41 |
<p>
|
42 |
-
<label for="<%= instance.id %>_max_value"><?php _e( 'Max
|
43 |
<input type="number" id="<%= instance.id %>_max_value" class="widefat title" value="<%= instance.max_value %>" data-bind="max_value" />
|
44 |
</p>
|
45 |
</div>
|
@@ -69,14 +69,6 @@
|
|
69 |
<input type="text" id="<%= instance.id %>_mask_numeric_decimal_mark" class="widefat title" value="<%= instance.mask_numeric_decimal_mark %>" data-bind="mask_numeric_decimal_mark" />
|
70 |
</p>
|
71 |
</div>
|
72 |
-
<p>
|
73 |
-
<label for="<%= instance.id %>_mask_numeric_prefix"><?php _e( 'Prefix', HAPPYFORMS_TEXT_DOMAIN ); ?></label>
|
74 |
-
<input type="text" id="<%= instance.id %>_mask_numeric_prefix" class="widefat title" value="<%= instance.mask_numeric_prefix %>" data-bind="mask_numeric_prefix" maxlength="50" />
|
75 |
-
</p>
|
76 |
-
<p>
|
77 |
-
<label for="<%= instance.id %>_mask_numeric_suffix"><?php _e( 'Suffix', HAPPYFORMS_TEXT_DOMAIN ); ?></label>
|
78 |
-
<input type="text" id="<%= instance.id %>_mask_numeric_suffix" class="widefat title" value="<%= instance.mask_numeric_suffix %>" data-bind="mask_numeric_suffix" maxlength="50" />
|
79 |
-
</p>
|
80 |
<p>
|
81 |
<label>
|
82 |
<input type="checkbox" class="checkbox confirmation-checkbox" value="1" <% if ( instance.confirmation_field ) { %>checked="checked"<% } %> data-bind="confirmation_field" /> <?php _e( 'Require confirmation', HAPPYFORMS_TEXT_DOMAIN ); ?>
|
@@ -84,14 +76,22 @@
|
|
84 |
</p>
|
85 |
<div class="happyforms-nested-settings" data-trigger="confirmation_field" style="display: <%= (instance.confirmation_field == 1) ? 'block' : 'none' %>">
|
86 |
<p>
|
87 |
-
<label for="<%= instance.id %>_confirmation_field_label"><?php _e( '
|
88 |
<input type="text" id="<%= instance.id %>_confirmation_field_label" class="widefat title" value="<%= instance.confirmation_field_label %>" data-bind="confirmation_field_label" />
|
89 |
</p>
|
90 |
<p>
|
91 |
-
<label for="<%= instance.id %>_confirmation_field_placeholder"><?php _e( '
|
92 |
<input type="text" id="<%= instance.id %>_confirmation_field_placeholder" class="widefat title" value="<%= instance.confirmation_field_placeholder %>" data-bind="confirmation_field_placeholder" />
|
93 |
</p>
|
94 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
95 |
|
96 |
<?php happyforms_customize_part_width_control(); ?>
|
97 |
|
35 |
|
36 |
<div class="min-max-wrapper">
|
37 |
<p>
|
38 |
+
<label for="<%= instance.id %>_min_value"><?php _e( 'Min number', HAPPYFORMS_TEXT_DOMAIN ); ?></label>
|
39 |
<input type="number" id="<%= instance.id %>_min_value" class="widefat title" value="<%= instance.min_value %>" data-bind="min_value" />
|
40 |
</p>
|
41 |
<p>
|
42 |
+
<label for="<%= instance.id %>_max_value"><?php _e( 'Max number', HAPPYFORMS_TEXT_DOMAIN ); ?></label>
|
43 |
<input type="number" id="<%= instance.id %>_max_value" class="widefat title" value="<%= instance.max_value %>" data-bind="max_value" />
|
44 |
</p>
|
45 |
</div>
|
69 |
<input type="text" id="<%= instance.id %>_mask_numeric_decimal_mark" class="widefat title" value="<%= instance.mask_numeric_decimal_mark %>" data-bind="mask_numeric_decimal_mark" />
|
70 |
</p>
|
71 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
<p>
|
73 |
<label>
|
74 |
<input type="checkbox" class="checkbox confirmation-checkbox" value="1" <% if ( instance.confirmation_field ) { %>checked="checked"<% } %> data-bind="confirmation_field" /> <?php _e( 'Require confirmation', HAPPYFORMS_TEXT_DOMAIN ); ?>
|
76 |
</p>
|
77 |
<div class="happyforms-nested-settings" data-trigger="confirmation_field" style="display: <%= (instance.confirmation_field == 1) ? 'block' : 'none' %>">
|
78 |
<p>
|
79 |
+
<label for="<%= instance.id %>_confirmation_field_label"><?php _e( '\'Confirmation\' label', HAPPYFORMS_TEXT_DOMAIN ); ?></label>
|
80 |
<input type="text" id="<%= instance.id %>_confirmation_field_label" class="widefat title" value="<%= instance.confirmation_field_label %>" data-bind="confirmation_field_label" />
|
81 |
</p>
|
82 |
<p>
|
83 |
+
<label for="<%= instance.id %>_confirmation_field_placeholder"><?php _e( '\'Confirmation\' placeholder', HAPPYFORMS_TEXT_DOMAIN ); ?></label>
|
84 |
<input type="text" id="<%= instance.id %>_confirmation_field_placeholder" class="widefat title" value="<%= instance.confirmation_field_placeholder %>" data-bind="confirmation_field_placeholder" />
|
85 |
</p>
|
86 |
</div>
|
87 |
+
<p>
|
88 |
+
<label for="<%= instance.id %>_mask_numeric_prefix"><?php _e( 'Prefix', HAPPYFORMS_TEXT_DOMAIN ); ?></label>
|
89 |
+
<input type="text" id="<%= instance.id %>_mask_numeric_prefix" class="widefat title" value="<%= instance.mask_numeric_prefix %>" data-bind="mask_numeric_prefix" maxlength="50" />
|
90 |
+
</p>
|
91 |
+
<p>
|
92 |
+
<label for="<%= instance.id %>_mask_numeric_suffix"><?php _e( 'Suffix', HAPPYFORMS_TEXT_DOMAIN ); ?></label>
|
93 |
+
<input type="text" id="<%= instance.id %>_mask_numeric_suffix" class="widefat title" value="<%= instance.mask_numeric_suffix %>" data-bind="mask_numeric_suffix" maxlength="50" />
|
94 |
+
</p>
|
95 |
|
96 |
<?php happyforms_customize_part_width_control(); ?>
|
97 |
|
happyforms.php
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
* Plugin URI: https://happyforms.me
|
6 |
* Description: Your friendly drag and drop contact form builder for creating contact forms, lead generation forms, feedback forms, quote forms, survey forms and more!
|
7 |
* Author: The Theme Foundry
|
8 |
-
* Version: 1.9.
|
9 |
* Author URI: https://thethemefoundry.com
|
10 |
* Upgrade URI: https://thethemefoundry.com
|
11 |
*/
|
@@ -13,7 +13,7 @@
|
|
13 |
/**
|
14 |
* The current version of the plugin.
|
15 |
*/
|
16 |
-
define( 'HAPPYFORMS_VERSION', '1.9.
|
17 |
define( 'HAPPYFORMS_TEXT_DOMAIN', 'happyforms' );
|
18 |
|
19 |
if ( ! function_exists( 'happyforms_plugin_file' ) ):
|
5 |
* Plugin URI: https://happyforms.me
|
6 |
* Description: Your friendly drag and drop contact form builder for creating contact forms, lead generation forms, feedback forms, quote forms, survey forms and more!
|
7 |
* Author: The Theme Foundry
|
8 |
+
* Version: 1.9.7
|
9 |
* Author URI: https://thethemefoundry.com
|
10 |
* Upgrade URI: https://thethemefoundry.com
|
11 |
*/
|
13 |
/**
|
14 |
* The current version of the plugin.
|
15 |
*/
|
16 |
+
define( 'HAPPYFORMS_VERSION', '1.9.7' );
|
17 |
define( 'HAPPYFORMS_TEXT_DOMAIN', 'happyforms' );
|
18 |
|
19 |
if ( ! function_exists( 'happyforms_plugin_file' ) ):
|
inc/assets/js/customize.js
CHANGED
@@ -1430,6 +1430,7 @@
|
|
1430 |
classes.views.Base.prototype.initialize.apply( this, arguments );
|
1431 |
|
1432 |
this.listenTo( this.model, 'change:submit_button_label', this.onSubmitButtonLabelChange );
|
|
|
1433 |
},
|
1434 |
|
1435 |
render: function() {
|
@@ -1481,6 +1482,8 @@
|
|
1481 |
}
|
1482 |
}
|
1483 |
|
|
|
|
|
1484 |
this.model.set( attribute, value );
|
1485 |
},
|
1486 |
|
@@ -1530,6 +1533,10 @@
|
|
1530 |
} );
|
1531 |
|
1532 |
classes.views.Base.prototype.remove.apply( this, arguments );
|
|
|
|
|
|
|
|
|
1533 |
}
|
1534 |
} );
|
1535 |
|
@@ -1649,6 +1656,7 @@
|
|
1649 |
ready: function() {
|
1650 |
this.initColorPickers();
|
1651 |
this.initUISliders();
|
|
|
1652 |
this.setupHelpPointers();
|
1653 |
this.initCodeEditors();
|
1654 |
|
1430 |
classes.views.Base.prototype.initialize.apply( this, arguments );
|
1431 |
|
1432 |
this.listenTo( this.model, 'change:submit_button_label', this.onSubmitButtonLabelChange );
|
1433 |
+
this.listenTo( this.model, 'change:confirm_submission', this.onConfirmSubmissionChange );
|
1434 |
},
|
1435 |
|
1436 |
render: function() {
|
1482 |
}
|
1483 |
}
|
1484 |
|
1485 |
+
$( '#customize-control-' + attribute ).attr( 'data-value', value );
|
1486 |
+
|
1487 |
this.model.set( attribute, value );
|
1488 |
},
|
1489 |
|
1533 |
} );
|
1534 |
|
1535 |
classes.views.Base.prototype.remove.apply( this, arguments );
|
1536 |
+
},
|
1537 |
+
|
1538 |
+
onConfirmSubmissionChange: function( model, value ) {
|
1539 |
+
model.set( 'confirm_submission', 'success_message', { silent: true } );
|
1540 |
}
|
1541 |
} );
|
1542 |
|
1656 |
ready: function() {
|
1657 |
this.initColorPickers();
|
1658 |
this.initUISliders();
|
1659 |
+
this.initFormWidthSlider();
|
1660 |
this.setupHelpPointers();
|
1661 |
this.initCodeEditors();
|
1662 |
|
inc/classes/class-happyforms.php
CHANGED
@@ -76,13 +76,6 @@ class HappyForms extends HappyForms_Core {
|
|
76 |
}
|
77 |
|
78 |
public function add_dummy_setup_controls( $controls ) {
|
79 |
-
$controls[1300] = array(
|
80 |
-
'type' => 'checkbox_dummy',
|
81 |
-
'dummy_id' => 'redirect_on_complete',
|
82 |
-
'label' => __( 'Redirect on complete', HAPPYFORMS_TEXT_DOMAIN ),
|
83 |
-
'tooltip' => __( 'By default, users will be redirected to the post or page displaying this form. To set a custom redirect webpage, add a link here.', HAPPYFORMS_TEXT_DOMAIN ),
|
84 |
-
);
|
85 |
-
|
86 |
$controls[1320] = array(
|
87 |
'type' => 'checkbox_dummy',
|
88 |
'dummy_id' => 'use_theme_styles',
|
@@ -118,24 +111,45 @@ class HappyForms extends HappyForms_Core {
|
|
118 |
'tooltip' => __( 'Generate a link that can be clicked to open an overlay window for this form.', HAPPYFORMS_TEXT_DOMAIN ),
|
119 |
);
|
120 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
121 |
$controls[1660] = array(
|
122 |
'type' => 'checkbox_dummy',
|
123 |
'dummy_id' => 'save_abandoned_responses',
|
124 |
-
'label' => __( 'Save abandoned
|
125 |
'tooltip' => __( 'Keep incomplete users responses stored in your WordPress database.', HAPPYFORMS_TEXT_DOMAIN ),
|
126 |
);
|
127 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
$controls[1690] = array(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
129 |
'type' => 'checkbox_dummy',
|
130 |
'dummy_id' => 'unique_id',
|
131 |
-
'label' => __( '
|
132 |
'tooltip' => __( 'Tag responses with a unique, incremental identifier.', HAPPYFORMS_TEXT_DOMAIN ),
|
133 |
);
|
134 |
|
135 |
$controls[1800] = array(
|
136 |
'type' => 'checkbox_dummy',
|
137 |
'dummy_id' => 'preview_before_submit',
|
138 |
-
'label' => __( 'Preview values before
|
139 |
'tooltip' => __( 'Let your users review their submission before confirming it.', HAPPYFORMS_TEXT_DOMAIN ),
|
140 |
);
|
141 |
|
76 |
}
|
77 |
|
78 |
public function add_dummy_setup_controls( $controls ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
$controls[1320] = array(
|
80 |
'type' => 'checkbox_dummy',
|
81 |
'dummy_id' => 'use_theme_styles',
|
111 |
'tooltip' => __( 'Generate a link that can be clicked to open an overlay window for this form.', HAPPYFORMS_TEXT_DOMAIN ),
|
112 |
);
|
113 |
|
114 |
+
$controls[1591] = array(
|
115 |
+
'type' => 'checkbox_dummy',
|
116 |
+
'dummy_id' => 'save_meta_data',
|
117 |
+
'label' => __( 'Save user\'s meta data', HAPPYFORMS_TEXT_DOMAIN ),
|
118 |
+
'tooltip' => __( 'User meta data like IP address, browser language, local time, and platform will be saved with each submission when checked.', HAPPYFORMS_TEXT_DOMAIN ),
|
119 |
+
);
|
120 |
+
|
121 |
$controls[1660] = array(
|
122 |
'type' => 'checkbox_dummy',
|
123 |
'dummy_id' => 'save_abandoned_responses',
|
124 |
+
'label' => __( 'Save abandoned submissions', HAPPYFORMS_TEXT_DOMAIN ),
|
125 |
'tooltip' => __( 'Keep incomplete users responses stored in your WordPress database.', HAPPYFORMS_TEXT_DOMAIN ),
|
126 |
);
|
127 |
|
128 |
+
$controls[1661] = array(
|
129 |
+
'type' => 'checkbox_dummy',
|
130 |
+
'dummy_id' => 'save_and_resume_submissions',
|
131 |
+
'label' => __( 'Save and resume submissions', HAPPYFORMS_TEXT_DOMAIN ),
|
132 |
+
'tooltip' => __( 'Let users temporarily save their incomplete response and continue filling out the form at a later time.', HAPPYFORMS_TEXT_DOMAIN ),
|
133 |
+
);
|
134 |
+
|
135 |
$controls[1690] = array(
|
136 |
+
'type' => 'checkbox_dummy',
|
137 |
+
'dummy_id' => 'use_mailchimp',
|
138 |
+
'label' => __( 'Use Mailchimp', HAPPYFORMS_TEXT_DOMAIN ),
|
139 |
+
'tooltip' => __( 'Set which Mailchimp lists, groups and tags you want to use.', HAPPYFORMS_TEXT_DOMAIN )
|
140 |
+
);
|
141 |
+
|
142 |
+
$controls[1691] = array(
|
143 |
'type' => 'checkbox_dummy',
|
144 |
'dummy_id' => 'unique_id',
|
145 |
+
'label' => __( 'Add identifier to each submission', HAPPYFORMS_TEXT_DOMAIN ),
|
146 |
'tooltip' => __( 'Tag responses with a unique, incremental identifier.', HAPPYFORMS_TEXT_DOMAIN ),
|
147 |
);
|
148 |
|
149 |
$controls[1800] = array(
|
150 |
'type' => 'checkbox_dummy',
|
151 |
'dummy_id' => 'preview_before_submit',
|
152 |
+
'label' => __( 'Preview values before submit', HAPPYFORMS_TEXT_DOMAIN ),
|
153 |
'tooltip' => __( 'Let your users review their submission before confirming it.', HAPPYFORMS_TEXT_DOMAIN ),
|
154 |
);
|
155 |
|
inc/classes/parts/class-part-website-url-dummy.php
CHANGED
@@ -5,7 +5,7 @@ class HappyForms_Part_WebsiteUrl_Dummy extends HappyForms_Form_Part {
|
|
5 |
public $type = 'website_url_dummy';
|
6 |
|
7 |
public function __construct() {
|
8 |
-
$this->label = __( '
|
9 |
$this->description = __( 'For formatted site URLs.', 'happyforms' );
|
10 |
}
|
11 |
|
5 |
public $type = 'website_url_dummy';
|
6 |
|
7 |
public function __construct() {
|
8 |
+
$this->label = __( 'Web Address', 'happyforms' );
|
9 |
$this->description = __( 'For formatted site URLs.', 'happyforms' );
|
10 |
}
|
11 |
|
languages/happyforms.pot
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
# This file is distributed under the same license as the HappyForms package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: HappyForms 1.9.
|
6 |
"Report-Msgid-Bugs-To: https://thethemefoundry.com/support/\n"
|
7 |
-
"POT-Creation-Date: 2020-03-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -45,112 +45,116 @@ msgstr ""
|
|
45 |
msgid "Edit Form"
|
46 |
msgstr ""
|
47 |
|
48 |
-
#: core/classes/class-form-admin.php:
|
49 |
#: core/classes/class-form-controller.php:80
|
50 |
msgid "View form"
|
51 |
msgstr ""
|
52 |
|
53 |
-
#: core/classes/class-form-admin.php:
|
54 |
msgid "Preview form"
|
55 |
msgstr ""
|
56 |
|
57 |
-
#: core/classes/class-form-admin.php:
|
58 |
msgid "Form updated."
|
59 |
msgstr ""
|
60 |
|
61 |
-
#: core/classes/class-form-admin.php:
|
62 |
msgid "Custom field updated."
|
63 |
msgstr ""
|
64 |
|
65 |
-
#: core/classes/class-form-admin.php:
|
66 |
msgid "Custom field deleted."
|
67 |
msgstr ""
|
68 |
|
69 |
-
#: core/classes/class-form-admin.php:
|
70 |
msgid "Form restored to revision from %s."
|
71 |
msgstr ""
|
72 |
|
73 |
-
#: core/classes/class-form-admin.php:
|
74 |
msgid "Form published."
|
75 |
msgstr ""
|
76 |
|
77 |
-
#: core/classes/class-form-admin.php:
|
78 |
msgid "Form saved."
|
79 |
msgstr ""
|
80 |
|
81 |
-
#: core/classes/class-form-admin.php:
|
82 |
msgid "Form submitted."
|
83 |
msgstr ""
|
84 |
|
85 |
-
#: core/classes/class-form-admin.php:
|
86 |
msgid "Form scheduled."
|
87 |
msgstr ""
|
88 |
|
89 |
-
#: core/classes/class-form-admin.php:
|
90 |
msgid "Form draft updated."
|
91 |
msgstr ""
|
92 |
|
93 |
-
#: core/classes/class-form-admin.php:
|
94 |
msgid "%s form updated."
|
95 |
msgid_plural "%s forms updated."
|
96 |
msgstr[0] ""
|
97 |
msgstr[1] ""
|
98 |
|
99 |
-
#: core/classes/class-form-admin.php:
|
100 |
msgid "%s form not updated, somebody is editing it."
|
101 |
msgid_plural "%s forms not updated, somebody is editing them."
|
102 |
msgstr[0] ""
|
103 |
msgstr[1] ""
|
104 |
|
105 |
-
#: core/classes/class-form-admin.php:
|
106 |
msgid "%s form permanently deleted."
|
107 |
msgid_plural "%s forms permanently deleted."
|
108 |
msgstr[0] ""
|
109 |
msgstr[1] ""
|
110 |
|
111 |
-
#: core/classes/class-form-admin.php:
|
112 |
msgid "%s form moved to the Trash."
|
113 |
msgid_plural "%s forms moved to the Trash."
|
114 |
msgstr[0] ""
|
115 |
msgstr[1] ""
|
116 |
|
117 |
-
#: core/classes/class-form-admin.php:
|
118 |
msgid "%s form restored from the Trash."
|
119 |
msgid_plural "%s forms restored from the Trash."
|
120 |
msgstr[0] ""
|
121 |
msgstr[1] ""
|
122 |
|
123 |
-
#: core/classes/class-form-admin.php:
|
124 |
msgid "Shortcode"
|
125 |
msgstr ""
|
126 |
|
127 |
-
#: core/classes/class-form-admin.php:
|
128 |
msgid "Author"
|
129 |
msgstr ""
|
130 |
|
131 |
-
#: core/classes/class-form-admin.php:
|
132 |
msgid "Copy to clipboard"
|
133 |
msgstr ""
|
134 |
|
135 |
-
#: core/classes/class-form-admin.php:
|
|
|
|
|
|
|
|
|
136 |
msgid "Edit"
|
137 |
msgstr ""
|
138 |
|
139 |
-
#: core/classes/class-form-admin.php:
|
140 |
#: core/templates/customize-form-item.php:27
|
141 |
#: core/templates/customize-form-part-footer.php:4
|
142 |
msgid "Duplicate"
|
143 |
msgstr ""
|
144 |
|
145 |
-
#: core/classes/class-form-admin.php:
|
146 |
msgid "Trash"
|
147 |
msgstr ""
|
148 |
|
149 |
-
#: core/classes/class-form-admin.php:
|
150 |
msgid "1 form duplicated."
|
151 |
msgstr ""
|
152 |
|
153 |
-
#: core/classes/class-form-admin.php:
|
154 |
msgid "Undo"
|
155 |
msgstr ""
|
156 |
|
@@ -309,109 +313,122 @@ msgstr ""
|
|
309 |
msgid "Missing validation callback for field %s"
|
310 |
msgstr ""
|
311 |
|
312 |
-
#: core/classes/class-form-setup.php:
|
313 |
msgid "Thank you! Your submission has been sent."
|
314 |
msgstr ""
|
315 |
|
316 |
-
#: core/classes/class-form-setup.php:
|
317 |
msgid "There is a problem! Please review your submission."
|
318 |
msgstr ""
|
319 |
|
320 |
-
#: core/classes/class-form-setup.php:
|
321 |
msgid "This field is required."
|
322 |
msgstr ""
|
323 |
|
324 |
-
#: core/classes/class-form-setup.php:
|
325 |
msgid "(optional)"
|
326 |
msgstr ""
|
327 |
|
328 |
-
#: core/classes/class-form-setup.php:
|
329 |
msgid "Send"
|
330 |
msgstr ""
|
331 |
|
332 |
-
#: core/classes/class-form-setup.php:
|
333 |
msgid "Validate your submission"
|
334 |
msgstr ""
|
335 |
|
336 |
-
#: core/classes/class-form-setup.php:
|
337 |
msgid "Review submission"
|
338 |
msgstr ""
|
339 |
|
340 |
-
#: core/classes/class-form-setup.php:
|
|
|
|
|
|
|
|
|
341 |
msgid "Success message"
|
342 |
msgstr ""
|
343 |
|
344 |
-
#: core/classes/class-form-setup.php:
|
345 |
-
msgid ""
|
346 |
-
|
347 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
348 |
msgstr ""
|
349 |
|
350 |
-
#: core/classes/class-form-setup.php:
|
351 |
msgid "Error message"
|
352 |
msgstr ""
|
353 |
|
354 |
-
#: core/classes/class-form-setup.php:
|
355 |
msgid ""
|
356 |
"This is the message your users will see when there are form errors "
|
357 |
"preventing submission."
|
358 |
msgstr ""
|
359 |
|
360 |
-
#: core/classes/class-form-setup.php:
|
361 |
msgid "Optional part label"
|
362 |
msgstr ""
|
363 |
|
364 |
-
#: core/classes/class-form-setup.php:
|
365 |
msgid ""
|
366 |
"Mark optional parts in your form to let your users distinguish them from "
|
367 |
"required parts."
|
368 |
msgstr ""
|
369 |
|
370 |
-
#: core/classes/class-form-setup.php:
|
371 |
msgid "Submit button label"
|
372 |
msgstr ""
|
373 |
|
374 |
-
#: core/classes/class-form-setup.php:
|
375 |
msgid "Change text of submit button to describe an action your form performs."
|
376 |
msgstr ""
|
377 |
|
378 |
-
#: core/classes/class-form-setup.php:
|
379 |
msgid "Submit button CSS classes"
|
380 |
msgstr ""
|
381 |
|
382 |
-
#: core/classes/class-form-setup.php:
|
383 |
msgid ""
|
384 |
"Add custom CSS classes separated by space for targeting a button in your "
|
385 |
"stylesheet."
|
386 |
msgstr ""
|
387 |
|
388 |
-
#: core/classes/class-form-setup.php:
|
389 |
msgid "Use custom HTML ID"
|
390 |
msgstr ""
|
391 |
|
392 |
-
#: core/classes/class-form-setup.php:
|
393 |
msgid "Add a unique HTML ID to your form. Write without a hash (#) character."
|
394 |
msgstr ""
|
395 |
|
396 |
-
#: core/classes/class-form-setup.php:
|
397 |
msgid "Form HTML ID"
|
398 |
msgstr ""
|
399 |
|
400 |
-
#: core/classes/class-form-setup.php:
|
401 |
msgid "Hide form after submit"
|
402 |
msgstr ""
|
403 |
|
404 |
-
#: core/classes/class-form-setup.php:
|
405 |
msgid ""
|
406 |
"Hide all form parts and display just title and confirmation message on "
|
407 |
"submit."
|
408 |
msgstr ""
|
409 |
|
410 |
-
#: core/classes/class-form-setup.php:
|
411 |
msgid "Spam prevention"
|
412 |
msgstr ""
|
413 |
|
414 |
-
#: core/classes/class-form-setup.php:
|
415 |
msgid "Protect your form against bots by using HoneyPot security."
|
416 |
msgstr ""
|
417 |
|
@@ -688,10 +705,8 @@ msgstr ""
|
|
688 |
|
689 |
#: core/classes/class-form-styles.php:720
|
690 |
#: core/templates/parts/customize-email.php:30
|
691 |
-
#: core/templates/parts/customize-email.php:68
|
692 |
#: core/templates/parts/customize-multi-line-text.php:30
|
693 |
#: core/templates/parts/customize-number.php:30
|
694 |
-
#: core/templates/parts/customize-number.php:91
|
695 |
#: core/templates/parts/customize-select.php:28
|
696 |
#: core/templates/parts/customize-single-line-text.php:30
|
697 |
#: inc/classes/parts/class-part-placeholder-dummy.php:8
|
@@ -1003,6 +1018,11 @@ msgstr ""
|
|
1003 |
msgid "Untitled"
|
1004 |
msgstr ""
|
1005 |
|
|
|
|
|
|
|
|
|
|
|
1006 |
#: core/classes/parts/class-part-email.php:8
|
1007 |
#: core/templates/customize-form-steps.php:5
|
1008 |
msgid "Email"
|
@@ -1020,20 +1040,14 @@ msgstr ""
|
|
1020 |
msgid "For paragraph text fields."
|
1021 |
msgstr ""
|
1022 |
|
1023 |
-
#: core/classes/parts/class-part-multi-line-text.php:
|
1024 |
-
|
1025 |
-
|
1026 |
-
|
1027 |
-
#: core/classes/parts/class-part-multi-line-text.php:234
|
1028 |
-
msgid "characters (max.)"
|
1029 |
msgstr ""
|
1030 |
|
1031 |
-
#: core/classes/parts/class-part-multi-line-text.php:
|
1032 |
-
|
1033 |
-
|
1034 |
-
|
1035 |
-
#: core/classes/parts/class-part-multi-line-text.php:240
|
1036 |
-
msgid "words (max.)"
|
1037 |
msgstr ""
|
1038 |
|
1039 |
#: core/classes/parts/class-part-number.php:8
|
@@ -2884,12 +2898,6 @@ msgstr ""
|
|
2884 |
msgid "Clear Results"
|
2885 |
msgstr ""
|
2886 |
|
2887 |
-
#: core/templates/customize-form-parts-drawer.php:30
|
2888 |
-
#: inc/classes/class-happyforms.php:231
|
2889 |
-
#: inc/templates/customize-controls/checkbox_dummy.php:7
|
2890 |
-
msgid "Upgrade"
|
2891 |
-
msgstr ""
|
2892 |
-
|
2893 |
#: core/templates/customize-form-parts-drawer.php:39
|
2894 |
msgid "No parts found."
|
2895 |
msgstr ""
|
@@ -2925,10 +2933,8 @@ msgstr ""
|
|
2925 |
#: core/templates/parts/customize-checkbox.php:4
|
2926 |
#: core/templates/parts/customize-checkbox.php:120
|
2927 |
#: core/templates/parts/customize-email.php:4
|
2928 |
-
#: core/templates/parts/customize-email.php:64
|
2929 |
#: core/templates/parts/customize-multi-line-text.php:4
|
2930 |
#: core/templates/parts/customize-number.php:4
|
2931 |
-
#: core/templates/parts/customize-number.php:87
|
2932 |
#: core/templates/parts/customize-radio.php:4
|
2933 |
#: core/templates/parts/customize-radio.php:103
|
2934 |
#: core/templates/parts/customize-select.php:4
|
@@ -3087,7 +3093,7 @@ msgstr ""
|
|
3087 |
|
3088 |
#: core/templates/parts/customize-checkbox.php:102
|
3089 |
#: core/templates/parts/customize-email.php:78
|
3090 |
-
#: core/templates/parts/customize-multi-line-text.php:
|
3091 |
#: core/templates/parts/customize-number.php:99
|
3092 |
#: core/templates/parts/customize-radio.php:83
|
3093 |
#: core/templates/parts/customize-select.php:83
|
@@ -3119,19 +3125,29 @@ msgstr ""
|
|
3119 |
msgid "Reveal on focus"
|
3120 |
msgstr ""
|
3121 |
|
3122 |
-
#: core/templates/parts/customize-email.php:
|
3123 |
-
|
3124 |
-
#: core/templates/parts/customize-single-line-text.php:53
|
3125 |
-
msgid "Suffix"
|
3126 |
msgstr ""
|
3127 |
|
3128 |
#: core/templates/parts/customize-email.php:54
|
3129 |
-
|
|
|
3130 |
msgstr ""
|
3131 |
|
3132 |
#: core/templates/parts/customize-email.php:59
|
3133 |
-
#: core/templates/parts/customize-number.php:
|
3134 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3135 |
msgstr ""
|
3136 |
|
3137 |
#: core/templates/parts/customize-multi-line-text.php:49
|
@@ -3139,31 +3155,35 @@ msgid "Limit words/characters"
|
|
3139 |
msgstr ""
|
3140 |
|
3141 |
#: core/templates/parts/customize-multi-line-text.php:55
|
3142 |
-
msgid "
|
3143 |
msgstr ""
|
3144 |
|
3145 |
#: core/templates/parts/customize-multi-line-text.php:59
|
3146 |
-
msgid "
|
3147 |
msgstr ""
|
3148 |
|
3149 |
-
#: core/templates/parts/customize-multi-line-text.php:
|
3150 |
-
msgid "
|
3151 |
msgstr ""
|
3152 |
|
3153 |
-
#: core/templates/parts/customize-multi-line-text.php:
|
3154 |
-
msgid "
|
3155 |
msgstr ""
|
3156 |
|
3157 |
-
#: core/templates/parts/customize-multi-line-text.php:
|
3158 |
-
msgid "Characters
|
|
|
|
|
|
|
|
|
3159 |
msgstr ""
|
3160 |
|
3161 |
#: core/templates/parts/customize-number.php:38
|
3162 |
-
msgid "Min
|
3163 |
msgstr ""
|
3164 |
|
3165 |
#: core/templates/parts/customize-number.php:42
|
3166 |
-
msgid "Max
|
3167 |
msgstr ""
|
3168 |
|
3169 |
#: core/templates/parts/customize-number.php:59
|
@@ -3178,7 +3198,7 @@ msgstr ""
|
|
3178 |
msgid "Decimal"
|
3179 |
msgstr ""
|
3180 |
|
3181 |
-
#: core/templates/parts/customize-number.php:
|
3182 |
#: core/templates/parts/customize-single-line-text.php:48
|
3183 |
msgid "Prefix"
|
3184 |
msgstr ""
|
@@ -3191,66 +3211,62 @@ msgstr ""
|
|
3191 |
msgid "'No results' label"
|
3192 |
msgstr ""
|
3193 |
|
3194 |
-
#: core/templates/parts/frontend-checkbox.php:13
|
3195 |
-
msgid "Select all"
|
3196 |
-
msgstr ""
|
3197 |
-
|
3198 |
#: core/templates/preview-form-pencil.php:3
|
3199 |
msgid "Click to edit this part."
|
3200 |
msgstr ""
|
3201 |
|
3202 |
#: inc/classes/class-happyforms.php:82
|
3203 |
-
msgid "
|
3204 |
msgstr ""
|
3205 |
|
3206 |
#: inc/classes/class-happyforms.php:83
|
3207 |
-
msgid ""
|
3208 |
-
"By default, users will be redirected to the post or page displaying this "
|
3209 |
-
"form. To set a custom redirect webpage, add a link here."
|
3210 |
msgstr ""
|
3211 |
|
3212 |
#: inc/classes/class-happyforms.php:89
|
3213 |
-
msgid "
|
3214 |
msgstr ""
|
3215 |
|
3216 |
#: inc/classes/class-happyforms.php:90
|
3217 |
-
msgid "
|
3218 |
msgstr ""
|
3219 |
|
3220 |
#: inc/classes/class-happyforms.php:96
|
3221 |
-
msgid "
|
3222 |
msgstr ""
|
3223 |
|
3224 |
#: inc/classes/class-happyforms.php:97
|
3225 |
-
msgid "
|
3226 |
msgstr ""
|
3227 |
|
3228 |
#: inc/classes/class-happyforms.php:103
|
3229 |
-
msgid "
|
3230 |
msgstr ""
|
3231 |
|
3232 |
#: inc/classes/class-happyforms.php:104
|
3233 |
-
msgid "
|
3234 |
msgstr ""
|
3235 |
|
3236 |
#: inc/classes/class-happyforms.php:110
|
3237 |
-
msgid "
|
3238 |
msgstr ""
|
3239 |
|
3240 |
#: inc/classes/class-happyforms.php:111
|
3241 |
-
msgid "
|
3242 |
msgstr ""
|
3243 |
|
3244 |
#: inc/classes/class-happyforms.php:117
|
3245 |
-
msgid "
|
3246 |
msgstr ""
|
3247 |
|
3248 |
#: inc/classes/class-happyforms.php:118
|
3249 |
-
msgid "
|
|
|
|
|
3250 |
msgstr ""
|
3251 |
|
3252 |
#: inc/classes/class-happyforms.php:124
|
3253 |
-
msgid "Save abandoned
|
3254 |
msgstr ""
|
3255 |
|
3256 |
#: inc/classes/class-happyforms.php:125
|
@@ -3258,98 +3274,116 @@ msgid "Keep incomplete users responses stored in your WordPress database."
|
|
3258 |
msgstr ""
|
3259 |
|
3260 |
#: inc/classes/class-happyforms.php:131
|
3261 |
-
msgid "
|
3262 |
msgstr ""
|
3263 |
|
3264 |
#: inc/classes/class-happyforms.php:132
|
3265 |
-
msgid "
|
|
|
|
|
3266 |
msgstr ""
|
3267 |
|
3268 |
#: inc/classes/class-happyforms.php:138
|
3269 |
-
msgid "
|
3270 |
msgstr ""
|
3271 |
|
3272 |
#: inc/classes/class-happyforms.php:139
|
3273 |
-
msgid "
|
3274 |
msgstr ""
|
3275 |
|
3276 |
#: inc/classes/class-happyforms.php:145
|
3277 |
-
msgid "
|
3278 |
msgstr ""
|
3279 |
|
3280 |
#: inc/classes/class-happyforms.php:146
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3281 |
msgid ""
|
3282 |
"Reduce the opacity of the submit button until all required form parts are "
|
3283 |
"valid."
|
3284 |
msgstr ""
|
3285 |
|
3286 |
-
#: inc/classes/class-happyforms.php:
|
3287 |
msgid "Limit submissions"
|
3288 |
msgstr ""
|
3289 |
|
3290 |
-
#: inc/classes/class-happyforms.php:
|
3291 |
msgid "Set limit on number of allowed form submission in general or per user."
|
3292 |
msgstr ""
|
3293 |
|
3294 |
-
#: inc/classes/class-happyforms.php:
|
3295 |
msgid "Schedule visibility"
|
3296 |
msgstr ""
|
3297 |
|
3298 |
-
#: inc/classes/class-happyforms.php:
|
3299 |
msgid ""
|
3300 |
"Show or hide this form during a chosen time and day. Go to Settings > "
|
3301 |
"Timezone to set your city offset."
|
3302 |
msgstr ""
|
3303 |
|
3304 |
-
#: inc/classes/class-happyforms.php:
|
3305 |
msgid "Include mark and reply link"
|
3306 |
msgstr ""
|
3307 |
|
3308 |
-
#: inc/classes/class-happyforms.php:
|
3309 |
msgid "Reply to your users and mark their submission as read in one click."
|
3310 |
msgstr ""
|
3311 |
|
3312 |
-
#: inc/classes/class-happyforms.php:
|
3313 |
msgid "Link to attachments in email"
|
3314 |
msgstr ""
|
3315 |
|
3316 |
-
#: inc/classes/class-happyforms.php:
|
3317 |
msgid "Show attachments as links instead of a simple counter."
|
3318 |
msgstr ""
|
3319 |
|
3320 |
-
#: inc/classes/class-happyforms.php:
|
3321 |
msgid "Hide Placeholder parts in email"
|
3322 |
msgstr ""
|
3323 |
|
3324 |
-
#: inc/classes/class-happyforms.php:
|
3325 |
msgid "Include referral link"
|
3326 |
msgstr ""
|
3327 |
|
3328 |
-
#: inc/classes/class-happyforms.php:
|
3329 |
msgid "Include the page link your form was submitted from."
|
3330 |
msgstr ""
|
3331 |
|
3332 |
-
#: inc/classes/class-happyforms.php:
|
3333 |
msgid "Attach PDF to confirmation email"
|
3334 |
msgstr ""
|
3335 |
|
3336 |
-
#: inc/classes/class-happyforms.php:
|
3337 |
msgid "Attach a PDF to the recipient's confirmation email."
|
3338 |
msgstr ""
|
3339 |
|
3340 |
-
#: inc/classes/class-happyforms.php:
|
3341 |
msgid "Send abandonment email"
|
3342 |
msgstr ""
|
3343 |
|
3344 |
-
#: inc/classes/class-happyforms.php:
|
3345 |
msgid "Notify users when they abandon your form before submitting it."
|
3346 |
msgstr ""
|
3347 |
|
3348 |
-
#: inc/classes/class-happyforms.php:
|
3349 |
msgid "HappyForms Upgrade"
|
3350 |
msgstr ""
|
3351 |
|
3352 |
-
#: inc/classes/class-happyforms.php:
|
3353 |
msgid ""
|
3354 |
"<p>Can we ask a favor?</p><p>You created your first form %s days ago — how "
|
3355 |
"time flies! Since then, we’ve answered hundreds of community emails and "
|
@@ -3492,7 +3526,7 @@ msgid "For displaying personal honorifics."
|
|
3492 |
msgstr ""
|
3493 |
|
3494 |
#: inc/classes/parts/class-part-website-url-dummy.php:8
|
3495 |
-
msgid "
|
3496 |
msgstr ""
|
3497 |
|
3498 |
#: inc/classes/parts/class-part-website-url-dummy.php:9
|
2 |
# This file is distributed under the same license as the HappyForms package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: HappyForms 1.9.7\n"
|
6 |
"Report-Msgid-Bugs-To: https://thethemefoundry.com/support/\n"
|
7 |
+
"POT-Creation-Date: 2020-03-27 12:44:28+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
45 |
msgid "Edit Form"
|
46 |
msgstr ""
|
47 |
|
48 |
+
#: core/classes/class-form-admin.php:156
|
49 |
#: core/classes/class-form-controller.php:80
|
50 |
msgid "View form"
|
51 |
msgstr ""
|
52 |
|
53 |
+
#: core/classes/class-form-admin.php:161
|
54 |
msgid "Preview form"
|
55 |
msgstr ""
|
56 |
|
57 |
+
#: core/classes/class-form-admin.php:166 core/classes/class-form-admin.php:169
|
58 |
msgid "Form updated."
|
59 |
msgstr ""
|
60 |
|
61 |
+
#: core/classes/class-form-admin.php:167
|
62 |
msgid "Custom field updated."
|
63 |
msgstr ""
|
64 |
|
65 |
+
#: core/classes/class-form-admin.php:168
|
66 |
msgid "Custom field deleted."
|
67 |
msgstr ""
|
68 |
|
69 |
+
#: core/classes/class-form-admin.php:170
|
70 |
msgid "Form restored to revision from %s."
|
71 |
msgstr ""
|
72 |
|
73 |
+
#: core/classes/class-form-admin.php:171
|
74 |
msgid "Form published."
|
75 |
msgstr ""
|
76 |
|
77 |
+
#: core/classes/class-form-admin.php:172
|
78 |
msgid "Form saved."
|
79 |
msgstr ""
|
80 |
|
81 |
+
#: core/classes/class-form-admin.php:173
|
82 |
msgid "Form submitted."
|
83 |
msgstr ""
|
84 |
|
85 |
+
#: core/classes/class-form-admin.php:174
|
86 |
msgid "Form scheduled."
|
87 |
msgstr ""
|
88 |
|
89 |
+
#: core/classes/class-form-admin.php:175
|
90 |
msgid "Form draft updated."
|
91 |
msgstr ""
|
92 |
|
93 |
+
#: core/classes/class-form-admin.php:198
|
94 |
msgid "%s form updated."
|
95 |
msgid_plural "%s forms updated."
|
96 |
msgstr[0] ""
|
97 |
msgstr[1] ""
|
98 |
|
99 |
+
#: core/classes/class-form-admin.php:199
|
100 |
msgid "%s form not updated, somebody is editing it."
|
101 |
msgid_plural "%s forms not updated, somebody is editing them."
|
102 |
msgstr[0] ""
|
103 |
msgstr[1] ""
|
104 |
|
105 |
+
#: core/classes/class-form-admin.php:200
|
106 |
msgid "%s form permanently deleted."
|
107 |
msgid_plural "%s forms permanently deleted."
|
108 |
msgstr[0] ""
|
109 |
msgstr[1] ""
|
110 |
|
111 |
+
#: core/classes/class-form-admin.php:201
|
112 |
msgid "%s form moved to the Trash."
|
113 |
msgid_plural "%s forms moved to the Trash."
|
114 |
msgstr[0] ""
|
115 |
msgstr[1] ""
|
116 |
|
117 |
+
#: core/classes/class-form-admin.php:202
|
118 |
msgid "%s form restored from the Trash."
|
119 |
msgid_plural "%s forms restored from the Trash."
|
120 |
msgstr[0] ""
|
121 |
msgstr[1] ""
|
122 |
|
123 |
+
#: core/classes/class-form-admin.php:245
|
124 |
msgid "Shortcode"
|
125 |
msgstr ""
|
126 |
|
127 |
+
#: core/classes/class-form-admin.php:246
|
128 |
msgid "Author"
|
129 |
msgstr ""
|
130 |
|
131 |
+
#: core/classes/class-form-admin.php:284
|
132 |
msgid "Copy to clipboard"
|
133 |
msgstr ""
|
134 |
|
135 |
+
#: core/classes/class-form-admin.php:338
|
136 |
+
msgid "Y/m/d"
|
137 |
+
msgstr ""
|
138 |
+
|
139 |
+
#: core/classes/class-form-admin.php:378
|
140 |
msgid "Edit"
|
141 |
msgstr ""
|
142 |
|
143 |
+
#: core/classes/class-form-admin.php:382
|
144 |
#: core/templates/customize-form-item.php:27
|
145 |
#: core/templates/customize-form-part-footer.php:4
|
146 |
msgid "Duplicate"
|
147 |
msgstr ""
|
148 |
|
149 |
+
#: core/classes/class-form-admin.php:386
|
150 |
msgid "Trash"
|
151 |
msgstr ""
|
152 |
|
153 |
+
#: core/classes/class-form-admin.php:430
|
154 |
msgid "1 form duplicated."
|
155 |
msgstr ""
|
156 |
|
157 |
+
#: core/classes/class-form-admin.php:432
|
158 |
msgid "Undo"
|
159 |
msgstr ""
|
160 |
|
313 |
msgid "Missing validation callback for field %s"
|
314 |
msgstr ""
|
315 |
|
316 |
+
#: core/classes/class-form-setup.php:56
|
317 |
msgid "Thank you! Your submission has been sent."
|
318 |
msgstr ""
|
319 |
|
320 |
+
#: core/classes/class-form-setup.php:60
|
321 |
msgid "There is a problem! Please review your submission."
|
322 |
msgstr ""
|
323 |
|
324 |
+
#: core/classes/class-form-setup.php:80
|
325 |
msgid "This field is required."
|
326 |
msgstr ""
|
327 |
|
328 |
+
#: core/classes/class-form-setup.php:84
|
329 |
msgid "(optional)"
|
330 |
msgstr ""
|
331 |
|
332 |
+
#: core/classes/class-form-setup.php:88
|
333 |
msgid "Send"
|
334 |
msgstr ""
|
335 |
|
336 |
+
#: core/classes/class-form-setup.php:112
|
337 |
msgid "Validate your submission"
|
338 |
msgstr ""
|
339 |
|
340 |
+
#: core/classes/class-form-setup.php:120
|
341 |
msgid "Review submission"
|
342 |
msgstr ""
|
343 |
|
344 |
+
#: core/classes/class-form-setup.php:168
|
345 |
+
msgid "Confirm submission"
|
346 |
+
msgstr ""
|
347 |
+
|
348 |
+
#: core/classes/class-form-setup.php:170 core/classes/class-form-setup.php:188
|
349 |
msgid "Success message"
|
350 |
msgstr ""
|
351 |
|
352 |
+
#: core/classes/class-form-setup.php:171
|
353 |
+
msgid "Redirect to web address"
|
354 |
+
msgstr ""
|
355 |
+
|
356 |
+
#: core/classes/class-form-setup.php:174
|
357 |
+
msgid "Choose how the form should confirm successful submission."
|
358 |
+
msgstr ""
|
359 |
+
|
360 |
+
#: core/classes/class-form-setup.php:178
|
361 |
+
#: core/templates/customize-form-parts-drawer.php:30
|
362 |
+
#: inc/classes/class-happyforms.php:245
|
363 |
+
#: inc/templates/customize-controls/checkbox_dummy.php:7
|
364 |
+
msgid "Upgrade"
|
365 |
msgstr ""
|
366 |
|
367 |
+
#: core/classes/class-form-setup.php:196
|
368 |
msgid "Error message"
|
369 |
msgstr ""
|
370 |
|
371 |
+
#: core/classes/class-form-setup.php:197
|
372 |
msgid ""
|
373 |
"This is the message your users will see when there are form errors "
|
374 |
"preventing submission."
|
375 |
msgstr ""
|
376 |
|
377 |
+
#: core/classes/class-form-setup.php:202
|
378 |
msgid "Optional part label"
|
379 |
msgstr ""
|
380 |
|
381 |
+
#: core/classes/class-form-setup.php:203
|
382 |
msgid ""
|
383 |
"Mark optional parts in your form to let your users distinguish them from "
|
384 |
"required parts."
|
385 |
msgstr ""
|
386 |
|
387 |
+
#: core/classes/class-form-setup.php:208
|
388 |
msgid "Submit button label"
|
389 |
msgstr ""
|
390 |
|
391 |
+
#: core/classes/class-form-setup.php:209
|
392 |
msgid "Change text of submit button to describe an action your form performs."
|
393 |
msgstr ""
|
394 |
|
395 |
+
#: core/classes/class-form-setup.php:214
|
396 |
msgid "Submit button CSS classes"
|
397 |
msgstr ""
|
398 |
|
399 |
+
#: core/classes/class-form-setup.php:215
|
400 |
msgid ""
|
401 |
"Add custom CSS classes separated by space for targeting a button in your "
|
402 |
"stylesheet."
|
403 |
msgstr ""
|
404 |
|
405 |
+
#: core/classes/class-form-setup.php:220
|
406 |
msgid "Use custom HTML ID"
|
407 |
msgstr ""
|
408 |
|
409 |
+
#: core/classes/class-form-setup.php:222
|
410 |
msgid "Add a unique HTML ID to your form. Write without a hash (#) character."
|
411 |
msgstr ""
|
412 |
|
413 |
+
#: core/classes/class-form-setup.php:230
|
414 |
msgid "Form HTML ID"
|
415 |
msgstr ""
|
416 |
|
417 |
+
#: core/classes/class-form-setup.php:238
|
418 |
msgid "Hide form after submit"
|
419 |
msgstr ""
|
420 |
|
421 |
+
#: core/classes/class-form-setup.php:239
|
422 |
msgid ""
|
423 |
"Hide all form parts and display just title and confirmation message on "
|
424 |
"submit."
|
425 |
msgstr ""
|
426 |
|
427 |
+
#: core/classes/class-form-setup.php:244
|
428 |
msgid "Spam prevention"
|
429 |
msgstr ""
|
430 |
|
431 |
+
#: core/classes/class-form-setup.php:245
|
432 |
msgid "Protect your form against bots by using HoneyPot security."
|
433 |
msgstr ""
|
434 |
|
705 |
|
706 |
#: core/classes/class-form-styles.php:720
|
707 |
#: core/templates/parts/customize-email.php:30
|
|
|
708 |
#: core/templates/parts/customize-multi-line-text.php:30
|
709 |
#: core/templates/parts/customize-number.php:30
|
|
|
710 |
#: core/templates/parts/customize-select.php:28
|
711 |
#: core/templates/parts/customize-single-line-text.php:30
|
712 |
#: inc/classes/parts/class-part-placeholder-dummy.php:8
|
1018 |
msgid "Untitled"
|
1019 |
msgstr ""
|
1020 |
|
1021 |
+
#: core/classes/parts/class-part-checkbox.php:83
|
1022 |
+
#: core/templates/parts/frontend-checkbox.php:13
|
1023 |
+
msgid "Select all"
|
1024 |
+
msgstr ""
|
1025 |
+
|
1026 |
#: core/classes/parts/class-part-email.php:8
|
1027 |
#: core/templates/customize-form-steps.php:5
|
1028 |
msgid "Email"
|
1040 |
msgid "For paragraph text fields."
|
1041 |
msgstr ""
|
1042 |
|
1043 |
+
#: core/classes/parts/class-part-multi-line-text.php:69
|
1044 |
+
#: core/templates/parts/customize-multi-line-text.php:64
|
1045 |
+
msgid "Min characters"
|
|
|
|
|
|
|
1046 |
msgstr ""
|
1047 |
|
1048 |
+
#: core/classes/parts/class-part-multi-line-text.php:73
|
1049 |
+
#: core/templates/parts/customize-multi-line-text.php:61
|
1050 |
+
msgid "Max words"
|
|
|
|
|
|
|
1051 |
msgstr ""
|
1052 |
|
1053 |
#: core/classes/parts/class-part-number.php:8
|
2898 |
msgid "Clear Results"
|
2899 |
msgstr ""
|
2900 |
|
|
|
|
|
|
|
|
|
|
|
|
|
2901 |
#: core/templates/customize-form-parts-drawer.php:39
|
2902 |
msgid "No parts found."
|
2903 |
msgstr ""
|
2933 |
#: core/templates/parts/customize-checkbox.php:4
|
2934 |
#: core/templates/parts/customize-checkbox.php:120
|
2935 |
#: core/templates/parts/customize-email.php:4
|
|
|
2936 |
#: core/templates/parts/customize-multi-line-text.php:4
|
2937 |
#: core/templates/parts/customize-number.php:4
|
|
|
2938 |
#: core/templates/parts/customize-radio.php:4
|
2939 |
#: core/templates/parts/customize-radio.php:103
|
2940 |
#: core/templates/parts/customize-select.php:4
|
3093 |
|
3094 |
#: core/templates/parts/customize-checkbox.php:102
|
3095 |
#: core/templates/parts/customize-email.php:78
|
3096 |
+
#: core/templates/parts/customize-multi-line-text.php:82
|
3097 |
#: core/templates/parts/customize-number.php:99
|
3098 |
#: core/templates/parts/customize-radio.php:83
|
3099 |
#: core/templates/parts/customize-select.php:83
|
3125 |
msgid "Reveal on focus"
|
3126 |
msgstr ""
|
3127 |
|
3128 |
+
#: core/templates/parts/customize-email.php:49
|
3129 |
+
msgid "Suggest common email domains"
|
|
|
|
|
3130 |
msgstr ""
|
3131 |
|
3132 |
#: core/templates/parts/customize-email.php:54
|
3133 |
+
#: core/templates/parts/customize-number.php:74
|
3134 |
+
msgid "Require confirmation"
|
3135 |
msgstr ""
|
3136 |
|
3137 |
#: core/templates/parts/customize-email.php:59
|
3138 |
+
#: core/templates/parts/customize-number.php:79
|
3139 |
+
msgid "'Confirmation' label"
|
3140 |
+
msgstr ""
|
3141 |
+
|
3142 |
+
#: core/templates/parts/customize-email.php:63
|
3143 |
+
#: core/templates/parts/customize-number.php:83
|
3144 |
+
msgid "'Confirmation' placeholder"
|
3145 |
+
msgstr ""
|
3146 |
+
|
3147 |
+
#: core/templates/parts/customize-email.php:69
|
3148 |
+
#: core/templates/parts/customize-number.php:92
|
3149 |
+
#: core/templates/parts/customize-single-line-text.php:53
|
3150 |
+
msgid "Suffix"
|
3151 |
msgstr ""
|
3152 |
|
3153 |
#: core/templates/parts/customize-multi-line-text.php:49
|
3155 |
msgstr ""
|
3156 |
|
3157 |
#: core/templates/parts/customize-multi-line-text.php:55
|
3158 |
+
msgid "Limit"
|
3159 |
msgstr ""
|
3160 |
|
3161 |
#: core/templates/parts/customize-multi-line-text.php:59
|
3162 |
+
msgid "Count"
|
3163 |
msgstr ""
|
3164 |
|
3165 |
+
#: core/templates/parts/customize-multi-line-text.php:62
|
3166 |
+
msgid "Min words"
|
3167 |
msgstr ""
|
3168 |
|
3169 |
+
#: core/templates/parts/customize-multi-line-text.php:63
|
3170 |
+
msgid "Max characters"
|
3171 |
msgstr ""
|
3172 |
|
3173 |
+
#: core/templates/parts/customize-multi-line-text.php:68
|
3174 |
+
msgid "'Characters' label"
|
3175 |
+
msgstr ""
|
3176 |
+
|
3177 |
+
#: core/templates/parts/customize-multi-line-text.php:72
|
3178 |
+
msgid "'Words' label"
|
3179 |
msgstr ""
|
3180 |
|
3181 |
#: core/templates/parts/customize-number.php:38
|
3182 |
+
msgid "Min number"
|
3183 |
msgstr ""
|
3184 |
|
3185 |
#: core/templates/parts/customize-number.php:42
|
3186 |
+
msgid "Max number"
|
3187 |
msgstr ""
|
3188 |
|
3189 |
#: core/templates/parts/customize-number.php:59
|
3198 |
msgid "Decimal"
|
3199 |
msgstr ""
|
3200 |
|
3201 |
+
#: core/templates/parts/customize-number.php:88
|
3202 |
#: core/templates/parts/customize-single-line-text.php:48
|
3203 |
msgid "Prefix"
|
3204 |
msgstr ""
|
3211 |
msgid "'No results' label"
|
3212 |
msgstr ""
|
3213 |
|
|
|
|
|
|
|
|
|
3214 |
#: core/templates/preview-form-pencil.php:3
|
3215 |
msgid "Click to edit this part."
|
3216 |
msgstr ""
|
3217 |
|
3218 |
#: inc/classes/class-happyforms.php:82
|
3219 |
+
msgid "Use theme styles"
|
3220 |
msgstr ""
|
3221 |
|
3222 |
#: inc/classes/class-happyforms.php:83
|
3223 |
+
msgid "Inherit theme default styles instead of using HappyForms styles."
|
|
|
|
|
3224 |
msgstr ""
|
3225 |
|
3226 |
#: inc/classes/class-happyforms.php:89
|
3227 |
+
msgid "Shuffle parts"
|
3228 |
msgstr ""
|
3229 |
|
3230 |
#: inc/classes/class-happyforms.php:90
|
3231 |
+
msgid "Shuffle the order of all form parts to avoid biases in your responses."
|
3232 |
msgstr ""
|
3233 |
|
3234 |
#: inc/classes/class-happyforms.php:96
|
3235 |
+
msgid "Use reCAPTCHA"
|
3236 |
msgstr ""
|
3237 |
|
3238 |
#: inc/classes/class-happyforms.php:97
|
3239 |
+
msgid "Protect your form against bots using your Google ReCaptcha credentials."
|
3240 |
msgstr ""
|
3241 |
|
3242 |
#: inc/classes/class-happyforms.php:103
|
3243 |
+
msgid "Require password"
|
3244 |
msgstr ""
|
3245 |
|
3246 |
#: inc/classes/class-happyforms.php:104
|
3247 |
+
msgid "Only users with password will be able to view and submit the form."
|
3248 |
msgstr ""
|
3249 |
|
3250 |
#: inc/classes/class-happyforms.php:110
|
3251 |
+
msgid "Open in overlay window"
|
3252 |
msgstr ""
|
3253 |
|
3254 |
#: inc/classes/class-happyforms.php:111
|
3255 |
+
msgid "Generate a link that can be clicked to open an overlay window for this form."
|
3256 |
msgstr ""
|
3257 |
|
3258 |
#: inc/classes/class-happyforms.php:117
|
3259 |
+
msgid "Save user's meta data"
|
3260 |
msgstr ""
|
3261 |
|
3262 |
#: inc/classes/class-happyforms.php:118
|
3263 |
+
msgid ""
|
3264 |
+
"User meta data like IP address, browser language, local time, and platform "
|
3265 |
+
"will be saved with each submission when checked."
|
3266 |
msgstr ""
|
3267 |
|
3268 |
#: inc/classes/class-happyforms.php:124
|
3269 |
+
msgid "Save abandoned submissions"
|
3270 |
msgstr ""
|
3271 |
|
3272 |
#: inc/classes/class-happyforms.php:125
|
3274 |
msgstr ""
|
3275 |
|
3276 |
#: inc/classes/class-happyforms.php:131
|
3277 |
+
msgid "Save and resume submissions"
|
3278 |
msgstr ""
|
3279 |
|
3280 |
#: inc/classes/class-happyforms.php:132
|
3281 |
+
msgid ""
|
3282 |
+
"Let users temporarily save their incomplete response and continue filling "
|
3283 |
+
"out the form at a later time."
|
3284 |
msgstr ""
|
3285 |
|
3286 |
#: inc/classes/class-happyforms.php:138
|
3287 |
+
msgid "Use Mailchimp"
|
3288 |
msgstr ""
|
3289 |
|
3290 |
#: inc/classes/class-happyforms.php:139
|
3291 |
+
msgid "Set which Mailchimp lists, groups and tags you want to use."
|
3292 |
msgstr ""
|
3293 |
|
3294 |
#: inc/classes/class-happyforms.php:145
|
3295 |
+
msgid "Add identifier to each submission"
|
3296 |
msgstr ""
|
3297 |
|
3298 |
#: inc/classes/class-happyforms.php:146
|
3299 |
+
msgid "Tag responses with a unique, incremental identifier."
|
3300 |
+
msgstr ""
|
3301 |
+
|
3302 |
+
#: inc/classes/class-happyforms.php:152
|
3303 |
+
msgid "Preview values before submit"
|
3304 |
+
msgstr ""
|
3305 |
+
|
3306 |
+
#: inc/classes/class-happyforms.php:153
|
3307 |
+
msgid "Let your users review their submission before confirming it."
|
3308 |
+
msgstr ""
|
3309 |
+
|
3310 |
+
#: inc/classes/class-happyforms.php:159
|
3311 |
+
msgid "Fade submit button until valid"
|
3312 |
+
msgstr ""
|
3313 |
+
|
3314 |
+
#: inc/classes/class-happyforms.php:160
|
3315 |
msgid ""
|
3316 |
"Reduce the opacity of the submit button until all required form parts are "
|
3317 |
"valid."
|
3318 |
msgstr ""
|
3319 |
|
3320 |
+
#: inc/classes/class-happyforms.php:166
|
3321 |
msgid "Limit submissions"
|
3322 |
msgstr ""
|
3323 |
|
3324 |
+
#: inc/classes/class-happyforms.php:167
|
3325 |
msgid "Set limit on number of allowed form submission in general or per user."
|
3326 |
msgstr ""
|
3327 |
|
3328 |
+
#: inc/classes/class-happyforms.php:173
|
3329 |
msgid "Schedule visibility"
|
3330 |
msgstr ""
|
3331 |
|
3332 |
+
#: inc/classes/class-happyforms.php:174
|
3333 |
msgid ""
|
3334 |
"Show or hide this form during a chosen time and day. Go to Settings > "
|
3335 |
"Timezone to set your city offset."
|
3336 |
msgstr ""
|
3337 |
|
3338 |
+
#: inc/classes/class-happyforms.php:184
|
3339 |
msgid "Include mark and reply link"
|
3340 |
msgstr ""
|
3341 |
|
3342 |
+
#: inc/classes/class-happyforms.php:185
|
3343 |
msgid "Reply to your users and mark their submission as read in one click."
|
3344 |
msgstr ""
|
3345 |
|
3346 |
+
#: inc/classes/class-happyforms.php:191
|
3347 |
msgid "Link to attachments in email"
|
3348 |
msgstr ""
|
3349 |
|
3350 |
+
#: inc/classes/class-happyforms.php:192
|
3351 |
msgid "Show attachments as links instead of a simple counter."
|
3352 |
msgstr ""
|
3353 |
|
3354 |
+
#: inc/classes/class-happyforms.php:198
|
3355 |
msgid "Hide Placeholder parts in email"
|
3356 |
msgstr ""
|
3357 |
|
3358 |
+
#: inc/classes/class-happyforms.php:204
|
3359 |
msgid "Include referral link"
|
3360 |
msgstr ""
|
3361 |
|
3362 |
+
#: inc/classes/class-happyforms.php:205
|
3363 |
msgid "Include the page link your form was submitted from."
|
3364 |
msgstr ""
|
3365 |
|
3366 |
+
#: inc/classes/class-happyforms.php:211
|
3367 |
msgid "Attach PDF to confirmation email"
|
3368 |
msgstr ""
|
3369 |
|
3370 |
+
#: inc/classes/class-happyforms.php:212
|
3371 |
msgid "Attach a PDF to the recipient's confirmation email."
|
3372 |
msgstr ""
|
3373 |
|
3374 |
+
#: inc/classes/class-happyforms.php:218
|
3375 |
msgid "Send abandonment email"
|
3376 |
msgstr ""
|
3377 |
|
3378 |
+
#: inc/classes/class-happyforms.php:219
|
3379 |
msgid "Notify users when they abandon your form before submitting it."
|
3380 |
msgstr ""
|
3381 |
|
3382 |
+
#: inc/classes/class-happyforms.php:244
|
3383 |
msgid "HappyForms Upgrade"
|
3384 |
msgstr ""
|
3385 |
|
3386 |
+
#: inc/classes/class-happyforms.php:369
|
3387 |
msgid ""
|
3388 |
"<p>Can we ask a favor?</p><p>You created your first form %s days ago — how "
|
3389 |
"time flies! Since then, we’ve answered hundreds of community emails and "
|
3526 |
msgstr ""
|
3527 |
|
3528 |
#: inc/classes/parts/class-part-website-url-dummy.php:8
|
3529 |
+
msgid "Web Address"
|
3530 |
msgstr ""
|
3531 |
|
3532 |
#: inc/classes/parts/class-part-website-url-dummy.php:9
|
readme.txt
CHANGED
@@ -3,9 +3,9 @@
|
|
3 |
Contributors: thethemefoundry
|
4 |
Tags: contact, contact form, email, feedback form, form, form builder, custom form, lead generation, survey form, quote form
|
5 |
Requires at least: 4.8
|
6 |
-
Tested up to: 5.
|
7 |
Requires PHP: 5.3
|
8 |
-
Stable tag: 1.9.
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
@@ -97,6 +97,12 @@ Yep! HappyForms free isn't going anywhere but for those looking for even more yo
|
|
97 |
|
98 |
== Changelog ==
|
99 |
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
= 1.9.6 =
|
101 |
* Improvement: When searching for specific choice in Dropdown part, a configurable "No results" message is shown if no choice is found.
|
102 |
* Improvement: Custom HTML ID of the form using "Form HTML ID" control can now be toggled by checking "Use custom HTML ID" control.
|
@@ -587,6 +593,9 @@ Yep! HappyForms free isn't going anywhere but for those looking for even more yo
|
|
587 |
|
588 |
== Upgrade Notice ==
|
589 |
|
|
|
|
|
|
|
590 |
= 1.9.6 =
|
591 |
* Miscellaneous improvements and bugfixes.
|
592 |
|
3 |
Contributors: thethemefoundry
|
4 |
Tags: contact, contact form, email, feedback form, form, form builder, custom form, lead generation, survey form, quote form
|
5 |
Requires at least: 4.8
|
6 |
+
Tested up to: 5.4
|
7 |
Requires PHP: 5.3
|
8 |
+
Stable tag: 1.9.7
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
97 |
|
98 |
== Changelog ==
|
99 |
|
100 |
+
= 1.9.7 =
|
101 |
+
Improvement: New “Confirm submission” control in Setup step.
|
102 |
+
Improvement: Various improvements to HappyForms UI.
|
103 |
+
Improvement: Compatibility with WordPress 5.4.
|
104 |
+
Bugfix: Form width slider in Style tab → General was not updating value in preview.
|
105 |
+
|
106 |
= 1.9.6 =
|
107 |
* Improvement: When searching for specific choice in Dropdown part, a configurable "No results" message is shown if no choice is found.
|
108 |
* Improvement: Custom HTML ID of the form using "Form HTML ID" control can now be toggled by checking "Use custom HTML ID" control.
|
593 |
|
594 |
== Upgrade Notice ==
|
595 |
|
596 |
+
= 1.9.7 =
|
597 |
+
* Compatibility with WordPress 5.4, improvements and bug fixes.
|
598 |
+
|
599 |
= 1.9.6 =
|
600 |
* Miscellaneous improvements and bugfixes.
|
601 |
|