Version Description
- Added: Smart Tag for Dropdown/Multiple choice raw values, allowing for conditional email addres notifications (https://wpforms.com/docs/how-to-create-conditional-form-notifications-in-wpforms)
- Added: Three column CSS field classes (https://wpforms.com/docs/how-to-create-multi-column-form-layouts-in-wpforms/)
- Changed: Checkbox/Multiple Choice fields allow certain HTML to display in choice labels
Download this release
Release Info
Developer | jaredatch |
Plugin | Contact Form by WPForms – Drag & Drop Form Builder for WordPress |
Version | 1.1.7 |
Comparing to | |
See all releases |
Code changes from version 1.1.6.1 to 1.1.7
- assets/css/admin-entries.css +309 -20
- assets/css/wpforms-base.css +31 -7
- assets/css/wpforms-full.css +31 -8
- assets/css/wpforms-preview.css +158 -0
- assets/js/admin-entries-list.js +0 -13
- assets/js/wpforms-preview.js +17 -0
- includes/admin/ajax-actions.php +63 -1
- includes/admin/builder/class-builder.php +4 -1
- includes/admin/class-settings.php +1 -1
- includes/admin/class-upgrades.php +5 -22
- includes/admin/class-welcome.php +1 -5
- includes/admin/entries/class-entries-table.php +0 -351
- includes/admin/entries/class-entries.php +0 -409
- includes/admin/overview/class-overview-table.php +5 -0
- includes/class-db.php +350 -0
- includes/class-logging.php +2 -0
- includes/class-preview.php +165 -0
- includes/class-process.php +14 -0
- includes/class-smart-tags.php +17 -0
- includes/emails/class-emails.php +1 -1
- includes/emails/templates/footer-default.php +1 -1
- includes/fields/class-checkbox.php +1 -1
- includes/fields/class-radio.php +1 -1
- includes/functions.php +57 -9
- languages/wpforms.pot +350 -106
- lite/lite.php +8 -0
- readme.txt +8 -5
- wpforms.php +6 -5
assets/css/admin-entries.css
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
Entries Styles
|
3 |
========================================================================== */
|
4 |
|
5 |
-
#wpforms-entries .wpforms-clear {
|
6 |
content: " ";
|
7 |
display: table;
|
8 |
}
|
@@ -16,6 +16,86 @@
|
|
16 |
/* List / Table view
|
17 |
-------------------------------------------------------------- */
|
18 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
#wpforms-entries .wp-list-table .column-date {
|
20 |
width: 150px;
|
21 |
}
|
@@ -24,41 +104,250 @@
|
|
24 |
width: 100px;
|
25 |
}
|
26 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
|
28 |
/* Entry Details
|
29 |
-------------------------------------------------------------- */
|
30 |
|
31 |
-
#wpforms-entries {
|
|
|
|
|
32 |
|
|
|
|
|
|
|
33 |
}
|
34 |
|
35 |
-
|
36 |
-
|
|
|
|
|
|
|
|
|
37 |
}
|
38 |
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
margin: 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
}
|
46 |
|
47 |
-
#wpforms-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
padding: 12px;
|
49 |
-
|
50 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
}
|
52 |
|
53 |
-
#wpforms-
|
54 |
-
|
55 |
-
border-bottom: 1px solid #eee;
|
56 |
}
|
57 |
|
58 |
-
#wpforms-entries .
|
59 |
-
|
60 |
-
margin: 0 0 4px 0;
|
61 |
}
|
62 |
|
63 |
-
|
64 |
-
|
|
2 |
Entries Styles
|
3 |
========================================================================== */
|
4 |
|
5 |
+
#wpforms-entries .wpforms-clear:before {
|
6 |
content: " ";
|
7 |
display: table;
|
8 |
}
|
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 |
}
|
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/wpforms-base.css
CHANGED
@@ -125,24 +125,48 @@
|
|
125 |
/* Columns
|
126 |
----------------------------------------------------------------------------- */
|
127 |
|
128 |
-
|
|
|
129 |
float: left;
|
130 |
-
width:
|
131 |
-
|
132 |
}
|
133 |
|
134 |
-
.wpforms-container .wpforms-
|
135 |
-
|
|
|
136 |
width: 47%;
|
|
|
|
|
|
|
|
|
|
|
|
|
137 |
clear: both;
|
138 |
}
|
139 |
|
140 |
-
.wpforms-container .wpforms-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
141 |
float: right;
|
142 |
-
width:
|
143 |
clear: none;
|
144 |
}
|
145 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
146 |
.wpforms-container .wpforms-two-fifths {
|
147 |
float: left;
|
148 |
width: 39%;
|
125 |
/* Columns
|
126 |
----------------------------------------------------------------------------- */
|
127 |
|
128 |
+
/* User column classes */
|
129 |
+
.wpforms-container .wpforms-first-half {
|
130 |
float: left;
|
131 |
+
width: 47%;
|
132 |
+
clear: both;
|
133 |
}
|
134 |
|
135 |
+
.wpforms-container .wpforms-second-half,
|
136 |
+
.wpforms-container .wpforms-last-half {
|
137 |
+
float: right;
|
138 |
width: 47%;
|
139 |
+
clear: none;
|
140 |
+
}
|
141 |
+
|
142 |
+
.wpforms-container .wpforms-first-third {
|
143 |
+
float: left;
|
144 |
+
width: 29.333333%;
|
145 |
clear: both;
|
146 |
}
|
147 |
|
148 |
+
.wpforms-container .wpforms-middle-third,
|
149 |
+
.wpforms-container .wpforms-second-third {
|
150 |
+
float: left;
|
151 |
+
width: 29.333333%;
|
152 |
+
margin-left: 6%;
|
153 |
+
clear: none;
|
154 |
+
}
|
155 |
+
|
156 |
+
.wpforms-container .wpforms-last-third,
|
157 |
+
.wpforms-container .wpforms-third-third {
|
158 |
float: right;
|
159 |
+
width: 29.333333%;
|
160 |
clear: none;
|
161 |
}
|
162 |
|
163 |
+
/* Private */
|
164 |
+
.wpforms-container .wpforms-one-half {
|
165 |
+
float: left;
|
166 |
+
width: 49%;
|
167 |
+
margin-right: 2%;
|
168 |
+
}
|
169 |
+
|
170 |
.wpforms-container .wpforms-two-fifths {
|
171 |
float: left;
|
172 |
width: 39%;
|
assets/css/wpforms-full.css
CHANGED
@@ -203,24 +203,48 @@ div.wpforms-container-full .wpforms-form .wpforms-field-row:after {
|
|
203 |
/* Columns
|
204 |
----------------------------------------------------------------------------- */
|
205 |
|
206 |
-
|
207 |
-
float: left;
|
208 |
-
width: 49%;
|
209 |
-
margin-right: 2%;
|
210 |
-
}
|
211 |
-
|
212 |
div.wpforms-container-full .wpforms-form .wpforms-field.wpforms-first-half {
|
213 |
float: left;
|
214 |
width: 47%;
|
215 |
clear: both;
|
216 |
}
|
217 |
|
218 |
-
div.wpforms-container-full .wpforms-form .wpforms-field.wpforms-second-half
|
|
|
219 |
float: right;
|
220 |
width: 47%;
|
221 |
clear: none;
|
222 |
}
|
223 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
224 |
div.wpforms-container-full .wpforms-form .wpforms-two-fifths {
|
225 |
float: left;
|
226 |
width: 39%;
|
@@ -473,7 +497,6 @@ div.wpforms-container-full .wpforms-form .wpforms-field-hidden {
|
|
473 |
}
|
474 |
|
475 |
/* ReCAPTCHA */
|
476 |
-
|
477 |
div.wpforms-container-full .wpforms-form .wpforms-recaptcha-container iframe {
|
478 |
width: inherit;
|
479 |
}
|
203 |
/* Columns
|
204 |
----------------------------------------------------------------------------- */
|
205 |
|
206 |
+
/* User column classes */
|
|
|
|
|
|
|
|
|
|
|
207 |
div.wpforms-container-full .wpforms-form .wpforms-field.wpforms-first-half {
|
208 |
float: left;
|
209 |
width: 47%;
|
210 |
clear: both;
|
211 |
}
|
212 |
|
213 |
+
div.wpforms-container-full .wpforms-form .wpforms-field.wpforms-second-half,
|
214 |
+
div.wpforms-container-full .wpforms-form .wpforms-field.wpforms-last-half {
|
215 |
float: right;
|
216 |
width: 47%;
|
217 |
clear: none;
|
218 |
}
|
219 |
|
220 |
+
div.wpforms-container-full .wpforms-form .wpforms-field.wpforms-first-third {
|
221 |
+
float: left;
|
222 |
+
width: 29.333333%;
|
223 |
+
clear: both;
|
224 |
+
}
|
225 |
+
|
226 |
+
div.wpforms-container-full .wpforms-form .wpforms-field.wpforms-middle-third,
|
227 |
+
div.wpforms-container-full .wpforms-form .wpforms-field.wpforms-second-third {
|
228 |
+
float: left;
|
229 |
+
width: 29.333333%;
|
230 |
+
margin-left: 6%;
|
231 |
+
clear: none;
|
232 |
+
}
|
233 |
+
|
234 |
+
div.wpforms-container-full .wpforms-form .wpforms-field.wpforms-last-third,
|
235 |
+
div.wpforms-container-full .wpforms-form .wpforms-field.wpforms-third-third {
|
236 |
+
float: right;
|
237 |
+
width: 29.333333%;
|
238 |
+
clear: none;
|
239 |
+
}
|
240 |
+
|
241 |
+
/* Private */
|
242 |
+
div.wpforms-container-full .wpforms-form .wpforms-one-half {
|
243 |
+
float: left;
|
244 |
+
width: 49%;
|
245 |
+
margin-right: 2%;
|
246 |
+
}
|
247 |
+
|
248 |
div.wpforms-container-full .wpforms-form .wpforms-two-fifths {
|
249 |
float: left;
|
250 |
width: 39%;
|
497 |
}
|
498 |
|
499 |
/* ReCAPTCHA */
|
|
|
500 |
div.wpforms-container-full .wpforms-form .wpforms-recaptcha-container iframe {
|
501 |
width: inherit;
|
502 |
}
|
assets/css/wpforms-preview.css
ADDED
@@ -0,0 +1,158 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* ==========================================================================
|
2 |
+
WPForms Preview
|
3 |
+
========================================================================== */
|
4 |
+
|
5 |
+
/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */
|
6 |
+
progress,sub,sup{vertical-align:baseline}button,hr,input{overflow:visible}[type=checkbox],[type=radio],legend{box-sizing:border-box;padding:0}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}button,input,select,textarea{font:inherit;margin:0}optgroup{font-weight:700}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:ButtonText dotted 1px}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{color:inherit;display:table;max-width:100%;white-space:normal}textarea{overflow:auto}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-input-placeholder{color:inherit;opacity:.54}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}
|
7 |
+
|
8 |
+
html,
|
9 |
+
input[type="search"]{
|
10 |
+
-webkit-box-sizing: border-box;
|
11 |
+
-moz-box-sizing: border-box;
|
12 |
+
box-sizing: border-box;
|
13 |
+
}
|
14 |
+
|
15 |
+
*,
|
16 |
+
*:before,
|
17 |
+
*:after {
|
18 |
+
box-sizing: inherit;
|
19 |
+
}
|
20 |
+
|
21 |
+
body {
|
22 |
+
background-color: #f1f1f1;
|
23 |
+
color: #333;
|
24 |
+
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
25 |
+
font-size: 14px;
|
26 |
+
font-weight: 400;
|
27 |
+
line-height: 1.625;
|
28 |
+
}
|
29 |
+
|
30 |
+
.wpforms-preview {
|
31 |
+
border-top: 1px solid #eee;
|
32 |
+
background-color: #fff;
|
33 |
+
box-shadow: 0 1px 2px #ccc;
|
34 |
+
margin: 30px auto 20px auto;
|
35 |
+
overflow: auto;
|
36 |
+
padding: 30px;
|
37 |
+
max-width: 780px;
|
38 |
+
}
|
39 |
+
|
40 |
+
.error {
|
41 |
+
color: #a94442;
|
42 |
+
background-color: #f2dede;
|
43 |
+
padding: 15px;
|
44 |
+
border: 1px solid #ebcccc;
|
45 |
+
}
|
46 |
+
|
47 |
+
.site {
|
48 |
+
text-align: center;
|
49 |
+
font-size: 12px;
|
50 |
+
}
|
51 |
+
|
52 |
+
.site a {
|
53 |
+
text-decoration: none;
|
54 |
+
}
|
55 |
+
|
56 |
+
h1,
|
57 |
+
h2,
|
58 |
+
h3,
|
59 |
+
h4,
|
60 |
+
h5,
|
61 |
+
h6 {
|
62 |
+
color: #333;
|
63 |
+
font-weight: 700;
|
64 |
+
line-height: 1.2;
|
65 |
+
margin: 0;
|
66 |
+
margin-bottom: 16px;
|
67 |
+
padding: 0;
|
68 |
+
}
|
69 |
+
|
70 |
+
a {
|
71 |
+
color: #0073aa;
|
72 |
+
}
|
73 |
+
|
74 |
+
a:hover, a:active, a:focus {
|
75 |
+
color: #0096dd;
|
76 |
+
}
|
77 |
+
|
78 |
+
/* Print Preview
|
79 |
+
--------------------------------------------- */
|
80 |
+
|
81 |
+
#print h1 {
|
82 |
+
font-size: 24px;
|
83 |
+
font-weight: 600;
|
84 |
+
margin: 0 0 26px 0;
|
85 |
+
}
|
86 |
+
|
87 |
+
#print h1 span {
|
88 |
+
font-weight: 400;
|
89 |
+
}
|
90 |
+
|
91 |
+
#print .buttons {
|
92 |
+
float: right;
|
93 |
+
}
|
94 |
+
|
95 |
+
#print .buttons .button {
|
96 |
+
font-weight: normal;
|
97 |
+
width: 70px;
|
98 |
+
text-align: center;
|
99 |
+
font-size: 14px;
|
100 |
+
margin-left: 10px;
|
101 |
+
}
|
102 |
+
|
103 |
+
#print .fields {
|
104 |
+
border: 1px solid #eee;
|
105 |
+
}
|
106 |
+
|
107 |
+
#print .wpforms-entry-field-name {
|
108 |
+
font-weight: 600;
|
109 |
+
background: #ebf3fb;
|
110 |
+
padding: 8px 12px;
|
111 |
+
margin: 0;
|
112 |
+
}
|
113 |
+
|
114 |
+
#print .wpforms-entry-field-value {
|
115 |
+
background: #fff;
|
116 |
+
padding: 8px 12px;
|
117 |
+
margin: 0;
|
118 |
+
}
|
119 |
+
|
120 |
+
@media print {
|
121 |
+
|
122 |
+
.wpforms-preview {
|
123 |
+
border: none;
|
124 |
+
box-shadow: none;
|
125 |
+
padding: 30px 0 15px;
|
126 |
+
margin: 0;
|
127 |
+
width: 100%;
|
128 |
+
max-width: 100%;
|
129 |
+
}
|
130 |
+
|
131 |
+
#print h1 {
|
132 |
+
text-align: center;
|
133 |
+
}
|
134 |
+
|
135 |
+
#print .buttons {
|
136 |
+
display: none;
|
137 |
+
}
|
138 |
+
|
139 |
+
#print .fields {
|
140 |
+
border: 1px solid #ccc;
|
141 |
+
}
|
142 |
+
|
143 |
+
#print .wpforms-entry-field {
|
144 |
+
border-top: 1px solid #ccc;
|
145 |
+
}
|
146 |
+
|
147 |
+
#print .wpforms-entry-field:first-of-type {
|
148 |
+
border: none;
|
149 |
+
}
|
150 |
+
|
151 |
+
#print .wpforms-entry-field-name {
|
152 |
+
padding: 8px 12px 0 8px;
|
153 |
+
}
|
154 |
+
|
155 |
+
#print .wpforms-entry-field-value {
|
156 |
+
padding-top: 6px;
|
157 |
+
}
|
158 |
+
}
|
assets/js/admin-entries-list.js
DELETED
@@ -1,13 +0,0 @@
|
|
1 |
-
;(function($){
|
2 |
-
$(function(){
|
3 |
-
|
4 |
-
// Confirm entry deletion
|
5 |
-
$(document).on('click', '#wpforms-entries .wp-list-table .delete', function(e) {
|
6 |
-
if ( confirm( wpforms_entries.delete_confirm ) ) {
|
7 |
-
return true;
|
8 |
-
}
|
9 |
-
return false;
|
10 |
-
});
|
11 |
-
|
12 |
-
});
|
13 |
-
}(jQuery));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/js/wpforms-preview.js
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
;(function($){
|
2 |
+
$(function(){
|
3 |
+
|
4 |
+
// Print page
|
5 |
+
$(document).on('click', '.print', function(e) {
|
6 |
+
e.preventDefault();
|
7 |
+
window.print();
|
8 |
+
});
|
9 |
+
|
10 |
+
// Close page
|
11 |
+
$(document).on('click', '.close-window', function(e) {
|
12 |
+
e.preventDefault();
|
13 |
+
window.close();
|
14 |
+
});
|
15 |
+
|
16 |
+
});
|
17 |
+
}(jQuery));
|
includes/admin/ajax-actions.php
CHANGED
@@ -211,4 +211,66 @@ function wpforms_install_addon() {
|
|
211 |
|
212 |
wp_send_json_error( __( 'Could not install addon. Please download from wpforms.com and install manually.', 'wpforms' ) );
|
213 |
}
|
214 |
-
add_action( 'wp_ajax_wpforms_install_addon', 'wpforms_install_addon' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
211 |
|
212 |
wp_send_json_error( __( 'Could not install addon. Please download from wpforms.com and install manually.', 'wpforms' ) );
|
213 |
}
|
214 |
+
add_action( 'wp_ajax_wpforms_install_addon', 'wpforms_install_addon' );
|
215 |
+
|
216 |
+
/**
|
217 |
+
* Toggle entry stars from Entries table.
|
218 |
+
*
|
219 |
+
* @since 1.1.6
|
220 |
+
*/
|
221 |
+
function wpforms_entry_list_star() {
|
222 |
+
|
223 |
+
// Run a security check
|
224 |
+
check_ajax_referer( 'wpforms-entries-list', 'nonce' );
|
225 |
+
|
226 |
+
// Check for permissions
|
227 |
+
if ( !current_user_can( apply_filters( 'wpforms_manage_cap', 'manage_options' ) ) ) {
|
228 |
+
wp_send_json_error();
|
229 |
+
}
|
230 |
+
|
231 |
+
if ( empty( $_POST['entry_id'] ) || empty( $_POST['task'] ) ) {
|
232 |
+
wp_send_json_error();
|
233 |
+
}
|
234 |
+
|
235 |
+
$task = $_POST['task'];
|
236 |
+
$entry_id = absint( $_POST['entry_id'] );
|
237 |
+
|
238 |
+
if ( 'star' == $task ) {
|
239 |
+
wpforms()->entry->update( $entry_id, array( 'starred' => '1' ) );
|
240 |
+
} elseif ( 'unstar' == $task ) {
|
241 |
+
wpforms()->entry->update( $entry_id, array( 'starred' => '0' ) );
|
242 |
+
}
|
243 |
+
wp_send_json_success();
|
244 |
+
}
|
245 |
+
add_action( 'wp_ajax_wpforms_entry_list_star', 'wpforms_entry_list_star' );
|
246 |
+
|
247 |
+
/**
|
248 |
+
* Toggle entry read state from Entries table.
|
249 |
+
*
|
250 |
+
* @since 1.1.6
|
251 |
+
*/
|
252 |
+
function wpforms_entry_list_read() {
|
253 |
+
|
254 |
+
// Run a security check
|
255 |
+
check_ajax_referer( 'wpforms-entries-list', 'nonce' );
|
256 |
+
|
257 |
+
// Check for permissions
|
258 |
+
if ( !current_user_can( apply_filters( 'wpforms_manage_cap', 'manage_options' ) ) ) {
|
259 |
+
wp_send_json_error();
|
260 |
+
}
|
261 |
+
|
262 |
+
if ( empty( $_POST['entry_id'] ) || empty( $_POST['task'] ) ) {
|
263 |
+
wp_send_json_error();
|
264 |
+
}
|
265 |
+
|
266 |
+
$task = $_POST['task'];
|
267 |
+
$entry_id = absint( $_POST['entry_id'] );
|
268 |
+
|
269 |
+
if ( 'read' == $task ) {
|
270 |
+
wpforms()->entry->update( $entry_id, array( 'viewed' => '1' ) );
|
271 |
+
} elseif ( 'unread' == $task ) {
|
272 |
+
wpforms()->entry->update( $entry_id, array( 'viewed' => '0' ) );
|
273 |
+
}
|
274 |
+
wp_send_json_success();
|
275 |
+
}
|
276 |
+
add_action( 'wp_ajax_wpforms_entry_list_read', 'wpforms_entry_list_read' );
|
includes/admin/builder/class-builder.php
CHANGED
@@ -66,6 +66,9 @@ class WPForms_Builder {
|
|
66 |
// Only load if we are actually on the builder
|
67 |
if ( $page == 'wpforms-builder' ) {
|
68 |
|
|
|
|
|
|
|
69 |
// Load form if found
|
70 |
$form_id = isset( $_GET['form_id'] ) ? absint( $_GET['form_id'] ) : false;
|
71 |
|
@@ -97,7 +100,7 @@ class WPForms_Builder {
|
|
97 |
}
|
98 |
|
99 |
/**
|
100 |
-
* Define TinyMCE buttons to use with
|
101 |
*
|
102 |
* @since 1.0.3
|
103 |
* @param array $buttons
|
66 |
// Only load if we are actually on the builder
|
67 |
if ( $page == 'wpforms-builder' ) {
|
68 |
|
69 |
+
// Builder specific functions
|
70 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/builder/functions.php';
|
71 |
+
|
72 |
// Load form if found
|
73 |
$form_id = isset( $_GET['form_id'] ) ? absint( $_GET['form_id'] ) : false;
|
74 |
|
100 |
}
|
101 |
|
102 |
/**
|
103 |
+
* Define TinyMCE buttons to use with our fancy editor instances.
|
104 |
*
|
105 |
* @since 1.0.3
|
106 |
* @param array $buttons
|
includes/admin/class-settings.php
CHANGED
@@ -180,7 +180,7 @@ class WPForms_Settings {
|
|
180 |
|
181 |
printf( '<div class="updated below-h2"><p>%s</p></div>', __( 'General settings updated.', 'wpforms' ) );
|
182 |
|
183 |
-
}
|
184 |
}
|
185 |
}
|
186 |
?>
|
180 |
|
181 |
printf( '<div class="updated below-h2"><p>%s</p></div>', __( 'General settings updated.', 'wpforms' ) );
|
182 |
|
183 |
+
}
|
184 |
}
|
185 |
}
|
186 |
?>
|
includes/admin/class-upgrades.php
CHANGED
@@ -11,7 +11,7 @@
|
|
11 |
class WPForms_Upgrades {
|
12 |
|
13 |
/**
|
14 |
-
*
|
15 |
*
|
16 |
* @since 1.0.0
|
17 |
* @var boolean
|
@@ -38,31 +38,14 @@ class WPForms_Upgrades {
|
|
38 |
// Retreive last known version
|
39 |
$version = get_option( 'wpforms_version' );
|
40 |
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
$this->v110_upgrade();
|
45 |
-
}
|
46 |
-
*/
|
47 |
-
|
48 |
// If upgrade has occured, update version options in database
|
49 |
-
if ( $this->
|
50 |
update_option( 'wpforms_version_upgraded_from', $version );
|
51 |
update_option( 'wpforms_version', WPFORMS_VERSION );
|
52 |
}
|
53 |
}
|
54 |
-
|
55 |
-
/**
|
56 |
-
* Currently a placeholder function to serve as an example.
|
57 |
-
*
|
58 |
-
* @since 1.0.0
|
59 |
-
*/
|
60 |
-
private function v110_upgrade() {
|
61 |
-
|
62 |
-
// Do upgrade stuff
|
63 |
-
|
64 |
-
$this->upgraded = true;
|
65 |
-
}
|
66 |
-
|
67 |
}
|
68 |
new WPForms_Upgrades;
|
11 |
class WPForms_Upgrades {
|
12 |
|
13 |
/**
|
14 |
+
* Have we upgraded?
|
15 |
*
|
16 |
* @since 1.0.0
|
17 |
* @var boolean
|
38 |
// Retreive last known version
|
39 |
$version = get_option( 'wpforms_version' );
|
40 |
|
41 |
+
if ( ! $version )
|
42 |
+
return;
|
43 |
+
|
|
|
|
|
|
|
|
|
44 |
// If upgrade has occured, update version options in database
|
45 |
+
if ( $this->upgraded ) {
|
46 |
update_option( 'wpforms_version_upgraded_from', $version );
|
47 |
update_option( 'wpforms_version', WPFORMS_VERSION );
|
48 |
}
|
49 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
}
|
51 |
new WPForms_Upgrades;
|
includes/admin/class-welcome.php
CHANGED
@@ -186,16 +186,12 @@ class WPForms_Welcome {
|
|
186 |
}
|
187 |
|
188 |
// Check if this is an update or first install
|
189 |
-
$upgrade = get_option( '
|
190 |
|
191 |
if ( ! $upgrade ) {
|
192 |
// Initial install
|
193 |
wp_safe_redirect( admin_url( 'index.php?page=wpforms-getting-started' ) );
|
194 |
exit;
|
195 |
-
} else {
|
196 |
-
// Update
|
197 |
-
wp_safe_redirect( admin_url( 'index.php?page=wpforms-whats-new' ) );
|
198 |
-
exit;
|
199 |
}
|
200 |
}
|
201 |
|
186 |
}
|
187 |
|
188 |
// Check if this is an update or first install
|
189 |
+
$upgrade = get_option( 'wpforms_version_upgraded_from' );
|
190 |
|
191 |
if ( ! $upgrade ) {
|
192 |
// Initial install
|
193 |
wp_safe_redirect( admin_url( 'index.php?page=wpforms-getting-started' ) );
|
194 |
exit;
|
|
|
|
|
|
|
|
|
195 |
}
|
196 |
}
|
197 |
|
includes/admin/entries/class-entries-table.php
DELETED
@@ -1,351 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Generates the table on the entries overview page.
|
4 |
-
*
|
5 |
-
* @package WPForms
|
6 |
-
* @author WPForms
|
7 |
-
* @since 1.0.0
|
8 |
-
* @license GPL-2.0+
|
9 |
-
* @copyright Copyright (c) 2016, WPForms LLC
|
10 |
-
*/
|
11 |
-
class WPForms_Entries_Table extends WP_List_Table {
|
12 |
-
|
13 |
-
/**
|
14 |
-
* Number of entries to show per page.
|
15 |
-
*
|
16 |
-
* @since 1.0.0
|
17 |
-
*/
|
18 |
-
public $per_page;
|
19 |
-
|
20 |
-
/**
|
21 |
-
* Form object.
|
22 |
-
*
|
23 |
-
* @since 1.0.0
|
24 |
-
*/
|
25 |
-
public $form;
|
26 |
-
|
27 |
-
/**
|
28 |
-
* Form data as an array
|
29 |
-
*
|
30 |
-
* @since 1.0.0
|
31 |
-
*/
|
32 |
-
public $form_data;
|
33 |
-
|
34 |
-
/**
|
35 |
-
* Form id.
|
36 |
-
*
|
37 |
-
* @since 1.0.0
|
38 |
-
*/
|
39 |
-
public $form_id;
|
40 |
-
|
41 |
-
/**
|
42 |
-
* Number of different entry types
|
43 |
-
*
|
44 |
-
* @since 1.0.0
|
45 |
-
*/
|
46 |
-
public $counts;
|
47 |
-
|
48 |
-
/**
|
49 |
-
* Primary class constructor.
|
50 |
-
*
|
51 |
-
* @since 1.0.0
|
52 |
-
*/
|
53 |
-
public function __construct() {
|
54 |
-
|
55 |
-
// Bring globals into scope for parent.
|
56 |
-
global $status, $page;
|
57 |
-
|
58 |
-
// Utilize the parent constructor to build the main class properties.
|
59 |
-
parent::__construct(
|
60 |
-
array(
|
61 |
-
'singular' => 'entry',
|
62 |
-
'plural' => 'entries',
|
63 |
-
'ajax' => false,
|
64 |
-
)
|
65 |
-
);
|
66 |
-
|
67 |
-
// Retrieve current form ID
|
68 |
-
$this->form_id = isset( $_GET['form_id'] ) ? absint( $_GET['form_id'] ) : '';
|
69 |
-
|
70 |
-
// If there is no form ID, default to first form
|
71 |
-
if ( empty( $this->form_id ) ) {
|
72 |
-
$forms = wpforms()->form->get( '', array( 'orderby' => 'ID', 'order' => 'ASC' ) );
|
73 |
-
$this->form_id = $forms[0]->ID;
|
74 |
-
}
|
75 |
-
|
76 |
-
// Retrieve current form
|
77 |
-
$this->form = wpforms()->form->get( $this->form_id );
|
78 |
-
|
79 |
-
// Set form data
|
80 |
-
$this->form_data = wpforms_decode( $this->form->post_content );
|
81 |
-
|
82 |
-
// Retrieve various entry types
|
83 |
-
$this->get_counts();
|
84 |
-
|
85 |
-
// Default number of forms to show per page
|
86 |
-
$this->per_page = apply_filters( 'wpforms_entries_per_page', 30 );
|
87 |
-
}
|
88 |
-
|
89 |
-
/**
|
90 |
-
* Get the entry counts for varios types of entries.
|
91 |
-
*
|
92 |
-
* @since 1.0.0
|
93 |
-
*/
|
94 |
-
public function get_counts() {
|
95 |
-
|
96 |
-
$this->counts = array();
|
97 |
-
$this->counts['total'] = wpforms()->entry->get_entries( array( 'form_id' => $this->form_id ), true );
|
98 |
-
}
|
99 |
-
|
100 |
-
/**
|
101 |
-
* Retrieve the table columns
|
102 |
-
*
|
103 |
-
* @since 1.0.0
|
104 |
-
* @return array $columns Array of all the list table columns
|
105 |
-
*/
|
106 |
-
public function get_columns() {
|
107 |
-
|
108 |
-
$columns = array();
|
109 |
-
$columns['cb'] = '<input type="checkbox" />';
|
110 |
-
$columns = $this->get_columns_form_fields( $columns );
|
111 |
-
$columns['date'] = __( 'Date', 'wpforms' );
|
112 |
-
$columns['actions'] = __( 'Actions', 'wpforms' );
|
113 |
-
|
114 |
-
return apply_filters( 'wpforms_entries_table_columns', $columns );
|
115 |
-
}
|
116 |
-
|
117 |
-
/**
|
118 |
-
* Logic to determine which fields are displayed in the table columns.
|
119 |
-
*
|
120 |
-
* @since 1.0.0
|
121 |
-
* @param array $columns
|
122 |
-
* @return array
|
123 |
-
*/
|
124 |
-
public function get_columns_form_fields( $columns = array() ) {
|
125 |
-
|
126 |
-
$field_columns = wpforms()->form->get_meta( $this->form_id, 'field_columns' );
|
127 |
-
|
128 |
-
if ( ! $field_columns && !empty( $this->form_data['fields'] ) ) {
|
129 |
-
$x = 0;
|
130 |
-
foreach ( $this->form_data['fields'] as $id => $field ) {
|
131 |
-
$disallow = apply_filters( 'wpforms_entries_table_fields_disallow', array( 'divider', 'html' ) );
|
132 |
-
if ( !in_array( $field['type'], $disallow ) && $x < 3 ) {
|
133 |
-
$name = !empty( $field['label'] ) ? wp_strip_all_tags( $field['label'] ) : __( 'Field', 'wpforms' );
|
134 |
-
$columns['wpforms_field_' . $id] = $name;
|
135 |
-
$x++;
|
136 |
-
}
|
137 |
-
}
|
138 |
-
}
|
139 |
-
|
140 |
-
return $columns;
|
141 |
-
}
|
142 |
-
|
143 |
-
/**
|
144 |
-
* Render the checkbox column.
|
145 |
-
*
|
146 |
-
* @since 1.0.0
|
147 |
-
* @param array
|
148 |
-
* @return string
|
149 |
-
*/
|
150 |
-
public function column_cb( $entry ) {
|
151 |
-
|
152 |
-
return '<input type="checkbox" name="entry_id[]" value="' . absint( $entry->entry_id ) . '" />';
|
153 |
-
}
|
154 |
-
|
155 |
-
/**
|
156 |
-
* Show specific form fields.
|
157 |
-
*
|
158 |
-
* @since 1.0.0
|
159 |
-
* @param object $entry
|
160 |
-
* @param string $column_name
|
161 |
-
* @return string
|
162 |
-
*/
|
163 |
-
public function column_form_field( $entry, $column_name ) {
|
164 |
-
|
165 |
-
$field_id = str_replace( 'wpforms_field_', '', $column_name );
|
166 |
-
$entry_fields = wpforms_decode( $entry->fields );
|
167 |
-
|
168 |
-
if ( !empty( $entry_fields[$field_id] ) && !empty( $entry_fields[$field_id]['value'] ) ) {
|
169 |
-
|
170 |
-
$value = $entry_fields[$field_id]['value'];
|
171 |
-
|
172 |
-
if ( $entry_fields[$field_id]['type'] == 'textarea' ) {
|
173 |
-
$value = ( strlen( $value ) > 75 ) ? substr( $value , 0, 75 ). '…' : $value;
|
174 |
-
}
|
175 |
-
|
176 |
-
return nl2br( wp_strip_all_tags( $value ) );
|
177 |
-
} else {
|
178 |
-
return '-';
|
179 |
-
}
|
180 |
-
}
|
181 |
-
|
182 |
-
/**
|
183 |
-
* Renders the columns.
|
184 |
-
*
|
185 |
-
* @since 1.0.0
|
186 |
-
* @param object $entry
|
187 |
-
* @param string $column_name
|
188 |
-
* @return string
|
189 |
-
*/
|
190 |
-
public function column_default( $entry, $column_name ) {
|
191 |
-
|
192 |
-
switch( $column_name ) {
|
193 |
-
|
194 |
-
case 'id':
|
195 |
-
$value = absint( $entry->entry_id );
|
196 |
-
break;
|
197 |
-
|
198 |
-
case 'date':
|
199 |
-
$value = date_i18n( get_option( 'date_format' ), strtotime( $entry->date ) );
|
200 |
-
break;
|
201 |
-
|
202 |
-
default:
|
203 |
-
if ( false !== strpos( $column_name, 'wpforms_field_' ) ) {
|
204 |
-
$value = $this->column_form_field( $entry, $column_name );
|
205 |
-
} else {
|
206 |
-
$value = '';
|
207 |
-
}
|
208 |
-
}
|
209 |
-
|
210 |
-
return apply_filters( 'wpforms_entry_table_column_value', $value, $entry, $column_name );
|
211 |
-
}
|
212 |
-
|
213 |
-
/**
|
214 |
-
* Render the actions column.
|
215 |
-
*
|
216 |
-
* @since 1.0.0
|
217 |
-
* @param array $entry
|
218 |
-
* @return string
|
219 |
-
*/
|
220 |
-
public function column_actions( $entry ) {
|
221 |
-
|
222 |
-
$actions = array();
|
223 |
-
|
224 |
-
// View
|
225 |
-
$actions[] = sprintf( '<a href="%s" title="%s" class="view">%s</a>',
|
226 |
-
add_query_arg( array( 'view' => 'details', 'entry_id' => $entry->entry_id ), admin_url( 'admin.php?page=wpforms-entries' ) ),
|
227 |
-
__( 'View Form Entry', 'wpforms' ),
|
228 |
-
__( 'View', 'wpforms' )
|
229 |
-
);
|
230 |
-
|
231 |
-
// Delete
|
232 |
-
$actions[] = sprintf( '<a href="%s" title="%s" class="delete">%s</a>',
|
233 |
-
wp_nonce_url( add_query_arg( array( 'view' => 'list', 'action' => 'delete', 'form_id' => $this->form_id, 'entry_id' => $entry->entry_id ) ), 'wpforms_delete_entry_nonce' ),
|
234 |
-
__( 'Delete Form Entry', 'wpforms' ),
|
235 |
-
__( 'Delete', 'wpforms' )
|
236 |
-
);
|
237 |
-
|
238 |
-
return implode( ' | ', apply_filters( 'wpforms_entry_table_actions', $actions, $entry ) );
|
239 |
-
}
|
240 |
-
|
241 |
-
/**
|
242 |
-
* Define bulk actions available for our table listing
|
243 |
-
*
|
244 |
-
* @since 1.0.0
|
245 |
-
* @return array
|
246 |
-
*/
|
247 |
-
public function get_bulk_actions() {
|
248 |
-
// @todo
|
249 |
-
$actions = array(
|
250 |
-
//'viewed' => __( 'Mark as Viewed', 'wpforms' ),
|
251 |
-
//'star' => __( 'Star', 'wpforms' ),
|
252 |
-
'delete' => __( 'Delete', 'wpforms' ),
|
253 |
-
|
254 |
-
);
|
255 |
-
return $actions;
|
256 |
-
}
|
257 |
-
|
258 |
-
/**
|
259 |
-
* Process the bulk actions
|
260 |
-
*
|
261 |
-
* @since 1.0.0
|
262 |
-
*/
|
263 |
-
public function process_bulk_actions() {
|
264 |
-
|
265 |
-
$ids = isset( $_GET['entry_id'] ) ? $_GET['entry_id'] : array();
|
266 |
-
|
267 |
-
if ( ! is_array( $ids ) ) {
|
268 |
-
$ids = array( $ids );
|
269 |
-
}
|
270 |
-
|
271 |
-
$ids = array_map( 'absint', $ids );
|
272 |
-
$action = ! empty( $_REQUEST['action'] ) ? $_REQUEST['action'] : false;
|
273 |
-
|
274 |
-
if ( empty( $ids ) || empty( $action ) ) {
|
275 |
-
return;
|
276 |
-
}
|
277 |
-
|
278 |
-
// Delete one or multiple entries - both delete links and bulk actions
|
279 |
-
if ( 'delete' === $this->current_action() ) {
|
280 |
-
if ( wp_verify_nonce( $_GET['_wpnonce'], 'bulk-entries' ) || wp_verify_nonce( $_GET['_wpnonce'], 'wpforms_delete_entry_nonce') ) {
|
281 |
-
foreach ( $ids as $id ) {
|
282 |
-
wpforms()->entry->delete( $id );
|
283 |
-
}
|
284 |
-
printf( '<div class="updated"><p>%s</p></div>', _n( 'Entry successfully deleted.', 'Entries successfully deleted', count( $ids ), 'wpforms' ) );
|
285 |
-
} else {
|
286 |
-
printf( '<div class="error"><p>%s</p></div>', __( 'Security check failed', 'wpforms' ) );
|
287 |
-
}
|
288 |
-
}
|
289 |
-
}
|
290 |
-
|
291 |
-
/**
|
292 |
-
* Message to be displayed when there are no entries.
|
293 |
-
*
|
294 |
-
* @since 1.0.0
|
295 |
-
*/
|
296 |
-
public function no_items() {
|
297 |
-
|
298 |
-
_e( 'Whoops, it appears you do not have any form entries yet.', 'wpforms' );
|
299 |
-
}
|
300 |
-
|
301 |
-
/**
|
302 |
-
* Fetch and setup the final data for the table
|
303 |
-
*
|
304 |
-
* @since 1.0.0
|
305 |
-
*/
|
306 |
-
public function prepare_items() {
|
307 |
-
|
308 |
-
// Process bulk actions if found
|
309 |
-
$this->process_bulk_actions();
|
310 |
-
|
311 |
-
// Setup the columns
|
312 |
-
$columns = $this->get_columns();
|
313 |
-
|
314 |
-
// Hidden columns (none)
|
315 |
-
$hidden = array();
|
316 |
-
|
317 |
-
// Define which columns can be sorted
|
318 |
-
$sortable = array(
|
319 |
-
'id' => array( 'title', false ),
|
320 |
-
'date' => array( 'date', false )
|
321 |
-
);
|
322 |
-
|
323 |
-
// Set column headers
|
324 |
-
$this->_column_headers = array( $columns, $hidden, $sortable );
|
325 |
-
|
326 |
-
// Get entries
|
327 |
-
$page = $this->get_pagenum();
|
328 |
-
$order = isset( $_GET['order'] ) ? $_GET['order'] : 'DESC';
|
329 |
-
$orderby = isset( $_GET['orderby'] ) ? $_GET['orderby'] : 'entry_id';
|
330 |
-
$per_page = $this->get_items_per_page( 'wpforms_entries_per_page', $this->per_page );
|
331 |
-
$data = wpforms()->entry->get_entries( array(
|
332 |
-
'form_id' => $this->form_id,
|
333 |
-
'number' => $per_page,
|
334 |
-
'offset' => $per_page * ( $page - 1 ),
|
335 |
-
'order' => $order,
|
336 |
-
'orderby' => $orderby,
|
337 |
-
) );
|
338 |
-
|
339 |
-
// Giddy up
|
340 |
-
$this->items = $data;
|
341 |
-
|
342 |
-
// Finalize pagination
|
343 |
-
$this->set_pagination_args(
|
344 |
-
array(
|
345 |
-
'total_items' => $this->counts['total'],
|
346 |
-
'per_page' => $per_page,
|
347 |
-
'total_pages' => ceil( $this->counts['total'] / $per_page ),
|
348 |
-
)
|
349 |
-
);
|
350 |
-
}
|
351 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/admin/entries/class-entries.php
DELETED
@@ -1,409 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Primary entries page inside the admin.
|
4 |
-
*
|
5 |
-
* @package WPForms
|
6 |
-
* @author WPForms
|
7 |
-
* @since 1.0.0
|
8 |
-
* @license GPL-2.0+
|
9 |
-
* @copyright Copyright (c) 2016, WPForms LLC
|
10 |
-
*/
|
11 |
-
class WPForms_Entries {
|
12 |
-
|
13 |
-
/**
|
14 |
-
* Current view
|
15 |
-
*
|
16 |
-
* @since 1.0.0
|
17 |
-
*/
|
18 |
-
public $view;
|
19 |
-
|
20 |
-
/**
|
21 |
-
* Primary class constructor.
|
22 |
-
*
|
23 |
-
* @since 1.0.0
|
24 |
-
*/
|
25 |
-
public function __construct() {
|
26 |
-
|
27 |
-
// Maybe load entries page
|
28 |
-
add_action( 'admin_init', array( $this, 'init' ) );
|
29 |
-
|
30 |
-
// Setup screen options
|
31 |
-
add_action( 'load-wpforms_page_wpforms-entries', array( $this, 'screen_options' ) );
|
32 |
-
add_filter( 'set-screen-option', array( $this, 'screen_options_set' ), 10, 3 );
|
33 |
-
}
|
34 |
-
|
35 |
-
/**
|
36 |
-
* Determing if the user is viewing the entries page, if so, party on.
|
37 |
-
*
|
38 |
-
* @since 1.0.0
|
39 |
-
*/
|
40 |
-
public function init() {
|
41 |
-
|
42 |
-
// Check what page we are on
|
43 |
-
$page = isset( $_GET['page'] ) ? $_GET['page'] : '';
|
44 |
-
|
45 |
-
// Only load if we are actually on the overview page
|
46 |
-
if ( $page == 'wpforms-entries' ) {
|
47 |
-
|
48 |
-
// Determine what manage page view to load, defaults to new form
|
49 |
-
$this->view = isset( $_GET['view'] ) ? $_GET['view'] : 'list';
|
50 |
-
|
51 |
-
// List view -----------------------------------------------------//
|
52 |
-
if ( 'list' == $this->view ) {
|
53 |
-
|
54 |
-
if ( ! class_exists( 'WP_List_Table' ) ) {
|
55 |
-
require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';
|
56 |
-
}
|
57 |
-
|
58 |
-
// Load the class that builds the entries table
|
59 |
-
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/entries/class-entries-table.php';
|
60 |
-
}
|
61 |
-
|
62 |
-
add_action( 'admin_enqueue_scripts', array( $this, 'enqueues' ) );
|
63 |
-
add_action( 'wpforms_admin_page', array( $this, 'output' ) );
|
64 |
-
|
65 |
-
// Provide hook for add-ons
|
66 |
-
do_action( 'wpforms_entries_init', $this->view );
|
67 |
-
}
|
68 |
-
}
|
69 |
-
|
70 |
-
/**
|
71 |
-
* Add per-page screen option to the Entries table.
|
72 |
-
*
|
73 |
-
* @since 1.0.0
|
74 |
-
*/
|
75 |
-
function screen_options() {
|
76 |
-
|
77 |
-
$screen = get_current_screen();
|
78 |
-
|
79 |
-
if ( $screen->id !== 'wpforms_page_wpforms-entries' ) {
|
80 |
-
return;
|
81 |
-
}
|
82 |
-
|
83 |
-
add_screen_option(
|
84 |
-
'per_page',
|
85 |
-
array(
|
86 |
-
'label' => __( 'Number of entries per page:', 'wpforms' ),
|
87 |
-
'option' => 'wpforms_entries_per_page',
|
88 |
-
'default' => apply_filters( 'wpforms_entries_per_page', 30 ),
|
89 |
-
)
|
90 |
-
);
|
91 |
-
}
|
92 |
-
|
93 |
-
/**
|
94 |
-
* Entries table per-page screen option value
|
95 |
-
*
|
96 |
-
* @since 1.0.0
|
97 |
-
* @param mixed $status
|
98 |
-
* @param string $option
|
99 |
-
* @param mixed $value
|
100 |
-
* @return mixed
|
101 |
-
*/
|
102 |
-
function screen_options_set( $status, $option, $value ) {
|
103 |
-
|
104 |
-
if ( 'wpforms_entries_per_page' === $option ) {
|
105 |
-
return $value;
|
106 |
-
}
|
107 |
-
|
108 |
-
return $status;
|
109 |
-
}
|
110 |
-
|
111 |
-
/**
|
112 |
-
* Enqueue assets for the entries pages.
|
113 |
-
*
|
114 |
-
* @since 1.0.0
|
115 |
-
*/
|
116 |
-
public function enqueues() {
|
117 |
-
|
118 |
-
// Conditionall load CSS based on view
|
119 |
-
if ( 'list' == $this->view ) {
|
120 |
-
|
121 |
-
wp_enqueue_style(
|
122 |
-
'wpforms-entries',
|
123 |
-
WPFORMS_PLUGIN_URL . 'assets/css/admin-entries.css',
|
124 |
-
null,
|
125 |
-
WPFORMS_VERSION
|
126 |
-
);
|
127 |
-
|
128 |
-
wp_enqueue_script(
|
129 |
-
'wpforms-entries-list',
|
130 |
-
WPFORMS_PLUGIN_URL . 'assets/js/admin-entries-list.js',
|
131 |
-
array( 'jquery' ),
|
132 |
-
WPFORMS_VERSION,
|
133 |
-
false
|
134 |
-
);
|
135 |
-
|
136 |
-
wp_localize_script(
|
137 |
-
'wpforms-entries-list',
|
138 |
-
'wpforms_entries',
|
139 |
-
array(
|
140 |
-
'delete_confirm' => __( 'Are you sure you want to delete this entry?', 'wpforms' ),
|
141 |
-
)
|
142 |
-
);
|
143 |
-
|
144 |
-
}
|
145 |
-
|
146 |
-
if ( 'details' == $this->view ) {
|
147 |
-
|
148 |
-
wp_enqueue_style(
|
149 |
-
'wpforms-entries',
|
150 |
-
WPFORMS_PLUGIN_URL . 'assets/css/admin-entries.css',
|
151 |
-
null,
|
152 |
-
WPFORMS_VERSION
|
153 |
-
);
|
154 |
-
}
|
155 |
-
|
156 |
-
// Hook for add-ons
|
157 |
-
do_action( 'wpforms_entries_enqueue', $this->view );
|
158 |
-
}
|
159 |
-
|
160 |
-
/**
|
161 |
-
* Build the output for the entries page.
|
162 |
-
*
|
163 |
-
* @since 1.0.0
|
164 |
-
*/
|
165 |
-
public function output() {
|
166 |
-
|
167 |
-
printf( '<div id="wpforms-entries" class="wrap %s">', sanitize_html_class( $this->view ) );
|
168 |
-
|
169 |
-
// Determine what view to load
|
170 |
-
switch ( $this->view ) {
|
171 |
-
|
172 |
-
// Select form to view entries
|
173 |
-
case 'select' :
|
174 |
-
$this->output_select();
|
175 |
-
break;
|
176 |
-
|
177 |
-
// List entries in form
|
178 |
-
case 'list' :
|
179 |
-
$this->output_list();
|
180 |
-
break;
|
181 |
-
|
182 |
-
// View entry details
|
183 |
-
case 'details' :
|
184 |
-
$this->output_details();
|
185 |
-
break;
|
186 |
-
}
|
187 |
-
|
188 |
-
echo '</div>';
|
189 |
-
}
|
190 |
-
|
191 |
-
/**
|
192 |
-
* Select a form to view entries.
|
193 |
-
*
|
194 |
-
* @since 1.0.0
|
195 |
-
*/
|
196 |
-
public function output_select() {
|
197 |
-
|
198 |
-
$forms_args = apply_filters( 'wpforms_entry_select_args', array( 'orderby' => 'ID', 'order' => 'ASC' ) );
|
199 |
-
$forms = wpforms()->form->get( '', $forms_args );
|
200 |
-
?>
|
201 |
-
|
202 |
-
<h1 class="page-title"><?php _e( 'Entries', 'wpforms' ); ?></h1>
|
203 |
-
|
204 |
-
<?php if ( empty( $forms ) ) : ?>
|
205 |
-
|
206 |
-
<?php printf( __( 'Whoops, you haven\'t created a form yet. Want to <a href="%s">give it a go</a>?', 'wpforms' ), admin_url( 'admin.php?page=wpforms-builder' ) ); ?>
|
207 |
-
|
208 |
-
<?php else : ?>
|
209 |
-
|
210 |
-
<p><?php _e( 'Select a form to view entries', 'wpforms' ); ?></p>
|
211 |
-
|
212 |
-
<form id="wpforms-entry-select" method="get" action="<?php echo admin_url( 'admin.php' ); ?>">
|
213 |
-
|
214 |
-
<input type="hidden" name="page" value="wpforms-entries" />
|
215 |
-
|
216 |
-
<input type="hidden" name="view" value="list" />
|
217 |
-
|
218 |
-
<select name="form_id" style="width:300px;">
|
219 |
-
<?php
|
220 |
-
foreach( $forms as $key => $form) {
|
221 |
-
printf( '<option value="%d">%s</option>', $form->ID, esc_html( $form->post_title ) );
|
222 |
-
}
|
223 |
-
?>
|
224 |
-
</select>
|
225 |
-
|
226 |
-
<input type="submit" value="<?php _e( 'View Entries', 'wpforms' ); ?>" class="button button-primary">
|
227 |
-
|
228 |
-
</form>
|
229 |
-
|
230 |
-
<?php endif;
|
231 |
-
}
|
232 |
-
|
233 |
-
/**
|
234 |
-
* List all entries in a specific form.
|
235 |
-
*
|
236 |
-
* @since 1.0.0
|
237 |
-
*/
|
238 |
-
public function output_list() {
|
239 |
-
|
240 |
-
$forms = wpforms()->form->get( '', array( 'orderby' => 'ID', 'order' => 'ASC' ) );
|
241 |
-
|
242 |
-
printf( '<h1 class="page-title">%s</h1>', __( 'Entries' ) );
|
243 |
-
|
244 |
-
// Double check that a form ID is present
|
245 |
-
if ( empty( $_GET['form_id'] ) ) {
|
246 |
-
|
247 |
-
// If not, default to first form
|
248 |
-
$form_id = $forms[0]->ID;
|
249 |
-
|
250 |
-
//printf( '<div class="error"><p>%s</p></div>', __( 'Please select a form to view entries.', 'wpforms' ) );
|
251 |
-
//return;
|
252 |
-
} else {
|
253 |
-
$form_id = absint( $_GET['form_id'] );
|
254 |
-
}
|
255 |
-
|
256 |
-
// Retrieve the form
|
257 |
-
$form = wpforms()->form->get( $form_id );
|
258 |
-
|
259 |
-
// Double check that we found a real form
|
260 |
-
if ( empty( $_GET['form_id'] ) && !$form ) {
|
261 |
-
printf( '<div class="notice notice-info"><p>%s</p></div>', __( 'You need to create your first form before you can view the entries.', 'wpforms' ) );
|
262 |
-
return;
|
263 |
-
} else if ( ! $form ) {
|
264 |
-
printf( '<div class="error"><p>%s</p></div>', __( 'Invalid form.', 'wpforms' ) );
|
265 |
-
return;
|
266 |
-
}
|
267 |
-
|
268 |
-
$entries_table = new WPForms_Entries_Table;
|
269 |
-
$entries_table->prepare_items();
|
270 |
-
?>
|
271 |
-
|
272 |
-
<div class="form-details">
|
273 |
-
|
274 |
-
<h3>
|
275 |
-
<?php echo wp_strip_all_tags( $form->post_title ); ?>
|
276 |
-
<a href="<?php echo add_query_arg( array( 'view' => 'fields', 'form_id' => $form_id ), admin_url( 'admin.php?page=wpforms-builder' ) ); ?>">(<?php _e( 'edit', 'wpforms' ); ?>)</a>
|
277 |
-
</h3>
|
278 |
-
|
279 |
-
<?php _e( 'Select a form to view entries', 'wpforms' ); ?></p>
|
280 |
-
|
281 |
-
<form id="wpforms-entry-select" method="get" action="<?php echo admin_url( 'admin.php' ); ?>">
|
282 |
-
|
283 |
-
<input type="hidden" name="page" value="wpforms-entries" />
|
284 |
-
|
285 |
-
<input type="hidden" name="view" value="list" />
|
286 |
-
|
287 |
-
<select name="form_id" style="width:300px;">
|
288 |
-
<?php
|
289 |
-
foreach( $forms as $key => $form) {
|
290 |
-
printf( '<option value="%d" %s>%s</option>', $form->ID, selected( $form_id, $form->ID, false ), esc_html( $form->post_title ) );
|
291 |
-
}
|
292 |
-
?>
|
293 |
-
</select>
|
294 |
-
|
295 |
-
<input type="submit" value="<?php _e( 'View Entries', 'wpforms' ); ?>" class="button button-primary">
|
296 |
-
|
297 |
-
</form>
|
298 |
-
|
299 |
-
</div>
|
300 |
-
|
301 |
-
<form id="wpforms-entries-table" method="get" action="<?php echo admin_url( 'admin.php?page=wpforms-entries' ); ?>">
|
302 |
-
|
303 |
-
<input type="hidden" name="page" value="wpforms-entries" />
|
304 |
-
|
305 |
-
<input type="hidden" name="view" value="list" />
|
306 |
-
|
307 |
-
<input type="hidden" name="form_id" value="<?php echo absint( $form_id ); ?>" />
|
308 |
-
|
309 |
-
<?php $entries_table->views(); ?>
|
310 |
-
<?php $entries_table->display(); ?>
|
311 |
-
|
312 |
-
</form>
|
313 |
-
|
314 |
-
<?php
|
315 |
-
$form->post_content = wpforms_decode( $form->post_content );
|
316 |
-
wpforms_debug_data( $form );
|
317 |
-
}
|
318 |
-
|
319 |
-
/**
|
320 |
-
* Single entry details
|
321 |
-
*
|
322 |
-
* @since 1.0.0
|
323 |
-
*/
|
324 |
-
public function output_details() {
|
325 |
-
|
326 |
-
// Double check that a entry ID is present
|
327 |
-
if ( empty( $_GET['entry_id'] ) ) {
|
328 |
-
printf( '<div class="error"><p>%s</p></div>', __( 'Please select an entry to view.', 'wpforms' ) );
|
329 |
-
return;
|
330 |
-
} else {
|
331 |
-
$entry_id = absint( $_GET['entry_id'] );
|
332 |
-
}
|
333 |
-
|
334 |
-
$entry = wpforms()->entry->get( $entry_id );
|
335 |
-
|
336 |
-
// Double check that we found a real form
|
337 |
-
if ( ! $entry ) {
|
338 |
-
printf( '<div class="error"><p>%s</p></div>', __( 'Invalid entry.', 'wpforms' ) );
|
339 |
-
return;
|
340 |
-
}
|
341 |
-
|
342 |
-
$form = wpforms()->form->get( $entry->form_id );
|
343 |
-
$back = add_query_arg( array(
|
344 |
-
'page' => 'wpforms-entries',
|
345 |
-
'view' => 'list',
|
346 |
-
'form_id' => absint( $form->ID ),
|
347 |
-
), admin_url( 'admin.php') );
|
348 |
-
|
349 |
-
echo '<h1 class="page-title">';
|
350 |
-
_e( ' View Entry' );
|
351 |
-
echo ' <a href="' . $back . '" class="add-new-h2">' . __( 'Back to Entries' ) . '</a>';
|
352 |
-
echo '</h1>';
|
353 |
-
?>
|
354 |
-
|
355 |
-
<div id="poststuff">
|
356 |
-
|
357 |
-
<div id="post-body" class="metabox-holder columns-2">
|
358 |
-
|
359 |
-
<!-- Primary left column -->
|
360 |
-
<div id="post-body-content" style="position: relative;">
|
361 |
-
|
362 |
-
<div class="wpforms-clear postbox">
|
363 |
-
|
364 |
-
<h3 class="title"><?php echo esc_html( $form->post_title ); ?></h3>
|
365 |
-
|
366 |
-
<div class="inner">
|
367 |
-
|
368 |
-
<?php
|
369 |
-
$entry_fields = wpforms_decode( $entry->fields );
|
370 |
-
$fields = apply_filters( 'wpforms_entry_single_data', $entry_fields );
|
371 |
-
|
372 |
-
if ( !empty( $fields ) ) {
|
373 |
-
|
374 |
-
foreach ( $fields as $key => $field ) {
|
375 |
-
echo '<div class="entry-field">';
|
376 |
-
echo '<strong>' . wp_strip_all_tags( $field['name'] ) . '</strong>';
|
377 |
-
if ( !empty( $field['value'] ) ) {
|
378 |
-
echo nl2br( make_clickable( wp_strip_all_tags( $field['value'] ) ) );
|
379 |
-
} else {
|
380 |
-
echo '(' . __( 'empty', 'wpforms' ) . ')';
|
381 |
-
}
|
382 |
-
echo '</div>';
|
383 |
-
}
|
384 |
-
|
385 |
-
} else {
|
386 |
-
_e( 'No fields to display', 'wpforms' );
|
387 |
-
}
|
388 |
-
?>
|
389 |
-
|
390 |
-
</div>
|
391 |
-
|
392 |
-
</div>
|
393 |
-
|
394 |
-
</div>
|
395 |
-
|
396 |
-
<!-- Secondary right column -->
|
397 |
-
<div id="postbox-container-1" class="postbox-container">
|
398 |
-
|
399 |
-
|
400 |
-
</div>
|
401 |
-
|
402 |
-
</div>
|
403 |
-
|
404 |
-
</div>
|
405 |
-
<?php
|
406 |
-
wpforms_debug_data( $entry );
|
407 |
-
}
|
408 |
-
}
|
409 |
-
new WPForms_Entries;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/admin/overview/class-overview-table.php
CHANGED
@@ -97,6 +97,11 @@ 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 'modified':
|
102 |
$value = get_post_modified_time( get_option( 'date_format' ), false, $form );
|
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 );
|
includes/class-db.php
ADDED
@@ -0,0 +1,350 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* DB class
|
4 |
+
*
|
5 |
+
* This handy class originated from Pippin's Easy Digital Downloads.
|
6 |
+
* https://github.com/easydigitaldownloads/easy-digital-downloads/blob/master/includes/class-edd-db.php
|
7 |
+
*
|
8 |
+
* @package WPForms
|
9 |
+
* @author WPForms
|
10 |
+
* @since 1.1.6
|
11 |
+
* @license GPL-2.0+
|
12 |
+
* @copyright Copyright (c) 2016, WPForms LLC
|
13 |
+
*/
|
14 |
+
abstract class WPForms_DB {
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Database table name.
|
18 |
+
*
|
19 |
+
* @since 1.1.6
|
20 |
+
* @var string
|
21 |
+
*/
|
22 |
+
public $table_name;
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Database version.
|
26 |
+
*
|
27 |
+
* @since 1.1.6
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
public $version;
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Primary key (unique field) for the database table.
|
34 |
+
*
|
35 |
+
* @since 1.1.6
|
36 |
+
* @var string
|
37 |
+
*/
|
38 |
+
public $primary_key;
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Primay class constructor.
|
42 |
+
*
|
43 |
+
* Sub-classes should define $table_name, $version, and $primary_key here.
|
44 |
+
*
|
45 |
+
* @since 1.1.6
|
46 |
+
*/
|
47 |
+
public function __construct() {}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Retrieves the list of columns for the database table.
|
51 |
+
*
|
52 |
+
* Sub-classes should define an array of columns here.
|
53 |
+
*
|
54 |
+
* @since 1.1.6
|
55 |
+
* @return array List of columns.
|
56 |
+
*/
|
57 |
+
public function get_columns() {
|
58 |
+
|
59 |
+
return array();
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Retrieves column defaults.
|
64 |
+
*
|
65 |
+
* Sub-classes can define default for any/all of columns defined in the get_columns() method.
|
66 |
+
*
|
67 |
+
* @since 1.1.6
|
68 |
+
* @return array All defined column defaults.
|
69 |
+
*/
|
70 |
+
public function get_column_defaults() {
|
71 |
+
|
72 |
+
return array();
|
73 |
+
}
|
74 |
+
|
75 |
+
/**
|
76 |
+
* Retrieves a row from the database based on a given row ID.
|
77 |
+
*
|
78 |
+
* @since 1.1.6
|
79 |
+
* @param int $row_id Row ID.
|
80 |
+
* @return array|null|object|void
|
81 |
+
*/
|
82 |
+
public function get( $row_id ) {
|
83 |
+
|
84 |
+
global $wpdb;
|
85 |
+
|
86 |
+
return $wpdb->get_row(
|
87 |
+
$wpdb->prepare(
|
88 |
+
"SELECT * FROM $this->table_name WHERE $this->primary_key = %s LIMIT 1;",
|
89 |
+
$row_id
|
90 |
+
)
|
91 |
+
);
|
92 |
+
}
|
93 |
+
|
94 |
+
/**
|
95 |
+
* Retrieves a row based on column and row ID.
|
96 |
+
*
|
97 |
+
* @since 1.1.6
|
98 |
+
* @param string $column Column name
|
99 |
+
* @param int|string $row_id Row ID.
|
100 |
+
* @return object|null Database query result object or null on failure
|
101 |
+
*/
|
102 |
+
public function get_by( $column, $row_id ) {
|
103 |
+
|
104 |
+
global $wpdb;
|
105 |
+
|
106 |
+
if ( ! array_key_exists( $column, $this->get_columns() ) || empty( $row_id ) ) {
|
107 |
+
return false;
|
108 |
+
}
|
109 |
+
|
110 |
+
return $wpdb->get_row(
|
111 |
+
$wpdb->prepare(
|
112 |
+
"SELECT * FROM $this->table_name WHERE $column = '%s' LIMIT 1;",
|
113 |
+
$row_id
|
114 |
+
)
|
115 |
+
);
|
116 |
+
}
|
117 |
+
|
118 |
+
/**
|
119 |
+
* Retrieves a value based on column name and row ID.
|
120 |
+
*
|
121 |
+
* @since 1.1.6
|
122 |
+
* @param string $column Column name
|
123 |
+
* @param int|string $row_id Row ID
|
124 |
+
* @return string|null Database query result (as string), or null on failure
|
125 |
+
*/
|
126 |
+
public function get_column( $column, $row_id ) {
|
127 |
+
|
128 |
+
global $wpdb;
|
129 |
+
|
130 |
+
if ( ! array_key_exists( $column, $this->get_columns() ) || empty( $row_id ) ) {
|
131 |
+
return false;
|
132 |
+
}
|
133 |
+
|
134 |
+
return $wpdb->get_var(
|
135 |
+
$wpdb->prepare(
|
136 |
+
"SELECT $column FROM $this->table_name WHERE $this->primary_key = '%s' LIMIT 1;",
|
137 |
+
$row_id
|
138 |
+
)
|
139 |
+
);
|
140 |
+
}
|
141 |
+
|
142 |
+
/**
|
143 |
+
* Retrieves one column value based on another given column and matching value.
|
144 |
+
*
|
145 |
+
* @since 1.1.6
|
146 |
+
* @param string $column Column name
|
147 |
+
* @param string $column_where Column to match against in the WHERE clause.
|
148 |
+
* @param $column_value Value to match to the column in the WHERE clause.
|
149 |
+
* @return string|null Database query result (as string), or null on failure
|
150 |
+
*/
|
151 |
+
public function get_column_by( $column, $column_where, $column_value ) {
|
152 |
+
|
153 |
+
global $wpdb;
|
154 |
+
|
155 |
+
if ( empty( $column ) || empty( $column_where ) || empty( $column_value ) || ! array_key_exists( $column, $this->get_columns() ) ) {
|
156 |
+
return false;
|
157 |
+
}
|
158 |
+
|
159 |
+
return $wpdb->get_var(
|
160 |
+
$wpdb->prepare(
|
161 |
+
"SELECT $column FROM $this->table_name WHERE $column_where = %s LIMIT 1;",
|
162 |
+
$column_value
|
163 |
+
)
|
164 |
+
);
|
165 |
+
}
|
166 |
+
|
167 |
+
/**
|
168 |
+
* Inserts a new record into the database.
|
169 |
+
*
|
170 |
+
* Please note: inserting a record flushes the cache.
|
171 |
+
*
|
172 |
+
* @since 1.1.6
|
173 |
+
* @param array $data Column data
|
174 |
+
* @param string $type Optional. Data type context
|
175 |
+
* @return int ID for the newly inserted record
|
176 |
+
*/
|
177 |
+
public function add( $data, $type = '' ) {
|
178 |
+
|
179 |
+
global $wpdb;
|
180 |
+
|
181 |
+
// Set default values
|
182 |
+
$data = wp_parse_args( $data, $this->get_column_defaults() );
|
183 |
+
|
184 |
+
do_action( 'edd_pre_insert_' . $type, $data );
|
185 |
+
|
186 |
+
// Initialise column format array
|
187 |
+
$column_formats = $this->get_columns();
|
188 |
+
|
189 |
+
// Force fields to lower case
|
190 |
+
$data = array_change_key_case( $data );
|
191 |
+
|
192 |
+
// White list columns
|
193 |
+
$data = array_intersect_key( $data, $column_formats );
|
194 |
+
|
195 |
+
// Reorder $column_formats to match the order of columns given in $data
|
196 |
+
$data_keys = array_keys( $data );
|
197 |
+
$column_formats = array_merge( array_flip( $data_keys ), $column_formats );
|
198 |
+
|
199 |
+
$wpdb->insert( $this->table_name, $data, $column_formats );
|
200 |
+
|
201 |
+
wp_cache_flush();
|
202 |
+
|
203 |
+
do_action( 'wpforms_post_insert_' . $type, $wpdb->insert_id, $data );
|
204 |
+
|
205 |
+
return $wpdb->insert_id;
|
206 |
+
}
|
207 |
+
|
208 |
+
/**
|
209 |
+
* Inserts a new record into the database. This runs the add method.
|
210 |
+
*
|
211 |
+
* Please note: inserting a record flushes the cache.
|
212 |
+
*
|
213 |
+
* @since 1.1.6
|
214 |
+
* @param array $data Column data
|
215 |
+
* @return int ID for the newly inserted record
|
216 |
+
*/
|
217 |
+
public function insert( $data ) {
|
218 |
+
|
219 |
+
return $this->add( $data );
|
220 |
+
}
|
221 |
+
|
222 |
+
/**
|
223 |
+
* Updates an existing record in the database.
|
224 |
+
*
|
225 |
+
* Please note: updating a record flushes the cache.
|
226 |
+
*
|
227 |
+
* @since 1.1.6
|
228 |
+
* @param string $row_id Row ID for the record being updated.
|
229 |
+
* @param array $data Optional. Array of columns and associated data to update. Default empty array.
|
230 |
+
* @param string $where Optional. Column to match against in the WHERE clause. If empty, $primary_key
|
231 |
+
* will be used. Default empty.
|
232 |
+
* @param string $type Optional. Data type context, e.g. 'affiliate', 'creative', etc. Default empty.
|
233 |
+
* @return bool False if the record could not be updated, true otherwise.
|
234 |
+
*/
|
235 |
+
public function update( $row_id, $data = array(), $where = '', $type = '' ) {
|
236 |
+
|
237 |
+
global $wpdb;
|
238 |
+
|
239 |
+
// Row ID must be positive integer
|
240 |
+
$row_id = absint( $row_id );
|
241 |
+
|
242 |
+
if ( empty( $row_id ) ) {
|
243 |
+
return false;
|
244 |
+
}
|
245 |
+
|
246 |
+
if ( empty( $where ) ) {
|
247 |
+
$where = $this->primary_key;
|
248 |
+
}
|
249 |
+
|
250 |
+
// Initialise column format array
|
251 |
+
$column_formats = $this->get_columns();
|
252 |
+
|
253 |
+
// Force fields to lower case
|
254 |
+
$data = array_change_key_case( $data );
|
255 |
+
|
256 |
+
// White list columns
|
257 |
+
$data = array_intersect_key( $data, $column_formats );
|
258 |
+
|
259 |
+
// Reorder $column_formats to match the order of columns given in $data
|
260 |
+
$data_keys = array_keys( $data );
|
261 |
+
$column_formats = array_merge( array_flip( $data_keys ), $column_formats );
|
262 |
+
|
263 |
+
if ( false === $wpdb->update( $this->table_name, $data, array( $where => $row_id ), $column_formats ) ) {
|
264 |
+
return false;
|
265 |
+
}
|
266 |
+
|
267 |
+
wp_cache_flush();
|
268 |
+
|
269 |
+
do_action( 'wpforms_post_update_' . $type, $data );
|
270 |
+
|
271 |
+
return true;
|
272 |
+
}
|
273 |
+
|
274 |
+
/**
|
275 |
+
* Deletes a record from the database.
|
276 |
+
*
|
277 |
+
* Please note: successfully deleting a record flushes the cache.
|
278 |
+
*
|
279 |
+
* @since 1.1.6
|
280 |
+
* @param int|string $row_id Row ID.
|
281 |
+
* @return bool False if the record could not be deleted, true otherwise.
|
282 |
+
*/
|
283 |
+
public function delete( $row_id = 0 ) {
|
284 |
+
|
285 |
+
global $wpdb;
|
286 |
+
|
287 |
+
// Row ID must be positive integer
|
288 |
+
$row_id = absint( $row_id );
|
289 |
+
|
290 |
+
if ( empty( $row_id ) ) {
|
291 |
+
return false;
|
292 |
+
}
|
293 |
+
|
294 |
+
if ( false === $wpdb->query( $wpdb->prepare( "DELETE FROM $this->table_name WHERE $this->primary_key = %d", $row_id ) ) ) {
|
295 |
+
return false;
|
296 |
+
}
|
297 |
+
|
298 |
+
wp_cache_flush();
|
299 |
+
|
300 |
+
do_action( 'wpforms_post_delete', $row_id );
|
301 |
+
|
302 |
+
return true;
|
303 |
+
}
|
304 |
+
|
305 |
+
/**
|
306 |
+
* Deletes a record from the database by column.
|
307 |
+
*
|
308 |
+
* Please note: successfully deleting a record flushes the cache.
|
309 |
+
*
|
310 |
+
* @since 1.1.6
|
311 |
+
* @param string $column
|
312 |
+
* @param int|string $row_id Row ID.
|
313 |
+
* @return bool False if the record could not be deleted, true otherwise.
|
314 |
+
*/
|
315 |
+
public function delete_by( $column, $row_id ) {
|
316 |
+
|
317 |
+
global $wpdb;
|
318 |
+
|
319 |
+
if ( empty( $column ) || empty( $row_id ) || ! array_key_exists( $column, $this->get_columns() ) ) {
|
320 |
+
return false;
|
321 |
+
}
|
322 |
+
|
323 |
+
if ( false === $wpdb->query( $wpdb->prepare( "DELETE FROM $this->table_name WHERE $column = %s", $row_id ) ) ) {
|
324 |
+
return false;
|
325 |
+
}
|
326 |
+
|
327 |
+
wp_cache_flush();
|
328 |
+
|
329 |
+
do_action( 'wpforms_post_delete', $row_id );
|
330 |
+
|
331 |
+
return true;
|
332 |
+
}
|
333 |
+
|
334 |
+
|
335 |
+
/**
|
336 |
+
* Check if the given table exists.
|
337 |
+
*
|
338 |
+
* @since 1.1.6
|
339 |
+
* @param string $table The table name
|
340 |
+
* @return bool If the table name exists
|
341 |
+
*/
|
342 |
+
public function table_exists( $table ) {
|
343 |
+
|
344 |
+
global $wpdb;
|
345 |
+
|
346 |
+
$table = sanitize_text_field( $table );
|
347 |
+
|
348 |
+
return $wpdb->get_var( $wpdb->prepare( "SHOW TABLES LIKE '%s'", $table ) ) === $table;
|
349 |
+
}
|
350 |
+
}
|
includes/class-logging.php
CHANGED
@@ -75,6 +75,8 @@ class WPForms_Logging {
|
|
75 |
$terms = array(
|
76 |
'payment_error',
|
77 |
'provider_error',
|
|
|
|
|
78 |
);
|
79 |
|
80 |
return apply_filters( 'wpforms_log_types', $terms );
|
75 |
$terms = array(
|
76 |
'payment_error',
|
77 |
'provider_error',
|
78 |
+
'spam',
|
79 |
+
'entry',
|
80 |
);
|
81 |
|
82 |
return apply_filters( 'wpforms_log_types', $terms );
|
includes/class-preview.php
ADDED
@@ -0,0 +1,165 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Preview class.
|
4 |
+
*
|
5 |
+
* @package WPForms
|
6 |
+
* @author WPForms
|
7 |
+
* @since 1.1.5
|
8 |
+
* @license GPL-2.0+
|
9 |
+
* @copyright Copyright (c) 2016, WPForms LLC
|
10 |
+
*/
|
11 |
+
class WPForms_Preview {
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Primary class constructor.
|
15 |
+
*
|
16 |
+
* @since 1.1.5
|
17 |
+
*/
|
18 |
+
public function __construct() {
|
19 |
+
|
20 |
+
// Maybe load a preview page
|
21 |
+
add_action( 'init', array( $this, 'init' ) );
|
22 |
+
}
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Determing if the user should see a preview page, if so, party on.
|
26 |
+
*
|
27 |
+
* @since 1.1.5
|
28 |
+
*/
|
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 |
+
|
36 |
+
// Check for authenticated user with correct capabilities
|
37 |
+
if ( !is_user_logged_in() || !current_user_can( apply_filters( 'wpforms_manage_cap', 'manage_options' ) ) ) {
|
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">
|
63 |
+
<link rel="stylesheet" href="<?php echo includes_url('css/buttons.min.css'); ?>" type="text/css">
|
64 |
+
<link rel="stylesheet" href="<?php echo WPFORMS_PLUGIN_URL; ?>assets/css/wpforms-preview.css" type="text/css">
|
65 |
+
<script type="text/javascript" src="<?php echo includes_url('js/jquery/jquery.js'); ?>"></script>
|
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;
|
includes/class-process.php
CHANGED
@@ -166,9 +166,23 @@ class WPForms_Process {
|
|
166 |
// Success - send email notification
|
167 |
$this->entry_email( $this->fields, $entry, $form_data, $entry_id );
|
168 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
169 |
// Post-process hooks
|
170 |
do_action( 'wpforms_process_complete', $this->fields, $entry, $form_data, $entry_id );
|
171 |
do_action( "wpforms_process_complete_{$form_id}", $this->fields, $entry, $form_data, $entry_id );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
172 |
}
|
173 |
|
174 |
$this->entry_confirmation_redirect( $form_data );
|
166 |
// Success - send email notification
|
167 |
$this->entry_email( $this->fields, $entry, $form_data, $entry_id );
|
168 |
|
169 |
+
// Logs entry depending on log levels set
|
170 |
+
$log = array(
|
171 |
+
'fields' => $this->fields,
|
172 |
+
'entry_id' => $entry_id,
|
173 |
+
);
|
174 |
+
wpforms_log( 'Form Entry', $log, 'entries', array( 'type' => 'entry', 'parent' => $entry_id ) );
|
175 |
+
|
176 |
// Post-process hooks
|
177 |
do_action( 'wpforms_process_complete', $this->fields, $entry, $form_data, $entry_id );
|
178 |
do_action( "wpforms_process_complete_{$form_id}", $this->fields, $entry, $form_data, $entry_id );
|
179 |
+
|
180 |
+
} else {
|
181 |
+
|
182 |
+
$message = $honeypot . '<br><pre>' . print_r( $entry, true ) . '</pre>';
|
183 |
+
|
184 |
+
// Logs spam entry depending on log levels set
|
185 |
+
wpforms_log( 'Spam Entry', $message, 'spam', array( 'type' => 'spam' ) );
|
186 |
}
|
187 |
|
188 |
$this->entry_confirmation_redirect( $form_data );
|
includes/class-smart-tags.php
CHANGED
@@ -210,6 +210,23 @@ class WPForms_Smart_Tags {
|
|
210 |
}
|
211 |
}
|
212 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
213 |
return $content;
|
214 |
}
|
215 |
}
|
210 |
}
|
211 |
}
|
212 |
|
213 |
+
// Field value smart tags (settings, etc)
|
214 |
+
preg_match_all( "/\{field_value_id=\"(.+?)\"\}/", $content, $value_ids );
|
215 |
+
// We can only process field smart tags if we have $fields
|
216 |
+
if ( !empty( $value_ids[1] ) && !empty( $fields ) ) {
|
217 |
+
|
218 |
+
foreach( $value_ids[1] as $key => $field_id ) {
|
219 |
+
|
220 |
+
if ( !empty( $fields[$field_id]['value_raw'] ) ) {
|
221 |
+
$value = sanitize_text_field( $fields[$field_id]['value_raw'] );
|
222 |
+
} else {
|
223 |
+
$value = !empty( $fields[$field_id]['value'] ) ? sanitize_text_field( $fields[$field_id]['value'] ) : '';
|
224 |
+
}
|
225 |
+
|
226 |
+
$content = str_replace( '{field_value_id="' . $field_id . '"}', $value , $content );
|
227 |
+
}
|
228 |
+
}
|
229 |
+
|
230 |
return $content;
|
231 |
}
|
232 |
}
|
includes/emails/class-emails.php
CHANGED
@@ -378,7 +378,7 @@ class WPForms_WP_Emails {
|
|
378 |
$field_item = str_replace( 'border-top:1px solid #dddddd;', '', $field_item );
|
379 |
}
|
380 |
$field_item = str_replace( '{field_name}', $field_name, $field_item );
|
381 |
-
$field_value = apply_filters( '
|
382 |
$field_item = str_replace( '{field_value}', $field_value, $field_item );
|
383 |
|
384 |
$message .= wpautop( $field_item );
|
378 |
$field_item = str_replace( 'border-top:1px solid #dddddd;', '', $field_item );
|
379 |
}
|
380 |
$field_item = str_replace( '{field_name}', $field_name, $field_item );
|
381 |
+
$field_value = apply_filters( 'wpforms_html_field_value', stripslashes( wp_specialchars_decode( $field['value'] ) ), $field, $this->form_data );
|
382 |
$field_item = str_replace( '{field_value}', $field_value, $field_item );
|
383 |
|
384 |
$message .= wpautop( $field_item );
|
includes/emails/templates/footer-default.php
CHANGED
@@ -31,7 +31,7 @@ if ( ! defined( 'ABSPATH' ) ) exit;
|
|
31 |
<table align="left" border="0" cellpadding="0" cellspacing="0" width="100%" style="min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" class="mcnTextContentContainer">
|
32 |
<tbody>
|
33 |
<tr>
|
34 |
-
<td valign="top" class="mcnTextContent" style="padding-top: 9px;padding-right: 18px;padding-bottom: 9px;padding-left: 18px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;word-break: break-word;color: #
|
35 |
|
36 |
<!-- Footer content -->
|
37 |
<?php
|
31 |
<table align="left" border="0" cellpadding="0" cellspacing="0" width="100%" style="min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" class="mcnTextContentContainer">
|
32 |
<tbody>
|
33 |
<tr>
|
34 |
+
<td valign="top" class="mcnTextContent" style="padding-top: 9px;padding-right: 18px;padding-bottom: 9px;padding-left: 18px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;word-break: break-word;color: #aaa;font-family: Helvetica;font-size: 12px;line-height: 150%;text-align: center;">
|
35 |
|
36 |
<!-- Footer content -->
|
37 |
<?php
|
includes/fields/class-checkbox.php
CHANGED
@@ -155,7 +155,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,
|
159 |
echo '</li>';
|
160 |
}
|
161 |
echo '</ul>';
|
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>';
|
includes/fields/class-radio.php
CHANGED
@@ -155,7 +155,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,
|
159 |
echo '</li>';
|
160 |
}
|
161 |
echo '</ul>';
|
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>';
|
includes/functions.php
CHANGED
@@ -66,6 +66,25 @@ function wpforms_current_url() {
|
|
66 |
return esc_url_raw( $url );
|
67 |
}
|
68 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
69 |
/**
|
70 |
* Get the value of a specific WPForms setting.
|
71 |
*
|
@@ -622,7 +641,7 @@ function wpforms_countries() {
|
|
622 |
*/
|
623 |
function wpforms_debug_data( $data, $echo = true ) {
|
624 |
|
625 |
-
if ( ( defined( 'WPFORMS_DEBUG') && true === WPFORMS_DEBUG ) && is_super_admin() ) {
|
626 |
|
627 |
$output = '<textarea style="background:#fff;margin: 20px 0;width:100%;height:500px;font-size:12px;font-family: Consolas,Monaco,monospace;direction: ltr;unicode-bidi: embed;line-height: 1.4;padding: 4px 6px 1px;" readonly>';
|
628 |
|
@@ -648,15 +667,44 @@ function wpforms_debug_data( $data, $echo = true ) {
|
|
648 |
* Log helper.
|
649 |
*
|
650 |
* @since 1.0.0
|
651 |
-
* @param
|
|
|
|
|
|
|
652 |
*/
|
653 |
-
function wpforms_log( $
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
660 |
}
|
661 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
662 |
}
|
66 |
return esc_url_raw( $url );
|
67 |
}
|
68 |
|
69 |
+
/**
|
70 |
+
* Object to array.
|
71 |
+
*
|
72 |
+
* @since 1.1.7
|
73 |
+
* @param object $object
|
74 |
+
* @return array
|
75 |
+
*/
|
76 |
+
function wpforms_object_to_array( $object ) {
|
77 |
+
|
78 |
+
if ( !is_object( $object ) && !is_array( $object ) ) {
|
79 |
+
return $object;
|
80 |
+
}
|
81 |
+
|
82 |
+
if ( is_object( $object ) ) {
|
83 |
+
$object = get_object_vars( $object );
|
84 |
+
}
|
85 |
+
return array_map( 'wpforms_object_to_array', $object );
|
86 |
+
}
|
87 |
+
|
88 |
/**
|
89 |
* Get the value of a specific WPForms setting.
|
90 |
*
|
641 |
*/
|
642 |
function wpforms_debug_data( $data, $echo = true ) {
|
643 |
|
644 |
+
if ( ( defined( 'WPFORMS_DEBUG' ) && true === WPFORMS_DEBUG ) && is_super_admin() ) {
|
645 |
|
646 |
$output = '<textarea style="background:#fff;margin: 20px 0;width:100%;height:500px;font-size:12px;font-family: Consolas,Monaco,monospace;direction: ltr;unicode-bidi: embed;line-height: 1.4;padding: 4px 6px 1px;" readonly>';
|
647 |
|
667 |
* Log helper.
|
668 |
*
|
669 |
* @since 1.0.0
|
670 |
+
* @param string $title
|
671 |
+
* @param string $message
|
672 |
+
* @param string|array $level
|
673 |
+
* @param array $args
|
674 |
*/
|
675 |
+
function wpforms_log( $title = '', $message = '', $level = 'errors', $args = array() ) {
|
676 |
+
|
677 |
+
// Require log title
|
678 |
+
if ( empty( $title ) )
|
679 |
+
return;
|
680 |
+
|
681 |
+
/**
|
682 |
+
* Compare error levels to determine if we should log.
|
683 |
+
* Current supported levels:
|
684 |
+
* - All - always log. always.
|
685 |
+
* - Errors
|
686 |
+
* - Spam
|
687 |
+
* - Entries
|
688 |
+
*/
|
689 |
+
if ( $level != 'all' ) {
|
690 |
+
$logging_levels = get_option( 'wpforms_logging', array() );
|
691 |
+
if ( !in_array( $level, $logging_levels ) ) {
|
692 |
+
return;
|
693 |
}
|
694 |
}
|
695 |
+
|
696 |
+
// Other args
|
697 |
+
$defaults = array(
|
698 |
+
'parent' => '0',
|
699 |
+
'type' => '',
|
700 |
+
);
|
701 |
+
$args = wp_parse_args( $args, $defaults );
|
702 |
+
|
703 |
+
// Make arrays and objects look nice
|
704 |
+
if ( is_array( $message ) || is_object( $message ) ) {
|
705 |
+
$message = '<pre>' . print_r( $data, true ) . '</pre>';
|
706 |
+
}
|
707 |
+
|
708 |
+
// Create log entry
|
709 |
+
wpforms()->logs->add( $title, $message, $args['parent'], $args['type'] );
|
710 |
}
|
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.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wpforms\n"
|
7 |
-
"POT-Creation-Date: 2016-04-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -67,128 +67,129 @@ msgstr ""
|
|
67 |
msgid "Addon installed."
|
68 |
msgstr ""
|
69 |
|
70 |
-
#: includes/admin/builder/class-builder.php:
|
71 |
#: includes/admin/class-editor.php:96
|
|
|
72 |
msgid "Cancel"
|
73 |
msgstr ""
|
74 |
|
75 |
-
#: includes/admin/builder/class-builder.php:
|
76 |
msgid "OK"
|
77 |
msgstr ""
|
78 |
|
79 |
-
#: includes/admin/builder/class-builder.php:
|
80 |
#: includes/admin/class-editor.php:70
|
81 |
msgid "Close"
|
82 |
msgstr ""
|
83 |
|
84 |
-
#: includes/admin/builder/class-builder.php:
|
85 |
-
#: includes/admin/entries/class-entries-table.php:
|
86 |
msgid "Field"
|
87 |
msgstr ""
|
88 |
|
89 |
-
#: includes/admin/builder/class-builder.php:
|
90 |
msgid "Available Fields"
|
91 |
msgstr ""
|
92 |
|
93 |
-
#: includes/admin/builder/class-builder.php:
|
94 |
msgid "No fields available"
|
95 |
msgstr ""
|
96 |
|
97 |
-
#: includes/admin/builder/class-builder.php:
|
98 |
msgid "No email fields"
|
99 |
msgstr ""
|
100 |
|
101 |
-
#: includes/admin/builder/class-builder.php:
|
102 |
#: includes/admin/class-settings.php:117
|
103 |
msgid "Saving ..."
|
104 |
msgstr ""
|
105 |
|
106 |
-
#: includes/admin/builder/class-builder.php:
|
107 |
msgid "Saved!"
|
108 |
msgstr ""
|
109 |
|
110 |
-
#: includes/admin/builder/class-builder.php:
|
111 |
msgid "Save and Exit"
|
112 |
msgstr ""
|
113 |
|
114 |
-
#: includes/admin/builder/class-builder.php:
|
115 |
-
#: includes/admin/builder/class-builder.php:
|
116 |
msgid "Loading"
|
117 |
msgstr ""
|
118 |
|
119 |
-
#: includes/admin/builder/class-builder.php:
|
120 |
msgid "Use Template"
|
121 |
msgstr ""
|
122 |
|
123 |
-
#: includes/admin/builder/class-builder.php:
|
124 |
msgid ""
|
125 |
"Changing templates on an existing form will DELETE existing form fields. Are "
|
126 |
"you sure you want apply the new template?"
|
127 |
msgstr ""
|
128 |
|
129 |
-
#: includes/admin/builder/class-builder.php:
|
130 |
msgid ""
|
131 |
"You are almost done. To embed this form on your site, please paste the "
|
132 |
"following shortcode inside a post or page."
|
133 |
msgstr ""
|
134 |
|
135 |
-
#: includes/admin/builder/class-builder.php:
|
136 |
msgid "Or you can follow the instructions in this video."
|
137 |
msgstr ""
|
138 |
|
139 |
-
#: includes/admin/builder/class-builder.php:
|
140 |
-
#: includes/admin/builder/class-builder.php:
|
141 |
msgid "Exit"
|
142 |
msgstr ""
|
143 |
|
144 |
-
#: includes/admin/builder/class-builder.php:
|
145 |
msgid "If you exit without saving, your changes will be lost."
|
146 |
msgstr ""
|
147 |
|
148 |
-
#: includes/admin/builder/class-builder.php:
|
149 |
msgid "Are you sure you want to delete this field?"
|
150 |
msgstr ""
|
151 |
|
152 |
-
#: includes/admin/builder/class-builder.php:
|
153 |
msgid "Please enter a form title."
|
154 |
msgstr ""
|
155 |
|
156 |
-
#: includes/admin/builder/class-builder.php:
|
157 |
msgid "This item must contain at least one choice."
|
158 |
msgstr ""
|
159 |
|
160 |
-
#: includes/admin/builder/class-builder.php:
|
161 |
#: includes/admin/builder/functions.php:162 includes/fields/class-base.php:317
|
162 |
msgid "Show Smart Tags"
|
163 |
msgstr ""
|
164 |
|
165 |
-
#: includes/admin/builder/class-builder.php:
|
166 |
msgid "Hide Smart Tags"
|
167 |
msgstr ""
|
168 |
|
169 |
-
#: includes/admin/builder/class-builder.php:
|
170 |
#: includes/class-provider.php:857
|
171 |
msgid "-- Select field --"
|
172 |
msgstr ""
|
173 |
|
174 |
-
#: includes/admin/builder/class-builder.php:
|
175 |
msgid "Now editing"
|
176 |
msgstr ""
|
177 |
|
178 |
-
#: includes/admin/builder/class-builder.php:
|
179 |
msgid "Embed Form"
|
180 |
msgstr ""
|
181 |
|
182 |
-
#: includes/admin/builder/class-builder.php:
|
183 |
msgid "Embed"
|
184 |
msgstr ""
|
185 |
|
186 |
-
#: includes/admin/builder/class-builder.php:
|
187 |
msgid "Save Form"
|
188 |
msgstr ""
|
189 |
|
190 |
-
#: includes/admin/builder/class-builder.php:
|
191 |
-
#: includes/admin/class-settings.php:
|
192 |
msgid "Save"
|
193 |
msgstr ""
|
194 |
|
@@ -339,7 +340,7 @@ msgid ""
|
|
339 |
msgstr ""
|
340 |
|
341 |
#: includes/admin/builder/panels/class-settings.php:21
|
342 |
-
#: includes/admin/class-menu.php:81 includes/admin/class-settings.php:
|
343 |
msgid "Settings"
|
344 |
msgstr ""
|
345 |
|
@@ -608,7 +609,7 @@ msgid "Show form description"
|
|
608 |
msgstr ""
|
609 |
|
610 |
#: includes/admin/class-editor.php:88
|
611 |
-
#: includes/admin/entries/class-entries.php:
|
612 |
#: includes/admin/overview/class-overview-table.php:249
|
613 |
msgid ""
|
614 |
"Whoops, you haven't created a form yet. Want to <a href=\"%s\">give it a go</"
|
@@ -659,9 +660,9 @@ msgid ""
|
|
659 |
"continue receiving automatic updates."
|
660 |
msgstr ""
|
661 |
|
662 |
-
#. #-#-#-#-# wpforms.pot (WPForms 1.1.
|
663 |
#. Plugin Name of the plugin/theme
|
664 |
-
#. #-#-#-#-# wpforms.pot (WPForms 1.1.
|
665 |
#. Author of the plugin/theme
|
666 |
#: includes/admin/class-menu.php:36 includes/admin/class-menu.php:37
|
667 |
#: includes/admin/class-menu.php:48
|
@@ -686,8 +687,7 @@ msgid "Form Entries"
|
|
686 |
msgstr ""
|
687 |
|
688 |
#: includes/admin/class-menu.php:69
|
689 |
-
#: includes/admin/entries/class-entries.php:
|
690 |
-
#: includes/admin/entries/class-entries.php:242
|
691 |
#: includes/admin/overview/class-overview-table.php:57
|
692 |
#: includes/admin/overview/class-overview-table.php:158
|
693 |
msgid "Entries"
|
@@ -721,7 +721,7 @@ msgstr ""
|
|
721 |
msgid "Integrations"
|
722 |
msgstr ""
|
723 |
|
724 |
-
#: includes/admin/class-settings.php:163 includes/admin/class-settings.php:
|
725 |
msgid "Settings check failed."
|
726 |
msgstr ""
|
727 |
|
@@ -794,36 +794,40 @@ msgstr ""
|
|
794 |
msgid "Upload Image"
|
795 |
msgstr ""
|
796 |
|
797 |
-
#: includes/admin/class-settings.php:
|
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:
|
|
|
|
|
|
|
|
|
803 |
msgid "Include Form Styling"
|
804 |
msgstr ""
|
805 |
|
806 |
-
#: includes/admin/class-settings.php:
|
807 |
msgid "Base and form theme styling"
|
808 |
msgstr ""
|
809 |
|
810 |
-
#: includes/admin/class-settings.php:
|
811 |
msgid "Base styling only"
|
812 |
msgstr ""
|
813 |
|
814 |
-
#: includes/admin/class-settings.php:
|
815 |
msgid "None"
|
816 |
msgstr ""
|
817 |
|
818 |
-
#: includes/admin/class-settings.php:
|
819 |
msgid "Determines which CSS files to load for the site."
|
820 |
msgstr ""
|
821 |
|
822 |
-
#: includes/admin/class-settings.php:
|
823 |
msgid "reCAPTCHA"
|
824 |
msgstr ""
|
825 |
|
826 |
-
#: includes/admin/class-settings.php:
|
827 |
msgid ""
|
828 |
"reCAPTCHA is a free anti-spam service from Google. Its helps protect your "
|
829 |
"website from spam and abuse while letting real people pass through with "
|
@@ -831,35 +835,35 @@ msgid ""
|
|
831 |
"\"_blank\">Visit reCAPTCHA</a> to learn more or sign up for a free account."
|
832 |
msgstr ""
|
833 |
|
834 |
-
#: includes/admin/class-settings.php:
|
835 |
msgid "reCAPTCHA Site key"
|
836 |
msgstr ""
|
837 |
|
838 |
-
#: includes/admin/class-settings.php:
|
839 |
msgid "reCAPTCHA Secret key"
|
840 |
msgstr ""
|
841 |
|
842 |
-
#: includes/admin/class-settings.php:
|
843 |
msgid "Save General Settings"
|
844 |
msgstr ""
|
845 |
|
846 |
-
#: includes/admin/class-settings.php:
|
847 |
msgid "Settings updated."
|
848 |
msgstr ""
|
849 |
|
850 |
-
#: includes/admin/class-settings.php:
|
851 |
msgid "Currency"
|
852 |
msgstr ""
|
853 |
|
854 |
-
#: includes/admin/class-settings.php:
|
855 |
msgid "US Dollars (USD)"
|
856 |
msgstr ""
|
857 |
|
858 |
-
#: includes/admin/class-settings.php:
|
859 |
msgid "Determines which currency to use for payments."
|
860 |
msgstr ""
|
861 |
|
862 |
-
#: includes/admin/class-settings.php:
|
863 |
msgid ""
|
864 |
"You do not have any marketing add-ons activated. You can head over to the <a "
|
865 |
"href=\"%s\">Add-Ons page</a> to install and activate the add-on for your "
|
@@ -925,7 +929,8 @@ msgstr ""
|
|
925 |
msgid "See all Features"
|
926 |
msgstr ""
|
927 |
|
928 |
-
#: includes/admin/entries/class-entries-
|
|
|
929 |
#: includes/class-smart-tags.php:38 includes/fields/class-date-time.php:48
|
930 |
#: includes/fields/class-date-time.php:77
|
931 |
#: includes/fields/class-date-time.php:155
|
@@ -933,97 +938,319 @@ msgstr ""
|
|
933 |
msgid "Date"
|
934 |
msgstr ""
|
935 |
|
936 |
-
#: includes/admin/entries/class-entries-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
937 |
msgid "Actions"
|
938 |
msgstr ""
|
939 |
|
940 |
-
#: includes/admin/entries/class-entries-table.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
941 |
msgid "View Form Entry"
|
942 |
msgstr ""
|
943 |
|
944 |
-
#: includes/admin/entries/class-entries-table.php:
|
945 |
msgid "View"
|
946 |
msgstr ""
|
947 |
|
948 |
-
#: includes/admin/entries/class-entries-table.php:
|
949 |
msgid "Delete Form Entry"
|
950 |
msgstr ""
|
951 |
|
952 |
-
#: includes/admin/entries/class-entries-table.php:
|
953 |
-
#: includes/admin/entries/class-entries-table.php:
|
|
|
954 |
#: includes/admin/overview/class-overview-table.php:172
|
955 |
#: includes/admin/overview/class-overview-table.php:190
|
956 |
msgid "Delete"
|
957 |
msgstr ""
|
958 |
|
959 |
-
#: includes/admin/entries/class-entries-table.php:
|
960 |
-
msgid "
|
961 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
962 |
msgstr[0] ""
|
963 |
msgstr[1] ""
|
964 |
|
965 |
-
#: includes/admin/entries/class-entries-table.php:
|
966 |
-
|
967 |
-
|
968 |
-
|
969 |
-
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
970 |
|
971 |
-
#: includes/admin/entries/class-entries-table.php:
|
972 |
msgid "Whoops, it appears you do not have any form entries yet."
|
973 |
msgstr ""
|
974 |
|
975 |
-
#: includes/admin/entries/class-entries.php:
|
976 |
msgid "Number of entries per page:"
|
977 |
msgstr ""
|
978 |
|
979 |
-
#: includes/admin/entries/class-entries.php:
|
|
|
980 |
msgid "Are you sure you want to delete this entry?"
|
981 |
msgstr ""
|
982 |
|
983 |
-
#: includes/admin/entries/class-entries.php:
|
984 |
-
#: includes/admin/entries/class-entries.php:
|
985 |
-
msgid "
|
986 |
msgstr ""
|
987 |
|
988 |
-
#: includes/admin/entries/class-entries.php:
|
989 |
-
#: includes/admin/entries/class-entries.php:
|
990 |
-
msgid "
|
991 |
msgstr ""
|
992 |
|
993 |
-
#: includes/admin/entries/class-entries.php:
|
994 |
-
msgid "
|
995 |
msgstr ""
|
996 |
|
997 |
-
#: includes/admin/entries/class-entries.php:
|
998 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
999 |
msgstr ""
|
1000 |
|
1001 |
-
#: includes/admin/entries/class-entries.php:
|
1002 |
-
msgid "
|
1003 |
msgstr ""
|
1004 |
|
1005 |
-
#: includes/admin/entries/class-entries.php:
|
1006 |
-
msgid "
|
1007 |
msgstr ""
|
1008 |
|
1009 |
-
#: includes/admin/entries/class-entries.php:
|
1010 |
-
msgid "
|
1011 |
msgstr ""
|
1012 |
|
1013 |
-
#: includes/admin/entries/class-entries.php:
|
1014 |
-
msgid "
|
1015 |
msgstr ""
|
1016 |
|
1017 |
-
#: includes/admin/entries/class-entries.php:
|
1018 |
-
msgid "
|
1019 |
msgstr ""
|
1020 |
|
1021 |
-
#: includes/admin/entries/class-entries.php:
|
1022 |
-
|
|
|
1023 |
msgstr ""
|
1024 |
|
1025 |
-
#: includes/admin/entries/class-entries.php:
|
1026 |
-
msgid "No
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1027 |
msgstr ""
|
1028 |
|
1029 |
#: includes/admin/overview/class-overview-table.php:54
|
@@ -1076,6 +1303,11 @@ msgid_plural "Forms successfully deleted"
|
|
1076 |
msgstr[0] ""
|
1077 |
msgstr[1] ""
|
1078 |
|
|
|
|
|
|
|
|
|
|
|
1079 |
#: includes/admin/overview/class-overview-table.php:235
|
1080 |
msgid "Form successfully duplicated."
|
1081 |
msgid_plural "Forms successfully duplicated"
|
@@ -1102,19 +1334,31 @@ msgstr ""
|
|
1102 |
msgid "WPForms Logs"
|
1103 |
msgstr ""
|
1104 |
|
|
|
|
|
|
|
|
|
1105 |
#: includes/class-process.php:73
|
1106 |
msgid "Unable to process the form entry."
|
1107 |
msgstr ""
|
1108 |
|
|
|
|
|
|
|
|
|
1109 |
#: includes/class-process.php:113
|
1110 |
msgid "Incorrect reCAPTCHA, please try again."
|
1111 |
msgstr ""
|
1112 |
|
1113 |
-
#: includes/class-process.php:120 includes/class-process.php:
|
1114 |
msgid "Form has not been submitted, please see the errors below."
|
1115 |
msgstr ""
|
1116 |
|
1117 |
-
#: includes/class-process.php:
|
|
|
|
|
|
|
|
|
1118 |
msgid "New %s Entry"
|
1119 |
msgstr ""
|
1120 |
|
@@ -1690,11 +1934,11 @@ msgstr ""
|
|
1690 |
msgid "HTML"
|
1691 |
msgstr ""
|
1692 |
|
1693 |
-
#: includes/fields/class-html.php:
|
1694 |
msgid "HTML / Code Block"
|
1695 |
msgstr ""
|
1696 |
|
1697 |
-
#: includes/fields/class-html.php:
|
1698 |
msgid "Contents of this field are not displayed in the admin area."
|
1699 |
msgstr ""
|
1700 |
|
@@ -2098,13 +2342,13 @@ msgstr ""
|
|
2098 |
msgid "Subject"
|
2099 |
msgstr ""
|
2100 |
|
2101 |
-
#: wpforms.php:
|
2102 |
msgid "Please deactivate WPForms Lite before activating WPForms"
|
2103 |
msgstr ""
|
2104 |
|
2105 |
-
#. #-#-#-#-# wpforms.pot (WPForms 1.1.
|
2106 |
#. Plugin URI of the plugin/theme
|
2107 |
-
#. #-#-#-#-# wpforms.pot (WPForms 1.1.
|
2108 |
#. Author URI of the plugin/theme
|
2109 |
msgid "https://wpforms.com"
|
2110 |
msgstr ""
|
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 |
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 |
|
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 |
|
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</"
|
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
|
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 |
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 |
|
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 "
|
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 "
|
929 |
msgid "See all Features"
|
930 |
msgstr ""
|
931 |
|
932 |
+
#: includes/admin/entries/class-entries-export.php:172
|
933 |
+
#: includes/admin/entries/class-entries-table.php:119
|
934 |
#: includes/class-smart-tags.php:38 includes/fields/class-date-time.php:48
|
935 |
#: includes/fields/class-date-time.php:77
|
936 |
#: includes/fields/class-date-time.php:155
|
938 |
msgid "Date"
|
939 |
msgstr ""
|
940 |
|
941 |
+
#: includes/admin/entries/class-entries-export.php:173
|
942 |
+
msgid "ID"
|
943 |
+
msgstr ""
|
944 |
+
|
945 |
+
#: includes/admin/entries/class-entries-export.php:293
|
946 |
+
msgid "You do not have permission to export entries."
|
947 |
+
msgstr ""
|
948 |
+
|
949 |
+
#: includes/admin/entries/class-entries-export.php:293
|
950 |
+
msgid "Error"
|
951 |
+
msgstr ""
|
952 |
+
|
953 |
+
#: includes/admin/entries/class-entries-table.php:99
|
954 |
+
msgid "All"
|
955 |
+
msgstr ""
|
956 |
+
|
957 |
+
#: includes/admin/entries/class-entries-table.php:100
|
958 |
+
msgid "Unread"
|
959 |
+
msgstr ""
|
960 |
+
|
961 |
+
#: includes/admin/entries/class-entries-table.php:101
|
962 |
+
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 |
|
1256 |
#: includes/admin/overview/class-overview-table.php:54
|
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"
|
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 |
|
1934 |
msgid "HTML"
|
1935 |
msgstr ""
|
1936 |
|
1937 |
+
#: includes/fields/class-html.php:66
|
1938 |
msgid "HTML / Code Block"
|
1939 |
msgstr ""
|
1940 |
|
1941 |
+
#: includes/fields/class-html.php:69
|
1942 |
msgid "Contents of this field are not displayed in the admin area."
|
1943 |
msgstr ""
|
1944 |
|
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 ""
|
lite/lite.php
CHANGED
@@ -327,6 +327,14 @@ function wpfl_addons_page() {
|
|
327 |
</div>
|
328 |
<div class="wpforms-addon-action"><a href="<?php echo $upgrade; ?>" target="_blank">Upgrade Now</a></div>
|
329 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
330 |
<div style="clear:both"></div>
|
331 |
</div>
|
332 |
<?php
|
327 |
</div>
|
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>
|
338 |
<div style="clear:both"></div>
|
339 |
</div>
|
340 |
<?php
|
readme.txt
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
=== Easy WordPress Contact Form Plugin - WPForms Lite ===
|
2 |
Contributors: wpforms, jaredatch, smub
|
3 |
-
Tags: contact form, contact form plugin, contact button, contact me, custom form, custom contact form, form builder, form manager, form, forms builder, forms creation, forms creator, captcha, recaptcha, Akismet, email form, web form, feedback form, payment form, survey form, donation form, email submit form, message form, mailchimp, mailchimp form, aweber, aweber form, paypal, paypal form, email subscription, contact form widget
|
4 |
Requires at least: 4.4
|
5 |
Tested up to: 4.5
|
6 |
Stable tag: trunk
|
@@ -85,6 +85,7 @@ We also knew that our developer friends may want to extend it further. That's wh
|
|
85 |
* <a href="https://wpforms.com/features/multi-page-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Multi-Page Forms</a> - Split long forms into multiple pages to improve user experience.
|
86 |
* <a href="https://wpforms.com/addons/mailchimp-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">MailChimp Forms</a> - Create MailChimp newsletter signup forms in WordPress to grow your email list.
|
87 |
* <a href="https://wpforms.com/addons/aweber-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">AWeber Forms</a> - Create AWeber newsletter signup forms in WordPress to grow your email list.
|
|
|
88 |
* <a href="https://wpforms.com/addons/paypal-standard-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">PayPal Payment Forms</a> - Create PayPal forms to easily collect payments, donations, and online orders.
|
89 |
* <a href="https://wpforms.com/addons/stripe-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Stripe Forms</a> - Easily collect payments, donations, and online orders with our Stripe addon.
|
90 |
* <a href="https://wpforms.com/addons/conditional-logic-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Smart Conditional Logic</a> - Show or hide fields and form sections based on user behavior.
|
@@ -158,13 +159,15 @@ Syed Balkhi
|
|
158 |
|
159 |
== Changelog ==
|
160 |
|
|
|
|
|
|
|
|
|
|
|
161 |
= 1.1.6.1 =
|
162 |
* Added: Support for WordPress Zero Spam plugin (https://wordpress.org/plugins/zero-spam/)
|
163 |
* Fixed: Issue when stacking fields with 2 column classes
|
164 |
|
165 |
-
= 1.1.6 =
|
166 |
-
* Fixed: Conflict between confirmation action and filter
|
167 |
-
|
168 |
= 1.1.5.3 =
|
169 |
* Changed: Email Header Image setting description to include recommended sizing
|
170 |
|
@@ -181,7 +184,7 @@ Syed Balkhi
|
|
181 |
* Fixed: HTML emails not displaying correctly in Thunderbird
|
182 |
|
183 |
= 1.1.4.1 =
|
184 |
-
* Fixed: Form builder textareas
|
185 |
|
186 |
= 1.1.4 =
|
187 |
* Added: Form general setting for "Submit Button CSS Class"
|
1 |
=== Easy WordPress Contact Form Plugin - WPForms Lite ===
|
2 |
Contributors: wpforms, jaredatch, smub
|
3 |
+
Tags: contact form, contact form plugin, contact button, contact me, custom form, custom contact form, form builder, form manager, form, forms builder, forms creation, forms creator, captcha, recaptcha, Akismet, email form, web form, feedback form, payment form, survey form, donation form, email submit form, message form, mailchimp, mailchimp form, aweber, aweber form, paypal, paypal form, stripe, stripe form, getresponse, getresponse form, email subscription, contact form widget
|
4 |
Requires at least: 4.4
|
5 |
Tested up to: 4.5
|
6 |
Stable tag: trunk
|
85 |
* <a href="https://wpforms.com/features/multi-page-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Multi-Page Forms</a> - Split long forms into multiple pages to improve user experience.
|
86 |
* <a href="https://wpforms.com/addons/mailchimp-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">MailChimp Forms</a> - Create MailChimp newsletter signup forms in WordPress to grow your email list.
|
87 |
* <a href="https://wpforms.com/addons/aweber-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">AWeber Forms</a> - Create AWeber newsletter signup forms in WordPress to grow your email list.
|
88 |
+
* <a href="https://wpforms.com/addons/getresponse-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">GetResponse Forms</a> - Create GetResponse newsletter signup forms in WordPress to grow your email list.
|
89 |
* <a href="https://wpforms.com/addons/paypal-standard-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">PayPal Payment Forms</a> - Create PayPal forms to easily collect payments, donations, and online orders.
|
90 |
* <a href="https://wpforms.com/addons/stripe-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Stripe Forms</a> - Easily collect payments, donations, and online orders with our Stripe addon.
|
91 |
* <a href="https://wpforms.com/addons/conditional-logic-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Smart Conditional Logic</a> - Show or hide fields and form sections based on user behavior.
|
159 |
|
160 |
== Changelog ==
|
161 |
|
162 |
+
= 1.1.7 =
|
163 |
+
* Added: Smart Tag for Dropdown/Multiple choice raw values, allowing for conditional email addres notifications (https://wpforms.com/docs/how-to-create-conditional-form-notifications-in-wpforms)
|
164 |
+
* Added: Three column CSS field classes (https://wpforms.com/docs/how-to-create-multi-column-form-layouts-in-wpforms/)
|
165 |
+
* Changed: Checkbox/Multiple Choice fields allow certain HTML to display in choice labels
|
166 |
+
|
167 |
= 1.1.6.1 =
|
168 |
* Added: Support for WordPress Zero Spam plugin (https://wordpress.org/plugins/zero-spam/)
|
169 |
* Fixed: Issue when stacking fields with 2 column classes
|
170 |
|
|
|
|
|
|
|
171 |
= 1.1.5.3 =
|
172 |
* Changed: Email Header Image setting description to include recommended sizing
|
173 |
|
184 |
* Fixed: HTML emails not displaying correctly in Thunderbird
|
185 |
|
186 |
= 1.1.4.1 =
|
187 |
+
* Fixed: Form builder textareas not displaying full width
|
188 |
|
189 |
= 1.1.4 =
|
190 |
* Added: Form general setting for "Submit Button CSS Class"
|
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.
|
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.
|
58 |
|
59 |
/**
|
60 |
* The form data handler instance.
|
@@ -129,6 +129,7 @@ final class WPForms_Lite {
|
|
129 |
// Global includes
|
130 |
require_once WPFORMS_PLUGIN_DIR . 'includes/functions.php';
|
131 |
require_once WPFORMS_PLUGIN_DIR . 'includes/class-install.php';
|
|
|
132 |
require_once WPFORMS_PLUGIN_DIR . 'includes/class-form.php';
|
133 |
require_once WPFORMS_PLUGIN_DIR . 'includes/class-fields.php';
|
134 |
require_once WPFORMS_PLUGIN_DIR . 'includes/class-frontend.php';
|
@@ -137,6 +138,7 @@ final class WPForms_Lite {
|
|
137 |
require_once WPFORMS_PLUGIN_DIR . 'includes/class-smart-tags.php';
|
138 |
require_once WPFORMS_PLUGIN_DIR . 'includes/class-logging.php';
|
139 |
require_once WPFORMS_PLUGIN_DIR . 'includes/class-widget.php';
|
|
|
140 |
require_once WPFORMS_PLUGIN_DIR . 'includes/emails/class-emails.php';
|
141 |
|
142 |
// Admin/Dashboard only includes
|
@@ -145,11 +147,10 @@ final class WPForms_Lite {
|
|
145 |
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-settings.php';
|
146 |
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/overview/class-overview.php';
|
147 |
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/builder/class-builder.php';
|
148 |
-
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/builder/functions.php';
|
149 |
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-welcome.php';
|
150 |
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-editor.php';
|
151 |
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/ajax-actions.php';
|
152 |
-
|
153 |
require_once WPFORMS_PLUGIN_DIR . 'lite/lite.php';
|
154 |
}
|
155 |
}
|
@@ -224,6 +225,6 @@ final class WPForms_Lite {
|
|
224 |
*/
|
225 |
function wpforms() {
|
226 |
|
227 |
-
|
228 |
}
|
229 |
wpforms();
|
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.7
|
9 |
* Text Domain: wpforms
|
10 |
* Domain Path: languages
|
11 |
*
|
54 |
* @since 1.0.0
|
55 |
* @var sting
|
56 |
*/
|
57 |
+
private $version = '1.1.7';
|
58 |
|
59 |
/**
|
60 |
* The form data handler instance.
|
129 |
// Global includes
|
130 |
require_once WPFORMS_PLUGIN_DIR . 'includes/functions.php';
|
131 |
require_once WPFORMS_PLUGIN_DIR . 'includes/class-install.php';
|
132 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/class-db.php';
|
133 |
require_once WPFORMS_PLUGIN_DIR . 'includes/class-form.php';
|
134 |
require_once WPFORMS_PLUGIN_DIR . 'includes/class-fields.php';
|
135 |
require_once WPFORMS_PLUGIN_DIR . 'includes/class-frontend.php';
|
138 |
require_once WPFORMS_PLUGIN_DIR . 'includes/class-smart-tags.php';
|
139 |
require_once WPFORMS_PLUGIN_DIR . 'includes/class-logging.php';
|
140 |
require_once WPFORMS_PLUGIN_DIR . 'includes/class-widget.php';
|
141 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/class-preview.php';
|
142 |
require_once WPFORMS_PLUGIN_DIR . 'includes/emails/class-emails.php';
|
143 |
|
144 |
// Admin/Dashboard only includes
|
147 |
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-settings.php';
|
148 |
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/overview/class-overview.php';
|
149 |
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/builder/class-builder.php';
|
|
|
150 |
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-welcome.php';
|
151 |
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-editor.php';
|
152 |
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/ajax-actions.php';
|
153 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-upgrades.php';
|
154 |
require_once WPFORMS_PLUGIN_DIR . 'lite/lite.php';
|
155 |
}
|
156 |
}
|
225 |
*/
|
226 |
function wpforms() {
|
227 |
|
228 |
+
return WPForms_Lite::instance();
|
229 |
}
|
230 |
wpforms();
|