Contact Form by WPForms – Drag & Drop Form Builder for WordPress - Version 1.2.0

Version Description

  • Added: Form preview
  • Added: Column classes for Checkbox and Multiple choice inputs
  • Changed: Some fields did not have the correct (unique) CSS ID, this has been corrected, which means custom styling may need to be adjusted
  • Changed: Removed nonce verification
Download this release

Release Info

Developer jaredatch
Plugin Icon 128x128 Contact Form by WPForms – Drag & Drop Form Builder for WordPress
Version 1.2.0
Comparing to
See all releases

Code changes from version 1.1.8.4 to 1.2.0

assets/css/admin-builder.css CHANGED
@@ -201,6 +201,8 @@ body {
201
  #wpforms-builder .wpforms-toolbar .wpforms-center {
202
  font-size: 20px;
203
  font-weight: 300;
 
 
204
  }
205
 
206
  #wpforms-builder .wpforms-toolbar .wpforms-center-form-name {
@@ -217,7 +219,8 @@ body {
217
  top: 0;
218
  }
219
 
220
- #wpforms-builder .wpforms-toolbar #wpforms-embed {
 
221
  background-color: #f6f6f6;
222
  border: 1px solid #ccc;
223
  color: #6b6b6b;
@@ -232,7 +235,8 @@ body {
232
  margin: 17px 10px 0 0;
233
  }
234
 
235
- #wpforms-builder .wpforms-toolbar #wpforms-embed:hover {
 
236
  background-color: #eee;
237
  }
238
 
@@ -570,6 +574,50 @@ body {
570
  color: #666;
571
  }
572
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
573
  /* Smart Tags
574
  -------------------------------------------------------------- */
575
 
201
  #wpforms-builder .wpforms-toolbar .wpforms-center {
202
  font-size: 20px;
203
  font-weight: 300;
204
+ /*text-align: left;
205
+ padding: 0 0 0 100px;*/
206
  }
207
 
208
  #wpforms-builder .wpforms-toolbar .wpforms-center-form-name {
219
  top: 0;
220
  }
221
 
222
+ #wpforms-builder .wpforms-toolbar #wpforms-embed,
223
+ #wpforms-builder .wpforms-toolbar #wpforms-preview {
224
  background-color: #f6f6f6;
225
  border: 1px solid #ccc;
226
  color: #6b6b6b;
235
  margin: 17px 10px 0 0;
236
  }
237
 
238
+ #wpforms-builder .wpforms-toolbar #wpforms-embed:hover,
239
+ #wpforms-builder .wpforms-toolbar #wpforms-preview:hover {
240
  background-color: #eee;
241
  }
242
 
574
  color: #666;
575
  }
576
 
577
+ /* Field Map table */
578
+ #wpforms-builder .wpforms-field-map-table {
579
+ margin: 30px 0;
580
+ }
581
+
582
+ #wpforms-builder .wpforms-field-map-table h3 {
583
+ margin: 0 0 10px 0;
584
+ color: #444;
585
+ }
586
+
587
+ #wpforms-builder .wpforms-field-map-table table,
588
+ #wpforms-builder .wpforms-field-map-table select,
589
+ #wpforms-builder .wpforms-field-map-table input {
590
+ width: 100%;
591
+ }
592
+
593
+ #wpforms-builder .wpforms-field-map-table td {
594
+ padding: 4px 0;
595
+ }
596
+
597
+ #wpforms-builder .wpforms-field-map-table td.field,
598
+ #wpforms-builder .wpforms-field-map-table td.actions {
599
+ padding-left: 10px;
600
+ }
601
+
602
+ #wpforms-builder .wpforms-field-map-table .actions i {
603
+ font-size: 18px;
604
+ display: inline-block;
605
+ }
606
+
607
+ #wpforms-builder .wpforms-field-map-table .actions {
608
+ width: 50px;
609
+ }
610
+
611
+ #wpforms-builder .wpforms-field-map-table .actions .add {
612
+ margin-right: 5px;
613
+ }
614
+
615
+ #wpforms-builder .wpforms-field-map-table tr:first-of-type .remove {
616
+ display: none;
617
+ }
618
+
619
+
620
+
621
  /* Smart Tags
622
  -------------------------------------------------------------- */
623
 
assets/css/admin-entries.css DELETED
@@ -1,353 +0,0 @@
1
- /* ==========================================================================
2
- Entries Styles
3
- ========================================================================== */
4
-
5
- #wpforms-entries .wpforms-clear:before {
6
- content: " ";
7
- display: table;
8
- }
9
-
10
- #wpforms-entries .wpforms-clear:after {
11
- clear: both;
12
- content: " ";
13
- display: table;
14
- }
15
-
16
- /* List / Table view
17
- -------------------------------------------------------------- */
18
-
19
- /* Form title and actions */
20
- #wpforms-entries .form-details {
21
- border-bottom: 1px solid #ddd;
22
- padding-bottom: 15px;
23
- margin: 0 0 10px;
24
- }
25
-
26
- #wpforms-entries .form-details-actions {
27
- font-weight: 400;
28
- font-size: 13px;
29
- }
30
-
31
- #wpforms-entries .form-details-action-links {
32
- float: left;
33
- }
34
-
35
- #wpforms-entries .form-details-action-links a {
36
- text-decoration: none;
37
- display: inline-block;
38
- margin: 0 12px 0 0;
39
- }
40
-
41
- #wpforms-entries .form-details-action-links a:last-of-type {
42
- margin: 0;
43
- }
44
-
45
- #wpforms-entries .form-details-action-links .dashicons {
46
- width: 16px;
47
- height: 16px;
48
- font-size: 16px;
49
- }
50
-
51
- #wpforms-entries .form-details-action-switch {
52
- float: right;
53
- vertical-align: top;
54
- margin-top: -6px;
55
- width: 225px;
56
- }
57
-
58
- #wpforms-entries .wp-list-table .column-indicators {
59
- width: 35px;
60
- text-align: center;
61
- }
62
-
63
- #wpforms-entries .wp-list-table .column-indicators a:focus {
64
- -webkit-box-shadow: none;
65
- box-shadow: none;
66
- }
67
-
68
- #wpforms-entries .wp-list-table .column-indicators .dashicons {
69
- width: 14px;
70
- height: 14px;
71
- font-size: 14px;
72
- margin-top: 3px;
73
- }
74
-
75
- /* Star indicator*/
76
- #wpforms-entries .wp-list-table .indicator-star .dashicons {
77
- margin-right: 6px;
78
- }
79
-
80
- #wpforms-entries .wp-list-table .indicator-star {
81
- color: #e4e4e4;
82
- }
83
-
84
- #wpforms-entries .wp-list-table .indicator-star:hover,
85
- #wpforms-entries .wp-list-table .indicator-star.unstar {
86
- color: #0073aa;
87
- }
88
-
89
- /* Read indicator */
90
- #wpforms-entries .wp-list-table .indicator-read {
91
- color: #9ede84;
92
- }
93
-
94
- #wpforms-entries .wp-list-table .indicator-read:hover,
95
- #wpforms-entries .wp-list-table .indicator-read.unread {
96
- color: #e4e4e4;
97
- }
98
-
99
- #wpforms-entries .wp-list-table .column-date {
100
- width: 150px;
101
- }
102
-
103
- #wpforms-entries .wp-list-table .column-actions {
104
- width: 100px;
105
- }
106
-
107
- #wpforms-entries .wp-list-table .sep {
108
- color: #ddd;
109
- }
110
-
111
- #wpforms-entries .wp-list-table .delete {
112
- /*color: #ddd;
113
- color: #a00;*/
114
- }
115
-
116
- #wpforms-entries .wp-list-table .delete:hover {
117
- color: red;
118
- }
119
-
120
- @media only screen and (max-width: 900px) {
121
-
122
- #wpforms-entries .form-details-action-links {
123
- float: none;
124
- }
125
-
126
- #wpforms-entries .form-details-action-switch {
127
- float: none;
128
- margin-top: 15px;
129
- display: block;
130
- }
131
- }
132
-
133
- @media only screen and (max-width: 790px) {
134
- /* @todo */
135
- }
136
-
137
- /* Entry Details
138
- -------------------------------------------------------------- */
139
-
140
- #wpforms-entries .postbox .hndle {
141
- cursor: default !important;
142
- }
143
-
144
- /* Navigation in page title area */
145
- .wpforms-entry-back {
146
- margin-right: 30px;
147
- }
148
-
149
- .wpforms-entry-navigation {
150
- font-size: 13px;
151
- line-height: 29px;
152
- display: inline-block;
153
- position: relative;
154
- top: -3px;
155
- }
156
-
157
- .wpforms-entry-navigation-buttons .add-new-h2 {
158
- top: auto !important;
159
- margin: 0 !important;
160
- padding: 4px 0px !important;
161
- text-align: center;
162
- background: #e4e4e4;
163
- }
164
-
165
- .wpforms-entry-navigation-buttons .add-new-h2.inactive {
166
- opacity: 0.5;
167
- pointer-events: none;
168
- cursor: default;
169
- color: #999;
170
- }
171
-
172
- .wpforms-entry-navigation-buttons .wpforms-entry-current {
173
- top: auto;
174
- margin: 0;
175
- text-align: center;
176
- padding: 4px 10px;
177
- position: relative;
178
- text-decoration: none;
179
- border: 1px solid #ccc;
180
- -webkit-border-radius: 2px;
181
- border-radius: 2px;
182
- background: #fff;
183
- font-size: 13px;
184
- line-height: 29px;
185
- text-transform: center;
186
- }
187
-
188
- .wpforms-entry-navigation-buttons .dashicons {
189
- font-size: 16px;
190
- height: auto;
191
- width: 28px;
192
- line-height: 29px;
193
- }
194
-
195
- /* Entry Fields metabox */
196
- #wpforms-entry-fields h2.hndle {
197
- font-size: 18px;
198
- }
199
-
200
- #wpforms-entry-fields h2.hndle .dashicons {
201
- font-size: 16px;
202
- height: 16px;
203
- width: 16px;
204
- margin: 4px 4px 0 0;
205
- /*color: #ffcc00;*/
206
- color: #0073aa;
207
- }
208
-
209
- #wpforms-entry-fields .no-fields {
210
- padding: 12px;
211
- margin: 0;
212
- }
213
-
214
- #wpforms-entry-fields .inside,
215
- #wpforms-entry-fields .inside p {
216
- padding: 0;
217
- margin: 0;
218
- }
219
-
220
- #wpforms-entry-fields .inside .wpforms-entry-field-name {
221
- font-weight: 600;
222
- background: #ebf3fb;
223
- padding: 8px 12px;
224
- }
225
-
226
- #wpforms-entry-fields .inside .wpforms-entry-field-value {
227
- background: #fff;
228
- padding: 8px 12px;
229
- }
230
-
231
- #wpforms-entry-fields .inside .empty .wpforms-entry-field-value {
232
- font-style: italic;
233
- color: #999;
234
- }
235
-
236
- #wpforms-entry-fields .wpforms-empty-field-toggle {
237
- float: right;
238
- text-decoration: none;
239
- padding: 5px 0 0;
240
- }
241
-
242
- /* Entry Notes metabox */
243
-
244
- #wpforms-entry-notes .inside {
245
- margin: 0;
246
- padding: 0;
247
- }
248
-
249
- #wpforms-entry-notes .wpforms-entry-notes-new {
250
- padding: 10px;
251
- }
252
-
253
- #wpforms-entry-notes form {
254
- display: none;
255
- }
256
-
257
- #wpforms-entry-notes .btns {
258
- overflow: auto;
259
- padding: 8px 0;
260
- }
261
-
262
- #wpforms-entry-notes .no-notes {
263
- margin: 0;
264
- padding: 4px 10px 8px;
265
- }
266
-
267
- #wpforms-entry-notes .wpforms-entry-notes-single {
268
- padding: 10px;
269
- border-top: 1px solid #e3e1e3;
270
- }
271
-
272
- #wpforms-entry-notes .wpforms-entry-notes-single p:last-of-type {
273
- margin-bottom: 0;
274
- }
275
-
276
- #wpforms-entry-notes .wpforms-entry-notes-single.even {
277
- background-color: #f9f9f9;
278
- }
279
-
280
- #wpforms-entry-notes .wpforms-entry-notes-byline {
281
- color: #888;
282
- margin-bottom: 10px;
283
- }
284
-
285
- #wpforms-entry-notes .wpforms-entry-notes-byline .sep {
286
- color: #ddd;
287
- }
288
-
289
- #wpforms-entry-notes .wpforms-entry-notes-byline .note-user {
290
- text-decoration: none;
291
- font-weight: 600;
292
- }
293
-
294
- #wpforms-entry-notes .wpforms-entry-notes-byline .note-delete {
295
- color: #a00;
296
- text-decoration: none;
297
- }
298
-
299
- #wpforms-entry-notes .wpforms-entry-notes-byline .note-delete:hover {
300
- color: red;
301
- text-decoration: none;
302
- }
303
-
304
- /* Entry Details / Entry Action metaboxes */
305
- #wpforms-entry-details .inside,
306
- #wpforms-entry-actions .inside {
307
- margin: 0;
308
- padding: 0;
309
- }
310
-
311
- #wpforms-entries .wpforms-entry-details-meta,
312
- #wpforms-entries .wpforms-entry-actions-meta {
313
- padding: 6px 0 0;
314
- }
315
-
316
- #wpforms-entries .wpforms-entry-details-meta p,
317
- #wpforms-entries .wpforms-entry-actions-meta p {
318
- padding: 6px 10px 8px;
319
- margin: 0;
320
- }
321
-
322
- #wpforms-entries .wpforms-entry-details-meta strong,
323
- #wpforms-entries .wpforms-entry-actions-meta strong {
324
- font-weight: 600;
325
- }
326
-
327
- #wpforms-entries .wpforms-entry-details-meta .dashicons,
328
- #wpforms-entries .wpforms-entry-actions-meta .dashicons {
329
- padding: 0 2px 0 0;
330
- color: #82878A;
331
- top: -1px;
332
- left: -1px;
333
- position: relative;
334
- text-decoration: none;
335
- }
336
-
337
- #wpforms-entry-details .submitdelete {
338
- color: #a00;
339
- text-decoration: none;
340
- padding: 1px 2px;
341
- }
342
-
343
- #wpforms-entry-details .submitdelete:hover {
344
- color: red;
345
- }
346
-
347
- #wpforms-entries .wpforms-entry-actions-meta a {
348
- text-decoration: none;
349
- }
350
-
351
- #wpforms-entries .wpforms-entry-actions-meta a:hover {
352
- text-decoration: underline;
353
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/css/admin-overview.css CHANGED
@@ -8,4 +8,12 @@
8
 
9
  #wpforms-overview .wp-list-table .column-entries {
10
  width: 70px;
 
 
 
 
 
 
 
 
11
  }
8
 
9
  #wpforms-overview .wp-list-table .column-entries {
10
  width: 70px;
11
+ }
12
+
13
+ #wpforms-overview .wp-list-table .column-shortcode {
14
+ width: 150px;
15
+ }
16
+
17
+ #wpforms-overview .wp-list-table .column-created {
18
+ width: 145px;
19
  }
assets/css/wpforms-base.css CHANGED
@@ -160,6 +160,36 @@
160
  clear: none;
161
  }
162
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
163
  /* Private */
164
  .wpforms-container .wpforms-one-half {
165
  float: left;
@@ -322,4 +352,24 @@
322
  .wpforms-container .wpforms-field-row.wpforms-field-large {
323
  max-width: 100%;
324
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
325
  }
160
  clear: none;
161
  }
162
 
163
+ /* User list column classes */
164
+ .wpforms-container .wpforms-checkbox-2-columns ul,
165
+ .wpforms-container .wpforms-multiplechoice-2-columns ul,
166
+ .wpforms-container .wpforms-list-2-columns ul {
167
+ -webkit-column-count: 2;
168
+ -moz-column-count: 2;
169
+ column-count: 2;
170
+ }
171
+
172
+ .wpforms-container .wpforms-checkbox-3-columns ul,
173
+ .wpforms-container .wpforms-multiplechoice-3-columns ul,
174
+ .wpforms-container .wpforms-list-3-columns ul {
175
+ -webkit-column-count: 3;
176
+ -moz-column-count: 3;
177
+ column-count: 3;
178
+ }
179
+
180
+ .wpforms-container .wpforms-checkbox-2-columns ul li,
181
+ .wpforms-container .wpforms-multiplechoice-2-columns ul li,
182
+ .wpforms-container .wpforms-list-2-columns ul li,
183
+ .wpforms-container .wpforms-checkbox-3-columns ul li,
184
+ .wpforms-container .wpforms-multiplechoice-3-columns ul li,
185
+ .wpforms-container .wpforms-list-3-columns ul li {
186
+ -webkit-column-break-inside: avoid;
187
+ page-break-inside: avoid; /* Firefox */
188
+ break-inside: avoid; /* IE 10+ */
189
+ width: 100%;
190
+ float: left;
191
+ }
192
+
193
  /* Private */
194
  .wpforms-container .wpforms-one-half {
195
  float: left;
352
  .wpforms-container .wpforms-field-row.wpforms-field-large {
353
  max-width: 100%;
354
  }
355
+
356
+ /* User list column classes */
357
+ .wpforms-container .wpforms-checkbox-2-columns ul,
358
+ .wpforms-container .wpforms-multiplechoice-2-columns ul,
359
+ .wpforms-container .wpforms-list-2-columns ul,
360
+ .wpforms-container .wpforms-checkbox-3-columns ul,
361
+ .wpforms-container .wpforms-multiplechoice-3-columns ul,
362
+ .wpforms-container .wpforms-list-3-columns ul {
363
+ -webkit-column-count: auto;
364
+ -moz-column-count: auto;
365
+ column-count: auto;
366
+ }
367
+ .wpforms-container .wpforms-checkbox-2-columns ul li,
368
+ .wpforms-container .wpforms-multiplechoice-2-columns ul li,
369
+ .wpforms-container .wpforms-list-2-columns ul li,
370
+ .wpforms-container .wpforms-checkbox-3-columns ul li,
371
+ .wpforms-container .wpforms-multiplechoice-3-columns ul li,
372
+ .wpforms-container .wpforms-list-3-columns ul li {
373
+ float: none;
374
+ }
375
  }
assets/css/wpforms-full.css CHANGED
@@ -238,6 +238,36 @@ div.wpforms-container-full .wpforms-form .wpforms-field.wpforms-third-third {
238
  clear: none;
239
  }
240
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
241
  /* Private */
242
  div.wpforms-container-full .wpforms-form .wpforms-one-half {
243
  float: left;
@@ -520,4 +550,24 @@ div.wpforms-container-full .wpforms-form .wpforms-recaptcha-container iframe {
520
  div.wpforms-container-full .wpforms-form .wpforms-field-row.wpforms-field-large {
521
  max-width: 100%;
522
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
523
  }
238
  clear: none;
239
  }
240
 
241
+ /* User list column classes */
242
+ div.wpforms-container-full .wpforms-form .wpforms-checkbox-2-columns ul,
243
+ div.wpforms-container-full .wpforms-form .wpforms-multiplechoice-2-columns ul,
244
+ div.wpforms-container-full .wpforms-form .wpforms-list-2-columns ul {
245
+ -webkit-column-count: 2;
246
+ -moz-column-count: 2;
247
+ column-count: 2;
248
+ }
249
+
250
+ div.wpforms-container-full .wpforms-form .wpforms-checkbox-3-columns ul,
251
+ div.wpforms-container-full .wpforms-form .wpforms-multiplechoice-3-columns ul,
252
+ div.wpforms-container-full .wpforms-form .wpforms-list-3-columns ul {
253
+ -webkit-column-count: 3;
254
+ -moz-column-count: 3;
255
+ column-count: 3;
256
+ }
257
+
258
+ div.wpforms-container-full .wpforms-form .wpforms-checkbox-2-columns ul li,
259
+ div.wpforms-container-full .wpforms-form .wpforms-multiplechoice-2-columns ul li,
260
+ div.wpforms-container-full .wpforms-form .wpforms-list-2-columns ul li,
261
+ div.wpforms-container-full .wpforms-form .wpforms-checkbox-3-columns ul li,
262
+ div.wpforms-container-full .wpforms-form .wpforms-multiplechoice-3-columns ul li,
263
+ div.wpforms-container-full .wpforms-form .wpforms-list-3-columns ul li {
264
+ -webkit-column-break-inside: avoid;
265
+ page-break-inside: avoid; /* Firefox */
266
+ break-inside: avoid; /* IE 10+ */
267
+ width: 100%;
268
+ float: left;
269
+ }
270
+
271
  /* Private */
272
  div.wpforms-container-full .wpforms-form .wpforms-one-half {
273
  float: left;
550
  div.wpforms-container-full .wpforms-form .wpforms-field-row.wpforms-field-large {
551
  max-width: 100%;
552
  }
553
+
554
+ /* User list column classes */
555
+ div.wpforms-container-full .wpforms-form .wpforms-checkbox-2-columns ul,
556
+ div.wpforms-container-full .wpforms-form .wpforms-multiplechoice-2-columns ul,
557
+ div.wpforms-container-full .wpforms-form .wpforms-list-2-columns ul,
558
+ div.wpforms-container-full .wpforms-form .wpforms-checkbox-3-columns ul,
559
+ div.wpforms-container-full .wpforms-form .wpforms-multiplechoice-3-columns ul,
560
+ div.wpforms-container-full .wpforms-form .wpforms-list-3-columns ul {
561
+ -webkit-column-count: auto;
562
+ -moz-column-count: auto;
563
+ column-count: auto;
564
+ }
565
+ div.wpforms-container-full .wpforms-form .wpforms-checkbox-2-columns ul li,
566
+ div.wpforms-container-full .wpforms-form .wpforms-multiplechoice-2-columns ul li,
567
+ div.wpforms-container-full .wpforms-form .wpforms-list-2-columns ul li,
568
+ div.wpforms-container-full .wpforms-form .wpforms-checkbox-3-columns ul li,
569
+ div.wpforms-container-full .wpforms-form .wpforms-multiplechoice-3-columns ul li,
570
+ div.wpforms-container-full .wpforms-form .wpforms-list-3-columns ul li {
571
+ float: none;
572
+ }
573
  }
assets/js/admin-builder.js CHANGED
@@ -158,6 +158,9 @@
158
 
159
  // Save and Exit
160
  WPFormsBuilder.bindUIActionsSaveExit();
 
 
 
161
  },
162
 
163
  //--------------------------------------------------------------------//
@@ -752,19 +755,29 @@
752
  */
753
  fieldDelete: function(id) {
754
 
755
- $.confirm({
756
- title: false,
757
- content: wpforms_builder.delete_confirm,
758
- backgroundDismiss: false,
759
- closeIcon: false,
760
- confirm: function(){
761
- $('#wpforms-field-'+id).remove();
762
- $('#wpforms-field-option-'+id).remove();
763
- $('.wpforms-field, .wpforms-title-desc').removeClass('active');
764
- WPFormsBuilder.fieldTabToggle('add-fields');
765
- $(document).trigger('wpformsFieldDelete', id);
766
- }
767
- });
 
 
 
 
 
 
 
 
 
 
768
  },
769
 
770
  /**
@@ -1059,6 +1072,7 @@
1059
  });
1060
  },
1061
 
 
1062
  /**
1063
  * Toggle displaying/setup Pagebreak fields and settings.
1064
  *
@@ -1272,6 +1286,137 @@
1272
  }
1273
  },
1274
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1275
  //--------------------------------------------------------------------//
1276
  // Other functions
1277
  //--------------------------------------------------------------------//
158
 
159
  // Save and Exit
160
  WPFormsBuilder.bindUIActionsSaveExit();
161
+
162
+ // General/ global
163
+ WPFormsBuilder.bindUIActionsGeneral();
164
  },
165
 
166
  //--------------------------------------------------------------------//
755
  */
756
  fieldDelete: function(id) {
757
 
758
+ var $field = $('#wpforms-field-'+id);
759
+
760
+ if ($field.hasClass('no-delete')) {
761
+ $.alert({
762
+ title: wpforms_builder.field_locked,
763
+ content: wpforms_builder.field_locked_msg,
764
+ confirmButton: wpforms_builder.close
765
+ });
766
+ } else {
767
+ $.confirm({
768
+ title: false,
769
+ content: wpforms_builder.delete_confirm,
770
+ backgroundDismiss: false,
771
+ closeIcon: false,
772
+ confirm: function(){
773
+ $('#wpforms-field-'+id).remove();
774
+ $('#wpforms-field-option-'+id).remove();
775
+ $('.wpforms-field, .wpforms-title-desc').removeClass('active');
776
+ WPFormsBuilder.fieldTabToggle('add-fields');
777
+ $(document).trigger('wpformsFieldDelete', id);
778
+ }
779
+ });
780
+ }
781
  },
782
 
783
  /**
1072
  });
1073
  },
1074
 
1075
+
1076
  /**
1077
  * Toggle displaying/setup Pagebreak fields and settings.
1078
  *
1286
  }
1287
  },
1288
 
1289
+ //--------------------------------------------------------------------//
1290
+ // General / global
1291
+ //--------------------------------------------------------------------//
1292
+
1293
+ /**
1294
+ * Element bindings for general and global items
1295
+ *
1296
+ * @since 1.2.0
1297
+ */
1298
+ bindUIActionsGeneral: function() {
1299
+
1300
+ // Field map table, update key source
1301
+ $(document).on('input', '.wpforms-field-map-table .key-source', function(){
1302
+ var value = $(this).val(),
1303
+ $dest = $(this).parent().parent().find('.key-destination');
1304
+ name = $dest.data('name');
1305
+ if (value) {
1306
+ $dest.attr('name', name.replace('{source}', value.replace(/[^0-9a-z_-]/gi, '')));
1307
+ }
1308
+ })
1309
+
1310
+ // Field map table, delete row
1311
+ $(document).on('click', '.wpforms-field-map-table .remove', function(e) {
1312
+ e.preventDefault();
1313
+ WPFormsBuilder.fieldMapTableDeleteRow(e, $(this));
1314
+ });
1315
+
1316
+ // Field map table, Add row
1317
+ $(document).on('click', '.wpforms-field-map-table .add', function(e) {
1318
+ e.preventDefault();
1319
+ WPFormsBuilder.fieldMapTableAddRow(e, $(this));
1320
+ });
1321
+
1322
+ // Global select field mapping
1323
+ jQuery(document).on('wpformsFieldUpdate', WPFormsBuilder.fieldMapSelect);
1324
+ },
1325
+
1326
+ /**
1327
+ * Field map table - Delete row
1328
+ *
1329
+ * @since 1.2.0
1330
+ */
1331
+ fieldMapTableDeleteRow: function(e, el) {
1332
+
1333
+ var $this = $(el),
1334
+ $row = $this.closest('tr'),
1335
+ $table = $this.closest('table')
1336
+ total = $table.find('tr').length;
1337
+
1338
+ if (total > '1') {
1339
+ $row.remove();
1340
+ }
1341
+ },
1342
+
1343
+ /**
1344
+ * Field map table - Add row
1345
+ *
1346
+ * @since 1.2.0
1347
+ */
1348
+ fieldMapTableAddRow: function(e, el) {
1349
+
1350
+ var $this = $(el),
1351
+ $row = $this.closest('tr'),
1352
+ $table = $this.closest('tbody')
1353
+ choice = $row.clone().insertAfter($row);
1354
+
1355
+ choice.find('input').val('');
1356
+ choice.find('select :selected').prop('selected', false);
1357
+ choice.find('.key-destination').attr('name','');
1358
+ },
1359
+
1360
+ /**
1361
+ * Update Stripe Receipt email field on form updates.
1362
+ *
1363
+ * @since 1.2.0
1364
+ * @param object event
1365
+ * @param object fields
1366
+ */
1367
+ fieldMapSelect: function(e, fields) {
1368
+
1369
+ // Apply to all selects with indentifier class
1370
+ $('.wpforms-field-map-select').each(function(index, el) {
1371
+
1372
+ var $this = $(this),
1373
+ selected = $this.find('option:selected').val(),
1374
+ allowedFields = $this.data('field-map-allowed'),
1375
+ placeholder = $this.data('field-map-placeholder');
1376
+
1377
+ // Check if custom placeholder was provided
1378
+ if (typeof placeholder === 'undefined' || !placeholder) {
1379
+ placeholder = wpforms_builder.select_field;
1380
+ }
1381
+
1382
+ // Reset select add placeholder option
1383
+ $this.empty().append($('<option>', { value: '', text : placeholder }));
1384
+
1385
+ // If allowed fields are not defined, bail
1386
+ if (typeof allowedFields !== 'undefined' && allowedFields) {
1387
+ allowedFields = allowedFields.split(' ');
1388
+ } else {
1389
+ return;
1390
+ }
1391
+
1392
+ // If we have no fields for the form, bail
1393
+ if ( !fields || $.isEmptyObject(fields) ) {
1394
+ return;
1395
+ }
1396
+
1397
+ // Loop through the current fields
1398
+ for(var key in fields) {
1399
+
1400
+ // Compile the label
1401
+ if (fields[key].label.length) {
1402
+ var label = wpf.sanitizeString(fields[key].label);
1403
+ } else {
1404
+ var label = 'Field #' + fields[key].val;
1405
+ }
1406
+
1407
+ // Add to select if it is a field type allowed
1408
+ if ($.inArray(fields[key].type, allowedFields) >= 0 || $.inArray('all-fields', allowedFields) >= 0) {
1409
+ $this.append($('<option>', { value: fields[key].id, text : label }));
1410
+ }
1411
+ }
1412
+
1413
+ // Restore previous value if found
1414
+ if (selected) {
1415
+ $this.find('option[value="'+selected+'"]').prop('selected',true);
1416
+ }
1417
+ });
1418
+ },
1419
+
1420
  //--------------------------------------------------------------------//
1421
  // Other functions
1422
  //--------------------------------------------------------------------//
assets/js/admin-utils.js CHANGED
@@ -66,7 +66,7 @@ var wpf = {
66
  fields = formData.fields,
67
  fieldOrder = [],
68
  fieldsOrdered = new Array(),
69
- fieldBlacklist = ['html','divider','file-upload'];
70
 
71
  if (!fields) {
72
  return false;
@@ -105,16 +105,16 @@ var wpf = {
105
  /**
106
  * todo: get a single field
107
  *
108
- * @since 1.0.1
109
  * @param {[type]} id
110
  * @param {[type]} key
111
  * @return {[type]}
112
  */
113
  getField: function(id,key) {
114
-
115
  },
116
 
117
- // hasField
118
 
119
  /**
120
  * Remove items from an array.
66
  fields = formData.fields,
67
  fieldOrder = [],
68
  fieldsOrdered = new Array(),
69
+ fieldBlacklist = ['html','divider','pagebreak'];
70
 
71
  if (!fields) {
72
  return false;
105
  /**
106
  * todo: get a single field
107
  *
108
+ * @since 1.1.10
109
  * @param {[type]} id
110
  * @param {[type]} key
111
  * @return {[type]}
112
  */
113
  getField: function(id,key) {
114
+ // @todo
115
  },
116
 
117
+ // hasField @todo
118
 
119
  /**
120
  * Remove items from an array.
includes/admin/builder/class-builder.php CHANGED
@@ -80,6 +80,9 @@ class WPForms_Builder {
80
  $this->view = isset( $_GET['view'] ) ? $_GET['view'] : 'setup';
81
  }
82
 
 
 
 
83
  // Fetch form
84
  $this->form = wpforms()->form->get( $form_id );
85
 
@@ -244,6 +247,8 @@ class WPForms_Builder {
244
  'ok' => __( 'OK', 'wpforms' ),
245
  'close' => __( 'Close', 'wpforms' ),
246
  'field' => __( 'Field', 'wpforms' ),
 
 
247
  'fields_available' => __( 'Available Fields', 'wpforms' ),
248
  'fields_unavailable' => __( 'No fields available', 'wpforms' ),
249
  'nonce' => wp_create_nonce( 'wpforms-builder' ),
@@ -334,6 +339,11 @@ class WPForms_Builder {
334
  <div class="wpforms-right">
335
 
336
  <?php if ( $this->form ) : ?>
 
 
 
 
 
337
 
338
  <a href="#" id="wpforms-embed" title="<?php _e( 'Embed Form', 'wpforms' ); ?>">
339
  <i class="fa fa-code"></i>
80
  $this->view = isset( $_GET['view'] ) ? $_GET['view'] : 'setup';
81
  }
82
 
83
+ // Preview page check
84
+ wpforms()->preview->form_preview_check();
85
+
86
  // Fetch form
87
  $this->form = wpforms()->form->get( $form_id );
88
 
247
  'ok' => __( 'OK', 'wpforms' ),
248
  'close' => __( 'Close', 'wpforms' ),
249
  'field' => __( 'Field', 'wpforms' ),
250
+ 'field_locked' => __( 'Field Locked', 'wpforms' ),
251
+ 'field_locked_msg' => __( 'This field cannot be deleted because it required by the form template.', 'wpforms' ),
252
  'fields_available' => __( 'Available Fields', 'wpforms' ),
253
  'fields_unavailable' => __( 'No fields available', 'wpforms' ),
254
  'nonce' => wp_create_nonce( 'wpforms-builder' ),
339
  <div class="wpforms-right">
340
 
341
  <?php if ( $this->form ) : ?>
342
+
343
+ <!--<a href="<?php echo esc_url( wpforms()->preview->form_preview_url( $form_id ) ); ?>" id="wpforms-preview" title="<?php _e( 'Preview Form', 'wpforms' ); ?>">
344
+ <i class="fa fa-eye"></i>
345
+ <span class="text"><?php _e( 'Preview', 'wpforms' ); ?></span>
346
+ </a>-->
347
 
348
  <a href="#" id="wpforms-embed" title="<?php _e( 'Embed Form', 'wpforms' ); ?>">
349
  <i class="fa fa-code"></i>
includes/admin/builder/functions.php CHANGED
@@ -33,8 +33,10 @@ function wpforms_panel_field( $option, $panel, $field, $form_data, $label, $args
33
  $parent = !empty( $args['parent'] ) ? esc_attr( $args['parent'] ) : '';
34
  $label = !empty( $label ) ? esc_html( $label ) : '';
35
  $class = !empty( $args['class'] ) ? esc_attr( $args['class'] ) : '';
36
- $default = !empty( $args['default'] ) ? $args['default'] : '';
 
37
  $placeholder = !empty( $args['placeholder'] ) ? esc_attr( $args['placeholder'] ) : '';
 
38
 
39
  // Check if we should store values in a parent array
40
  if ( !empty( $parent ) ) {
@@ -45,6 +47,13 @@ function wpforms_panel_field( $option, $panel, $field, $form_data, $label, $args
45
  $value = isset( $form_data[$panel][$field] ) ? $form_data[$panel][$field] : $default;
46
  }
47
 
 
 
 
 
 
 
 
48
  // Determine what field type to output
49
  switch ( $option ) {
50
 
@@ -52,13 +61,15 @@ function wpforms_panel_field( $option, $panel, $field, $form_data, $label, $args
52
  case 'text':
53
  $type = !empty( $args['type'] ) ? esc_attr( $args['type'] ) : 'text';
54
  $output = sprintf(
55
- '<input type="%s" id="wpforms-panel-field-%s-%s" name="%s" value="%s" placeholder="%s">',
56
  $type,
57
  sanitize_html_class( $panel ),
58
  sanitize_html_class( $field ),
59
  $field_name,
60
  esc_attr( $value ),
61
- $placeholder
 
 
62
  );
63
  break;
64
 
@@ -66,12 +77,14 @@ function wpforms_panel_field( $option, $panel, $field, $form_data, $label, $args
66
  case 'textarea':
67
  $rows = !empty( $args['rows'] ) ? (int) $args['rows'] : '3';
68
  $output = sprintf(
69
- '<textarea id="wpforms-panel-field-%s-%s" name="%s" rows="%d" placeholder="%s">%s</textarea>',
70
  sanitize_html_class( $panel ),
71
  sanitize_html_class( $field ),
72
  $field_name,
73
  $rows,
74
  $placeholder,
 
 
75
  esc_textarea( $value )
76
  );
77
  break;
@@ -95,11 +108,13 @@ function wpforms_panel_field( $option, $panel, $field, $form_data, $label, $args
95
  case 'checkbox':
96
  $checked = checked( '1', $value, false );
97
  $output = sprintf(
98
- '<input type="checkbox" id="wpforms-panel-field-%s-%s" name="%s" value="1" %s>',
99
  sanitize_html_class( $panel ),
100
  sanitize_html_class( $field ),
101
  $field_name,
102
- $checked
 
 
103
  );
104
  $output .= sprintf(
105
  '<label for="wpforms-panel-field-%s-%s" class="inline">%s',
@@ -115,16 +130,35 @@ function wpforms_panel_field( $option, $panel, $field, $form_data, $label, $args
115
 
116
  // Select
117
  case 'select':
118
- if ( empty( $args['options'] ) ) {
119
  return;
120
  }
121
- $options = $args['options'];
 
 
 
 
 
 
 
 
 
 
 
 
 
122
  $output = sprintf(
123
- '<select id="wpforms-panel-field-%s-%s" name="%s" >',
124
  sanitize_html_class( $panel ),
125
  sanitize_html_class( $field ),
126
- $field_name
 
 
127
  );
 
 
 
 
128
  foreach ( $options as $key => $option ) {
129
  $output .= sprintf( '<option value="%s" %s>%s</option>', esc_attr( $key ), selected( $key, $value, false ), $option );
130
  }
@@ -154,7 +188,7 @@ function wpforms_panel_field( $option, $panel, $field, $form_data, $label, $args
154
  if ( !empty( $args['after_tooltip'] ) ) {
155
  $field_label .= $args['after_tooltip'];
156
  }
157
- if( !empty( $args['smarttags'] ) ) {
158
 
159
  $type = !empty( $args['smarttags']['type'] ) ? esc_attr( $args['smarttags']['type'] ) : 'fields';
160
  $fields = !empty( $args['smarttags']['fields'] ) ? esc_attr( $args['smarttags']['fields'] ) : '';
33
  $parent = !empty( $args['parent'] ) ? esc_attr( $args['parent'] ) : '';
34
  $label = !empty( $label ) ? esc_html( $label ) : '';
35
  $class = !empty( $args['class'] ) ? esc_attr( $args['class'] ) : '';
36
+ $input_class = !empty( $args['input_class'] ) ? esc_attr( $args['input_class'] ) : '';
37
+ $default = isset( $args['default'] ) ? $args['default'] : '';
38
  $placeholder = !empty( $args['placeholder'] ) ? esc_attr( $args['placeholder'] ) : '';
39
+ $data_attr = '';
40
 
41
  // Check if we should store values in a parent array
42
  if ( !empty( $parent ) ) {
47
  $value = isset( $form_data[$panel][$field] ) ? $form_data[$panel][$field] : $default;
48
  }
49
 
50
+ // Check for data attributes
51
+ if ( !empty( $args['data'] ) ) {
52
+ foreach ( $args['data'] as $key => $val ) {
53
+ $data_attr .= ' data-' . $key . '="' . $val . '"';
54
+ }
55
+ }
56
+
57
  // Determine what field type to output
58
  switch ( $option ) {
59
 
61
  case 'text':
62
  $type = !empty( $args['type'] ) ? esc_attr( $args['type'] ) : 'text';
63
  $output = sprintf(
64
+ '<input type="%s" id="wpforms-panel-field-%s-%s" name="%s" value="%s" placeholder="%s" class="%s" %s>',
65
  $type,
66
  sanitize_html_class( $panel ),
67
  sanitize_html_class( $field ),
68
  $field_name,
69
  esc_attr( $value ),
70
+ $placeholder,
71
+ $input_class,
72
+ $data_attr
73
  );
74
  break;
75
 
77
  case 'textarea':
78
  $rows = !empty( $args['rows'] ) ? (int) $args['rows'] : '3';
79
  $output = sprintf(
80
+ '<textarea id="wpforms-panel-field-%s-%s" name="%s" rows="%d" placeholder="%s" class="%s" %s>%s</textarea>',
81
  sanitize_html_class( $panel ),
82
  sanitize_html_class( $field ),
83
  $field_name,
84
  $rows,
85
  $placeholder,
86
+ $input_class,
87
+ $data_attr,
88
  esc_textarea( $value )
89
  );
90
  break;
108
  case 'checkbox':
109
  $checked = checked( '1', $value, false );
110
  $output = sprintf(
111
+ '<input type="checkbox" id="wpforms-panel-field-%s-%s" name="%s" value="1" class="%s" %s %s>',
112
  sanitize_html_class( $panel ),
113
  sanitize_html_class( $field ),
114
  $field_name,
115
+ $input_class,
116
+ $checked,
117
+ $data_attr
118
  );
119
  $output .= sprintf(
120
  '<label for="wpforms-panel-field-%s-%s" class="inline">%s',
130
 
131
  // Select
132
  case 'select':
133
+ if ( empty( $args['options'] ) && empty( $args['field_map'] ) ) {
134
  return;
135
  }
136
+
137
+ if ( !empty( $args['field_map'] ) ) {
138
+ $options = array();
139
+ $available_fields = wpforms_get_form_fields( $form_data, $args['field_map'] );
140
+ foreach ( $available_fields as $id => $available_field ) {
141
+ $lbl = !empty( $available_field['label'] ) ? esc_attr( $available_field['label'] ) : __( 'Field #') . $id;
142
+ $options[$id] = $lbl;
143
+ }
144
+ $input_class .= ' wpforms-field-map-select';
145
+ $data_attr .= ' data-field-map-allowed="' . implode( ' ', $args['field_map'] ) . '"';
146
+ } else {
147
+ $options = $args['options'];
148
+ }
149
+
150
  $output = sprintf(
151
+ '<select id="wpforms-panel-field-%s-%s" name="%s" class="%s" %s>',
152
  sanitize_html_class( $panel ),
153
  sanitize_html_class( $field ),
154
+ $field_name,
155
+ $input_class,
156
+ $data_attr
157
  );
158
+ if ( !empty( $placeholder ) ) {
159
+ $output .= '<option value="">' . $placeholder . '</option>';
160
+ }
161
+
162
  foreach ( $options as $key => $option ) {
163
  $output .= sprintf( '<option value="%s" %s>%s</option>', esc_attr( $key ), selected( $key, $value, false ), $option );
164
  }
188
  if ( !empty( $args['after_tooltip'] ) ) {
189
  $field_label .= $args['after_tooltip'];
190
  }
191
+ if ( !empty( $args['smarttags'] ) ) {
192
 
193
  $type = !empty( $args['smarttags']['type'] ) ? esc_attr( $args['smarttags']['type'] ) : 'fields';
194
  $fields = !empty( $args['smarttags']['fields'] ) ? esc_attr( $args['smarttags']['fields'] ) : '';
includes/admin/builder/panels/class-fields.php CHANGED
@@ -242,10 +242,11 @@ class WPForms_Builder_Panel_Fields extends WPForms_Builder_Panel {
242
 
243
  foreach( $fields as $field ) {
244
 
245
- $css = ( isset( $field['size'] ) && !empty( $field['size'] ) ? 'size-' . esc_attr( $field['size'] ) : '' );
246
- $css .= ( isset( $field['label_hide'] ) && $field['label_hide'] == '1' ? ' label_hide' : '' );
247
- $css .= ( isset( $field['sublabel_hide'] ) && $field['sublabel_hide'] == '1' ? ' sublabel_hide' : '' );
248
- $css .= ( isset( $field['required'] ) && $field['required'] == '1' ? ' required' : '' );
 
249
 
250
  printf( '<div class="wpforms-field wpforms-field-%s %s" id="wpforms-field-%d" data-field-id="%d">', $field['type'], $css, $field['id'], $field['id'] );
251
 
242
 
243
  foreach( $fields as $field ) {
244
 
245
+ $css = !empty( $field['size'] ) ? 'size-' . esc_attr( $field['size'] ) : '' ;
246
+ $css .= !empty( $field['label_hide'] ) && $field['label_hide'] == '1' ? ' label_hide' : '' ;
247
+ $css .= !empty( $field['sublabel_hide'] ) && $field['sublabel_hide'] == '1' ? ' sublabel_hide' : '';
248
+ $css .= !empty( $field['required'] ) && $field['required'] == '1' ? ' required' : '';
249
+ $css .= isset( $field['meta']['delete'] ) && $field['meta']['delete'] === false ? ' no-delete' : '';
250
 
251
  printf( '<div class="wpforms-field wpforms-field-%s %s" id="wpforms-field-%d" data-field-id="%d">', $field['type'], $css, $field['id'], $field['id'] );
252
 
includes/admin/builder/panels/class-settings.php CHANGED
@@ -58,7 +58,7 @@ class WPForms_Builder_Panel_Settings extends WPForms_Builder_Panel {
58
  'notifications' => __( 'Notification', 'wpforms' ),
59
  'confirmation' => __( 'Confirmation', 'wpforms' ),
60
  );
61
- $sections = apply_filters( 'wpforms_builder_settings_sections', $sections );
62
  foreach( $sections as $slug => $section ) {
63
  $this->panel_sidebar_section( $section, $slug );
64
  }
@@ -313,6 +313,7 @@ class WPForms_Builder_Panel_Settings extends WPForms_Builder_Panel {
313
  do_action( 'wpforms_form_settings_confirmation', $this );
314
  echo '</div>';
315
 
 
316
  }
317
  }
318
  new WPForms_Builder_Panel_Settings;
58
  'notifications' => __( 'Notification', 'wpforms' ),
59
  'confirmation' => __( 'Confirmation', 'wpforms' ),
60
  );
61
+ $sections = apply_filters( 'wpforms_builder_settings_sections', $sections, $this->form_data );
62
  foreach( $sections as $slug => $section ) {
63
  $this->panel_sidebar_section( $section, $slug );
64
  }
313
  do_action( 'wpforms_form_settings_confirmation', $this );
314
  echo '</div>';
315
 
316
+ do_action( 'wpforms_form_settings_panel_content', $this );
317
  }
318
  }
319
  new WPForms_Builder_Panel_Settings;
includes/admin/class-settings.php CHANGED
@@ -193,6 +193,44 @@ class WPForms_Settings {
193
 
194
  <table class="form-table">
195
  <tbody>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
196
  <tr>
197
  <th scope="row">
198
  <label for="wpforms-settings-general-css"><?php _e( 'Include Form Styling', 'wpforms' ); ?></label>
193
 
194
  <table class="form-table">
195
  <tbody>
196
+ <?php if ( class_exists( 'WPForms_License' ) ) : ?>
197
+ <tr>
198
+ <td class="section" colspan="2">
199
+ <h4><?php _e( 'License', 'wpforms' ); ?></h4>
200
+ <p><?php _e( 'Your license key provides access to updates and Add-ons. ', 'wpforms' ); ?></p>
201
+ </td>
202
+ </tr>
203
+ <tr>
204
+ <th scope="row">
205
+ <label for="wpforms-settings-general-key"><?php _e( 'License Key', 'wpforms' ); ?></label>
206
+ </th>
207
+ <td>
208
+ <input type="password" name="license-key" id="wpforms-settings-general-key" value="<?php echo $this->get( 'key', '', 'wpforms_license' ); ?>" />
209
+ <?php submit_button( __( 'Verify Key', 'wpforms' ), 'primary', 'submit-key-verify', false ); ?>
210
+ <?php if ( $this->get( 'key', false, 'wpforms_license' ) ) : ?>
211
+ <?php submit_button( __( 'Deactivate Key', 'wpforms' ), 'secondary', 'submit-key-deactivate', false ); ?>
212
+ <?php endif; ?>
213
+ </form>
214
+ </td>
215
+ </tr>
216
+ <?php if ( $this->get( 'type', false, 'wpforms_license' ) ) : ?>
217
+ <tr>
218
+ <th scope="row">
219
+ <label for="wpforms-settings-general-key-type"><?php _e( 'License Key Type', 'wpforms' ); ?></label>
220
+ </th>
221
+ <td>
222
+ <span class="wpforms-key-type"><?php printf( __( 'Your license key type for this site is <strong>%s.</strong>', 'wpforms' ), $this->get( 'type', 'unknown', 'wpforms_license' ) ); ?></span>
223
+ <?php submit_button( __( 'Refresh Key', 'wpforms' ), 'secondary', 'submit-key-refresh', false ); ?>
224
+ <p class="description"><?php _e( 'If your license has been upgraded or is incorrect, you may force a refresh.', 'wpforms' ); ?></p>
225
+ </td>
226
+ </tr>
227
+ <?php endif; ?>
228
+ <tr>
229
+ <td class="section" colspan="2">
230
+ <hr>
231
+ </td>
232
+ </tr>
233
+ <?php endif; ?>
234
  <tr>
235
  <th scope="row">
236
  <label for="wpforms-settings-general-css"><?php _e( 'Include Form Styling', 'wpforms' ); ?></label>
includes/admin/overview/class-overview-table.php CHANGED
@@ -97,11 +97,6 @@ class WPForms_Overview_Table extends WP_List_Table {
97
  case 'created':
98
  $value = get_the_date( get_option( 'date_format' ), $form );
99
  break;
100
-
101
- case 'entries':
102
- $count = wpforms()->entry->get_entries( array( 'form_id' => $form->ID ), true );
103
- $value = sprintf( '<a href="%s">%d</a>', add_query_arg( array( 'view' => 'list', 'form_id' => $form->ID ), admin_url( 'admin.php?page=wpforms-entries' ) ), $count );
104
- break;
105
 
106
  case 'modified':
107
  $value = get_post_modified_time( get_option( 'date_format' ), false, $form );
@@ -157,6 +152,13 @@ class WPForms_Overview_Table extends WP_List_Table {
157
  __( 'Entries', 'wpforms' )
158
  );
159
 
 
 
 
 
 
 
 
160
  // Duplicate
161
  $row_actions['duplicate'] = sprintf( '<a href="%s" title="%s">%s</a>',
162
  wp_nonce_url( add_query_arg( array( 'action' => 'duplicate', 'form_id' => $form->ID ), admin_url( 'admin.php?page=wpforms-overview' ) ) , 'wpforms_duplicate_form_nonce' ),
97
  case 'created':
98
  $value = get_the_date( get_option( 'date_format' ), $form );
99
  break;
 
 
 
 
 
100
 
101
  case 'modified':
102
  $value = get_post_modified_time( get_option( 'date_format' ), false, $form );
152
  __( 'Entries', 'wpforms' )
153
  );
154
 
155
+ // Preview
156
+ $row_actions['preview_'] = sprintf( '<a href="%s" title="%s" target="_blank">%s</a>',
157
+ esc_url( wpforms()->preview->form_preview_url( $form->ID ) ),
158
+ __( 'View preview', 'wpforms' ),
159
+ __( 'Preview', 'wpforms' )
160
+ );
161
+
162
  // Duplicate
163
  $row_actions['duplicate'] = sprintf( '<a href="%s" title="%s">%s</a>',
164
  wp_nonce_url( add_query_arg( array( 'action' => 'duplicate', 'form_id' => $form->ID ), admin_url( 'admin.php?page=wpforms-overview' ) ) , 'wpforms_duplicate_form_nonce' ),
includes/admin/overview/class-overview.php CHANGED
@@ -46,6 +46,9 @@ class WPForms_Overview {
46
  // Load the class that builds the overview table
47
  require_once WPFORMS_PLUGIN_DIR . 'includes/admin/overview/class-overview-table.php';
48
 
 
 
 
49
  add_action( 'admin_enqueue_scripts', array( $this, 'enqueues' ) );
50
  add_action( 'wpforms_admin_page', array( $this, 'output' ) );
51
 
46
  // Load the class that builds the overview table
47
  require_once WPFORMS_PLUGIN_DIR . 'includes/admin/overview/class-overview-table.php';
48
 
49
+ // Preview page check
50
+ wpforms()->preview->form_preview_check();
51
+
52
  add_action( 'admin_enqueue_scripts', array( $this, 'enqueues' ) );
53
  add_action( 'wpforms_admin_page', array( $this, 'output' ) );
54
 
includes/class-form.php CHANGED
@@ -146,7 +146,7 @@ class WPForms_Form_Handler {
146
  $entries = wpforms()->entry->delete_by( 'form_id', $id );
147
  }
148
 
149
- if ( ! $form || ! $entries ) {
150
  return false;
151
  }
152
  }
146
  $entries = wpforms()->entry->delete_by( 'form_id', $id );
147
  }
148
 
149
+ if ( ! $form ) {
150
  return false;
151
  }
152
  }
includes/class-frontend.php CHANGED
@@ -186,8 +186,18 @@ class WPForms_Frontend {
186
  if ( !empty( $errors['header'] ) ) {
187
 
188
  echo '<div class="wpforms-error-container">';
189
-
190
- echo esc_html( $errors['header'] );
 
 
 
 
 
 
 
 
 
 
191
 
192
  echo '</div>';
193
  }
@@ -448,7 +458,17 @@ class WPForms_Frontend {
448
 
449
  echo '<div class="wpforms-error-container">';
450
 
451
- echo esc_html( $errors['footer'] );
 
 
 
 
 
 
 
 
 
 
452
 
453
  echo '</div>';
454
  }
@@ -458,8 +478,6 @@ class WPForms_Frontend {
458
 
459
  echo '<input type="hidden" name="wpforms[id]" value="' . $form->ID . '">';
460
 
461
- echo wp_nonce_field( 'wpforms-submit-' . $form->ID, 'wpforms[nonce]', true, false );
462
-
463
  echo '<button type="submit" name="wpforms[submit]" class="wpforms-submit ' . implode( ' ', $submit_classes ) . '" id="wpforms-submit-' . $form->ID . '" value="wpforms-submit">' . $submit . '</button>';
464
 
465
  echo '</div>';
186
  if ( !empty( $errors['header'] ) ) {
187
 
188
  echo '<div class="wpforms-error-container">';
189
+
190
+ $allow = array(
191
+ 'a' => array(
192
+ 'href' => array(),
193
+ 'title' => array()
194
+ ),
195
+ 'br' => array(),
196
+ 'em' => array(),
197
+ 'strong' => array(),
198
+ 'p' => array(),
199
+ );
200
+ echo wp_kses( $errors['header'], $allow );
201
 
202
  echo '</div>';
203
  }
458
 
459
  echo '<div class="wpforms-error-container">';
460
 
461
+ $allow = array(
462
+ 'a' => array(
463
+ 'href' => array(),
464
+ 'title' => array()
465
+ ),
466
+ 'br' => array(),
467
+ 'em' => array(),
468
+ 'strong' => array(),
469
+ 'p' => array(),
470
+ );
471
+ echo wp_kses( $errors['footer'], $allow );
472
 
473
  echo '</div>';
474
  }
478
 
479
  echo '<input type="hidden" name="wpforms[id]" value="' . $form->ID . '">';
480
 
 
 
481
  echo '<button type="submit" name="wpforms[submit]" class="wpforms-submit ' . implode( ' ', $submit_classes ) . '" id="wpforms-submit-' . $form->ID . '" value="wpforms-submit">' . $submit . '</button>';
482
 
483
  echo '</div>';
includes/class-install.php CHANGED
@@ -28,11 +28,15 @@ class WPForms_Install {
28
  */
29
  public function install() {
30
 
 
 
 
 
 
 
31
  // Set current version, to be referenced in future updates
32
  update_option( 'wpforms_version', WPFORMS_VERSION );
33
 
34
- //@todo: Set any default settings we may decide is needed
35
-
36
  // Abort so we only set the transient for single site installs
37
  if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) {
38
  return;
28
  */
29
  public function install() {
30
 
31
+ $wpforms_install = new stdClass();
32
+ $wpforms_install->preview = new WPForms_Preview;
33
+
34
+ // Form preview
35
+ $wpforms_install->preview->form_preview_check();
36
+
37
  // Set current version, to be referenced in future updates
38
  update_option( 'wpforms_version', WPFORMS_VERSION );
39
 
 
 
40
  // Abort so we only set the transient for single site installs
41
  if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) {
42
  return;
includes/class-preview.php CHANGED
@@ -29,7 +29,7 @@ class WPForms_Preview {
29
  public function init() {
30
 
31
  // Check for preview param with allowed values
32
- if ( empty( $_GET['wpforms_preview'] ) || !in_array( $_GET['wpforms_preview'], array( 'print' ) ) ) {
33
  return;
34
  }
35
 
@@ -38,25 +38,46 @@ class WPForms_Preview {
38
  return;
39
  }
40
 
41
- // Only load if we are actually on the settings page
42
  if ( 'print' == $_GET['wpforms_preview'] && !empty( $_GET['entry_id'] ) ) {
43
  $this->print_preview();
44
  }
 
 
 
 
 
45
  }
46
 
47
  /**
48
- * Preview page header.
49
  *
50
  * @since 1.1.5
51
  */
52
- public function preview_header( $type = '', $title = '' ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  ?>
54
  <!doctype html>
55
  <html>
56
  <head>
57
  <meta charset="utf-8">
58
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
59
- <title>WPForms <?php echo ucfirst( sanitize_text_field( $type ) ); ?> Preview - <?php echo ucfirst( sanitize_text_field( $title ) ); ?> </title>
60
  <meta name="description" content="">
61
  <meta name="viewport" content="width=device-width, initial-scale=1">
62
  <meta name="robots" content="noindex,nofollow,noarchive">
@@ -66,100 +87,179 @@ class WPForms_Preview {
66
  <script type="text/javascript" src="<?php echo WPFORMS_PLUGIN_URL; ?>assets/js/wpforms-preview.js"></script>
67
  </head>
68
  <body class="wp-core-ui">
69
- <div class="wpforms-preview" id="<?php echo sanitize_html_class( $type ); ?>">
70
- <?php
71
- }
 
 
 
 
 
 
 
72
 
73
- /**
74
- * Preview page footer.
75
- *
76
- * @since 1.1.5
77
- */
78
- public function preview_footer() {
79
 
80
- ?>
81
- </div><!-- .wrap -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
  <p class="site"><a href="<?php echo home_url(); ?>"><?php echo get_bloginfo( 'name'); ?></a></p>
83
- </body><?php
 
 
84
  }
85
 
86
  /**
87
- * Print Preview.
88
  *
89
- * @since 1.1.5
90
  */
91
- public function print_preview() {
92
 
93
- // Load entry details
94
- $entry = wpforms()->entry->get( absint( $_GET['entry_id'] ) );
95
-
96
- // Double check that we found a real entry
97
- if ( ! $entry || empty( $entry ) ) {
98
  return;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
  }
100
 
101
- // Get form details
102
- $form_data = wpforms()->form->get( $entry->form_id, array( 'content_only' => true ) );
103
-
104
- // Double check that we found a valid entry
105
- if ( ! $form_data || empty( $form_data ) ) {
106
- return;
 
 
 
 
 
 
 
 
 
107
  }
108
-
109
- $this->preview_header( 'print', $form_data['settings']['form_title'] );
110
-
111
- // Page header
112
- echo '<h1>';
113
- echo sanitize_text_field( $form_data['settings']['form_title'] );
114
- echo '<span> - ';
115
- printf( __( 'Entry #%d', 'wpforms' ), absint( $entry->entry_id ) );
116
- echo '</span>';
117
 
118
- echo '<div class="buttons">';
119
- echo '<a href="" class="button button-secondary close-window">Close</a>';
120
- echo '<a href="" class="button button-primary print">Print</a>';
121
- echo '</div>';
122
- echo '</h1>';
 
 
 
123
 
124
- $fields = apply_filters( 'wpforms_entry_single_data', wpforms_decode( $entry->fields ), $entry, $form_data );
125
 
126
- if ( empty( $fields ) ) {
 
 
127
 
128
- // Whoops, no fields! This shouldn't happen under normal use cases.
129
- echo '<p class="no-fields">' . __( 'This entry does not have any fields', 'wpforms' ) . '</p>';
130
 
131
- } else {
 
 
 
 
 
132
 
133
- echo '<div class="fields">';
 
 
 
 
 
134
 
135
- // Display the fields and their values
136
- foreach ( $fields as $key => $field ) {
137
 
138
- $field_value = apply_filters( 'wpforms_html_field_value', wp_strip_all_tags( $field['value'] ), $field, $form_data );
139
- $field_class = sanitize_html_class( 'wpforms-field-' . $field['type'] );
140
- $field_class .= empty( $field_value ) ? ' empty' : '';
 
 
 
 
 
 
141
 
142
- echo '<div class="wpforms-entry-field ' . $field_class . '">';
 
 
 
143
 
144
- // Field name
145
- echo '<p class="wpforms-entry-field-name">';
146
- echo !empty( $field['name'] ) ? wp_strip_all_tags( $field['name'] ) : sprintf( __( 'Field ID #%d', 'wpforms' ), absint( $field['id'] ) );
147
- echo '</p>';
148
 
149
- // Field value
150
- echo '<p class="wpforms-entry-field-value">';
151
- echo !empty( $field_value ) ? nl2br( make_clickable( $field_value ) ) : __( 'Empty', 'wpforms' );
152
- echo '</p>';
 
 
153
 
154
- echo '</div>';
155
- }
156
 
157
- echo '</div>';
 
158
  }
159
-
160
- $this->preview_footer();
161
 
162
- exit();
 
 
 
 
 
 
 
 
163
  }
164
- }
165
- new WPForms_Preview;
29
  public function init() {
30
 
31
  // Check for preview param with allowed values
32
+ if ( empty( $_GET['wpforms_preview'] ) || !in_array( $_GET['wpforms_preview'], array( 'print', 'form' ) ) ) {
33
  return;
34
  }
35
 
38
  return;
39
  }
40
 
41
+ // Print preview
42
  if ( 'print' == $_GET['wpforms_preview'] && !empty( $_GET['entry_id'] ) ) {
43
  $this->print_preview();
44
  }
45
+
46
+ // Form preview
47
+ if ( 'form' == $_GET['wpforms_preview'] && !empty( $_GET['form_id'] ) ) {
48
+ $this->form_preview();
49
+ }
50
  }
51
 
52
  /**
53
+ * Print Preview.
54
  *
55
  * @since 1.1.5
56
  */
57
+ public function print_preview() {
58
+
59
+ // Load entry details
60
+ $entry = wpforms()->entry->get( absint( $_GET['entry_id'] ) );
61
+
62
+ // Double check that we found a real entry
63
+ if ( ! $entry || empty( $entry ) ) {
64
+ return;
65
+ }
66
+
67
+ // Get form details
68
+ $form_data = wpforms()->form->get( $entry->form_id, array( 'content_only' => true ) );
69
+
70
+ // Double check that we found a valid entry
71
+ if ( ! $form_data || empty( $form_data ) ) {
72
+ return;
73
+ }
74
  ?>
75
  <!doctype html>
76
  <html>
77
  <head>
78
  <meta charset="utf-8">
79
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
80
+ <title>WPForms Print Preview - <?php echo ucfirst( sanitize_text_field( $form_data['settings']['form_title'] ) ); ?> </title>
81
  <meta name="description" content="">
82
  <meta name="viewport" content="width=device-width, initial-scale=1">
83
  <meta name="robots" content="noindex,nofollow,noarchive">
87
  <script type="text/javascript" src="<?php echo WPFORMS_PLUGIN_URL; ?>assets/js/wpforms-preview.js"></script>
88
  </head>
89
  <body class="wp-core-ui">
90
+ <div class="wpforms-preview" id="print">
91
+ <h1>
92
+ <?php echo sanitize_text_field( $form_data['settings']['form_title'] ); ?> <span> - <?php printf( __( 'Entry #%d', 'wpforms' ), absint( $entry->entry_id ) ); ?></span>
93
+ <div class="buttons">
94
+ <a href="" class="button button-secondary close-window">Close</a>
95
+ <a href="" class="button button-primary print">Print</a>
96
+ </div>
97
+ </h1>
98
+ <?php
99
+ $fields = apply_filters( 'wpforms_entry_single_data', wpforms_decode( $entry->fields ), $entry, $form_data );
100
 
101
+ if ( empty( $fields ) ) {
 
 
 
 
 
102
 
103
+ // Whoops, no fields! This shouldn't happen under normal use cases.
104
+ echo '<p class="no-fields">' . __( 'This entry does not have any fields', 'wpforms' ) . '</p>';
105
+
106
+ } else {
107
+
108
+ echo '<div class="fields">';
109
+
110
+ // Display the fields and their values
111
+ foreach ( $fields as $key => $field ) {
112
+
113
+ $field_value = apply_filters( 'wpforms_html_field_value', wp_strip_all_tags( $field['value'] ), $field, $form_data );
114
+ $field_class = sanitize_html_class( 'wpforms-field-' . $field['type'] );
115
+ $field_class .= empty( $field_value ) ? ' empty' : '';
116
+
117
+ echo '<div class="wpforms-entry-field ' . $field_class . '">';
118
+
119
+ // Field name
120
+ echo '<p class="wpforms-entry-field-name">';
121
+ echo !empty( $field['name'] ) ? wp_strip_all_tags( $field['name'] ) : sprintf( __( 'Field ID #%d', 'wpforms' ), absint( $field['id'] ) );
122
+ echo '</p>';
123
+
124
+ // Field value
125
+ echo '<p class="wpforms-entry-field-value">';
126
+ echo !empty( $field_value ) ? nl2br( make_clickable( $field_value ) ) : __( 'Empty', 'wpforms' );
127
+ echo '</p>';
128
+
129
+ echo '</div>';
130
+ }
131
+
132
+ echo '</div>';
133
+ }
134
+ ?>
135
+ </div><!-- .wrap -->
136
  <p class="site"><a href="<?php echo home_url(); ?>"><?php echo get_bloginfo( 'name'); ?></a></p>
137
+ </body>
138
+ <?php
139
+ exit();
140
  }
141
 
142
  /**
143
+ * Check if preview page exists, if not create it.
144
  *
145
+ * @since 1.1.9
146
  */
147
+ public function form_preview_check() {
148
 
149
+ if ( !is_admin() )
 
 
 
 
150
  return;
151
+
152
+ // Verify page exits
153
+ $preview = get_option( 'wpforms_preview_page' );
154
+
155
+ if ( $preview ) {
156
+
157
+ $preview_page = get_post( $preview );
158
+
159
+ // Check to see if the visibility has been changed, if so correct it
160
+ if ( !empty( $preview_page ) && 'private' != $preview_page->post_status ) {
161
+ $preview_page->post_status = 'private';
162
+ wp_update_post( $preview_page );
163
+ return;
164
+ } elseif ( !empty( $preview_page ) ) {
165
+ return;
166
+ }
167
  }
168
 
169
+ // Create the custom preview page
170
+ $content = '<p>' . __( 'This is the WPForms preview page. All your form previews will be handled on this page.', 'wpforms' ) . '</p>';
171
+ $content .= '<p>' . __( 'The page is set to private, so it is not publically accessible. Please do not delete this page :) .', 'wpforms' ) . '</p>';
172
+ $args = array(
173
+ 'post_type' => 'page',
174
+ 'post_name' => 'wpforms-preview',
175
+ 'post_author' => 1,
176
+ 'post_title' => __( 'WPForms Preview', 'wpforms' ),
177
+ 'post_status' => 'private',
178
+ 'post_content' => $content,
179
+ 'comment_status' => 'closed'
180
+ );
181
+ $id = wp_insert_post( $args );
182
+ if ( $id ) {
183
+ update_option( 'wpforms_preview_page', $id );
184
  }
185
+ }
 
 
 
 
 
 
 
 
186
 
187
+ /**
188
+ * Preview page URL.
189
+ *
190
+ * @since 1.1.9
191
+ * @param int $form_id
192
+ * @return string
193
+ */
194
+ public function form_preview_url( $form_id ) {
195
 
196
+ $id = get_option( 'wpforms_preview_page' );
197
 
198
+ if ( ! $id ) {
199
+ return home_url();
200
+ }
201
 
202
+ $url = get_permalink( $id );
 
203
 
204
+ if ( ! $url ) {
205
+ return home_url();
206
+ }
207
+
208
+ return add_query_arg( array( 'wpforms_preview' => 'form', 'form_id' => absint( $form_id ) ), $url );
209
+ }
210
 
211
+ /**
212
+ * Fires when form preview might be detected.
213
+ *
214
+ * @since 1.1.9
215
+ */
216
+ public function form_preview() {
217
 
218
+ add_filter( 'the_posts', array( $this, 'form_preview_query' ), 10, 2 );
219
+ }
220
 
221
+ /**
222
+ * Tweak the page content for form preview page requests.
223
+ *
224
+ * @since 1.1.9
225
+ * @param array $posts
226
+ * @param object $query
227
+ * @return array
228
+ */
229
+ public function form_preview_query( $posts, $query ) {
230
 
231
+ // One last cap check, just for fun.
232
+ if ( !is_user_logged_in() || !current_user_can( apply_filters( 'wpforms_manage_cap', 'manage_options' ) ) ) {
233
+ return $posts;
234
+ }
235
 
236
+ // Only target main query
237
+ if ( ! $query->is_main_query() ) {
238
+ return $posts;
239
+ }
240
 
241
+ // If our queried object ID does not match the preview page ID, return early.
242
+ $preview_id = absint( get_option( 'wpforms_preview_page' ) );
243
+ $queried = $query->get_queried_object_id();
244
+ if ( $queried && $queried != $preview_id && isset( $query->query_vars['page_id'] ) && $preview_id != $query->query_vars['page_id'] ) {
245
+ return $posts;
246
+ }
247
 
248
+ // Get the form details
249
+ $form = wpforms()->form->get( absint( $_GET['form_id'] ), array( 'content_only' => true ) );
250
 
251
+ if ( ! $form || empty( $form ) ) {
252
+ return $posts;
253
  }
 
 
254
 
255
+ // Customize the page content
256
+ $title = sanitize_text_field( $form['settings']['form_title'] );
257
+ $shortcode = '[wpforms id="' . absint( $form['id'] ) . '"]';
258
+ $content = __( 'This is a preview of your form. This page not publically accessible.', 'wpforms' );
259
+ $posts[0]->post_title = $title . __( ' Preview', 'wpforms' );
260
+ $posts[0]->post_content = $content . $shortcode;
261
+ $posts[0]->post_status = 'public';
262
+
263
+ return $posts;
264
  }
265
+ }
 
includes/class-process.php CHANGED
@@ -66,14 +66,6 @@ class WPForms_Process {
66
  $form = wpforms()->form->get( $form_id );
67
  $honeypot = false;
68
 
69
- //echo '<pre>' . print_r( $entry, true ) . '</pre>';
70
-
71
- // Validate nonce
72
- if ( ! wp_verify_nonce( $entry['nonce'], 'wpforms-submit-' . $form_id ) ) {
73
- $this->errors[$form_id]['header'] = __( 'Unable to process the form entry.', 'wpforms' );
74
- return;
75
- }
76
-
77
  // Validate form is real and active (published)
78
  if ( !$form || 'publish' != $form->post_status ) {
79
  $this->errors[$form_id]['header'] = __( 'Invalid form.', 'wpforms' );
@@ -150,13 +142,18 @@ class WPForms_Process {
150
  // Process hooks/filter - this is where most add-ons should hook
151
  // because at this point we have completed all field validation and
152
  // formatted the data.
153
- $this->fields = apply_filters( 'wpforms_process_before_filter', $this->fields, $entry, $form_data );
 
154
  do_action( 'wpforms_process', $this->fields, $entry, $form_data );
155
  do_action( "wpforms_process_{$form_id}", $this->fields, $entry, $form_data );
156
 
 
 
157
  // One last error check - don't proceed if there are any errors
158
  if ( ! empty( $this->errors[$form_id] ) ) {
159
- $this->errors[$form_id]['header'] = __( 'Form has not been submitted, please see the errors below.', 'wpforms' );
 
 
160
  return;
161
  }
162
 
66
  $form = wpforms()->form->get( $form_id );
67
  $honeypot = false;
68
 
 
 
 
 
 
 
 
 
69
  // Validate form is real and active (published)
70
  if ( !$form || 'publish' != $form->post_status ) {
71
  $this->errors[$form_id]['header'] = __( 'Invalid form.', 'wpforms' );
142
  // Process hooks/filter - this is where most add-ons should hook
143
  // because at this point we have completed all field validation and
144
  // formatted the data.
145
+ $this->fields = apply_filters( 'wpforms_process_filter', $this->fields, $entry, $form_data );
146
+
147
  do_action( 'wpforms_process', $this->fields, $entry, $form_data );
148
  do_action( "wpforms_process_{$form_id}", $this->fields, $entry, $form_data );
149
 
150
+ $this->fields = apply_filters( 'wpforms_process_after_filter', $this->fields, $entry, $form_data );
151
+
152
  // One last error check - don't proceed if there are any errors
153
  if ( ! empty( $this->errors[$form_id] ) ) {
154
+ if ( empty( $this->errors[$form_id]['header'] ) ) {
155
+ $this->errors[$form_id]['header'] = __( 'Form has not been submitted, please see the errors below.', 'wpforms' );
156
+ }
157
  return;
158
  }
159
 
includes/fields/class-checkbox.php CHANGED
@@ -134,6 +134,7 @@ class WPForms_Field_Checkbox extends WPForms_Field {
134
  $field_class = implode( ' ', array_map( 'sanitize_html_class', $field_atts['input_class'] ) );
135
  $field_id = implode( ' ', array_map( 'sanitize_html_class', $field_atts['input_id'] ) );
136
  $field_data = '';
 
137
 
138
  if ( !empty( $field_atts['input_data'] ) ) {
139
  foreach ( $field_atts['input_data'] as $key => $val ) {
@@ -147,7 +148,8 @@ class WPForms_Field_Checkbox extends WPForms_Field {
147
  $selected = isset( $choice['default'] ) ? '1' : '0' ;
148
  $val = isset( $field['show_values'] ) ? esc_attr( $choice['value'] ) : esc_attr( $choice['label'] );
149
  printf( '<li class="choice-%d">', $key );
150
- printf( '<input type="checkbox" id="wpforms-field_%d_%d" name="wpforms[fields][%d][]" value="%s" %s %s>',
 
151
  $field['id'],
152
  $key,
153
  $field['id'],
@@ -155,7 +157,7 @@ class WPForms_Field_Checkbox extends WPForms_Field {
155
  checked( '1', $selected, false ),
156
  $field_required
157
  );
158
- printf( '<label class="wpforms-field-label-inline" for="wpforms-field_%d_%d">%s</label>', $field['id'], $key, wp_kses_post( $choice['label'] ) );
159
  echo '</li>';
160
  }
161
  echo '</ul>';
134
  $field_class = implode( ' ', array_map( 'sanitize_html_class', $field_atts['input_class'] ) );
135
  $field_id = implode( ' ', array_map( 'sanitize_html_class', $field_atts['input_id'] ) );
136
  $field_data = '';
137
+ $form_id = $form_data['id'];
138
 
139
  if ( !empty( $field_atts['input_data'] ) ) {
140
  foreach ( $field_atts['input_data'] as $key => $val ) {
148
  $selected = isset( $choice['default'] ) ? '1' : '0' ;
149
  $val = isset( $field['show_values'] ) ? esc_attr( $choice['value'] ) : esc_attr( $choice['label'] );
150
  printf( '<li class="choice-%d">', $key );
151
+ printf( '<input type="checkbox" id="wpforms-%d-field_%d_%d" name="wpforms[fields][%d][]" value="%s" %s %s>',
152
+ $form_id,
153
  $field['id'],
154
  $key,
155
  $field['id'],
157
  checked( '1', $selected, false ),
158
  $field_required
159
  );
160
+ printf( '<label class="wpforms-field-label-inline" for="wpforms-%d-field_%d_%d">%s</label>', $form_id, $field['id'], $key, wp_kses_post( $choice['label'] ) );
161
  echo '</li>';
162
  }
163
  echo '</ul>';
includes/fields/class-name.php CHANGED
@@ -228,7 +228,7 @@ class WPForms_Field_Name extends WPForms_Field {
228
  printf(
229
  '<input type="text" name="wpforms[fields][%d][first]" id="%s" class="%s" placeholder="%s" value="%s" %s>',
230
  $field['id'],
231
- "wpforms-field_{$field['id']}",
232
  $first_class,
233
  $first_placeholder,
234
  $first_default,
@@ -236,10 +236,10 @@ class WPForms_Field_Name extends WPForms_Field {
236
  );
237
 
238
  if ( !empty( wpforms()->process->errors[$form_id][$field['id']]['first'] ) ) {
239
- printf( '<label id="wpforms-field_%d-error" class="wpforms-error" for="wpforms-field_%d">%s</label>', $field['id'], $field['id'], esc_html( wpforms()->process->errors[$form_id][$field['id']]['first'] ) );
240
  }
241
 
242
- printf( '<label for="wpforms-field_%d" class="wpforms-field-sublabel %s">%s</label>', $field['id'], $field_sublabel, __( 'First', 'wpforms' ) );
243
 
244
  echo '</div>';
245
 
@@ -251,13 +251,13 @@ class WPForms_Field_Name extends WPForms_Field {
251
  printf(
252
  '<input type="text" name="wpforms[fields][%d][middle]" id="%s" class="%s" placeholder="%s" value="%s">',
253
  $field['id'],
254
- "wpforms-field_{$field['id']}-middle",
255
  'wpforms-field-name-middle',
256
  $middle_placeholder,
257
  $middle_default
258
  );
259
 
260
- printf( '<label for="wpforms-field_%d-middle" class="wpforms-field-sublabel %s">%s</label>', $field['id'], $field_sublabel, __( 'Middle', 'wpforms' ) );
261
 
262
  echo '</div>';
263
 
@@ -273,7 +273,7 @@ class WPForms_Field_Name extends WPForms_Field {
273
  printf(
274
  '<input type="text" name="wpforms[fields][%d][last]" id="%s" class="%s" placeholder="%s" value="%s" %s>',
275
  $field['id'],
276
- "wpforms-field_{$field['id']}-last",
277
  $last_class,
278
  $last_placeholder,
279
  $last_default,
@@ -281,10 +281,10 @@ class WPForms_Field_Name extends WPForms_Field {
281
  );
282
 
283
  if ( !empty( wpforms()->process->errors[$form_id][$field['id']]['last'] ) ) {
284
- printf( '<label id="wpforms-field_%d-error" class="wpforms-error" for="wpforms-field_%d">%s</label>', $field['id'], $field['id'], esc_html( wpforms()->process->errors[$form_id][$field['id']]['last'] ) );
285
  }
286
 
287
- printf( '<label for="wpforms-field_%d-last" class="wpforms-field-sublabel %s">%s</label>', $field['id'], $field_sublabel, __( 'Last', 'wpforms' ) );
288
 
289
  echo '</div>';
290
 
228
  printf(
229
  '<input type="text" name="wpforms[fields][%d][first]" id="%s" class="%s" placeholder="%s" value="%s" %s>',
230
  $field['id'],
231
+ "wpforms-{$form_id}-field_{$field['id']}",
232
  $first_class,
233
  $first_placeholder,
234
  $first_default,
236
  );
237
 
238
  if ( !empty( wpforms()->process->errors[$form_id][$field['id']]['first'] ) ) {
239
+ printf( '<label id="wpforms-%d-field_%d-error" class="wpforms-error" for="wpforms-field_%d">%s</label>', $form_id, $field['id'], $field['id'], esc_html( wpforms()->process->errors[$form_id][$field['id']]['first'] ) );
240
  }
241
 
242
+ printf( '<label for="wpforms-%d-field_%d" class="wpforms-field-sublabel %s">%s</label>', $form_id, $field['id'], $field_sublabel, __( 'First', 'wpforms' ) );
243
 
244
  echo '</div>';
245
 
251
  printf(
252
  '<input type="text" name="wpforms[fields][%d][middle]" id="%s" class="%s" placeholder="%s" value="%s">',
253
  $field['id'],
254
+ "wpforms-{$form_id}-field_{$field['id']}-middle",
255
  'wpforms-field-name-middle',
256
  $middle_placeholder,
257
  $middle_default
258
  );
259
 
260
+ printf( '<label for="wpforms-%d-field_%d-middle" class="wpforms-field-sublabel %s">%s</label>', $form_id, $field['id'], $field_sublabel, __( 'Middle', 'wpforms' ) );
261
 
262
  echo '</div>';
263
 
273
  printf(
274
  '<input type="text" name="wpforms[fields][%d][last]" id="%s" class="%s" placeholder="%s" value="%s" %s>',
275
  $field['id'],
276
+ "wpforms-{$form_id}-field_{$field['id']}-last",
277
  $last_class,
278
  $last_placeholder,
279
  $last_default,
281
  );
282
 
283
  if ( !empty( wpforms()->process->errors[$form_id][$field['id']]['last'] ) ) {
284
+ printf( '<label id="wpforms-%d-field_%d-error" class="wpforms-error" for="wpforms-field_%d">%s</label>', $form_id, $field['id'], $field['id'], esc_html( wpforms()->process->errors[$form_id][$field['id']]['last'] ) );
285
  }
286
 
287
+ printf( '<label for="wpforms-%d-field_%d-last" class="wpforms-field-sublabel %s">%s</label>', $form_id, $field['id'], $field_sublabel, __( 'Last', 'wpforms' ) );
288
 
289
  echo '</div>';
290
 
includes/fields/class-radio.php CHANGED
@@ -133,7 +133,8 @@ class WPForms_Field_Radio extends WPForms_Field {
133
  $field_required = !empty( $field['required'] ) ? ' required' : '';
134
  $field_class = implode( ' ', array_map( 'sanitize_html_class', $field_atts['input_class'] ) );
135
  $field_id = implode( ' ', array_map( 'sanitize_html_class', $field_atts['input_id'] ) );
136
- $field_data = '';
 
137
 
138
  if ( !empty( $field_atts['input_data'] ) ) {
139
  foreach ( $field_atts['input_data'] as $key => $val ) {
@@ -147,7 +148,8 @@ class WPForms_Field_Radio extends WPForms_Field {
147
  $selected = isset( $choice['default'] ) ? '1' : '0';
148
  $val = isset( $field['show_values'] ) ? esc_attr( $choice['value'] ) : esc_attr( $choice['label'] );
149
  printf( '<li class="choice-%d">', $key );
150
- printf( '<input type="radio" id="wpforms-field_%d_%d" name="wpforms[fields][%d]" value="%s" %s %s>',
 
151
  $field['id'],
152
  $key,
153
  $field['id'],
@@ -155,7 +157,7 @@ class WPForms_Field_Radio extends WPForms_Field {
155
  checked( '1', $selected, false ),
156
  $field_required
157
  );
158
- printf( '<label class="wpforms-field-label-inline" for="wpforms-field_%d_%d">%s</label>', $field['id'], $key, wp_kses_post( $choice['label'] ) );
159
  echo '</li>';
160
  }
161
  echo '</ul>';
133
  $field_required = !empty( $field['required'] ) ? ' required' : '';
134
  $field_class = implode( ' ', array_map( 'sanitize_html_class', $field_atts['input_class'] ) );
135
  $field_id = implode( ' ', array_map( 'sanitize_html_class', $field_atts['input_id'] ) );
136
+ $field_data = '';
137
+ $form_id = absint( $form_data['id'] );
138
 
139
  if ( !empty( $field_atts['input_data'] ) ) {
140
  foreach ( $field_atts['input_data'] as $key => $val ) {
148
  $selected = isset( $choice['default'] ) ? '1' : '0';
149
  $val = isset( $field['show_values'] ) ? esc_attr( $choice['value'] ) : esc_attr( $choice['label'] );
150
  printf( '<li class="choice-%d">', $key );
151
+ printf( '<input type="radio" id="wpforms-%s-field_%d_%d" name="wpforms[fields][%d]" value="%s" %s %s>',
152
+ $form_id,
153
  $field['id'],
154
  $key,
155
  $field['id'],
157
  checked( '1', $selected, false ),
158
  $field_required
159
  );
160
+ printf( '<label class="wpforms-field-label-inline" for="wpforms-%d-field_%d_%d">%s</label>', $form_id, $field['id'], $key, wp_kses_post( $choice['label'] ) );
161
  echo '</li>';
162
  }
163
  echo '</ul>';
includes/functions.php CHANGED
@@ -305,6 +305,28 @@ function wpforms_get_form_fields( $form = false, $whitelist = array() ) {
305
  return $form_fields;
306
  }
307
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
308
  /**
309
  * US States
310
  *
305
  return $form_fields;
306
  }
307
 
308
+ /**
309
+ * Get meta key value for a form field.
310
+ *
311
+ * @since 1.1.9
312
+ * @param int $id Field ID
313
+ * @param string $key Meta key
314
+ * @param array $form_data Form data array
315
+ * @return string
316
+ */
317
+ function wpforms_get_form_field_meta( $id = '', $key = '', $form_data = '' ) {
318
+
319
+ if ( empty( $id ) || empty( $key ) || empty( $form_data ) ) {
320
+ return '';
321
+ }
322
+
323
+ if ( !empty( $form_data['fields'][$id]['meta'][$key] ) ) {
324
+ return $form_data['fields'][$id]['meta'][$key];
325
+ } else {
326
+ return '';
327
+ }
328
+ }
329
+
330
  /**
331
  * US States
332
  *
languages/wpforms.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the same license as the WPForms package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: WPForms 1.1.7\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wpforms\n"
7
- "POT-Creation-Date: 2016-04-26 20:42:38+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -67,132 +67,154 @@ msgstr ""
67
  msgid "Addon installed."
68
  msgstr ""
69
 
70
- #: includes/admin/builder/class-builder.php:243
71
  #: includes/admin/class-editor.php:96
72
- #: includes/admin/entries/class-entries.php:971
73
  msgid "Cancel"
74
  msgstr ""
75
 
76
- #: includes/admin/builder/class-builder.php:244
77
  msgid "OK"
78
  msgstr ""
79
 
80
- #: includes/admin/builder/class-builder.php:245
81
  #: includes/admin/class-editor.php:70
82
  msgid "Close"
83
  msgstr ""
84
 
85
- #: includes/admin/builder/class-builder.php:246
86
  #: includes/admin/entries/class-entries-table.php:141
87
  msgid "Field"
88
  msgstr ""
89
 
90
- #: includes/admin/builder/class-builder.php:247
 
 
 
 
 
 
 
 
91
  msgid "Available Fields"
92
  msgstr ""
93
 
94
- #: includes/admin/builder/class-builder.php:248
95
  msgid "No fields available"
96
  msgstr ""
97
 
98
- #: includes/admin/builder/class-builder.php:250
99
  msgid "No email fields"
100
  msgstr ""
101
 
102
- #: includes/admin/builder/class-builder.php:251
103
  #: includes/admin/class-settings.php:117
104
  msgid "Saving ..."
105
  msgstr ""
106
 
107
- #: includes/admin/builder/class-builder.php:252
108
  msgid "Saved!"
109
  msgstr ""
110
 
111
- #: includes/admin/builder/class-builder.php:253
112
  msgid "Save and Exit"
113
  msgstr ""
114
 
115
- #: includes/admin/builder/class-builder.php:254
116
- #: includes/admin/builder/class-builder.php:305
117
  msgid "Loading"
118
  msgstr ""
119
 
120
- #: includes/admin/builder/class-builder.php:260
121
  msgid "Use Template"
122
  msgstr ""
123
 
124
- #: includes/admin/builder/class-builder.php:261
125
  msgid ""
126
  "Changing templates on an existing form will DELETE existing form fields. Are "
127
  "you sure you want apply the new template?"
128
  msgstr ""
129
 
130
- #: includes/admin/builder/class-builder.php:262
131
  msgid ""
132
  "You are almost done. To embed this form on your site, please paste the "
133
  "following shortcode inside a post or page."
134
  msgstr ""
135
 
136
- #: includes/admin/builder/class-builder.php:263
137
  msgid "Or you can follow the instructions in this video."
138
  msgstr ""
139
 
140
- #: includes/admin/builder/class-builder.php:264
141
- #: includes/admin/builder/class-builder.php:350
142
  msgid "Exit"
143
  msgstr ""
144
 
145
- #: includes/admin/builder/class-builder.php:266
146
  msgid "If you exit without saving, your changes will be lost."
147
  msgstr ""
148
 
149
- #: includes/admin/builder/class-builder.php:267
150
  msgid "Are you sure you want to delete this field?"
151
  msgstr ""
152
 
153
- #: includes/admin/builder/class-builder.php:268
154
  msgid "Please enter a form title."
155
  msgstr ""
156
 
157
- #: includes/admin/builder/class-builder.php:269
158
  msgid "This item must contain at least one choice."
159
  msgstr ""
160
 
161
- #: includes/admin/builder/class-builder.php:271
162
- #: includes/admin/builder/functions.php:162 includes/fields/class-base.php:317
163
  msgid "Show Smart Tags"
164
  msgstr ""
165
 
166
- #: includes/admin/builder/class-builder.php:272
167
  msgid "Hide Smart Tags"
168
  msgstr ""
169
 
170
- #: includes/admin/builder/class-builder.php:273
171
  #: includes/class-provider.php:857
172
  msgid "-- Select field --"
173
  msgstr ""
174
 
175
- #: includes/admin/builder/class-builder.php:328
176
  msgid "Now editing"
177
  msgstr ""
178
 
179
- #: includes/admin/builder/class-builder.php:338
 
 
 
 
 
 
 
 
 
 
180
  msgid "Embed Form"
181
  msgstr ""
182
 
183
- #: includes/admin/builder/class-builder.php:340
184
  msgid "Embed"
185
  msgstr ""
186
 
187
- #: includes/admin/builder/class-builder.php:343
188
  msgid "Save Form"
189
  msgstr ""
190
 
191
- #: includes/admin/builder/class-builder.php:345
192
- #: includes/admin/class-settings.php:389
193
  msgid "Save"
194
  msgstr ""
195
 
 
 
 
 
196
  #: includes/admin/builder/panels/class-fields.php:21
197
  msgid "Fields"
198
  msgstr ""
@@ -213,7 +235,7 @@ msgstr ""
213
 
214
  #: includes/admin/builder/panels/class-fields.php:120
215
  #: includes/admin/builder/panels/class-settings.php:117
216
- #: includes/class-frontend.php:349 includes/fields/class-page-break.php:51
217
  #: includes/fields/class-page-break.php:76
218
  #: includes/fields/class-page-break.php:103
219
  msgid "Previous"
@@ -244,12 +266,12 @@ msgstr ""
244
  msgid "You don't have any fields yet. Add some!"
245
  msgstr ""
246
 
247
- #: includes/admin/builder/panels/class-fields.php:252
248
  #: includes/fields/class-base.php:491
249
  msgid "Delete Field"
250
  msgstr ""
251
 
252
- #: includes/admin/builder/panels/class-fields.php:254
253
  #: includes/fields/class-base.php:492
254
  msgid "Click to edit. Drag to reorder."
255
  msgstr ""
@@ -340,7 +362,7 @@ msgid ""
340
  msgstr ""
341
 
342
  #: includes/admin/builder/panels/class-settings.php:21
343
- #: includes/admin/class-menu.php:81 includes/admin/class-settings.php:465
344
  msgid "Settings"
345
  msgstr ""
346
 
@@ -355,7 +377,7 @@ msgid "Notification"
355
  msgstr ""
356
 
357
  #: includes/admin/builder/panels/class-settings.php:59
358
- #: includes/admin/builder/panels/class-settings.php:255
359
  msgid "Confirmation"
360
  msgstr ""
361
 
@@ -403,83 +425,87 @@ msgstr ""
403
  msgid "Enable reCAPTCHA"
404
  msgstr ""
405
 
406
- #: includes/admin/builder/panels/class-settings.php:161
 
 
 
407
  #: includes/admin/builder/panels/class-settings.php:168
 
408
  msgid "Notifications"
409
  msgstr ""
410
 
411
- #: includes/admin/builder/panels/class-settings.php:172
412
  msgid "On"
413
  msgstr ""
414
 
415
- #: includes/admin/builder/panels/class-settings.php:173
416
  msgid "Off"
417
  msgstr ""
418
 
419
- #: includes/admin/builder/panels/class-settings.php:182
420
  msgid "Send To Email Address"
421
  msgstr ""
422
 
423
- #: includes/admin/builder/panels/class-settings.php:185
424
  msgid ""
425
  "Enter the email address to receive form entry notifications. For multiple "
426
  "notifications, seperate email addresses with a comma."
427
  msgstr ""
428
 
429
- #: includes/admin/builder/panels/class-settings.php:197
430
  msgid "Email Subject"
431
  msgstr ""
432
 
433
- #: includes/admin/builder/panels/class-settings.php:199
434
  msgid "New Entry: "
435
  msgstr ""
436
 
437
- #: includes/admin/builder/panels/class-settings.php:211
438
  msgid "From Name"
439
  msgstr ""
440
 
441
- #: includes/admin/builder/panels/class-settings.php:225
442
  msgid "From Email"
443
  msgstr ""
444
 
445
- #: includes/admin/builder/panels/class-settings.php:239
446
  msgid "Reply-To"
447
  msgstr ""
448
 
449
- #: includes/admin/builder/panels/class-settings.php:262
450
  msgid "Confirmation Type"
451
  msgstr ""
452
 
453
- #: includes/admin/builder/panels/class-settings.php:266
454
  #: includes/templates/class-suggestion.php:74
455
  msgid "Message"
456
  msgstr ""
457
 
458
- #: includes/admin/builder/panels/class-settings.php:267
459
  msgid "Show Page"
460
  msgstr ""
461
 
462
- #: includes/admin/builder/panels/class-settings.php:268
463
  msgid "Go to URL (Redirect)"
464
  msgstr ""
465
 
466
- #: includes/admin/builder/panels/class-settings.php:277
467
  msgid "Confirmation Message"
468
  msgstr ""
469
 
470
- #: includes/admin/builder/panels/class-settings.php:279
471
  msgid "Thanks for contacting us! We will be in touch with you shortly."
472
  msgstr ""
473
 
474
- #: includes/admin/builder/panels/class-settings.php:290
475
  msgid "Automatically scroll to the confirmation message"
476
  msgstr ""
477
 
478
- #: includes/admin/builder/panels/class-settings.php:303
479
  msgid "Confirmation Page"
480
  msgstr ""
481
 
482
- #: includes/admin/builder/panels/class-settings.php:311
483
  msgid "Confirmation Redirect URL"
484
  msgstr ""
485
 
@@ -609,8 +635,8 @@ msgid "Show form description"
609
  msgstr ""
610
 
611
  #: includes/admin/class-editor.php:88
612
- #: includes/admin/entries/class-entries.php:385
613
- #: includes/admin/overview/class-overview-table.php:249
614
  msgid ""
615
  "Whoops, you haven't created a form yet. Want to <a href=\"%s\">give it a go</"
616
  "a>?"
@@ -660,9 +686,9 @@ msgid ""
660
  "continue receiving automatic updates."
661
  msgstr ""
662
 
663
- #. #-#-#-#-# wpforms.pot (WPForms 1.1.7) #-#-#-#-#
664
  #. Plugin Name of the plugin/theme
665
- #. #-#-#-#-# wpforms.pot (WPForms 1.1.7) #-#-#-#-#
666
  #. Author of the plugin/theme
667
  #: includes/admin/class-menu.php:36 includes/admin/class-menu.php:37
668
  #: includes/admin/class-menu.php:48
@@ -678,7 +704,7 @@ msgid "WPForms Builder"
678
  msgstr ""
679
 
680
  #: includes/admin/class-menu.php:59
681
- #: includes/admin/overview/class-overview.php:145
682
  msgid "Add New"
683
  msgstr ""
684
 
@@ -687,7 +713,7 @@ msgid "Form Entries"
687
  msgstr ""
688
 
689
  #: includes/admin/class-menu.php:69
690
- #: includes/admin/entries/class-entries.php:406
691
  #: includes/admin/overview/class-overview-table.php:57
692
  #: includes/admin/overview/class-overview-table.php:158
693
  msgid "Entries"
@@ -721,7 +747,7 @@ msgstr ""
721
  msgid "Integrations"
722
  msgstr ""
723
 
724
- #: includes/admin/class-settings.php:163 includes/admin/class-settings.php:347
725
  msgid "Settings check failed."
726
  msgstr ""
727
 
@@ -771,99 +797,109 @@ msgid ""
771
  msgstr ""
772
 
773
  #: includes/admin/class-settings.php:255
774
- msgid "Email Template"
775
  msgstr ""
776
 
777
  #: includes/admin/class-settings.php:259
778
- msgid "Default HTML template"
779
  msgstr ""
780
 
781
  #: includes/admin/class-settings.php:260
782
- msgid "Plain Text"
783
  msgstr ""
784
 
785
- #: includes/admin/class-settings.php:262
786
- msgid "Determines how email notifications will be formatted."
787
  msgstr ""
788
 
789
- #: includes/admin/class-settings.php:267
790
- msgid "Email Header Image "
791
  msgstr ""
792
 
793
- #: includes/admin/class-settings.php:279
794
- msgid "Upload Image"
 
 
 
 
795
  msgstr ""
796
 
797
- #: includes/admin/class-settings.php:281
798
- msgid ""
799
- "Upload or choose a logo to be displayed at the top of email notifications."
800
  msgstr ""
801
 
802
- #: includes/admin/class-settings.php:282
803
- msgid "Recommended size is 300x100 or smaller for best support on all devices."
804
  msgstr ""
805
 
806
- #: includes/admin/class-settings.php:288
807
- msgid "Include Form Styling"
808
  msgstr ""
809
 
810
- #: includes/admin/class-settings.php:292
811
- msgid "Base and form theme styling"
812
  msgstr ""
813
 
814
- #: includes/admin/class-settings.php:293
815
- msgid "Base styling only"
816
  msgstr ""
817
 
818
- #: includes/admin/class-settings.php:294
819
- msgid "None"
820
  msgstr ""
821
 
822
- #: includes/admin/class-settings.php:296
823
- msgid "Determines which CSS files to load for the site."
 
824
  msgstr ""
825
 
826
- #: includes/admin/class-settings.php:302
 
 
 
 
827
  msgid "reCAPTCHA"
828
  msgstr ""
829
 
830
- #: includes/admin/class-settings.php:303
831
  msgid ""
832
  "reCAPTCHA is a free anti-spam service from Google. Its helps protect your "
833
  "website from spam and abuse while letting real people pass through with "
834
  "ease. <a href=\"http://www.google.com/recaptcha/intro/index.html\" target="
835
- "\"_blank\">Visit reCAPTCHA</a> to learn more or sign up for a free account."
 
 
836
  msgstr ""
837
 
838
- #: includes/admin/class-settings.php:308
839
  msgid "reCAPTCHA Site key"
840
  msgstr ""
841
 
842
- #: includes/admin/class-settings.php:316
843
  msgid "reCAPTCHA Secret key"
844
  msgstr ""
845
 
846
- #: includes/admin/class-settings.php:325
847
  msgid "Save General Settings"
848
  msgstr ""
849
 
850
- #: includes/admin/class-settings.php:358
851
  msgid "Settings updated."
852
  msgstr ""
853
 
854
- #: includes/admin/class-settings.php:372
855
  msgid "Currency"
856
  msgstr ""
857
 
858
- #: includes/admin/class-settings.php:376
859
  msgid "US Dollars (USD)"
860
  msgstr ""
861
 
862
- #: includes/admin/class-settings.php:378
863
  msgid "Determines which currency to use for payments."
864
  msgstr ""
865
 
866
- #: includes/admin/class-settings.php:409
867
  msgid ""
868
  "You do not have any marketing add-ons activated. You can head over to the <a "
869
  "href=\"%s\">Add-Ons page</a> to install and activate the add-on for your "
@@ -963,293 +999,289 @@ msgid "Starred"
963
  msgstr ""
964
 
965
  #: includes/admin/entries/class-entries-table.php:120
966
- #: includes/admin/entries/class-entries.php:1213
967
  msgid "Actions"
968
  msgstr ""
969
 
970
- #: includes/admin/entries/class-entries-table.php:240
971
- #: includes/admin/entries/class-entries.php:239
972
  msgid "Unstar entry"
973
  msgstr ""
974
 
975
- #: includes/admin/entries/class-entries-table.php:240
976
- #: includes/admin/entries/class-entries.php:240
977
  msgid "Star entry"
978
  msgstr ""
979
 
980
- #: includes/admin/entries/class-entries-table.php:245
981
- #: includes/admin/entries/class-entries.php:242
982
  msgid "Mark entry unread"
983
  msgstr ""
984
 
985
- #: includes/admin/entries/class-entries-table.php:245
986
- #: includes/admin/entries/class-entries.php:241
987
  msgid "Mark entry read"
988
  msgstr ""
989
 
990
- #: includes/admin/entries/class-entries-table.php:265
991
  msgid "View Form Entry"
992
  msgstr ""
993
 
994
- #: includes/admin/entries/class-entries-table.php:266
995
  msgid "View"
996
  msgstr ""
997
 
998
- #: includes/admin/entries/class-entries-table.php:272
999
  msgid "Delete Form Entry"
1000
  msgstr ""
1001
 
1002
- #: includes/admin/entries/class-entries-table.php:273
1003
- #: includes/admin/entries/class-entries-table.php:294
1004
- #: includes/admin/entries/class-entries.php:1006
1005
- #: includes/admin/overview/class-overview-table.php:172
1006
- #: includes/admin/overview/class-overview-table.php:190
1007
  msgid "Delete"
1008
  msgstr ""
1009
 
1010
- #: includes/admin/entries/class-entries-table.php:288
1011
  msgid "Mark Read"
1012
  msgstr ""
1013
 
1014
- #: includes/admin/entries/class-entries-table.php:289
1015
- #: includes/admin/entries/class-entries.php:1244
1016
  msgid "Mark Unread"
1017
  msgstr ""
1018
 
1019
- #: includes/admin/entries/class-entries-table.php:290
1020
- #: includes/admin/entries/class-entries.php:1196
1021
  msgid "Star"
1022
  msgstr ""
1023
 
1024
- #: includes/admin/entries/class-entries-table.php:291
1025
- #: includes/admin/entries/class-entries.php:1196
1026
  msgid "Unstar"
1027
  msgstr ""
1028
 
1029
- #: includes/admin/entries/class-entries-table.php:293
1030
  msgid "----------"
1031
  msgstr ""
1032
 
1033
- #: includes/admin/entries/class-entries-table.php:337
1034
  msgid "Entry marked as read."
1035
  msgid_plural "Entries marked as read."
1036
  msgstr[0] ""
1037
  msgstr[1] ""
1038
 
1039
- #: includes/admin/entries/class-entries-table.php:346
1040
  msgid "Entry marked as unread."
1041
  msgid_plural "Entries marked as unread."
1042
  msgstr[0] ""
1043
  msgstr[1] ""
1044
 
1045
- #: includes/admin/entries/class-entries-table.php:355
1046
  msgid "Entry starred."
1047
  msgid_plural "Entries starred."
1048
  msgstr[0] ""
1049
  msgstr[1] ""
1050
 
1051
- #: includes/admin/entries/class-entries-table.php:364
1052
  msgid "Entry unstarred."
1053
  msgid_plural "Entries unstarred."
1054
  msgstr[0] ""
1055
  msgstr[1] ""
1056
 
1057
- #: includes/admin/entries/class-entries-table.php:373
1058
  msgid "Entry successfully deleted."
1059
  msgid_plural "Entries successfully deleted."
1060
  msgstr[0] ""
1061
  msgstr[1] ""
1062
 
1063
- #: includes/admin/entries/class-entries-table.php:387
1064
  msgid "Whoops, it appears you do not have any form entries yet."
1065
  msgstr ""
1066
 
1067
- #: includes/admin/entries/class-entries.php:182
1068
  msgid "Number of entries per page:"
1069
  msgstr ""
1070
 
1071
- #: includes/admin/entries/class-entries.php:238
1072
- #: includes/admin/entries/class-entries.php:263
1073
  msgid "Are you sure you want to delete this entry?"
1074
  msgstr ""
1075
 
1076
- #: includes/admin/entries/class-entries.php:264
1077
- #: includes/admin/entries/class-entries.php:881
1078
  msgid "Hide Empty Fields"
1079
  msgstr ""
1080
 
1081
- #: includes/admin/entries/class-entries.php:265
1082
- #: includes/admin/entries/class-entries.php:881
1083
  msgid "Show Empty Fields"
1084
  msgstr ""
1085
 
1086
- #: includes/admin/entries/class-entries.php:266
1087
  msgid "Are you sure you want to delete this note?"
1088
  msgstr ""
1089
 
1090
- #: includes/admin/entries/class-entries.php:363
1091
  msgid "All entries marked as read."
1092
  msgstr ""
1093
 
1094
- #: includes/admin/entries/class-entries.php:502
1095
  msgid "Edit This Form"
1096
  msgstr ""
1097
 
1098
- #: includes/admin/entries/class-entries.php:507
1099
- msgid "Preview Form"
1100
- msgstr ""
1101
-
1102
- #: includes/admin/entries/class-entries.php:512
1103
  msgid "Download Export (CSV)"
1104
  msgstr ""
1105
 
1106
- #: includes/admin/entries/class-entries.php:517
1107
  msgid "Mark All Read"
1108
  msgstr ""
1109
 
1110
- #: includes/admin/entries/class-entries.php:523
1111
  msgid "Select a different form"
1112
  msgstr ""
1113
 
1114
- #: includes/admin/entries/class-entries.php:601
1115
  msgid "This entry has been starred."
1116
  msgstr ""
1117
 
1118
- #: includes/admin/entries/class-entries.php:613
1119
  msgid "This entry has been unstarred."
1120
  msgstr ""
1121
 
1122
- #: includes/admin/entries/class-entries.php:638
1123
  msgid "This entry has been marked unread."
1124
  msgstr ""
1125
 
1126
- #: includes/admin/entries/class-entries.php:662
1127
  msgid "Note deleted."
1128
  msgstr ""
1129
 
1130
- #: includes/admin/entries/class-entries.php:693
1131
  msgid "Note added."
1132
  msgstr ""
1133
 
1134
- #: includes/admin/entries/class-entries.php:711
1135
  msgid "Invalid entry ID."
1136
  msgstr ""
1137
 
1138
- #: includes/admin/entries/class-entries.php:724
1139
  msgid "Entry not found."
1140
  msgstr ""
1141
 
1142
- #: includes/admin/entries/class-entries.php:737
1143
  msgid "Form not found."
1144
  msgstr ""
1145
 
1146
- #: includes/admin/entries/class-entries.php:795
1147
  msgid "Notifications sent!"
1148
  msgstr ""
1149
 
1150
- #: includes/admin/entries/class-entries.php:822
1151
  msgid "View Entry"
1152
  msgstr ""
1153
 
1154
- #: includes/admin/entries/class-entries.php:824
1155
  msgid "Back to All Entries"
1156
  msgstr ""
1157
 
1158
- #: includes/admin/entries/class-entries.php:828
1159
  msgid "Entry %s of %s"
1160
  msgstr ""
1161
 
1162
- #: includes/admin/entries/class-entries.php:831
1163
  msgid "Previous form entry"
1164
  msgstr ""
1165
 
1166
- #: includes/admin/entries/class-entries.php:832
1167
  msgid "Current form entry"
1168
  msgstr ""
1169
 
1170
- #: includes/admin/entries/class-entries.php:833
1171
  msgid "Next form entry"
1172
  msgstr ""
1173
 
1174
- #: includes/admin/entries/class-entries.php:893 includes/class-preview.php:129
1175
  msgid "This entry does not have any fields"
1176
  msgstr ""
1177
 
1178
- #: includes/admin/entries/class-entries.php:909 includes/class-preview.php:146
1179
  msgid "Field ID #%d"
1180
  msgstr ""
1181
 
1182
- #: includes/admin/entries/class-entries.php:914 includes/class-preview.php:151
1183
  msgid "Empty"
1184
  msgstr ""
1185
 
1186
- #: includes/admin/entries/class-entries.php:949
1187
  msgid "Notes"
1188
  msgstr ""
1189
 
1190
- #: includes/admin/entries/class-entries.php:955
1191
- #: includes/admin/entries/class-entries.php:970
1192
  msgid "Add Note"
1193
  msgstr ""
1194
 
1195
- #: includes/admin/entries/class-entries.php:979
1196
  msgid "No notes."
1197
  msgstr ""
1198
 
1199
- #: includes/admin/entries/class-entries.php:988
1200
- #: includes/admin/entries/class-entries.php:1080
1201
  msgid "M j, Y @ g:ia"
1202
  msgstr ""
1203
 
1204
- #: includes/admin/entries/class-entries.php:1006
1205
  msgid "Added by"
1206
  msgstr ""
1207
 
1208
- #: includes/admin/entries/class-entries.php:1006
1209
  msgid "on"
1210
  msgstr ""
1211
 
1212
- #: includes/admin/entries/class-entries.php:1039
1213
  msgid "Debug Information"
1214
  msgstr ""
1215
 
1216
- #: includes/admin/entries/class-entries.php:1065
1217
  msgid "Entry Details"
1218
  msgstr ""
1219
 
1220
- #: includes/admin/entries/class-entries.php:1073
1221
  msgid "Entry ID:"
1222
  msgstr ""
1223
 
1224
- #: includes/admin/entries/class-entries.php:1079
1225
  msgid "Submitted on:"
1226
  msgstr ""
1227
 
1228
- #: includes/admin/entries/class-entries.php:1086
1229
  msgid "Modified on:"
1230
  msgstr ""
1231
 
1232
- #: includes/admin/entries/class-entries.php:1087
1233
  msgid "M j, Y @ H:i"
1234
  msgstr ""
1235
 
1236
- #: includes/admin/entries/class-entries.php:1095
1237
  msgid "User:"
1238
  msgstr ""
1239
 
1240
- #: includes/admin/entries/class-entries.php:1107
1241
  msgid "User IP:"
1242
  msgstr ""
1243
 
1244
- #: includes/admin/entries/class-entries.php:1222
1245
  msgid "Print"
1246
  msgstr ""
1247
 
1248
- #: includes/admin/entries/class-entries.php:1229
1249
  msgid "Export (CSV)"
1250
  msgstr ""
1251
 
1252
- #: includes/admin/entries/class-entries.php:1236
1253
  msgid "Resend Notifications"
1254
  msgstr ""
1255
 
@@ -1286,47 +1318,51 @@ msgid "View entries"
1286
  msgstr ""
1287
 
1288
  #: includes/admin/overview/class-overview-table.php:164
 
 
 
 
1289
  msgid "Duplicate this form"
1290
  msgstr ""
1291
 
1292
- #: includes/admin/overview/class-overview-table.php:165
1293
  msgid "Duplicate"
1294
  msgstr ""
1295
 
1296
- #: includes/admin/overview/class-overview-table.php:171
1297
  msgid "Delete this form"
1298
  msgstr ""
1299
 
1300
- #: includes/admin/overview/class-overview-table.php:222
1301
  msgid "Form successfully deleted."
1302
  msgid_plural "Forms successfully deleted"
1303
  msgstr[0] ""
1304
  msgstr[1] ""
1305
 
1306
- #: includes/admin/overview/class-overview-table.php:224
1307
- #: includes/admin/overview/class-overview-table.php:237
1308
  msgid "Security check failed"
1309
  msgstr ""
1310
 
1311
- #: includes/admin/overview/class-overview-table.php:235
1312
  msgid "Form successfully duplicated."
1313
  msgid_plural "Forms successfully duplicated"
1314
  msgstr[0] ""
1315
  msgstr[1] ""
1316
 
1317
- #: includes/admin/overview/class-overview.php:73
1318
  msgid "Number of forms per page:"
1319
  msgstr ""
1320
 
1321
- #: includes/admin/overview/class-overview.php:124
1322
  msgid "Are you sure you want to delete this form?"
1323
  msgstr ""
1324
 
1325
- #: includes/admin/overview/class-overview.php:125
1326
  msgid "Are you sure you want to duplicate this form?"
1327
  msgstr ""
1328
 
1329
- #: includes/admin/overview/class-overview.php:144
1330
  msgid "Forms Overview"
1331
  msgstr ""
1332
 
@@ -1334,31 +1370,51 @@ msgstr ""
1334
  msgid "WPForms Logs"
1335
  msgstr ""
1336
 
1337
- #: includes/class-preview.php:115
1338
  msgid "Entry #%d"
1339
  msgstr ""
1340
 
1341
- #: includes/class-process.php:73
1342
- msgid "Unable to process the form entry."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1343
  msgstr ""
1344
 
1345
- #: includes/class-process.php:79
 
 
 
 
1346
  msgid "Invalid form."
1347
  msgstr ""
1348
 
1349
- #: includes/class-process.php:113
1350
  msgid "Incorrect reCAPTCHA, please try again."
1351
  msgstr ""
1352
 
1353
- #: includes/class-process.php:120 includes/class-process.php:159
1354
  msgid "Form has not been submitted, please see the errors below."
1355
  msgstr ""
1356
 
1357
- #: includes/class-process.php:127
1358
  msgid "WPForms honeypot field triggered."
1359
  msgstr ""
1360
 
1361
- #: includes/class-process.php:306
1362
  msgid "New %s Entry"
1363
  msgstr ""
1364
 
@@ -1644,7 +1700,7 @@ msgstr ""
1644
  #: includes/fields/class-date-time.php:289 includes/fields/class-email.php:128
1645
  #: includes/fields/class-file-upload.php:217
1646
  #: includes/fields/class-name.php:311 includes/fields/class-number.php:127
1647
- #: includes/fields/class-payment-multiple.php:172
1648
  #: includes/fields/class-payment-single.php:186
1649
  #: includes/fields/class-url.php:126
1650
  msgid "This field is required"
@@ -1756,10 +1812,6 @@ msgstr ""
1756
  msgid "No field type found"
1757
  msgstr ""
1758
 
1759
- #: includes/fields/class-base.php:473
1760
- msgid "New"
1761
- msgstr ""
1762
-
1763
  #: includes/fields/class-checkbox.php:21
1764
  msgid "Checkboxes"
1765
  msgstr ""
@@ -1849,13 +1901,6 @@ msgstr ""
1849
  msgid "Section Divider"
1850
  msgstr ""
1851
 
1852
- #: includes/fields/class-email.php:21 includes/templates/class-donation.php:42
1853
- #: includes/templates/class-order.php:42
1854
- #: includes/templates/class-request-quote.php:46
1855
- #: includes/templates/class-subscribe.php:42
1856
- msgid "Email"
1857
- msgstr ""
1858
-
1859
  #: includes/fields/class-email.php:133
1860
  msgid "Please enter a valid email address."
1861
  msgstr ""
@@ -1864,6 +1909,10 @@ msgstr ""
1864
  msgid "File Upload"
1865
  msgstr ""
1866
 
 
 
 
 
1867
  #: includes/fields/class-file-upload.php:60
1868
  msgid "Allowed File Extensions"
1869
  msgstr ""
@@ -2067,11 +2116,11 @@ msgid ""
2067
  "only."
2068
  msgstr ""
2069
 
2070
- #: includes/fields/class-payment-credit-card.php:266
2071
  msgid "MM"
2072
  msgstr ""
2073
 
2074
- #: includes/fields/class-payment-credit-card.php:285
2075
  msgid "YY"
2076
  msgstr ""
2077
 
@@ -2102,7 +2151,7 @@ msgstr ""
2102
  msgid "Items"
2103
  msgstr ""
2104
 
2105
- #: includes/fields/class-payment-multiple.php:178
2106
  msgid "Invalid payment option"
2107
  msgstr ""
2108
 
@@ -2342,13 +2391,13 @@ msgstr ""
2342
  msgid "Subject"
2343
  msgstr ""
2344
 
2345
- #: wpforms.php:313
2346
  msgid "Please deactivate WPForms Lite before activating WPForms"
2347
  msgstr ""
2348
 
2349
- #. #-#-#-#-# wpforms.pot (WPForms 1.1.7) #-#-#-#-#
2350
  #. Plugin URI of the plugin/theme
2351
- #. #-#-#-#-# wpforms.pot (WPForms 1.1.7) #-#-#-#-#
2352
  #. Author URI of the plugin/theme
2353
  msgid "https://wpforms.com"
2354
  msgstr ""
2
  # This file is distributed under the same license as the WPForms package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: WPForms 1.2\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wpforms\n"
7
+ "POT-Creation-Date: 2016-05-19 16:05:12+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
67
  msgid "Addon installed."
68
  msgstr ""
69
 
70
+ #: includes/admin/builder/class-builder.php:246
71
  #: includes/admin/class-editor.php:96
72
+ #: includes/admin/entries/class-entries.php:974
73
  msgid "Cancel"
74
  msgstr ""
75
 
76
+ #: includes/admin/builder/class-builder.php:247
77
  msgid "OK"
78
  msgstr ""
79
 
80
+ #: includes/admin/builder/class-builder.php:248
81
  #: includes/admin/class-editor.php:70
82
  msgid "Close"
83
  msgstr ""
84
 
85
+ #: includes/admin/builder/class-builder.php:249
86
  #: includes/admin/entries/class-entries-table.php:141
87
  msgid "Field"
88
  msgstr ""
89
 
90
+ #: includes/admin/builder/class-builder.php:250
91
+ msgid "Field Locked"
92
+ msgstr ""
93
+
94
+ #: includes/admin/builder/class-builder.php:251
95
+ msgid "This field cannot be deleted because it required by the form template."
96
+ msgstr ""
97
+
98
+ #: includes/admin/builder/class-builder.php:252
99
  msgid "Available Fields"
100
  msgstr ""
101
 
102
+ #: includes/admin/builder/class-builder.php:253
103
  msgid "No fields available"
104
  msgstr ""
105
 
106
+ #: includes/admin/builder/class-builder.php:255
107
  msgid "No email fields"
108
  msgstr ""
109
 
110
+ #: includes/admin/builder/class-builder.php:256
111
  #: includes/admin/class-settings.php:117
112
  msgid "Saving ..."
113
  msgstr ""
114
 
115
+ #: includes/admin/builder/class-builder.php:257
116
  msgid "Saved!"
117
  msgstr ""
118
 
119
+ #: includes/admin/builder/class-builder.php:258
120
  msgid "Save and Exit"
121
  msgstr ""
122
 
123
+ #: includes/admin/builder/class-builder.php:259
124
+ #: includes/admin/builder/class-builder.php:310
125
  msgid "Loading"
126
  msgstr ""
127
 
128
+ #: includes/admin/builder/class-builder.php:265
129
  msgid "Use Template"
130
  msgstr ""
131
 
132
+ #: includes/admin/builder/class-builder.php:266
133
  msgid ""
134
  "Changing templates on an existing form will DELETE existing form fields. Are "
135
  "you sure you want apply the new template?"
136
  msgstr ""
137
 
138
+ #: includes/admin/builder/class-builder.php:267
139
  msgid ""
140
  "You are almost done. To embed this form on your site, please paste the "
141
  "following shortcode inside a post or page."
142
  msgstr ""
143
 
144
+ #: includes/admin/builder/class-builder.php:268
145
  msgid "Or you can follow the instructions in this video."
146
  msgstr ""
147
 
148
+ #: includes/admin/builder/class-builder.php:269
149
+ #: includes/admin/builder/class-builder.php:360
150
  msgid "Exit"
151
  msgstr ""
152
 
153
+ #: includes/admin/builder/class-builder.php:271
154
  msgid "If you exit without saving, your changes will be lost."
155
  msgstr ""
156
 
157
+ #: includes/admin/builder/class-builder.php:272
158
  msgid "Are you sure you want to delete this field?"
159
  msgstr ""
160
 
161
+ #: includes/admin/builder/class-builder.php:273
162
  msgid "Please enter a form title."
163
  msgstr ""
164
 
165
+ #: includes/admin/builder/class-builder.php:274
166
  msgid "This item must contain at least one choice."
167
  msgstr ""
168
 
169
+ #: includes/admin/builder/class-builder.php:276
170
+ #: includes/admin/builder/functions.php:196 includes/fields/class-base.php:317
171
  msgid "Show Smart Tags"
172
  msgstr ""
173
 
174
+ #: includes/admin/builder/class-builder.php:277
175
  msgid "Hide Smart Tags"
176
  msgstr ""
177
 
178
+ #: includes/admin/builder/class-builder.php:278
179
  #: includes/class-provider.php:857
180
  msgid "-- Select field --"
181
  msgstr ""
182
 
183
+ #: includes/admin/builder/class-builder.php:333
184
  msgid "Now editing"
185
  msgstr ""
186
 
187
+ #: includes/admin/builder/class-builder.php:343
188
+ #: includes/admin/entries/class-entries.php:510
189
+ msgid "Preview Form"
190
+ msgstr ""
191
+
192
+ #: includes/admin/builder/class-builder.php:345
193
+ #: includes/admin/overview/class-overview-table.php:165
194
+ msgid "Preview"
195
+ msgstr ""
196
+
197
+ #: includes/admin/builder/class-builder.php:348
198
  msgid "Embed Form"
199
  msgstr ""
200
 
201
+ #: includes/admin/builder/class-builder.php:350
202
  msgid "Embed"
203
  msgstr ""
204
 
205
+ #: includes/admin/builder/class-builder.php:353
206
  msgid "Save Form"
207
  msgstr ""
208
 
209
+ #: includes/admin/builder/class-builder.php:355
210
+ #: includes/admin/class-settings.php:395
211
  msgid "Save"
212
  msgstr ""
213
 
214
+ #: includes/admin/builder/functions.php:141
215
+ msgid "Field #"
216
+ msgstr ""
217
+
218
  #: includes/admin/builder/panels/class-fields.php:21
219
  msgid "Fields"
220
  msgstr ""
235
 
236
  #: includes/admin/builder/panels/class-fields.php:120
237
  #: includes/admin/builder/panels/class-settings.php:117
238
+ #: includes/class-frontend.php:359 includes/fields/class-page-break.php:51
239
  #: includes/fields/class-page-break.php:76
240
  #: includes/fields/class-page-break.php:103
241
  msgid "Previous"
266
  msgid "You don't have any fields yet. Add some!"
267
  msgstr ""
268
 
269
+ #: includes/admin/builder/panels/class-fields.php:253
270
  #: includes/fields/class-base.php:491
271
  msgid "Delete Field"
272
  msgstr ""
273
 
274
+ #: includes/admin/builder/panels/class-fields.php:255
275
  #: includes/fields/class-base.php:492
276
  msgid "Click to edit. Drag to reorder."
277
  msgstr ""
362
  msgstr ""
363
 
364
  #: includes/admin/builder/panels/class-settings.php:21
365
+ #: includes/admin/class-menu.php:81 includes/admin/class-settings.php:471
366
  msgid "Settings"
367
  msgstr ""
368
 
377
  msgstr ""
378
 
379
  #: includes/admin/builder/panels/class-settings.php:59
380
+ #: includes/admin/builder/panels/class-settings.php:262
381
  msgid "Confirmation"
382
  msgstr ""
383
 
425
  msgid "Enable reCAPTCHA"
426
  msgstr ""
427
 
428
+ #: includes/admin/builder/panels/class-settings.php:158
429
+ msgid "Disable storing entry information in WordPress"
430
+ msgstr ""
431
+
432
  #: includes/admin/builder/panels/class-settings.php:168
433
+ #: includes/admin/builder/panels/class-settings.php:175
434
  msgid "Notifications"
435
  msgstr ""
436
 
437
+ #: includes/admin/builder/panels/class-settings.php:179
438
  msgid "On"
439
  msgstr ""
440
 
441
+ #: includes/admin/builder/panels/class-settings.php:180
442
  msgid "Off"
443
  msgstr ""
444
 
445
+ #: includes/admin/builder/panels/class-settings.php:189
446
  msgid "Send To Email Address"
447
  msgstr ""
448
 
449
+ #: includes/admin/builder/panels/class-settings.php:192
450
  msgid ""
451
  "Enter the email address to receive form entry notifications. For multiple "
452
  "notifications, seperate email addresses with a comma."
453
  msgstr ""
454
 
455
+ #: includes/admin/builder/panels/class-settings.php:204
456
  msgid "Email Subject"
457
  msgstr ""
458
 
459
+ #: includes/admin/builder/panels/class-settings.php:206
460
  msgid "New Entry: "
461
  msgstr ""
462
 
463
+ #: includes/admin/builder/panels/class-settings.php:218
464
  msgid "From Name"
465
  msgstr ""
466
 
467
+ #: includes/admin/builder/panels/class-settings.php:232
468
  msgid "From Email"
469
  msgstr ""
470
 
471
+ #: includes/admin/builder/panels/class-settings.php:246
472
  msgid "Reply-To"
473
  msgstr ""
474
 
475
+ #: includes/admin/builder/panels/class-settings.php:269
476
  msgid "Confirmation Type"
477
  msgstr ""
478
 
479
+ #: includes/admin/builder/panels/class-settings.php:273
480
  #: includes/templates/class-suggestion.php:74
481
  msgid "Message"
482
  msgstr ""
483
 
484
+ #: includes/admin/builder/panels/class-settings.php:274
485
  msgid "Show Page"
486
  msgstr ""
487
 
488
+ #: includes/admin/builder/panels/class-settings.php:275
489
  msgid "Go to URL (Redirect)"
490
  msgstr ""
491
 
492
+ #: includes/admin/builder/panels/class-settings.php:284
493
  msgid "Confirmation Message"
494
  msgstr ""
495
 
496
+ #: includes/admin/builder/panels/class-settings.php:286
497
  msgid "Thanks for contacting us! We will be in touch with you shortly."
498
  msgstr ""
499
 
500
+ #: includes/admin/builder/panels/class-settings.php:297
501
  msgid "Automatically scroll to the confirmation message"
502
  msgstr ""
503
 
504
+ #: includes/admin/builder/panels/class-settings.php:310
505
  msgid "Confirmation Page"
506
  msgstr ""
507
 
508
+ #: includes/admin/builder/panels/class-settings.php:318
509
  msgid "Confirmation Redirect URL"
510
  msgstr ""
511
 
635
  msgstr ""
636
 
637
  #: includes/admin/class-editor.php:88
638
+ #: includes/admin/entries/class-entries.php:388
639
+ #: includes/admin/overview/class-overview-table.php:256
640
  msgid ""
641
  "Whoops, you haven't created a form yet. Want to <a href=\"%s\">give it a go</"
642
  "a>?"
686
  "continue receiving automatic updates."
687
  msgstr ""
688
 
689
+ #. #-#-#-#-# wpforms.pot (WPForms 1.2) #-#-#-#-#
690
  #. Plugin Name of the plugin/theme
691
+ #. #-#-#-#-# wpforms.pot (WPForms 1.2) #-#-#-#-#
692
  #. Author of the plugin/theme
693
  #: includes/admin/class-menu.php:36 includes/admin/class-menu.php:37
694
  #: includes/admin/class-menu.php:48
704
  msgstr ""
705
 
706
  #: includes/admin/class-menu.php:59
707
+ #: includes/admin/overview/class-overview.php:148
708
  msgid "Add New"
709
  msgstr ""
710
 
713
  msgstr ""
714
 
715
  #: includes/admin/class-menu.php:69
716
+ #: includes/admin/entries/class-entries.php:409
717
  #: includes/admin/overview/class-overview-table.php:57
718
  #: includes/admin/overview/class-overview-table.php:158
719
  msgid "Entries"
747
  msgid "Integrations"
748
  msgstr ""
749
 
750
+ #: includes/admin/class-settings.php:163 includes/admin/class-settings.php:353
751
  msgid "Settings check failed."
752
  msgstr ""
753
 
797
  msgstr ""
798
 
799
  #: includes/admin/class-settings.php:255
800
+ msgid "Include Form Styling"
801
  msgstr ""
802
 
803
  #: includes/admin/class-settings.php:259
804
+ msgid "Base and form theme styling"
805
  msgstr ""
806
 
807
  #: includes/admin/class-settings.php:260
808
+ msgid "Base styling only"
809
  msgstr ""
810
 
811
+ #: includes/admin/class-settings.php:261
812
+ msgid "None"
813
  msgstr ""
814
 
815
+ #: includes/admin/class-settings.php:263
816
+ msgid "Determines which CSS files to load for the site."
817
  msgstr ""
818
 
819
+ #: includes/admin/class-settings.php:269 includes/fields/class-email.php:21
820
+ #: includes/templates/class-donation.php:42
821
+ #: includes/templates/class-order.php:42
822
+ #: includes/templates/class-request-quote.php:46
823
+ #: includes/templates/class-subscribe.php:42
824
+ msgid "Email"
825
  msgstr ""
826
 
827
+ #: includes/admin/class-settings.php:274
828
+ msgid "Email Template"
 
829
  msgstr ""
830
 
831
+ #: includes/admin/class-settings.php:278
832
+ msgid "Default HTML template"
833
  msgstr ""
834
 
835
+ #: includes/admin/class-settings.php:279
836
+ msgid "Plain Text"
837
  msgstr ""
838
 
839
+ #: includes/admin/class-settings.php:281
840
+ msgid "Determines how email notifications will be formatted."
841
  msgstr ""
842
 
843
+ #: includes/admin/class-settings.php:286
844
+ msgid "Email Header Image "
845
  msgstr ""
846
 
847
+ #: includes/admin/class-settings.php:298
848
+ msgid "Upload Image"
849
  msgstr ""
850
 
851
+ #: includes/admin/class-settings.php:300
852
+ msgid ""
853
+ "Upload or choose a logo to be displayed at the top of email notifications."
854
  msgstr ""
855
 
856
+ #: includes/admin/class-settings.php:301
857
+ msgid "Recommended size is 300x100 or smaller for best support on all devices."
858
+ msgstr ""
859
+
860
+ #: includes/admin/class-settings.php:308
861
  msgid "reCAPTCHA"
862
  msgstr ""
863
 
864
+ #: includes/admin/class-settings.php:309
865
  msgid ""
866
  "reCAPTCHA is a free anti-spam service from Google. Its helps protect your "
867
  "website from spam and abuse while letting real people pass through with "
868
  "ease. <a href=\"http://www.google.com/recaptcha/intro/index.html\" target="
869
+ "\"_blank\">Visit reCAPTCHA</a> to learn more and sign up for a free account "
870
+ "or <a href=\"https://wpforms.com/docs/setup-captcha-wpforms/\" target="
871
+ "\"_blank\">read our walk through</a> for step-by-step directions."
872
  msgstr ""
873
 
874
+ #: includes/admin/class-settings.php:314
875
  msgid "reCAPTCHA Site key"
876
  msgstr ""
877
 
878
+ #: includes/admin/class-settings.php:322
879
  msgid "reCAPTCHA Secret key"
880
  msgstr ""
881
 
882
+ #: includes/admin/class-settings.php:331
883
  msgid "Save General Settings"
884
  msgstr ""
885
 
886
+ #: includes/admin/class-settings.php:364
887
  msgid "Settings updated."
888
  msgstr ""
889
 
890
+ #: includes/admin/class-settings.php:378
891
  msgid "Currency"
892
  msgstr ""
893
 
894
+ #: includes/admin/class-settings.php:382
895
  msgid "US Dollars (USD)"
896
  msgstr ""
897
 
898
+ #: includes/admin/class-settings.php:384
899
  msgid "Determines which currency to use for payments."
900
  msgstr ""
901
 
902
+ #: includes/admin/class-settings.php:415
903
  msgid ""
904
  "You do not have any marketing add-ons activated. You can head over to the <a "
905
  "href=\"%s\">Add-Ons page</a> to install and activate the add-on for your "
999
  msgstr ""
1000
 
1001
  #: includes/admin/entries/class-entries-table.php:120
1002
+ #: includes/admin/entries/class-entries.php:1216
1003
  msgid "Actions"
1004
  msgstr ""
1005
 
1006
+ #: includes/admin/entries/class-entries-table.php:245
1007
+ #: includes/admin/entries/class-entries.php:242
1008
  msgid "Unstar entry"
1009
  msgstr ""
1010
 
1011
+ #: includes/admin/entries/class-entries-table.php:245
1012
+ #: includes/admin/entries/class-entries.php:243
1013
  msgid "Star entry"
1014
  msgstr ""
1015
 
1016
+ #: includes/admin/entries/class-entries-table.php:250
1017
+ #: includes/admin/entries/class-entries.php:245
1018
  msgid "Mark entry unread"
1019
  msgstr ""
1020
 
1021
+ #: includes/admin/entries/class-entries-table.php:250
1022
+ #: includes/admin/entries/class-entries.php:244
1023
  msgid "Mark entry read"
1024
  msgstr ""
1025
 
1026
+ #: includes/admin/entries/class-entries-table.php:270
1027
  msgid "View Form Entry"
1028
  msgstr ""
1029
 
1030
+ #: includes/admin/entries/class-entries-table.php:271
1031
  msgid "View"
1032
  msgstr ""
1033
 
1034
+ #: includes/admin/entries/class-entries-table.php:277
1035
  msgid "Delete Form Entry"
1036
  msgstr ""
1037
 
1038
+ #: includes/admin/entries/class-entries-table.php:278
1039
+ #: includes/admin/entries/class-entries-table.php:299
1040
+ #: includes/admin/entries/class-entries.php:1009
1041
+ #: includes/admin/overview/class-overview-table.php:179
1042
+ #: includes/admin/overview/class-overview-table.php:197
1043
  msgid "Delete"
1044
  msgstr ""
1045
 
1046
+ #: includes/admin/entries/class-entries-table.php:293
1047
  msgid "Mark Read"
1048
  msgstr ""
1049
 
1050
+ #: includes/admin/entries/class-entries-table.php:294
1051
+ #: includes/admin/entries/class-entries.php:1247
1052
  msgid "Mark Unread"
1053
  msgstr ""
1054
 
1055
+ #: includes/admin/entries/class-entries-table.php:295
1056
+ #: includes/admin/entries/class-entries.php:1199
1057
  msgid "Star"
1058
  msgstr ""
1059
 
1060
+ #: includes/admin/entries/class-entries-table.php:296
1061
+ #: includes/admin/entries/class-entries.php:1199
1062
  msgid "Unstar"
1063
  msgstr ""
1064
 
1065
+ #: includes/admin/entries/class-entries-table.php:298
1066
  msgid "----------"
1067
  msgstr ""
1068
 
1069
+ #: includes/admin/entries/class-entries-table.php:342
1070
  msgid "Entry marked as read."
1071
  msgid_plural "Entries marked as read."
1072
  msgstr[0] ""
1073
  msgstr[1] ""
1074
 
1075
+ #: includes/admin/entries/class-entries-table.php:351
1076
  msgid "Entry marked as unread."
1077
  msgid_plural "Entries marked as unread."
1078
  msgstr[0] ""
1079
  msgstr[1] ""
1080
 
1081
+ #: includes/admin/entries/class-entries-table.php:360
1082
  msgid "Entry starred."
1083
  msgid_plural "Entries starred."
1084
  msgstr[0] ""
1085
  msgstr[1] ""
1086
 
1087
+ #: includes/admin/entries/class-entries-table.php:369
1088
  msgid "Entry unstarred."
1089
  msgid_plural "Entries unstarred."
1090
  msgstr[0] ""
1091
  msgstr[1] ""
1092
 
1093
+ #: includes/admin/entries/class-entries-table.php:378
1094
  msgid "Entry successfully deleted."
1095
  msgid_plural "Entries successfully deleted."
1096
  msgstr[0] ""
1097
  msgstr[1] ""
1098
 
1099
+ #: includes/admin/entries/class-entries-table.php:392
1100
  msgid "Whoops, it appears you do not have any form entries yet."
1101
  msgstr ""
1102
 
1103
+ #: includes/admin/entries/class-entries.php:185
1104
  msgid "Number of entries per page:"
1105
  msgstr ""
1106
 
1107
+ #: includes/admin/entries/class-entries.php:241
1108
+ #: includes/admin/entries/class-entries.php:266
1109
  msgid "Are you sure you want to delete this entry?"
1110
  msgstr ""
1111
 
1112
+ #: includes/admin/entries/class-entries.php:267
1113
+ #: includes/admin/entries/class-entries.php:884
1114
  msgid "Hide Empty Fields"
1115
  msgstr ""
1116
 
1117
+ #: includes/admin/entries/class-entries.php:268
1118
+ #: includes/admin/entries/class-entries.php:884
1119
  msgid "Show Empty Fields"
1120
  msgstr ""
1121
 
1122
+ #: includes/admin/entries/class-entries.php:269
1123
  msgid "Are you sure you want to delete this note?"
1124
  msgstr ""
1125
 
1126
+ #: includes/admin/entries/class-entries.php:366
1127
  msgid "All entries marked as read."
1128
  msgstr ""
1129
 
1130
+ #: includes/admin/entries/class-entries.php:505
1131
  msgid "Edit This Form"
1132
  msgstr ""
1133
 
1134
+ #: includes/admin/entries/class-entries.php:515
 
 
 
 
1135
  msgid "Download Export (CSV)"
1136
  msgstr ""
1137
 
1138
+ #: includes/admin/entries/class-entries.php:520
1139
  msgid "Mark All Read"
1140
  msgstr ""
1141
 
1142
+ #: includes/admin/entries/class-entries.php:526
1143
  msgid "Select a different form"
1144
  msgstr ""
1145
 
1146
+ #: includes/admin/entries/class-entries.php:604
1147
  msgid "This entry has been starred."
1148
  msgstr ""
1149
 
1150
+ #: includes/admin/entries/class-entries.php:616
1151
  msgid "This entry has been unstarred."
1152
  msgstr ""
1153
 
1154
+ #: includes/admin/entries/class-entries.php:641
1155
  msgid "This entry has been marked unread."
1156
  msgstr ""
1157
 
1158
+ #: includes/admin/entries/class-entries.php:665
1159
  msgid "Note deleted."
1160
  msgstr ""
1161
 
1162
+ #: includes/admin/entries/class-entries.php:696
1163
  msgid "Note added."
1164
  msgstr ""
1165
 
1166
+ #: includes/admin/entries/class-entries.php:714
1167
  msgid "Invalid entry ID."
1168
  msgstr ""
1169
 
1170
+ #: includes/admin/entries/class-entries.php:727
1171
  msgid "Entry not found."
1172
  msgstr ""
1173
 
1174
+ #: includes/admin/entries/class-entries.php:740
1175
  msgid "Form not found."
1176
  msgstr ""
1177
 
1178
+ #: includes/admin/entries/class-entries.php:798
1179
  msgid "Notifications sent!"
1180
  msgstr ""
1181
 
1182
+ #: includes/admin/entries/class-entries.php:825
1183
  msgid "View Entry"
1184
  msgstr ""
1185
 
1186
+ #: includes/admin/entries/class-entries.php:827
1187
  msgid "Back to All Entries"
1188
  msgstr ""
1189
 
1190
+ #: includes/admin/entries/class-entries.php:831
1191
  msgid "Entry %s of %s"
1192
  msgstr ""
1193
 
1194
+ #: includes/admin/entries/class-entries.php:834
1195
  msgid "Previous form entry"
1196
  msgstr ""
1197
 
1198
+ #: includes/admin/entries/class-entries.php:835
1199
  msgid "Current form entry"
1200
  msgstr ""
1201
 
1202
+ #: includes/admin/entries/class-entries.php:836
1203
  msgid "Next form entry"
1204
  msgstr ""
1205
 
1206
+ #: includes/admin/entries/class-entries.php:896 includes/class-preview.php:104
1207
  msgid "This entry does not have any fields"
1208
  msgstr ""
1209
 
1210
+ #: includes/admin/entries/class-entries.php:912 includes/class-preview.php:121
1211
  msgid "Field ID #%d"
1212
  msgstr ""
1213
 
1214
+ #: includes/admin/entries/class-entries.php:917 includes/class-preview.php:126
1215
  msgid "Empty"
1216
  msgstr ""
1217
 
1218
+ #: includes/admin/entries/class-entries.php:952
1219
  msgid "Notes"
1220
  msgstr ""
1221
 
1222
+ #: includes/admin/entries/class-entries.php:958
1223
+ #: includes/admin/entries/class-entries.php:973
1224
  msgid "Add Note"
1225
  msgstr ""
1226
 
1227
+ #: includes/admin/entries/class-entries.php:982
1228
  msgid "No notes."
1229
  msgstr ""
1230
 
1231
+ #: includes/admin/entries/class-entries.php:991
1232
+ #: includes/admin/entries/class-entries.php:1083
1233
  msgid "M j, Y @ g:ia"
1234
  msgstr ""
1235
 
1236
+ #: includes/admin/entries/class-entries.php:1009
1237
  msgid "Added by"
1238
  msgstr ""
1239
 
1240
+ #: includes/admin/entries/class-entries.php:1009
1241
  msgid "on"
1242
  msgstr ""
1243
 
1244
+ #: includes/admin/entries/class-entries.php:1042
1245
  msgid "Debug Information"
1246
  msgstr ""
1247
 
1248
+ #: includes/admin/entries/class-entries.php:1068
1249
  msgid "Entry Details"
1250
  msgstr ""
1251
 
1252
+ #: includes/admin/entries/class-entries.php:1076
1253
  msgid "Entry ID:"
1254
  msgstr ""
1255
 
1256
+ #: includes/admin/entries/class-entries.php:1082
1257
  msgid "Submitted on:"
1258
  msgstr ""
1259
 
1260
+ #: includes/admin/entries/class-entries.php:1089
1261
  msgid "Modified on:"
1262
  msgstr ""
1263
 
1264
+ #: includes/admin/entries/class-entries.php:1090
1265
  msgid "M j, Y @ H:i"
1266
  msgstr ""
1267
 
1268
+ #: includes/admin/entries/class-entries.php:1098
1269
  msgid "User:"
1270
  msgstr ""
1271
 
1272
+ #: includes/admin/entries/class-entries.php:1110
1273
  msgid "User IP:"
1274
  msgstr ""
1275
 
1276
+ #: includes/admin/entries/class-entries.php:1225
1277
  msgid "Print"
1278
  msgstr ""
1279
 
1280
+ #: includes/admin/entries/class-entries.php:1232
1281
  msgid "Export (CSV)"
1282
  msgstr ""
1283
 
1284
+ #: includes/admin/entries/class-entries.php:1239
1285
  msgid "Resend Notifications"
1286
  msgstr ""
1287
 
1318
  msgstr ""
1319
 
1320
  #: includes/admin/overview/class-overview-table.php:164
1321
+ msgid "View preview"
1322
+ msgstr ""
1323
+
1324
+ #: includes/admin/overview/class-overview-table.php:171
1325
  msgid "Duplicate this form"
1326
  msgstr ""
1327
 
1328
+ #: includes/admin/overview/class-overview-table.php:172
1329
  msgid "Duplicate"
1330
  msgstr ""
1331
 
1332
+ #: includes/admin/overview/class-overview-table.php:178
1333
  msgid "Delete this form"
1334
  msgstr ""
1335
 
1336
+ #: includes/admin/overview/class-overview-table.php:229
1337
  msgid "Form successfully deleted."
1338
  msgid_plural "Forms successfully deleted"
1339
  msgstr[0] ""
1340
  msgstr[1] ""
1341
 
1342
+ #: includes/admin/overview/class-overview-table.php:231
1343
+ #: includes/admin/overview/class-overview-table.php:244
1344
  msgid "Security check failed"
1345
  msgstr ""
1346
 
1347
+ #: includes/admin/overview/class-overview-table.php:242
1348
  msgid "Form successfully duplicated."
1349
  msgid_plural "Forms successfully duplicated"
1350
  msgstr[0] ""
1351
  msgstr[1] ""
1352
 
1353
+ #: includes/admin/overview/class-overview.php:76
1354
  msgid "Number of forms per page:"
1355
  msgstr ""
1356
 
1357
+ #: includes/admin/overview/class-overview.php:127
1358
  msgid "Are you sure you want to delete this form?"
1359
  msgstr ""
1360
 
1361
+ #: includes/admin/overview/class-overview.php:128
1362
  msgid "Are you sure you want to duplicate this form?"
1363
  msgstr ""
1364
 
1365
+ #: includes/admin/overview/class-overview.php:147
1366
  msgid "Forms Overview"
1367
  msgstr ""
1368
 
1370
  msgid "WPForms Logs"
1371
  msgstr ""
1372
 
1373
+ #: includes/class-preview.php:92
1374
  msgid "Entry #%d"
1375
  msgstr ""
1376
 
1377
+ #: includes/class-preview.php:170
1378
+ msgid ""
1379
+ "This is the WPForms preview page. All your form previews will be handled on "
1380
+ "this page."
1381
+ msgstr ""
1382
+
1383
+ #: includes/class-preview.php:171
1384
+ msgid ""
1385
+ "The page is set to private, so it is not publically accessible. Please do "
1386
+ "not delete this page :) ."
1387
+ msgstr ""
1388
+
1389
+ #: includes/class-preview.php:176
1390
+ msgid "WPForms Preview"
1391
+ msgstr ""
1392
+
1393
+ #: includes/class-preview.php:258
1394
+ msgid "This is a preview of your form. This page not publically accessible."
1395
  msgstr ""
1396
 
1397
+ #: includes/class-preview.php:259
1398
+ msgid " Preview"
1399
+ msgstr ""
1400
+
1401
+ #: includes/class-process.php:71
1402
  msgid "Invalid form."
1403
  msgstr ""
1404
 
1405
+ #: includes/class-process.php:105
1406
  msgid "Incorrect reCAPTCHA, please try again."
1407
  msgstr ""
1408
 
1409
+ #: includes/class-process.php:112 includes/class-process.php:155
1410
  msgid "Form has not been submitted, please see the errors below."
1411
  msgstr ""
1412
 
1413
+ #: includes/class-process.php:119
1414
  msgid "WPForms honeypot field triggered."
1415
  msgstr ""
1416
 
1417
+ #: includes/class-process.php:303
1418
  msgid "New %s Entry"
1419
  msgstr ""
1420
 
1700
  #: includes/fields/class-date-time.php:289 includes/fields/class-email.php:128
1701
  #: includes/fields/class-file-upload.php:217
1702
  #: includes/fields/class-name.php:311 includes/fields/class-number.php:127
1703
+ #: includes/fields/class-payment-multiple.php:174
1704
  #: includes/fields/class-payment-single.php:186
1705
  #: includes/fields/class-url.php:126
1706
  msgid "This field is required"
1812
  msgid "No field type found"
1813
  msgstr ""
1814
 
 
 
 
 
1815
  #: includes/fields/class-checkbox.php:21
1816
  msgid "Checkboxes"
1817
  msgstr ""
1901
  msgid "Section Divider"
1902
  msgstr ""
1903
 
 
 
 
 
 
 
 
1904
  #: includes/fields/class-email.php:133
1905
  msgid "Please enter a valid email address."
1906
  msgstr ""
1909
  msgid "File Upload"
1910
  msgstr ""
1911
 
1912
+ #: includes/fields/class-file-upload.php:59
1913
+ msgid "Enter the extensions you would like to allow, comma separated."
1914
+ msgstr ""
1915
+
1916
  #: includes/fields/class-file-upload.php:60
1917
  msgid "Allowed File Extensions"
1918
  msgstr ""
2116
  "only."
2117
  msgstr ""
2118
 
2119
+ #: includes/fields/class-payment-credit-card.php:265
2120
  msgid "MM"
2121
  msgstr ""
2122
 
2123
+ #: includes/fields/class-payment-credit-card.php:284
2124
  msgid "YY"
2125
  msgstr ""
2126
 
2151
  msgid "Items"
2152
  msgstr ""
2153
 
2154
+ #: includes/fields/class-payment-multiple.php:180
2155
  msgid "Invalid payment option"
2156
  msgstr ""
2157
 
2391
  msgid "Subject"
2392
  msgstr ""
2393
 
2394
+ #: wpforms.php:324
2395
  msgid "Please deactivate WPForms Lite before activating WPForms"
2396
  msgstr ""
2397
 
2398
+ #. #-#-#-#-# wpforms.pot (WPForms 1.2) #-#-#-#-#
2399
  #. Plugin URI of the plugin/theme
2400
+ #. #-#-#-#-# wpforms.pot (WPForms 1.2) #-#-#-#-#
2401
  #. Author URI of the plugin/theme
2402
  msgid "https://wpforms.com"
2403
  msgstr ""
lite/lite.php CHANGED
@@ -145,7 +145,7 @@ function wpfl_fields( $fields ) {
145
  );
146
  $fields['payment']['fields'][] = array(
147
  'icon' => 'fa-file-o',
148
- 'name' => 'Divider',
149
  'type' => 'payment-single',
150
  'order' => '1',
151
  'class' => 'upgrade-modal',
@@ -328,10 +328,10 @@ function wpfl_addons_page() {
328
  <div class="wpforms-addon-action"><a href="<?php echo $upgrade; ?>" target="_blank">Upgrade Now</a></div>
329
  </div>
330
  <div class="wpforms-addon-item wpforms-addon-status-upgrade wpforms-second">
331
- <div class="wpforms-addon-image"><img src="https://wpforms.com/images/addon-icon-getresponse.png"></div>
332
  <div class="wpforms-addon-text">
333
- <h4>GetResponse Addon</h4>
334
- <p class="desc">WPForms GetResponse addon allows you to create GetResponse newsletter signup forms in WordPress, so you can grow your email list. </p>
335
  </div>
336
  <div class="wpforms-addon-action"><a href="<?php echo $upgrade; ?>" target="_blank">Upgrade Now</a></div>
337
  </div>
145
  );
146
  $fields['payment']['fields'][] = array(
147
  'icon' => 'fa-file-o',
148
+ 'name' => 'Single Item',
149
  'type' => 'payment-single',
150
  'order' => '1',
151
  'class' => 'upgrade-modal',
328
  <div class="wpforms-addon-action"><a href="<?php echo $upgrade; ?>" target="_blank">Upgrade Now</a></div>
329
  </div>
330
  <div class="wpforms-addon-item wpforms-addon-status-upgrade wpforms-second">
331
+ <div class="wpforms-addon-image"><img src="https://wpforms.com/images/addon-icon-user-registration.png"></div>
332
  <div class="wpforms-addon-text">
333
+ <h4>User Registration</h4>
334
+ <p class="desc">WPForms user registration addon allows you to create custom WordPress user registration forms for your website.</p>
335
  </div>
336
  <div class="wpforms-addon-action"><a href="<?php echo $upgrade; ?>" target="_blank">Upgrade Now</a></div>
337
  </div>
readme.txt CHANGED
@@ -12,7 +12,7 @@ The best WordPress contact form plugin. Drag & Drop online form builder that hel
12
 
13
  = WordPress Contact Form Plugin =
14
 
15
- We believe that you shouldn't have to hire a developer to create a WordPress form. That's why we built <a href="https://wpforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend" title="WPForms">WPForms</a>, a drag & drop WordPress form builder that's EASY and POWERFUL.
16
 
17
  WPForms allow you to create beautiful contact forms, subscription forms, payment forms, and other type of forms for your site in minutes, not hours!
18
 
@@ -159,6 +159,12 @@ Syed Balkhi
159
 
160
  == Changelog ==
161
 
 
 
 
 
 
 
162
  = 1.1.8.4 =
163
  * Changed: Form notification settings hide if set to Off
164
 
12
 
13
  = WordPress Contact Form Plugin =
14
 
15
+ We believe that you shouldn't have to hire a developer to create a WordPress contact form. That's why we built <a href="https://wpforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend" title="WPForms">WPForms</a>, a drag & drop WordPress form builder that's EASY and POWERFUL.
16
 
17
  WPForms allow you to create beautiful contact forms, subscription forms, payment forms, and other type of forms for your site in minutes, not hours!
18
 
159
 
160
  == Changelog ==
161
 
162
+ = 1.2.0 =
163
+ * Added: Form preview
164
+ * Added: Column classes for Checkbox and Multiple choice inputs
165
+ * Changed: Some fields did not have the correct (unique) CSS ID, this has been corrected, which means custom styling may need to be adjusted
166
+ * Changed: Removed nonce verification
167
+
168
  = 1.1.8.4 =
169
  * Changed: Form notification settings hide if set to Off
170
 
wpforms.php CHANGED
@@ -5,7 +5,7 @@
5
  * Description: Beginner friendly WordPress contact form plugin. Use our Drag & Drop form builder to create your WordPress forms.
6
  * Author: WPForms
7
  * Author URI: https://wpforms.com
8
- * Version: 1.1.8.4
9
  * Text Domain: wpforms
10
  * Domain Path: languages
11
  *
@@ -54,7 +54,7 @@ final class WPForms_Lite {
54
  * @since 1.0.0
55
  * @var sting
56
  */
57
- private $version = '1.1.8.4';
58
 
59
  /**
60
  * The form data handler instance.
@@ -96,6 +96,14 @@ final class WPForms_Lite {
96
  */
97
  public $logs;
98
 
 
 
 
 
 
 
 
 
99
  /**
100
  * Main WPForms Instance.
101
  *
@@ -168,6 +176,7 @@ final class WPForms_Lite {
168
  $this->process = new WPForms_Process;
169
  $this->smart_tags = new WPForms_Smart_Tags;
170
  $this->logs = new WPForms_Logging;
 
171
 
172
  // Hook now that all of the WPForms stuff is loaded.
173
  do_action( 'wpforms_loaded' );
5
  * Description: Beginner friendly WordPress contact form plugin. Use our Drag & Drop form builder to create your WordPress forms.
6
  * Author: WPForms
7
  * Author URI: https://wpforms.com
8
+ * Version: 1.2.0
9
  * Text Domain: wpforms
10
  * Domain Path: languages
11
  *
54
  * @since 1.0.0
55
  * @var sting
56
  */
57
+ private $version = '1.2.0';
58
 
59
  /**
60
  * The form data handler instance.
96
  */
97
  public $logs;
98
 
99
+ /**
100
+ * The Preview instance.
101
+ *
102
+ * @var object WPForms_Preview
103
+ * @since 1.1.9
104
+ */
105
+ public $preview;
106
+
107
  /**
108
  * Main WPForms Instance.
109
  *
176
  $this->process = new WPForms_Process;
177
  $this->smart_tags = new WPForms_Smart_Tags;
178
  $this->logs = new WPForms_Logging;
179
+ $this->preview = new WPForms_Preview;
180
 
181
  // Hook now that all of the WPForms stuff is loaded.
182
  do_action( 'wpforms_loaded' );